如何保护您的ISPConfig 3服务器免受流氓SSL攻击
在以下指南中,我将描述保护您的服务器免受最近的狗狗SSL攻击的步骤。 我将在Debian 7上使用一个ISPConfig 3完美的服务器作为示例,但同样的步骤也适用于任何其他Linux发行版。 默认的ISPConfig托管服务器运行以下服务: Webserver (Nginx或apache), Mailserver (Postfix和Dovecot / Courier),提供SSL / TLS连接的FTP-Server (pure-ftpd),并且是POODLE攻击的潜在目标。
我假设您以root用户身份登录到您的服务器。 如果您在Ubuntu上工作,并且没有以root用户身份登录,那么在所有命令中添加“sudo”,或者运行“sudo”来成为root用户。
Apache Webserver
为了保护apache网络服务器,该行
SSL协议全-SSLv2 -SSLv3
必须在服务器上的每个SSL vhost中添加。 如果未在vhost中显式设置SSLProtocol设置,则应用全局设置。 在ISPConfig 3服务器的情况下,由于vhost不覆盖该设置,所以可以全局设置SSLProtocol设置。 在Debian或Ubuntu Server上,在编辑器中打开文件/etc/apache2/mods-available/ssl.conf
nano /etc/apache2/mods-available/ssl.conf
向下滚动直到看到以下行:
# enable only secure protocols: SSLv3 and TLSv1, but not SSLv2
SSLProtocol all -SSLv2
并将其更改为:
# enable only secure protocols: but not SSLv2 and SSLv3
SSLProtocol all -SSLv2 -SSLv3
然后重新启动apache
service apache2 restart
Nginx Webserver
对于一个nginx网络服务器,该行
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
必须在每个SSL服务器{} serction中添加。 如果服务器{}部分中未明确设置SSLProtocol设置,则应用http {}部分的全局设置。 在ISPConfig 3服务器的情况下,SSLProtocol设置可以在http {}部分全局设置为服务器{}部分不覆盖该设置。 在Debian或Ubuntu Server上,在编辑器中打开文件/etc/nginx/nginx.conf
nano /etc/nginx/nginx.conf
并添加行:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
行后:
http {
然后重启nginx:
service nginx restart
Postfix邮件服务器
要强制Postfix不提供SSLv2和SSLv3协议,请运行以下命令:
postconf -e 'smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3'
postconf -e 'smtpd_tls_protocols=!SSLv2,!SSLv3'
postconf -e 'smtp_tls_protocols=!SSLv2,!SSLv3'
这将添加行:
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_protocols = !SSLv2,!SSLv3
smtp_tls_protocols = !SSLv2,!SSLv3
在/etc/postfix/main.cf文件中。 然后运行此命令应用新配置:
service postfix restart
Dovecot IMAP / POP3服务器
Dovecot支持版本2.1和更新版本的SSL协议设置。 所以第一步是找出你使用哪个dovecot版本。 命令是:
dovecot --version
在我的服务器上,我得到以下结果:
root@server1:~# dovecot --version
2.1.7
root@server1:~#
这表示我的服务器支持ssl_protocol设置。
编辑dovecot配置文件
nano /etc/dovecot/dovecot.conf
并添加行
ssl_protocols = !SSLv2 !SSLv3
在ssl_key行之后,所以你的文件应该是这样的:
ssl_key = </etc/postfix/smtpd.key
ssl_protocols = !SSLv2 !SSLv3
最后重新启动dovecot来应用更改:
service dovecot restart
Courier POP3 / IMAP服务器
默认情况下,Expressimap和pop3服务器通过SSLv3协议提供连接,因此我们也必须重新配置它。 Express配置文件位于文件夹/ etc / courier /中。 首先我们从IMAP守护进程的配置文件开始:
nano /etc/courier/imapd-ssl
添加或替换以下行:
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
然后编辑POP3守护进程的配置文件:
nano /etc/courier/pop3d-ssl
添加或替换以下行:
POP3STARTTLS=YES
POP3_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
最后重新启动Express守护程序:
service courier-imap-ssl restart
service courier-pop-ssl restart
FTP与纯ftpd
由于Debian的/ usr / sbin / pure-ftpd-wrapper脚本不支持pure-ftpd用于设置ssl协议的-J开关,因此在Debian和Ubuntu上保护纯ftpd有点复杂。 所以第一步是在包装器脚本中添加对-J选项的支持。 这在Debian 6中将不起作用,因为Debian 6中的纯ftpd版本太旧,并且没有SSL协议的设置。 所以Debian 6用户的唯一选择是升级到Debian 7.打开文件
nano /usr/sbin/pure-ftpd-wrapper
并向下滚动到行
'TLS' => ['-Y %d', \&parse_number_1],
然后再添加这条新行:
'TLSCipherSuite' => ['-J %s', \&parse_string],
最后,我们创建一个包含我们要允许的SSL协议的配置文件:
echo 'HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3' > /etc/pure-ftpd/conf/TLSCipherSuite
要应用更改,请重新启动纯ftpd。 在我的服务器上,我使用纯ftpd与mysql,所以守护进程的名称是纯ftpd-mysql而不是纯ftpd。
service pure-ftpd-mysql restart
结果应该类似于:
root@server1:~# service pure-ftpd-mysql restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -Y 1 -8 UTF-8 -H -J HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3 -D -b -O clf:/var/log/pure-ftpd/transfer.log -E -u 1000 -A -B
root@server1:~#
因此-J选项已成功添加到守护程序的启动序列。