今天登录服务器,发现一条不得了的提示:
天啊, 1978 次尝试登录失败,是不是有坏人盯上我的服务器了!!
(相信很多人都遇到过这种问题,不用过分担心,一般这种都是好事者的机器人在扫描弱端口。)
解决
查询了资料,主要有以下几种解决方式:
- 更换端口(简单省事);
- 合理使用安全组,限制22端口的流入ip;
- iptables中加上只允许你的ip段访问22端口;
- 使用 fail2ban、denyhosts等工具;
- and so on...
接下来重点说一下 denyhosts 工具的使用,其余方法大家自行搜索哈
1. 登录服务器后最好先检查一下安装环境
1.1 判断系统安装的sshd是否支持tcp_wrappers(默认都支持)
ldd /usr/sbin/sshd |grep libwrap.so.0
输出: libwrap.so.0 => /lib64/libwrap.so.0 表示支持
1.2 判断Python版本,2.3版本及以上支持 (注意是大V)
python -V
2. 安装
可yum安装或者自行下载安装包(我选后者)
2.1 在http://denyhosts.sourceforge.net/ 下载压缩包并上传至服务器
2.2 安装解压
在安装包所在目录执行
解压(2.6版本)
tar -zxvf DenyHosts-2.6.tar.gz
安装
cd DenyHosts-2.6
python setup.py install
程序脚本自动安装在:/usr/share/denyhosts目录
库文件安装在:/usr/lib/python2.6/site-packages/DenyHosts目录下
denyhosts.py默认安装在:/usr/bin/目录下
2.3 设置启动脚本
cd /usr/share/denyhosts/
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
##将denyhosts.cfg-dist中不是以"#"开头的行,写入denyhosts.cfg文件
grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
配置denyhosts.cfg
vi denyhosts.cfg
具体配置项参考:
############ THESE SETTINGS ARE REQUIRED ############
##分析源文件
SECURE_LOG = /var/log/secure
##禁止sshd登陆的IP存放文件
HOSTS_DENY = /etc/hosts.deny
##过多久后清除已经禁止的IP
PURGE_DENY = 1d
##监控的服务名
BLOCK_SERVICE = sshd
##表示允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 3
##表示允许普通用户登录失败的次数
DENY_THRESHOLD_VALID = 3
##表示允许root用户登录失败的次数
DENY_THRESHOLD_ROOT = 3
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
##是否做域名反解
HOSTNAME_LOOKUP=NO
LOCK_FILE = /var/lock/subsys/denyhosts
2.4 将denyhosts添加到系统服务并自动启动
vi /etc/rc.local
在末尾添加下边内容
/usr/share/denyhosts/daemon-control start
添加至系统服务
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on
2.5 启动denyhosts
service denyhosts start
2.6 查看denyhosts是否运行成功
service denyhosts status
提示: DenyHosts is running with pid = XXXX,即运行成功。