DenyHosts是一个开源且免费的基于日志的入侵防御安全程序,用于通过SSH连接的Linux服务器,由Phil Schwartz使用Python语言开发编写。
DenyHosts旨在通过向服务器上的/etc/hosts.deny文件添加条目来阻止原始IP地址并阻止IP地址,从而监视和分析Linux服务器日志中的无效登录尝试,这样基于暴力攻击不再进行任何此类登录尝试。
DenyHosts是所有基于Linux服务器系统都非常需要的工具,特别是设置无密码码SSH登录远程Linux服务器的时候。
在本文中,小编将简单如何在基于 RHEL的Linux发行版(例如Fedora、CentOS、Rocky Linux和AlmaLinux)系统上安装和配置DenyHosts。
一、Linux服务器安装DenyHosts
默认情况下,Linux系统中不包含DenyHosts工具,因此需要使用第三方EPEL 存储库安装它,添加存储库后,使用以下yum 命令安装软件包。
# yum install epel-release # yum install denyhosts
二、为白名单IP地址配置DenyHosts
一旦DenyHosts安装完成,请确保你的白名单中添加了自己的IP地址,这样永远不会锁定。为此,请打开配置文件/etc/hosts.allow。
# vi /etc/hosts.allow
可以按照下方的示例,在单独的一行中一个一个地添加永远不想阻止的IP地址,格式如下:
# # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # sshd: 172.16.25.124 sshd: 172.16.25.125 sshd: 172.16.25.126
三、为电子邮件提醒配置DenyHosts
主配置文件位于/etc/denyhosts.conf下,此文件用于发送有关可疑登录和受限主机的电子邮件提醒,使用VI编辑器打开此文件。
# vi /etc/denyhosts.conf
搜索“ADMIN_EMAIL ”并在此处添加你的电子邮件地址以接收有关可疑登录的电子邮件提醒(如果是多个电子邮件提醒,使用逗号分隔)。这里可以参看下CentOS 6.3系统服务器的配置文件。每个变量都有详细记录,因此请根据个人的喜好进行配置。
############ DENYHOSTS REQUIRED SETTINGS ############ SECURE_LOG = /var/log/secure HOSTS_DENY = /etc/hosts.deny BLOCK_SERVICE = sshd DENY_THRESHOLD_INVALID = 5 DENY_THRESHOLD_VALID = 10 DENY_THRESHOLD_ROOT = 1 DENY_THRESHOLD_RESTRICTED = 1 WORK_DIR = /var/lib/denyhosts SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES HOSTNAME_LOOKUP=YES LOCK_FILE = /var/lock/subsys/denyhosts ############ DENYHOSTS OPTIONAL SETTINGS ############ ADMIN_EMAIL = ravisaive@idccoupon.com SMTP_HOST = localhost SMTP_PORT = 25 SMTP_FROM = DenyHosts <idccoupon@idccoupon.com> SMTP_SUBJECT = DenyHosts Daily Report ############ DENYHOSTS OPTIONAL SETTINGS ############ DAEMON_LOG = /var/log/denyhosts DAEMON_SLEEP = 30s DAEMON_PURGE = 1h
四、重新启动DenyHosts服务
完成配置后,重新启动DenyHosts服务以进行新更改,同时还将DenyHosts服务添加到系统启动中。
# chkconfig denyhosts on # service denyhosts start
五、查看DenyHosts日志
想要查看denyhosts ssh日志了解有多少攻击者和黑客试图访问你的服务器,可以使用以下命令查看实时日志。
# tail -f /var/log/secure
Oct 14 15:01:43 idccoupon sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2 Oct 14 15:01:43 idccoupon sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0) Oct 14 16:44:09 idccoupon sshd[25474]: pam_unix(sshd:session): session closed for user root Oct 14 11:08:56 idccoupon sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2 Oct 14 11:08:56 idccoupon sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0) Oct 14 11:12:00 idccoupon atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0) Oct 14 11:12:00 idccoupon atd[3417]: pam_unix(atd:session): session closed for user root Oct 14 11:26:42 idccoupon sshd[31669]: pam_unix(sshd:session): session closed for user root Oct 14 12:54:17 idccoupon sshd[7480]: Accepted password for root from 172.16.25.125 port 1787 ssh2
六、从DenyHosts中删除被禁止的IP地址
如果曾经意外阻止并希望从denyhosts中删除该禁止的IP地址,这个时候需要停止该服务。
# /etc/init.d/denyhosts stop
彻底移除或删除被禁止的IP地址,需要编辑以下配置文件,然后删除相应的IP地址。
# vi /etc/hosts.deny # vi /var/lib/denyhosts/hosts # vi /var/lib/denyhosts/hosts-restricted # vi /var/lib/denyhosts/hosts-root # vi /var/lib/denyhosts/hosts-valid # vi /var/lib/denyhosts/users-hosts
删除被禁止的IP地址后,重新启动服务。
# /etc/init.d/denyhosts start
需要注意嘚瑟,由于有问题的IP地址添加到/var/lib/denyhosts目录下的所有文件中,因此很难确定哪些文件包含有问题的IP地址。这时可以使用grep命令找出IP地址是最佳方法之一。例如,要找出IP地址172.16.25.124,请执行以下命令:
cd /var/lib/denyhosts grep 172.16.25.124 *
七、在DenyHosts中永久将IP地址列入白名单
如果有想要永久列入白名单的静态IP地址列表,打开配置文件/var/lib/denyhosts/allowed-hosts。默认情况下,此文件中包含的任何IP地址都不会被禁止(将此视为一个白名单)。
# vi /var/lib/denyhosts/allowed-hosts
并在单独的行上添加每个IP 地址,然后保存并关闭文件。
# 不被阻止的本地服务器IP地址列表
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127