RHS333-8 postfix安全

 postfix安全

一、postfix基础配置

环境:CA中心:server1.example.com 192.168.32.31

      postfix server:station2.example.com 192.168.32.32

              client:station3.example.com 192.168.32.33

1、安装

[root@station2 ~]# yum install postfix

[root@station2 ~]# alternatives --config mta

共有 2 个程序提供mta

  选择    命令

-----------------------------------------------

*+ 1           /usr/sbin/sendmail.sendmail

   2           /usr/sbin/sendmail.postfix

按 Enter 来保存当前选择[+],或键入选择号码:2

#更改默认mta(即默认smtp服务器),将默认sendmail改成postfix

[root@station2 ~]# service sendmail stop

[root@station2 ~]# chkconfig sendmail off

[root@station2 ~]# service postfix start

[root@station2 ~]# chkconfig postfix start

#必须关闭sendmail服务,sendmail和postfix的协议端口均为25  

2、相关文件说明

·        配置文件:/etc/postfix/main.cf:主配置文件,所以参数均在此配置

         /etc/postfix/master.cf:控制所有进程(postfix共21个子进程)

·        配置工具:postconf :main.cf中所有选项均可通过postconf修改和显示

          -d:显示默认配置

          -e:修改配置

          -n:显示非默认配置

       postconf :显示所有配置(包含默认和非默认)

#一般通过postconf -d|grep parname >> /etc/postfix/main.cf的方式来添加当前main.cf中未有的参数,然后编辑

·        队列及相关目录说明(共5个主队列,相关目录路径:/var/spool/postfix/)  

/incoming:进入mta的邮件(所有邮件在投递前都要经此目录)

/active: 活动邮件,邮件只是瞬间存在,一般为空

/deferred:临时不能投递的邮件

/corrupt:无法投递到对方的邮件,会每隔15分钟尝试重试一次

/hold:重试投递达到设定上限,不再投递的邮件

#postqueue -p:查看队列里是否有文件存在

#sendmail的所有队列目录/var/spool/mqueue

 

3、配置主配置文件main.cf

[root@station2 ~]# vi /etc/postfix/main.cf

myhostname = station2.example.com   #主机名,可不定义,便于后面引用

mydomain = example.com              #所在域域名,可不定义,便于后面引用

myorigin = $myhostname   

#代表邮件出去时邮件的伪装,默认是statio2.example.com

myorigin = $mydomain      

#代表邮件出去时邮件,伪装成example.com,对方收到该邮件时显示的邮件后缀这变成@example.com,如:默认[email protected],如果不加后缀直接以gest2001发送,则对方显示的邮件为[email protected]

mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain

#功能和sendmail中local-host-names功能一样,本机的别名。如果别人要给example.com内用户发送邮件,如[email protected]则必须mydestination = example.com

inet_interfaces = all   #邮件监听接口

#完成以上配置,重启postfix即可正常收发邮件了

mynetworks = 127.0.0.0/8 192.168.32.0/24

#relay(邮件中继),定义可以使用此服务器收发邮件的客户端

二、postfix服务的安全

1、/etc/aliases:转发别名

[root@station2 ~]#postalias /etc/aliases

或[root@station2 ~]#newaliases  #更新别名数据库

2、其他

disable_vrfy_command = yes    #禁用vrfy以避免客户端查询邮件账户

smtpd_helo_required = yes     #要求客户端开始连接smtpd服务时必须发送helo 

in_flow_delay = 1s            

#邮件发送速度,显示客户端可多长时间想邮件发送一次投递请求,用于防Dos攻击

local_destination_concurrency_limit = 2

#限制同一本地邮箱在同一时间最多接收的邮件数量,用于防Dos攻击

allow_percent_hack = no   #邮箱不支持特殊字符串  

3、访问控制文件(多用于垃圾邮件处理,等同于sendmail的/etc/mail/access)

[root@station2 ~]# vi /etc/post/main.cf

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access,

                            check_sender_access hash:/etc/postfix/access,

                            check_recipient_access hash:/etc/postfix/access

#/etc/postfix/access文件可以自己指定,不一定要为access

[root@station2 ~]# vi /etc/postfix/access

192.168.32.33  REJECT

#限制192.168.32.33无法使用此服务器进行邮件中继,则33无法想服务器发送邮件

[root@station2 ~]# postmap /etc/postfix/access  #更新access数据库
4、DNS黑洞(DNS服务器上配置间sendmail中dns黑洞配置相同)

[root@station2 ~]# vi /etc/post/main.cf

smtpd_recipient_restrictions = reject_rbl_client station3.example.com
 

5、垃圾邮件处理(内容过滤)

[root@station2 postfix]# vi /etc/postfix/main.cf

mailbox_command = /usr/bin/procmail

#要支持邮件过滤必须开启procmail,sendmail默认开启procmail

header_checks = regexp:/etc/postfix/header_checks  #限制邮件头

mime_header_checks = regexp:/etc/postfix/mime_header_checks     #限制附件

body_checks = regexp:/etc/postfix/body_checks      #限制邮件内容

[root@station2 postfix]# vi header_checks

/Subject:. *test mail/ REJECT bye,bye spam!!!

#限制邮件头含有test mail的拒绝并返回bye,bye spamm!!!信息给发件人

[root@station2 postfix]#vi mime_header_checks

/name=[^>]*.\(ade|adp|asd|bas|bat|chm|cmd|com|cpl|crt|dbx|dll|exe|hlp|hta|\

inf|ins|isp|lnk|mde|mdt|vb|vbe|vbs)/ REJECT attachment prohibited

#拒绝各种文件格式(后缀结尾)的附件,并反馈attachement prohibited给发件人

[root@station2 postfix]#vi body_checks

/Mail is now avalilable/ REJECT Go way

#拒绝含有Mail is now avalilable内容的邮件,并反馈Go way给发件人

三、支持SASL/TLS

1、编辑/etc/postfix/master.cf,开启sasl授权支持

[root@station2 postfix]# vi /etc/postfix/master.cf 

smtps     inet  n       -       n       -       -       smtpd

  -o smtpd_tls_wrappermode=yes

  -o smtpd_sasl_auth_enable=yes

2、启动相关服务

[root@station2 postfix]#service postfix restart       

[root@station2 postfix]# /etc/init.d/saslauthd start   #启动sasl认证服务

3、生成ssl(tls)加密证书(通过CA中心获取授权证书,CA中心配置见cryptography中ca配置)

[root@station2 postfix]# mkdir certs

[root@station2 postfix]# cd certs

[root@station2 certs]# (umask 077;openssl genrsa 1024 > postfix.key)  #生成私钥

[root@station2 certs]# openssl req -new -key postfix.key -out postfix.csr

#生成公钥请求文件

[root@station2 certs]# scp postfix.csr server1.example.com:/etc/pki/CA/postfix.csr

#上传到CA中心,以便生成经CA中心签名的公钥

[root@server1 CA]# openssl ca -in postfix.csr -out postfix.crt

#CA中心根据请求文件生成经过签名的公钥

[root@server1 CA]# scp postfix.crt 192.168.32.32:/etc/postfix/certs/postfix.crt

[root@server1 CA]# scp my-ca.crt 192.168.32.32:/etc/postfix/certs/my-ca.crt

 

4、配置main.cf文件开启sasl认证和tls加密

[root@station2 postfix]# vi main.cf

smtpd_recipient_restrictions = permit_sasl_authenticated,

                               reject_unauth_destination

#允许sasl授权认证的客户访问;禁止未认证的客户访问  

smtpd_use_tls = yes  #开启stmpd的tls支持

smtpd_tls_cert_file = /etc/postfix/certs/postfix.crt  #指定tls公钥

smtpd_tls_key_file = /etc/postfix/certs/postfix.key   #指定tls私钥

smtpd_tls_CAfile = /etc/postfix/certs/my-ca.crt       #指定CA的公钥

smtpd_tls_loglevel = 1                                #开启tls日志

smtpd_sasl_auth_enable = yes                          #开启sasl授权认证

broken_sasl_auth_clients = yes                        #兼容老版sasl

smtpd_sasl_security_options = noanonymous             #禁止匿名用户

5、测试sasl和tls

[root@station2 postfix]# service postfix restart

[root@station2 postfix]# telnet station2.example.com 25

250-STARTTLS              #该行表示已经支持tls

250-AUTH PLAIN LOGIN       #该行表示已经支持sasl

#测试tls和sasl功能是否开启

root@station2 postfix]# echo -en '\0guest2001\0guest2001'|openssl base64  

AGd1ZXN0MjAwMQBndWVzdDIwMDE=

[root@station2 postfix]# telnet station2.example.com 25

auth plain AGd1ZXN0MjAwMQBndWVzdDIwMDE=

235 2.0.0 Authentication successful   #出现此行表示sasl认证成功

#测试sasl认证是否成功

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(安全,postfix,休闲,rhca,sasl/tls)