防止暴力攻击Linux终极绝招
由 张首国 于 周六, 09/15/2007 - 14:01 提交。http://itblog.blogdns.net/index.php?load=read&id=96 作者: A-Lang日期: 2007-08-24 21:28
转自:如果架了一个Linux主机在公用网路上,可以检查一下/var/log/secure这个纪录档,会发现每天都会有来自不同IP的攻击者,不断的尝试窃 取主机的帐号,之前除了被动的作一些加强主机安全性的措施,如关闭不必要服务、绝不使用懒人密码、限制SSHD的登入帐号等等,但是这些只能降低帐号被窃 取成功的机率,而不能阻绝那些攻击者行为,每当检视那些安全纪录档时,总还是提心吊胆的。
然而,今天在悠游网路时发现一个很好用的工具-DenyHosts ,它是用Python语言开发的,用在Linux上在适合不过了。
简单说明一下它的原理,这是一个很小的程式,可以选择两种执行模式Crontab或Daemon,程式运行时会去分析系统安全纪录档 /var/log/secure,将那些攻击者的IP位址收集并以系统档/etc/hosts.deny将其阻绝连线,被纪录在hosts.deny的 IP位址就无法与主机连线。
系统需求:
请先检查SSHD是否支援tcp_wrappers,如不确定请按下述的方法作测试
1.开启SSHD服务,并以root登入
2.编辑/etc/hosts.deny,加上一行
sshd: 127.0.0.1
3.以本机方式登入测试
ssh localhost
4.你应该会看到这一段讯息
ssh_exchange_identification: Connection closed by remote host
如未出现这讯息,你的SSHD尚未支援tcp_wrappers
如何安装:
因为笔者的作业系统是用CentOS 4.4所以下载RPM来装
#wget http://downloads.sourceforge.net/denyhosts/DenyHosts-2.6-1.src.rpm?modti...
#rpmbuild --rebuild DenyHosts-2.6-1.src.rpm
#rpm -Uvh /usr/src/redhat/RPMS/noarch/DenyHosts-2.6-1.noarch.rpm
初始化设定:
#cp /usr/share/denyhosts/denyhosts.cfg-dist /etc/denyhosts.cfg
#cp /usr/share/denyhosts/daemon-control-dist /etc/init.d/denyhosts
#vi /etc/init.d/denyhosts
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
改成
DENYHOSTS_CFG = "/etc/denyhosts.cfg"
以Daemon方式启动
# service denyhosts start
检查一下有无IP位址加入到/etc/hosts.deny
进阶设定:
1.避免log无限制增长,可设定logrotate,参照这方法
编辑/新增/etc/logrotate.d/denyhosts,包含这些内容
# this should match the DAEMON_LOG configuration setting of DenyHosts
/var/log/denyhosts {
missingok
rotate 5
notifempty
prerotate
service denyhosts stop
endscript
postrotate
service denyhosts start
endscript
}
2.线上资料同步功能,预设是关闭的,这有点类似防毒软体及防广告信软体的线上更新。