CentOS 安装配置denyhosts

DenyHosts

linux

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