我们都知道这句流行语:“预防胜过治疗。”如果你是个Linux系统管理员,可能知道“蛮力攻击应用程序”如何在你的本地或远程服务器引发问题。设想一下:如果你的服务器遭到了身份未知的攻击者的攻击,服务器上的数据就会落到坏人手里。这肯定会让你和贵公司陷入从未想过的大麻烦。蛮力攻击是应用程序采用的反复尝试方法,以破解你的加密数据。加密数据可能是任何密码或密钥。简单来说,蛮力攻击应用程序会尝试所有可能的密码或密钥组合,反复尝试,直到找到正确的密码或密钥为止。这就需要一段时间,具体取决于密码的复杂性。如果要花过长的时间才能找到密码,那么可以说你的密码很安全、很强壮。
现在可以使用一些巧妙的工具来阻止或预防蛮力攻击。今天,我们就来探讨下列工具。
1. SSHGuard ; 2. Fail2Ban.
提醒一下:不要将这两个工具都安装在同一个系统上。你可能无法获得正确的结果。
首先,让我们看一下SSHGuard,以及如何安装和配置它,以预防蛮力攻击。
SSHGuard(http://www.sshguard.net)是一种快速、轻便的监控工具,用C语言编写而成。它可以使用日志活动,监控服务器,保护服务器远离蛮力攻击。要是有人不断地试图通过SSH访问你的服务器,多次(可能四次)尝试访问失败,SSHGuard就会将对方的IP地址放入到iptables,在一段时间内阻止他/她访问。之后,它会在一段时间后自动解锁。它几乎能保护所有的服务,比如sendmail、exim、dovecot、vsftpd、proftpd及许多服务,而不光光保护SSH。
在Ubuntu/Debian上,SSHGuard就在默认的软件库中。
于是,我们可以用下列命令来轻松安装它:
sudo apt-get install sshguard
在CentOS/RHEL 6.x上:
先下载并添加FlexBox软件库,如下所示。
wget http://sourceforge.net/projects/flexbox/files/flexbox-release-1-1.noarch.rpm
使用下列命令更新软件库列表:
yum repolist
最后,使用下列命令安装sshguard:
yum install sshguard
至于其他发行版,从官方网站(http://www.sshguard.net/download/)下载各自的二进制文件,并自行安装。
或者,你也可以从这里(http://pkgs.org/download/sshguard)来下载。
SSHGuard没有配置文件。你要做的就是在iptables中为SSHGuard创建新的链,以插入阻止访问的规则。
为了支持IPv4,在拥有根权限的情况下运行下列命令:
iptables -N sshguard
为了支持IPv6:
ip6tables -N sshguard
现在更新INPUT链,将流量传输到sshguard。指定--dport选项,使用sshguard保护服务的所有端口。如果你想防止攻击者将任何流量传输到主机,就完全删除这个选项。
阻止来自攻击者的所有流量
为了支持IPv4:
iptables -A INPUT -j sshguard
为了支持IPv6:
iptables -A INPUT -j sshguard
阻止来自攻击者的特定服务,比如SSH、FTP、POP或IMAP
为了支持IPv4:
iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
为了支持IPv6:
ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143-j sshguard
最后,保存iptables规则。
service iptables save
核实你在链中的较高层没有传输所有ssh流量的default allow(默认允许)规则。核实你在防火墙中没有阻止所有ssh流量的default deny(默认拒绝)规则。不论哪种情况,假设你已经拥有调整防火墙设置的技能。
下面是一个合理的示例规则集:
iptables -N sshguard
阻止sshguard表明是不良流量的任何流量:
iptables -A INPUT -j sshguard
启用ssh、dns、http和https:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
阻止之外的所有服务:
iptables -P INPUT DROP
如果你不用iptables,下列命令可以创建并保存iptables配置;除了让sshguard可以正常运行外,该配置绝对什么都不做:
iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -N sshguard iptables -A INPUT -j sshguard
最后,保存iptables配置:
service iptables save
就是这样。现在你已安装并配置了SSHGuard,可以保护你的ssh、ftp及其他服务远离蛮力攻击者。