使用DenyHosts防止SSH暴力破解

参考大佬教程,拜谢!!!

使用DenyHosts防止SSH暴力破解

1. 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基于此日志内容来判断, 
# ubuntu应该是该目录下的authlog文件吧 	!!!!!!!
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/authlog(Ubuntu)日志清空并重启rsyslog => >/var/log/secure => service rsyslog restart,然后再启动denyhosts => /etc/init.d/denyhosts start,不然很可能会有惊喜发生,锁上门才发现钥匙在屋子里

用来防止ftp暴力破解好像并不怎么好使,可使用fail2ban

HostDeny解除封禁IP

如果想删除一个已经禁止的主机IP,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作

1、停止DenyHosts服务:service denyhosts stop
2、在 /etc/hosts.deny 中删除想取消的主机IP如“110.88.32.70”
3、清理iptables的规则:iptables -F
4、编辑 DenyHosts 工作目录的所有文件 /var/lib/denyhosts,并且删除已被添加的主机信息。
/var/lib/denyhosts/hosts 
/var/lib/denyhosts/hosts-restricted 
/var/lib/denyhosts/hosts-root 
/var/lib/denyhosts/hosts-valid 
/var/lib/denyhosts/users-hosts 
/var/lib/denyhosts/users-invalid 
/var/lib/denyhosts/users-valid
新建文件"list",将上面denyhosts文件路径添加到文件中,然后执行语句,批量替换
for i in `cat list`;do sed -i '/110.88.32.70/d' $i;done
5、添加你想允许的主机IP地址到 
/var/lib/denyhosts/allowed-hosts
6、启动DenyHosts服务: service denyhosts start
7、检查iptables:iptables -nvL | grep 110.88.32.70

参考:HostDeny解除封禁IP

posted @ 2021-08-19 08:53  麦克斯的园丁  阅读(243)  评论(0编辑  收藏  举报