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