的DenyHosts是一个开源和免费的基于日志的入侵防御安全方案在菲尔·施瓦茨 Python语言开发的SSH服务器。 它的目的是监视和通过添加一个条目/etc/hosts.deny文件服务器上的文件阻止原始IP地址分析SSH服务器日志中为无效的登录尝试,基于字典的攻击和暴力攻击和防止IP地址从制作任何进一步的这样的登录尝试。
安装DenyHosts以阻止SSH攻击
的DenyHosts是非常需要的工具,所有基于Linux的系统,特别是当我们允许基于密码的ssh登录 。 在本文中,我们将告诉你如何安装和RHEL 6.3 / 6.2 / 6.1 / 6 / 5.8配置的 DenyHosts,CentOS的6.3 / 6.2 / 6.1 / 6 / 5.8和Fedora 17,16,15,14,13,12系统使用epel库。
参见 :
在RHEL,CentOS和Fedora中安装DenyHosts
通过在Linux系统中不包括默认的DenyHosts工具,我们需要使用第三方来安装它EPEL软件库 。 一旦添加存储库,安装使用以下命令YUM包。
# yum --enablerepo=epel install denyhosts OR # 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.125 sshd: 172.16.25.126 sshd: 172.16.25.127
为电子邮件警报配置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@youcl.com SMTP_HOST = localhost SMTP_PORT = 25 SMTP_FROM = DenyHosts <youcl@youcl.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
Nov 28 15:01:43 youcl sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2 Nov 28 15:01:43 youcl sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0) Nov 28 16:44:09 youcl sshd[25474]: pam_unix(sshd:session): session closed for user root Nov 29 11:08:56 youcl sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2 Nov 29 11:08:56 youcl sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0) Nov 29 11:12:00 youcl atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0) Nov 29 11:12:00 youcl atd[3417]: pam_unix(atd:session): session closed for user root Nov 29 11:26:42 youcl sshd[31669]: pam_unix(sshd:session): session closed for user root Nov 29 12:54:17 youcl 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.125,做的。
cd /var/lib/denyhosts grep 172.16.25.125 *
白名单IP地址永久在DenyHosts
如果您有要永久列入白名单的静态IP地址列表。 打开文件/ var / lib中/的DenyHosts /允许-hosts文件。 默认情况下,此文件中包含的任何IP地址都不会被禁止(认为这是一个whilelist)。
# vi /var/lib/denyhosts/allowed-hosts
并将每个IP地址添加到单独的行。 保存并关闭文件。
# We mustn't block localhost 127.0.0.1 172.16.25.125 172.16.25.126 172.16.25.127