实战-防止暴力破解sshd服务密码

来源:实战笔记 发布时间:2019-11-08 19:32:15 作者:admin 阅读量:301

最近发现云主机资源占用的比较厉害,查看分析日志后发现SSH端口经常被暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,所以决定采取相应措施加于应对、防范,两种方法选其一;

方法一:修改SSH连接端口,加于瘾藏,并禁用ROOT帐户远程登陆,采用别的帐号SSH接入后再切换成ROOT帐户;

方法二:安装fail2ban进行防护

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!

#ban bæn)禁令

简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 

注:重启iptables服务的话,所有DORP将重置。

下载软件包:

官方地址:

http://www.fail2ban.org



http://www.fail2ban.org/wiki/index.php/Downloads


也可以使用YUM来安装:


方法一:YUM安装Fail2ban


yum -y install epel-release


yum repolist


yum -y install fail2ban

方法二:

官网下载安装包并解压,进入解压目录查看readme文件


[root@localhost]# tar  -zxvf fail2ban-0.11.tar.gz

[root@localhost]# cd fail2ban-0.11

[root@localhost fail2ban-0.11]# vim README.md 




需要安装python开发环境,并且版本要大于2.4


查看当前系统中python的版本:


[root@localhost fail2ban-0.11]# python -V


Python 2.6.6


安装:


[root@localhost]# cd fail2ban-0.11


[root@localhost fail2ban-0.11]#python setup.py install


 


相关主要文件说明:


/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置


/etc/fail2ban/fail2ban.conf    #定义了fai2ban日志级别、日志位置及sock文件位置


/etc/fail2ban/filter.d                     #条件文件夹,内含默认文件。过滤日志关键内容设置


/etc/fail2ban/jail.conf     #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值


# jail   [dʒeɪl]监狱


 


生成服务启动脚本:


[root@localhost fail2ban-0.11]# pwd


/root/fail2ban-0.11


[root@localhost fail2ban-0.11]# cp files/redhat-initd /etc/rc.d/init.d/fail2ban   


[root@localhost fail2ban-0.11]#chkconfig --add fail2ban  #开机自动启动


互动: 你怎么知道要复制这个文件? 一个新的软件包,后期怎么可以知道哪个文件是启动脚本文件?


这就要找服务器启动脚本文件中有什么特点,然后过滤出来对应的文件名。


[root@localhost fail2ban-0.11]# grep chkconfig ./* -R --color


./files/redhat-initd:# chkconfig: - 92 08


启动脚本里都包含chkconfig 字段



实例文件/etc/fail2ban/jail.conf及说明如下:


[DEFAULT]               #全局设置


ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制


bantime  = 600             #屏蔽时间,单位:秒


findtime  = 600             #这个时间段内超过规定次数会被ban


maxretry = 3                #最大尝试次数


backend = auto            #日志修改检测机制(gaminpollingauto这三种)


 


[ssh-iptables]               #单个服务检查设置,如设置bantimefindtimemaxretry和全局冲突,服务优先级大于全局设置。


enabled  = true             #是否激活此项(true/false)修改成 true


filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf


action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件


sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.c


om, sendername="Fail2Ban"]#触发报警的收件人


logpath  = /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath  = /var/log/sshd.log


#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下


bantime  = 3600   #禁止用户IP访问主机1小时


findtime  = 300    #5分钟内内出现规定次数就开始工作


maxretry = 3    #3次密码验证失败


  


启动服务:


[root@localhost fail2ban-0.11]# systemctl start fail2ban


[root@localhost fail2ban-0.11]# chkconfig fail2ban on


 


测试:


[root@localhost fail2ban]# > /var/log/secure  #清日志。 从现在开始


[root@localhost fail2ban]# systemctl restart fail2ban


Stopping fail2ban:                                         [  OK  ]

Starting fail2ban: 


测试结果如下:

tail -5 /var/log/fail2ban.log






Copyright ©2018-2020 [亮师兄] Powered By [个人运维笔记] Version 1.1.0   我要留言
技术支持:亮师兄(服务QQ):44480394网站备案号: 滇ICP备18010560号   备案查询
Catfish(鲶鱼) CMS V 5.4.9