首先sshd服务可以说是linux服务器一个至关重要的服务,如果被暴力破解成功,就直接可以拿到服务器的控制权了,在这里有两种解决方案,第一种是直接生成秘钥然后配置ssh服务无密码登录,然后在配置文件中禁用用户使用密码登录,这种方案相对来说比较安全,但配置有点麻烦啊......
第二种方案就是服务器端安装DenyHosts工具,DenyHosts通过采集ssh身份验证的日志中失败的记录,从而屏蔽掉这些***者的ip地址~
怎么简单怎么来,我们就开始安装Denyhosts吧:
Denyhosts 官网地址:sourceforge.net/project
Denyhosts github.com/denyhosts/de
1 . 下载Denyhosts
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz # 下载Denyhosts
tar -zxvf DenyHosts-2.6.tar.gz # 解压缩文件
2. 安装 Denyhosts
python setup.pyinstall # 安装Denyhosts
cd /usr/share/denyhosts/ # 进入安装目录
cp denyhosts.cfg-dist denyhosts.cfg # 创建配置文件
cp daemon-control-dist daemon-control # 启动文件副本
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts # 创建软连接
设置Denyhosts为开机自动启动~
chkconfig --add denyhosts # 添加denyhosts服务
chkconfig denyhosts on # 设置denyhosts在各等级为开启状态
chkconfig --list denyhosts # 查询是否设置成功
3. 启动denyhosts服务
systemctl start denyhosts # 启动denyhosts服务
systemctl status denyhosts # 查询denyhosts服务状态
三、来看看 /etc/denyhosts.conf 中的配置参数
[root@denyhosts ~]# egrep -v "(^$|^#)" /usr/share/denyhosts/denyhosts.cfg
############ THESE SETTINGS ARE REQUIRED ############
# 系统安全日志文件,主要获取ssh信息
SECURE_LOG = /var/log/secure
# 拒绝写入IP文件 hosts.deny
HOSTS_DENY = /etc/hosts.deny
# #过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
PURGE_DENY = 4w
# denyhosts所要阻止的服务名称
BLOCK_SERVICE = sshd
# 允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 3
# 允许普通用户登录失败的次数
DENY_THRESHOLD_VALID = 10
# 允许ROOT用户登录失败的次数
DENY_THRESHOLD_ROOT = 6
# 设定 deny host 写入到该资料夹
DENY_THRESHOLD_RESTRICTED = 1
# 将deny的host或ip纪录到Work_dir中
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
# 是否做域名反解
HOSTNAME_LOOKUP=YES
# 将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
LOCK_FILE = /var/lock/subsys/denyhosts
############ THESE SETTINGS ARE OPTIONAL ############
# 管理员Mail地址
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
# 有效用户登录失败计数归零的时间
AGE_RESET_VALID=5d
# ROOT用户登录失败计数归零的时间
AGE_RESET_ROOT=25d
# 用户的失败登录计数重置为0的时间(/usr/share/denyhosts/restricted-usernames)
AGE_RESET_RESTRICTED=25d
# 无效用户登录失败计数归零的时间
AGE_RESET_INVALID=10d
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
# denyhosts log文件
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
# 该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
DAEMON_PURGE = 1h
四、启动 denyhosts 服务并查看状态
五、通过测试 invalid、valid、root 等用户设置不同的ssh连接失败次数,来测试 denyhosts ,我这边只测试使用系统中不存在的用户进行失败登录尝试~
我们允许 invalid 用户只能失败4次、ROOT 用户失败7次、valid用户失败10次
DENY_THRESHOLD_INVALID = 4
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 7
测试:使用一个没有创建的用户失败登录四次,并查看 /etc/hosts.deny
echo -n "" > /var/log/secure
tail -f /var/log/secure
tail -f /etc/hosts.deny
/var/log/secure 日志信息:
/etc/hosts.deny 信息:
用户登录信息:
六、关于清除及添加可信主机记录
如果想删除一个已经禁止的主机IP,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:
1、停止DenyHosts服务:service denyhosts stop
2、在 /etc/hosts.deny(黑名单列表) 中删除你想取消的主机IP
3、添加你想允许的主机IP地址到/etc/hosts.allow(白名单列表)
4、启动DenyHosts服务:service denyhosts start
七、通过邮件接收 denyhosts 所发送的信息
1、修改 /etc/denyhosts.conf 配置档,并重启 denyhosts 服务
ADMIN_EMAIL = hongxue@showjoy.com
SMTP_HOST = mail.showjoy.com
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
2、通过其他客户端进行多次失败登录尝试
3、打开mail,查看邮件