1、密码足够复杂:
密码的长度要大于8位最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成。
2、修改默认端口号
3、不使用root用户名登录
是否可以禁止root身份登录?不行,因为有些程序需要使用root身份登录并运行。
另外判断一个用户是不是超级管理员,看的是用户的ID是否为0。
[root@kaixincainiao~]# useradd test
改:test:x:500:500::/home/mk:/bin/bash
为:test:x:0:0::/home/mk:/bin/bash
[root@~]# vim /etc/passwd
改:root:x:0:0:root:/root:/bin/bash
为:root:x:0:0:root:/sbin/nologin
另外,改下面内容后,mk用户也是登录不上的。只判断UID是否为0,不查看用户名的:
[root@kaixincainiao Packages]# vim/etc/ssh/sshd_config
改:
#PermitRootLogin yes
为:
PermitRootLogin no
[root@kaixincainiao ~]# service sshd restart
测试:
[root@kaixincainiao Packages]# sshmk@192.168.1.63
test@192.168.1.63's password:
Permission denied,please try again.
一般情况这个就可以解决了暴力破解的问题了。
情况2:暴力破解问题比较严重。 需要把暴力破解的用的IP地址直接禁掉
[root@kaixincainiao log]#lastb
mkssh:nottykaixincainiao.cnTue Mar3 20:43 - 20:43(00:00)
roottty1Tue Dec 18 09:45 -09:45(00:00)
[root@kaixincainiao log]#ll -h /var/log/btmp
-rw-------. 1 rootutmp 76M Mar3 20:43 /var/log/btmp
案列:
最近公网网站一直被别人暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。
fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!
简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。
下载软件包:
官方地址:
http://www.fail2ban.org/wiki/index.php/Downloads
安装:
解压查看readme文件
[root@kaixincainiao ~]# tar-zxvf fail2ban-0.8.14.tar.gz
[root@kaixincainiao fail2ban-0.8.14]# vimREADME.md#查看以下内容
需要安装python开发环境,并且版本要大于2.4
查看当前系统中python的版本:
[root@kaixincainiaofail2ban-0.8.14]# python -V
Python 2.6.6
安装:
[root@kaixincainiao ~]# cdfail2ban-0.8.14
[root@kaixincainiaofail2ban-0.8.14]#python setup.py install
生成服务启动脚本:
[root@kaixincainiaofail2ban-0.8.14]# pwd
/root/fail2ban-0.8.14
[root@kaixincainiaofail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban
[root@kaixincainiaofail2ban-0.8.14]#chkconfig --add fail2ban#开机自动启动
相关主要文件说明:
/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]监狱
1、应用实例
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,此IP可以重新登录。
[root@kaixincainiaofail2ban]# ls action.d/iptables.conf
action.d/iptables.conf
[root@kaixincainiaofail2ban]# ls filter.d/sshd.conf
filter.d/sshd.conf
[root@kaixincainiaofail2ban]# ls jail.conf
jail.conf
vim jail.conf
[DEFAULT]
#全局设置
ignoreip = 127.0.0.1/8
#忽略的IP列表,不受设置限制
bantime= 600#屏蔽时间,单位:秒
findtime= 500#这个时间段内超过规定次数会被ban掉
maxretry =
3
#最大尝试次数
backend =auto
[ssh-iptables]
#单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled= false#是否激活此项(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.com,sendername="Fail2Ban"]#触发报警的收件人
logpath= /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath= /var/log/sshd.log
#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。配置如下
bantime= 3600#禁止用户IP访问主机1小时
findtime= 300#在5分钟内内出现规定次数就开始工作
#在5分钟内内出现规定次数就开始工作
maxretry = 3#3次密码验证失败
启动服务:
[root@kaixincainiaofail2ban-0.8.14]#service fail2ban start
Startingfail2ban:[确定]
测试:
[root@kaixincainiaofail2ban-0.8.14]# > /var/log/secure
[root@kaixincainiaofail2ban-0.8.14]# /etc/init.d/fail2ban restart
Stopping fail2ban:[OK]
Startingfail2ban:[OK]
[root@kaixincainiaofail2ban-0.8.14]# iptables -L -n
测试:故意输入错误密码3次,再进行登录时,会拒绝登录
[root@kaixincainiao ~]#ssh 192.168.1.63
root@192.168.1.63'spassword:
Permission denied,please try again.
root@192.168.1.63'spassword:
Permission denied,please try again.
root@192.168.1.63'spassword:
Permission denied(publickey,password).
[root@kaixincainiao ~]#ssh 192.168.1.63
ssh: connect to host192.168.1.63 port 22: Connection refused
[root@kaixincainiao ~]#
[root@kaixincainiao fail2ban]# fail2ban-client status#配置好之后我们检测下fail2ban是否工作。
Status
|- Number of jail:1
`- Jail list:ssh-iptables
#具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。[root@kaixincainiao fail2ban]# fail2ban-client status ssh-iptables
Status for the jail:ssh-iptables
|- filter
||- File list:/var/log/secure
||- Currently failed:0
|`- Total failed:3
`- action
|- Currently banned:1
|`-IP list:192.168.1.64
`- Total banned:1
查看fail2ban的日志能够看到相关的信息
[root@kaixincainiaofail2ban]# tail /var/log/fail2ban.log
2015-03-0319:43:59,233 fail2ban.actions[12132]: WARNING [ssh-iptables] Ban 192.168.1.64