语言程序分析发现攻击

CentOS 安装配置denyhosts

服务器技术 2020-06-18 15:58:10 47

导读

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。……

CentOS 安装配置denyhosts

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。

当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。

你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。

用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

CentOS安装和配置denyhosts

//不同Linux安装denyhosts
# Debian/Ubuntu
$ sudo apt-get install denyhosts
 
# RedHat/CentOS
$ yum install denyhosts
 
# Archlinux
$ yaourt denyhosts
 
# Gentoo
$ emerge -av denyhosts
############ 以下以CentOS作示例 ############
//更新系统(建议所有系统都先更新)
$ yum update
//安装denyhosts
$ sudo yum install denyhosts
//白名单配置
$ nano /etc/hosts.allow
//添加你的IP到白名单
$ sshd: Your_IP
//黑名单配置
$ nano /etc/hosts.deny
//如果要禁止所有连接,那就
$ sshd: ALL **
//把加入开机启动
$ chkconfig --add denyhosts
//配置完后重启denyhosts
$ /etc/init.d/denyhosts restart
//查看denyhosts收集到的恶意ip
$ cat /etc/hosts.deny

denyhosts配置详解

默认配置就能很好的工作,如要个性化设置可以修改 /etc/denyhosts.conf

PURGE_DENY: removed HOSTS_DENY entries that are older than this time  
            when DenyHosts is invoked with the --purge flag
      format is: i[dhwmy]
      Where 'i' is an integer (eg. 7) 
            'm' = minutes
            'h' = hours
            'd' = days
            'w' = weeks
            'y' = years
# yum install denyhosts -y
# cp denyhosts.cfg denyhosts.cfg.bak
# vi denyhosts.cfg
############ THESE SETTINGS ARE REQUIRED ############
SECURE_LOG = /var/log/secure    #sshd的日志文件  
HOSTS_DENY = /etc/hosts.deny   #将阻止IP写入到hosts.deny,所以这个工具只支持 支持tcp wrapper的协议  
PURGE_DENY = 4w   #过多久后清除已阻止的IP,即阻断恶意IP的时长  (4周)  
BLOCK_SERVICE  = sshd   #阻止服务名  
DENY_THRESHOLD_INVALID = 5   #允许无效用户登录失败的次数  
DENY_THRESHOLD_VALID = 10   #允许普通有效用户登录失败的次数  
DENY_THRESHOLD_ROOT = 1    #允许root登录失败的次数  
DENY_THRESHOLD_RESTRICTED = 1    #设定 deny host 写入到该资料夹  
WORK_DIR = /var/lib/denyhosts    #将deny的host或ip记录到work_dir中  
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES  
HOSTNAME_LOOKUP=YES    #是否做域名反解  
LOCK_FILE = /var/lock/subsys/denyhosts    #将DenyHost启动的pid记录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root   #设置管理员邮件地址  
SMTP_HOST = localhost  
SMTP_PORT = 25  
SMTP_FROM = DenyHosts <nobody@localhost>  
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]  
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   #denyhost服务日志文件
DAEMON_SLEEP = 30s  
DAEMON_PURGE = 1h      #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间

denyhosts参考资料

https://github.com/denyhosts/denyhosts
https://www.unixmen.com/install-configure-denyhost-centos/
http://my.oschina.net/u/943306/blog/614982
https://www.tesun.net/denyhostspei-zhi-xiang-jie/
http://www.lovelucy.info/vps-anti-ssh-login-attempts-attack.html


1253067 TFnetwork_cn