denyhosts工具

denyhosts工具介绍

DenyHosts is a script intended to be run by Linux system administrators to help thwart SSH server attacks (also known as dictionary based attacks and brute force attack

DenyHosts是一个由linux系统管理员运行的脚本,旨在帮助阻止ssh服务器攻击(字典攻击和暴力破解攻击)

  1. 字典攻击:破解密码/密钥时,逐一尝试用户自定义词典中的可能密码(单词或短语)的攻击方式;
  2. 暴力破解攻击:破击密码时,逐一尝试所有可能的密码组合;
DenyHosts is a python program that automatically blocks ssh attacks by adding entries to /etc/hosts.deny.

Denyhosts是一个python程序,它通过向/etc/hosts.deny添加条目来自动阻止ssh攻击。

DenyHosts will also inform Linux administrators about offending hosts, attacked users and suspicious logins

DenyHosts还会通知Linux管理员违规的主机、受到攻击的用户和可疑的登录用户。

denyhosts特点:

  1. 分析/var/log/secure等日志文件,过滤出尝试登陆失败的主机;
  2. 登录失败次数超限的用户记录入/etc/hosts.deny
  3. 用于抵御通过ssh/ftp服务22端口尝试获取登陆用户密码的攻击
  4. 可通过邮件告知可疑登录用户
  5. 基于tcp_wrapper防火墙过滤机制

denyhosts安装

yum安装:

epel源
yum install denyhosts -y

源码安装:

#官网下载:http://denyhosts.sourceforge.net/
#解压源码包
tar zxvf DenyHosts-2.6.tar.gz
#进入解压目录
cd /usr/src/DenyHosts-2.6
#查看sshd服务是否支持tcp_wrappers
ldd `which sshd` | grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f659f3e5000)
#安装python环境,默认安装可通过python -V查看python版本
yum install python -y
python -V
#以root身份把DenyHosts模块加入python的site-packages/目录下;具体路径下面命令编译安装时会有提示;setup.py为源码内自带;可查看源码内README.txt文件再进行进行安装;
python setup.py install
#默认/usr/share/denyhosts有配置文件和进程控制脚本
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on 
chkconfig --list denyhosts

denyhosts源码安装相关文件

/usr/share/denyhosts/  #denyhosts程序自动安装目录
/usr/bin/denyhosts.py  #denyhosts二进制文件
/usr/share/denyhosts/data/     #denyhosts主机保存拒绝/允许信息数据目录
/usr/lib/python2.7/site-packages/DenyHosts/  #denyhosts库文件目录
/var/log/denyhosts    #denyhosts进程日志文件

denyhosts配置文件

vi /usr/share/denyhosts/denyhosts.cfg
SECURE_LOG = /var/log/secure    #Redhat和Fedora内核sshd日志登录信息文件
HOSTS_DENY = /etc/hosts.deny  #大多数OS系统的被限制访问主机的信息文件
PURGE_DENY =   #经过多久解禁HOSTS_DENY文件限制访问的主机项,未写表示never purge;可写i[m/h/d/w/y]
PURGE_THRESHOLD = 0  #设置主机被解禁的最大次数,超过该次数将不会被清除永久限制 
BLOCK_SERVICE  = sshd: 127.0.0.1  #限制的服务
DENY_THRESHOLD_INVALID = 5   #无效用户登陆失败的次数
DENY_THRESHOLD_VALID = 10   #普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 1    #root用户登录失败的次数
DENY_THRESHOLD_RESTRICTED = 1 
WORK_DIR = /usr/share/denyhosts/data  #denyhosts保存数据的目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES  #设为yes则,一个来自被允许登录主机的可疑登录尝试会被认为可疑
HOSTNAME_LOOKUP=YES|NO    #每个被denyhosts报告的IP,关联的主机名会被查找并报告
LOCK_FILE = /var/lock/subsys/denyhosts  #将denyhosts启动的pid记录到LOCK_FILE文件中,确保服务启动,确保同一时间只有一个实例运行

可选项:
ADMIN_EMAIL = [email protected]    #管理员mail地址;字段留空表示不接受报告
SMTP_HOST = localhost       #邮件服务器地址
SMTP_PORT = 25                #邮件服务器端口
SMTP_USERNAME=foo      #邮件服务授权用户
SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
AGE_RESET_VALID=5d   #有效用户登录失败计数归零的时间
AGE_RESET_ROOT=25d    #root用户登录失败计数归零的时间
AGE_RESET_RESTRICTED=25d   #在WORK_DIR/restricted-usernames file中发现的尝试登陆失败用户计数归零的时间;
 AGE_RESET_INVALID=10d    #无效用户登录失败计数归零的时间
DAEMON_LOG = /var/log/denyhosts    #denyhosts守护进程日志文件;为空表示不启用
DAEMON_SLEEP = 30s   #守护进程模式denyhosts轮询SECURE_LOG的时间
DAEMON_PURGE = 1h      #守护进程模式denyhosts多久执行清除机制终止HOSTS_DENY过期项

删除被denyhosts禁止的IP

  1. 删除/etc/hosts.deny和/var/log/secure文件中禁止访问的IP
  2. 停止denyhosts服务
  3. 删除/usr/share/denyhosts/data/数据目录所有禁止访问文件内的对应IP
/usr/share/denyhosts/data/hosts
/usr/share/denyhosts/data/hosts-root
/usr/share/denyhosts/data/hosts-valid
/usr/share/denyhosts/data/users-invalid
/usr/share/denyhosts/data/users-hosts
/usr/share/denyhosts/data/users-valid
/usr/share/denyhosts/data/users-invalid
/usr/share/denyhosts/data/suspicious-logins
/usr/share/denyhosts/data/hosts-restricted   
  1. 重启denyhosts服务
    注意:仅删除/etc/hosts.deny和/var/log/secure的IP,由于denyhosts工具的防御策略,会导致解除IP失败或解除的IP再次被加入禁止项;

你可能感兴趣的:(linux安全防护,运维,linux)