首页 > 代码库 > linux学习笔记10

linux学习笔记10

限制远程用户使用邮件服务(对本地用户没影响)

1.限制客户端:通过限制IP

服务器

vim/etc/postfix/access

172.25.254.130        REJECT

 

查看使用参数

postconf -d |grep client

 

将参数写入文件

postconf -e "smtpd_client_restrictions=check_client_access hash:/etc/postfix/access"

 

之后vim/etc/postfix/main.cf会发现最后一行出现了

smtpd_client_restrictions =check_client_access hash:/etc/postfix/access

五颜六色哒~~美美哒~

 

技术分享


systemctl restart postfix.service

 

检验

172.25.254.10 执行 telnet 172.25.254.130 25

 

可以登陆,但不能使用(发邮件)。

 

技术分享

 

2.限制客户端指定用户发邮件:通过限制用户全部主机名

服务器

vim/etc/postfix/recip

xixi@lalala.com       REJECT

 

postmap recip加密成db文件

postconf -e"smtpd_sender_restrictions  =check_sender_access hash:/etc/postfix/recip"

systemctl restart postfix.service

检验

其他用户可以发邮件,xixi不能。

 

技术分享


3.限制客户端指定用户收邮件

服务器

vim/etc/postfix/recip

xixi@lalala.com       REJECT

 

postmap recip

postconf -e"smtpd_recipient_restrictions = check_recipient_accesshash:/etc/postfix/recip"

systemctl restart postfix.service

 

检验

其他用户可以收邮件,xixi不能。

 

技术分享

 

邮件本地用户


服务器

cat /etc/services |grep imap  可以查看imap的端口号

 

技术分享

 

vim/etc/dovecot/dovecot.conf

        

24 protocols = imap pop3 lmtp                  dovecot使用的协议

49 disable_plaintext_auth = no                 使用明文认证

50 login_trusted_networks = 0.0.0.0/0  使外网也可以使用dovecot服务

 

 

vim/etc/dovecot/conf.d/10-mail.conf

 

30 mail_location =mbox:~/mail:INBOX=/var/mail/%u

 

 

netstat -antlupe |grep dovecot

 

passwd westos

 

客户端

telnet 172.25.254.11 110

user mooc

pass 1

 

技术分享

 

登录时的错误处理

如果登录失败,可以在服务器查看日志(cat /var/log/maillog),获取错误信息

 

技术分享

 

根据提示:mkdir –p      /home/mooc/mail/.imap

                            touch      /home/mooc/mail/.imap/INBOX

 

技术分享

 

检验

1)本地

 

yum install mutt -y

mutt -f imap://westos@172.25.254.11 110

 

      登录成功~~~~

 

技术分享

 

2)雷鸟

 

技术分享


技术分享

 

技术分享

 

技术分享

 

注意!!!!

由于每个新用户都要手动创建/home/mooc/mail/.imap/INBOX,太麻烦~

 

所以直接在/etc/skel中创建mail/.imap/INBOX,这样系统在创建新用户时,会自行创建/home/newuser/mail/.imap/INBOX

 

技术分享

 

技术分享

 

 

邮件虚拟用户

建立一个虚拟用户(vmail)来管理邮箱数据库,不直接用root,因为风险太大!

 

服务器

groupadd -g 666

useradd -g 666 -u 666 -s /sbin/nologinvmail

 

1)在数据库中添加信息


 

技术分享

 

2)检测数据库是否读取成功

 

vim/etc/postfix/mysql-users.cf

 

hosts = localhost

user = postfix

password = postfix

dbname = email

table = muser

select_field = username

where_field = username

 

cp-p mysql-users.cf mysql-domain.cf

 

hosts = localhost

user = postfix

password = postfix

dbname = email

table = muser

select_field = domain

where_field = domain

 

 

cp-p mysql-users.cf mysql-maildir.cf

 

hosts = localhost

user = postfix

password = postfix

dbname = email

table = muser

select_field = maildir

where_field = username

 

技术分享

 

让我们来小小检测一下~~

 

postmap -q "admin@westos.org"mysql:/etc/postfix/mysql-users.cf

 

postmap -q "westos.org"mysql:/etc/postfix/mysql-domain.cf

 

postmap -q "admin@westos.org"mysql:/etc/postfix/mysql-maildir.cf

 

 

技术分享

 

3)将数据写入配置文件

 

postconf -e "virtual_uid_maps =static:666"

postconf -e "virtual_gid_maps =static:666"

postconf -e "virtual_mailbox_base=/home/vmail"                  指定邮箱位置

 

postconf -e"virtual_alias_maps=mysql:/etc/postfix/mysql-users.cf"   本地文件连接数据库

postconf -e"virtual_mailbox_domains=mysql:/etc/postfix/mysql-domain.cf"

postconf -e"virtual_mailbox_maps=mysql:/etc/postfix/mysql-maildir.cf"

 

最后配置文件变成:

 

技术分享

 

检测

 mailadmin@westos.org


技术分享

 

技术分享

 

数据库和邮箱连接

即本地没有org这个域名,在org在数据库中,实现org用户之间的相互通信

 

yum install dovecot-mysql -y

 

vim/etc/dovecot/conf.d/auth-sql.conf.ext      查看模板位置

 

技术分享

 

cp   -p  /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext/etc/dovecot

 

vim /etc/dovecot/dovecot-sql.conf.ext

 

 32driver = mysql   驱动

 70connect = host=localhost dbname=email user=postfix password=postfix      

使用本地用户(postfix)连接数据库email,他通常只拥有select权限(在企业中)

 77default_pass_scheme = PLAIN                   登陆密码明文(数据库)

 

106 password_query = \

107  SELECT username, domain, password \

108  FROM muser WHERE username = ‘%u‘ AND domain = ‘%d‘

         %u=entire user@domain

         %d=domainpart of user@domian

         %n=userpart in user@domian,same as %u if there is no domain

 

124 user_query = SELECT maildir, 666 AS uid,666 AS gid FROM muser WHERE username = ‘%u‘

 

技术分享

 

技术分享

 

技术分享

 

 

vim10-mail.conf

 

30 mail_location =maildir:/home/vmail/%d/%n     邮箱的位置

168 first_valid_uid = 666                   使虚拟用户和mail有联系

175 first_valid_gid = 666

 

技术分享

 

技术分享

 

 

vim10-auth.conf

 

122 !include auth-system.conf.ext系统用户

123 !include auth-sql.conf.ext                   数据库用户

 

技术分享

 

检测

首先检测mooc 是否能通过172.25.254.11110端口登录,登录成功才说明配置成功,才有可能使用雷鸟~

 

技术分享

 

在雷鸟上可以实现admin@westos.orgzoe@westos.org互发邮件!!!

 

技术分享

 



技术分享


技术分享

 


 

出现的错误







1/run/dovecot 对于mooc没有w权限

         解决方法: chmod       o+w         /run/dovecot


技术分享

 

2)dovecot不能识别mysql

解决方法:yum install dovecot-mysql –y

 

技术分享

 

 

 

 

空壳邮件

 

邮件服务器是mat,通常运行smtp协议(发邮件的时候),比较重要,不能暴露在外面,所以要找个傀儡。

表面上,邮件都发给傀儡,实际上邮件全部发给服务器,傀儡那里一点数据都没有~

 

空壳(傀儡):10

 

vim/etc/resolv.conf

nameserver 172.25.254.10

 

vim/etc/named.rfc1912.zones

 

zone "westos.org" IN {

       type master;

       file "westos.org.zone";

       allow-update { none; };

};

 

 vimwestos.org.zone

 

dns             A       172.25.254.10

westos.org.     MX 1   172.25.254.10.

 

vim/etc/postfix/main.cf

 

75 myhostname = mailwestos.westos.com   真实主机信息

83 mydomain = westos.com             真实主机信息

 

98 myorigin = westos.org                  我要接受哪个域的邮件

113 inet_interfaces = all

140 local_transport = error:local deliverydisabled

提示用户我是一个空壳,不要给我发邮件了!!!

 

164 mydestination =        我就不接受邮件,你们傻了吧

313 relayhost = 172.25.254.230      把邮件传递给我的真实服务器


 

技术分享

 


技术分享


技术分享


技术分享

 


 


 

        别忘了关火墙!

 

 

服务器

 

vim /etc/postfix/main.cf

264 mynetworks = 172.25.254.10            我的傀儡的ip

 

技术分享

 

测试

空壳端mail admin@westos.org                   给自己发邮件,邮件并不在自己的收件箱。

 


技术分享


 

 

服务器rm -rf /home/vmail/*

 

会发现在产生/home/vmail/westos.org/admin 的目录,并且邮件在new/

 

技术分享

 

 

 

 

 

Apache

基础知识

1.httpd

 

httpd 是有http协议的软件

 

2.架构

 

lamp=linux apache mysql php

lump=linux nginx mysql php

 

nginx         共享

jsp asp 动态,用tomcat jbosss 翻译读不懂的语言

 

squied      代理软件

 

3.server

 

curl -I www.taobao.com

server       访问淘宝时访问的淘宝的哪一个服务(软件)

 

技术分享

 


技术分享



技术分享



技术分享



技术分享

 



 

 


 

4.nmap

 

nmap我的虚拟机,查看哪个端口开着


技术分享

 

nmap ~  (侵删)


技术分享

 

 

apache的配置
1.更改默认访问端口

 

         apache默认访问端口80

         tomcat              8080

 

vim /etc/httpd/conf/httpd.conf

/Listen

42        Listen 8080

 

技术分享

 

2更改默认访问目录与权限

apache 默认访问/var/www/html/index.html


技术分享

 

1)更改apache默认发布主页

 

vim /etc/httpd/conf/httpd.conf

/index

 

170 <IfModule dir_module>

171    DirectoryIndex   file index.html

172 </IfModule>

 

技术分享

 

哪个文件在前面先访问哪个,如果为空,将访问apache官方主页

 

技术分享

 

 

 

2)访问apache帮助手册

 

yum install http-manual -y

在浏览器访问http://172.25.254.230/manual

 

技术分享

 

3)更改默认访问目录

 

vim /etc/httpd/conf/httpd.conf

/DocumentRoot

 

120        DocumentRoot "/www/westos"

121

122        <Directory "/www/westos">           目录的授权

123             Require all granted

124         </Directory>

 

关键一点

getenforce=Enforcing 时,如果上下文标签不一致时,将不能通过apache访问

所以要将新目录的上下文标签改成http_sys_content_t:s0

 

 

mkdir /www/westos -p

semanage fcontext -a -t httpd_sys_content_t‘/www/westos(/.*)?‘

restorecon -RccF /www/

vim index.html

/www/westos

lalallaa

systemctl reload httpd kill 1

 

技术分享

 

结果图:

 

技术分享

 

 

4)访问控制

 

 1)通过ip控制

 

120        DocumentRoot "/www/westos"

121

122        <Directory "/www/westos">

123             Require all granted

124             Order Allow,Deny

125             Allow from 172.25.254.88

126                 Deny from ALL                           所有人都不能访问

127        </Directory>

 


技术分享

 

 

124             Order Deny,Allow

125              Allow from 172.25.254.88 172.25.254.10    只有88,10能访问

126                 Deny from ALL

 

 

技术分享

 

 

 

124             Order Deny,Allow

125              Allow from 172.25.254.0/24         所有网段都能访问

126                 Deny from ALL

 

技术分享

 

 

124              Order DenyAllow

125             Allow from 172.25.254.88    只有88能访问

126              Deny from ALL

 

技术分享

 

 

 结论:以最后读取的allowdeny为准

 

 

2)通过密码控制

 

cd /etc/httpd/

htpasswd -cm htpasswdfile admin           第一次创建用户 -c create

htpasswd -m htpasswdfile westos           之后创建用户

-m Force MD5 encryption of the password (default).

 

 

技术分享

 

122        <Directory "/www/westos">

123                 AllowOverride All

124                 Authuserfile/etc/httpd/htpasswdfile

125                 Authname "Please inputusername and password"

126                 Authtype basic

127                 Require valid-user          /etc/httpd/htpasswdfile里的用户

                                          Requireadmin                  只允许admin

128        </Directory>

 


技术分享

 

admin 正确输入用户名和密码,进去啦~

 

技术分享

 

 

但在当前配置下,Require adminzoe不能进去。

 

技术分享

 


技术分享

 

         配置为Require valid-user

          /etc/httpd/htpasswdfile里所有的用户,才能都进入。

 

 

技术分享

 

 

技术分享


 

清除缓存Ctrl+Shift+Delete

 

 

 

 


apache 虚拟主机

 

客户端

vim /etc/hosts

172.25.254.230  www.westos.com westos.com news.westos.commusic.westos.com

 

服务器

 

建立子服务器目录

 

mkdir/var/www/virtual/news.westos.com/html  -p

mkdir/var/www/virtual/music.westos.com/html -p

 

写子服务器主页

 

vim var/www/html/index.html

default

vim /var/www/virtual/music.westos.com/html/index.html

music

vim/var/www/virtual/news.westos.com/html/index.html

news


技术分享


 

技术分享


关键一点

为什么要把news.confmusic.confdefault.conf写在/etc/httpd/conf.d下?

 

vim   /etc/httpd/conf/httpd.conf

 

技术分享

 

356 IncludeOptional conf.d/*.conf                

可以看到apache默认读取/etc/httpd/conf.d/conf结尾的文件    

 

 

cd  /etc/httpd/conf.d

 

1.vim    news.conf

 

<Virtualhost *:80>

       Servername news.westos.com

       Documentroot /var/www/virtual/news.westos.com/html

       Customlog "logs/news.log" combined

</Virtualhost>

 

<Directory"/var/www/virtual/news.westos.com/html">

       Require all granted

</Directory>

 

技术分享


 

2.vim    music.conf

 

<Virtualhost *:80>

       Servername music.westos.com

       Documentroot /var/www/virtual/music.westos.com/html

       Customlog "logs/music.log" combined

</Virtualhost>

 

<Directory"/var/www/virtual/music.westos.com/html">

       Require all granted

</Directory>

 

技术分享

 

3.vim    default.conf

 

<Virtualhost _default_:80>

       Documentroot /var/www/html

       Customlog "logs/default.log" combined

</Virtualhost>

 

<Directory "/var/www/html">

       Require all granted

</Directory

 

技术分享

 

检验

vim           /etc/hosts

 

技术分享


 


技术分享



技术分享



技术分享

 


 


 

 

 

https     443

服务器解密,客户端加密

 

yum install mod_ssl -y

 

会生成这个文件:/etc/httpd/conf.d/ssl.conf

systemctl restart httpd

netstat -antlpe |grep httpd

 

 

 

使用https//www.westos.com  会因为缺少证书,无法访问

 

技术分享

 

 

生成证书

安装生成证书的软件

yuminstall crypto-utils -y

 

加密公司网址

genkeywww.westos.com

 





技术分享


技术分享


技术分享


技术分享


技术分享


 

 


 


 


 

/etc/pki/tls/certs/www.westos.com.crt

/etc/pki/tls/private/www.westos.com.key

 

技术分享

 

vim/etc/httpd/conf.d/ssl.conf

 

100 SSLCertificateFile/etc/pki/tls/certs/www.westos.com.crt

107 SSLCertificateKeyFile/etc/pki/tls/private/www.westos.com.key

 

systemctl restart httpd

 

我的证书~~~~~

 


技术分享





 


 


本文出自 “12049878” 博客,谢绝转载!

linux学习笔记10