
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。
你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。
用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。
CentOS安装和配置denyhosts
//不同Linux安装denyhosts # Debian/Ubuntu $ sudo apt-get install denyhosts # RedHat/CentOS $ yum install denyhosts # Archlinux $ yaourt denyhosts # Gentoo $ emerge -av denyhosts ############ 以下以CentOS作示例 ############ //更新系统(建议所有系统都先更新) $ yum update //安装denyhosts $ sudo yum install denyhosts //白名单配置 $ nano /etc/hosts.allow //添加你的IP到白名单 $ sshd: Your_IP //黑名单配置 $ nano /etc/hosts.deny //如果要禁止所有连接,那就 $ sshd: ALL ** //把加入开机启动 $ chkconfig --add denyhosts //配置完后重启denyhosts $ /etc/init.d/denyhosts restart //查看denyhosts收集到的恶意ip $ cat /etc/hosts.deny
denyhosts配置详解
默认配置就能很好的工作,如要个性化设置可以修改 /etc/denyhosts.conf
PURGE_DENY: removed HOSTS_DENY entries that are older than this time
when DenyHosts is invoked with the --purge flag
format is: i[dhwmy]
Where 'i' is an integer (eg. 7)
'm' = minutes
'h' = hours
'd' = days
'w' = weeks
'y' = years
# yum install denyhosts -y
# cp denyhosts.cfg denyhosts.cfg.bak
# vi denyhosts.cfg
############ THESE SETTINGS ARE REQUIRED ############
SECURE_LOG = /var/log/secure #sshd的日志文件
HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny,所以这个工具只支持 支持tcp wrapper的协议
PURGE_DENY = 4w #过多久后清除已阻止的IP,即阻断恶意IP的时长 (4周)
BLOCK_SERVICE = sshd #阻止服务名
DENY_THRESHOLD_INVALID = 5 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通有效用户登录失败的次数
DENY_THRESHOLD_ROOT = 1 #允许root登录失败的次数
DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹
WORK_DIR = /var/lib/denyhosts #将deny的host或ip记录到work_dir中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES #是否做域名反解
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHost启动的pid记录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root #设置管理员邮件地址
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
DAEMON_LOG = /var/log/denyhosts #denyhost服务日志文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
denyhosts参考资料
https://github.com/denyhosts/denyhosts
https://www.unixmen.com/install-configure-denyhost-centos/
http://my.oschina.net/u/943306/blog/614982
https://www.tesun.net/denyhostspei-zhi-xiang-jie/
http://www.lovelucy.info/vps-anti-ssh-login-attempts-attack.html

