denyhosts是一个非常好用的防SSH暴力破解的软件,感觉比fail2ban简单有效。
centos7下安装denyhosts非常简单。直接yum install 安装就行了
屏蔽的IP会记录在/etc/hosts.deny这个文件里面,可随时查看。
1、清除SSH登录记录,防止装完屏蔽自己。
1 | echo "" > /var/log/auth.log |
2、安装denyhosts
1 | yum install denyhosts |
2、编辑Denyhosts配置文件vi /etc/denyhosts.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | SECURE_LOG = /var/log/auth.log #SSH日志 PURGE_DENY = 30m #过多久后清除已阻止IP HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny BLOCK_SERVICE = sshd #禁止的服务名 DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数 DENY_THRESHOLD_VALID = 3 #允许普通用户登录失败的次数 DENY_THRESHOLD_ROOT = 3 #允许root登录失败的次数 DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹 WORK_DIR = /var/lib/denyhosts #将deny的host或ip纪录到Work_dir中 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES #如果为YES,所有在$WORK_DIR/allowed-host时面的IP地址将会被认为是可疑的,如果设置为NO,所有在allowd-hosts试图登陆的结果,将不会发送警告邮件!所有不在$WORK_DIR/allowed-host时面的IP地址将会发送警告! HOSTNAME_LOOKUP=NO #是否做域名反解,是否将IP地址解析为主机名。 LOCK_FILE = /var/run/denyhosts.pid #定义PID文件的位置,确保同时只有一个Denyhost进程在运行 ############ THESE SETTINGS ARE OPTIONAL ############这里的设置是可选的 ADMIN_EMAIL = root@localhost #当有人试图登录发送邮件。前提是,本机一定要可以发送邮件才行! SMTP_HOST = localhost #指定smtp服务器 SMTP_PORT = 25 #指定SMTP端口号 SMTP_FROM = DenyHosts #指定发件人 SMTP_SUBJECT = DenyHosts Report #指定邮件主题 AGE_RESET_VALID=5d #多长时间后,用户登录失败的次数被置为0,这里是指在/etc/passwd里面定义的用户,如果不设置,永远都不会置0 AGE_RESET_ROOT=25d #多长时间后,root用户登录失败的次数置为0,如果不设置,永远都不会置0 AGE_RESET_RESTRICTED=25d #在$WORK_DIR/hosts-restricted时面定义的用户,多长时间失败次数计数器被置为0 AGE_RESET_INVALID=10d #无效用户(不在/etc/passwd里面的用户)的失败次数计数器,多长时间被置为0 RESET_ON_SUCCESS = yes #当某个IP使用某个用户登录成功后,该IP对应的用户失败次数将会被置为0 DAEMON_LOG = /var/log/denyhosts #当denyhost运行在守护进程模式的时候,日志文件存储的位置 DAEMON_SLEEP = 30s #轮询查看SSHD日志的间隔 DAEMON_PURGE = 1h #多长时间清空$HOSTS_DENY中的IP地址,如果PURGE_DENY为空,这个设置将无效 其实默认配置我觉得足够了,修改下root的失败次数,默认的是1,一般修改成3-5就行了,DENY_THRESHOLD_ROOT = 3 HOSTNAME_LOOKUP=NO 关闭反向解析,PURGE_DENY = 30m阻止30分钟! |
3、启动和重启(注意:在centos7 上的命令centos7以下则不能用)
1 2 | syctemctl start denyhosts syctemctl restart denyhosts |
4.设置开机自启动
1 2 3 4 5 6 7 8 9 10 | syctemctl enable denyhosts 注意:如果自己之前登录失败次数很多的话,装DenyHosts前最好先清除下SSH登录记录 echo "" > /var/log/auth.log,不然有可能装完会把自己给封了。 如果你已经被自己屏蔽了,可以使用下面方法给自己解封。 1.关闭denyhosts服务 syctemctl stop denyhosts 2.把系统的登录log给清空 echo "" > /var/log/auth.log 3.进/var/lib/denyhosts目录,把目录下所有文件内容清空一遍(这个是DenyHosts自己的log目录) 4.运行vi /etc/hosts.deny 把里面自己的IP给删除。 |
5.重启denyhosts
1 | syctemctl restart denyhosts |
如果你想 让你的ip不禁止,则要在下列目录创建
手动创建文件allowed-host文件,把ip写进去如果多个就分行写ip地址,最后要在配置文件启用这个文件配置改成下列
ALLOWED_HOSTS_HOSTNAME_LOOKUP=YES
最后重启:systemctl restart denyhosts 就好了
手动创建文件allowed-host文件,把ip写进去如果多个就分行写ip地址,最后要在配置文件启用这个文件配置改成下列
ALLOWED_HOSTS_HOSTNAME_LOOKUP=YES
最后重启:systemctl restart denyhosts 就好了
很好的文章