关于ssh的登录,作为一个合格的linux运维人员大家都是熟悉不能在熟悉的了,我们都知道,计算机本身暴露在互联网上就是危险的,当然我们不要因为我们的业务少,用户量不多而有侥幸心理,掉以轻心;互联网的大多数攻击都是没有目的性的,黑客大神们通过大范围的IP端口扫描探测到可能存在的漏洞bug主机,然后通过自动扫描工具来进行破解,那么我们来怎么防止黑客的大神暴力破解,要么自己手动的写防止暴力破解的脚本+任务计划来实施,要么通过开源软件来完成,Denyhost正是这样的一款工具,Denyhosts是一个Linux系统下阻止暴力破解SSH密码的软件,它的原理与DDoS Deflate类似,可以自动拒绝过多次数尝试SSH登录的IP地址,防止互联网上某些机器常年破解密码的行为,也可以防止黑客对SSH密码进行破解;
DenyHosts阻止攻击原理
DenyHosts会自动分析 /``var``/log/secure 等安全日志文件,当发现异常的连接请求后,会自动将其IP加入到 /etc/hosts.deny 文件中,从而达到阻止此IP继续暴力破解的可能。同时,Denyhosts还能自动在一定时间后对已经屏蔽的IP地址进行解封,非常智能。
DenyHost安装部署:
1``. 查看开发环境是否满足
rpm -qa | grep gcc
rpm -qa | python 为什么要看看python的原因是因为这个程序就是用python语言写的
2``. 下载安装Denyhost,可以在官方网站下载源码http:``//denyhosts.sourceforge.net/
tar xf DenyHosts-``2.6``.tar.gz
cd DenyHosts-``2.6
python setup.py install
3``. 查看修改配置文件;
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
vim denyhosts.cfg
sed -e ``'/^$/d'
-e ``'/^#/d'
denyhosts.cfg
SECURE_LOG = /``var``/log/secure 生成的安全日志
HOSTS_DENY = /etc/hosts.deny 拒绝的IP地址
PURGE_DENY = 1h ``1``小时自动解锁,可以根据自己的环境来定义
BLOCK_SERVICE = sshd 需要拒绝的服务的名字
DENY_THRESHOLD_INVALID = ``5
某一个无效的用户名输入多少次自动锁定阻止;
DENY_THRESHOLD_VALID = ``10
一个有效的用户名尝试多少次登录后被阻止,
DENY_THRESHOLD_ROOT = ``2
root尝试登录多少次阻止
DENY_THRESHOLD_RESTRICTED = ``1
WORK_DIR = /usr/share/denyhosts/data 文件存放的路径
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES 是否尝试解析源IP的域名
LOCK_FILE = /``var``/lock/subsys/denyhosts
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = 设置管理员的邮箱密码
SMTP_HOST = localhost• 这是SMTP指向的地址
SMTP_PORT = ``25
SMTP的端口
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
DAEMON_LOG = /``var``/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
######### THESE SETTINGS ARE SPECIFIC TO ##########
######### DAEMON SYNCHRONIZATION ##########
./daemon-control start 配置完成之后重启就可以
4``. 修改成开机启动就可以
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhost
chkconfig --add denyhost
chkconfig --level ``35
denyhost on
cat /etc/hosts.deny
/etc/rc.d/init.d/denyhost restart
5``. 测试
找一台测试机模拟测试;然后在/etc/hosts.deny中查看