1. DenyHosts简介
DenyHosts简介
当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。
你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。
它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽IP的功能,可以阻止不法分子试图暴力破解SSH登录口令。
DenyHosts(项目主页:http://denyhosts.sourceforge.net/)
2. DenyHosts安装及配置
2.1 DenyHosts安装
CentOS安装
yum -y install denyhosts
Ubuntu安装
apt-get install denyhosts
默认配置文件路径为
/etc/denyhosts.conf
,日志文件路径为/var/log/denyhosts
2.2 DenyHosts配置
默认配置就能很好的工作,当然个性化配置直接修改配置文件
/etc/denyhosts.conf
即可
[root@study /data/backup]# egrep -v "#|^$" /etc/denyhosts.conf SECURE_LOG = /var/log/secure #ssh日志文件,denyhosts基于此日志内容来判断 HOSTS_DENY = /etc/hosts.deny #控制用户登陆文件 PURGE_DENY = 4w #过多久后清除已经禁止的IP,空表示永远不解禁,我这里设置的是4周 BLOCK_SERVICE = ALL #禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可,写个sshd也可 DENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数 DENY_THRESHOLD_VALID = 15 #允许普通用户登陆失败的次数 DENY_THRESHOLD_ROOT = 5 #允许root登陆失败的次数 DENY_THRESHOLD_RESTRICTED = 1 WORK_DIR = /var/lib/denyhosts #denyhosts运行目录 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES HOSTNAME_LOOKUP=YES ##是否进行域名反解析 LOCK_FILE = /var/lock/subsys/denyhosts #程序的进程ID ADMIN_EMAIL = root #管理员邮件地址,可设置告警邮箱 SMTP_HOST = localhost SMTP_PORT = 25 SMTP_FROM = DenyHosts <nobody@localhost> SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME] AGE_RESET_VALID=5d #用户的登录失败计数会在多久以后重置为0,(h表示小时,d表示天,m表示月,w表示周,y表示年) AGE_RESET_ROOT=25d AGE_RESET_RESTRICTED=25d AGE_RESET_INVALID=10d RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0 DAEMON_LOG = /var/log/denyhosts #denyhosts的日志文件 DAEMON_SLEEP = 60s #当以后台方式运行时,每读一次日志文件的时间间隔 DAEMON_PURGE = 1h #当以后台方式运行时,清除机制在 HOSTS_DENY中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。
注意:
在安装之前要将/var/log/secure日志清空并重启rsyslog =>
>/var/log/secure
=>service rsyslog restart
,然后再启动denyhosts =>/etc/init.d/denyhosts start
,不然很可能会有惊喜发生,锁上门才发现钥匙在屋子里用来防止ftp暴力破解好像并不怎么好使,可使用
fail2ban
。
3. 查看效果
被屏蔽的IP地址,我这种ECS小服务器一个月也会屏蔽几百个扫描的IP。