阻止SSH服务器攻击(强力攻击)使用DenyHosts

在本文中,我们将向您展示如何在RHEL 6.3 / 6.2 / 6.1 / 6 / 5.8,CentOS 6.3 / 6.2 / 6.1 / 6 / 5.8和Fedora 17,16,15,14,13,12上安装和配置DenyHosts

的DenyHosts是一个开源和免费的基于日志的入侵防御安全方案在菲尔·施瓦茨 Python语言开发的SSH服务器。 它的目的是监视和通过添加一个条目/etc/hosts.deny文件服务器上的文件阻止原始IP地址分析SSH服务器日志中为无效的登录尝试,基于字典的攻击和暴力攻击和防止IP地址从制作任何进一步的这样的登录尝试。

Block SSH attacks

安装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.8Fedora 17,16,15,14,13,12系统使用epel库。

参见

  1. Fail2ban(入侵防御)系统的SSH
  2. 禁用或启用SSH root登录
  3. Linux恶意软件检测(LMD)

在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@howtoing.com
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <howtoing@howtoing.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 howtoing sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2
Nov 28 15:01:43 howtoing sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 28 16:44:09 howtoing sshd[25474]: pam_unix(sshd:session): session closed for user root
Nov 29 11:08:56 howtoing sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2
Nov 29 11:08:56 howtoing sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 howtoing atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 howtoing atd[3417]: pam_unix(atd:session): session closed for user root
Nov 29 11:26:42 howtoing sshd[31669]: pam_unix(sshd:session): session closed for user root
Nov 29 12:54:17 howtoing 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