如何在CentOS 7,CentOS 6.x和Ubuntu 14.04上安装和配置Fail2ban
这是在CentOS 7,CentOS 6.x和Ubuntu 14.04 Server上安装和配置Fail2ban软件的分步指南。
Fail2ban基本理论
由于暴露给互联网的所有服务都容易受到攻击,因此黑客和僵尸程序可能会妥协进入系统。这是一个需要避免的安全问题,而这正是Fail2ban出现的地方。
Fail2ban扫描日志文件中的服务,例如SSH,SMTP,FTP,SIP,Apache等,并禁止显示恶意迹象的IP地址,即太多的密码失败以寻求利用。 Fail2ban可避免类似蛮力的攻击。
Fail2ban的工作原理是监视公共服务的日志以发现身份验证失败中的模式。将fail2ban配置为监视服务的日志后,它将查看该服务的筛选器。该筛选器使用复杂的正则表达式来识别身份验证失败,正则表达式模式位于名为failregex的变量中。
jail.conf和jail.local文件包含[DEFAULT]部分,各个服务部分位于该部分之后。DEFAULT部分首先执行,
/etc/fail2ban/jail.d/中的文件可以覆盖jail.conf和jail.local中的文件
在Ubuntu 14.04服务器上安装Fail2ban
sudo apt-get update sudo apt-get install fail2ban
在CentOS 7和6.x上安装Fail2ban
步骤1:以root用户身份登录到服务器。
sudo su
或者
su
步骤2:如果我们是新安装的CentOS,请进行系统更新(可选)
yum -y update
由于Fail2ban在CentOS官方存储库上不可用,因此请使用EPEL(企业Linux的额外软件包)存储库来安装Fail2ban。首先添加它们:
yum -y install epel-release sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
步骤3:安装Fail2ban
yum enablerepo=epel install fail2ban fail2ban-systemd
成功安装后,我们应该会看到类似以下的结果。
步骤4:如果我们有可用的SELinux,请更新SELinux策略。
如果要禁用SELinux,请运行
yum update -y selinux-policy*
然后通过执行以下内容确认是否已禁用:
sed -i s/(^SELINUX=).*/SELINUX=disabled/ /etc/selinux/config
你应该看到消息
sestatus
SELinux状态:禁用
基本配置。
安装完成后,复制默认的jail.conf文件以创建本地配置文件。默认的Fail2ban配置文件保存在/etc/fail2ban/jail.conf下。使用以下命令创建jail.conf的本地副本
jail.local文件将覆盖jail.conf文件,并用于使自定义配置更新安全。
步骤5:打开jail.local文件进行编辑。我们可以使用Nano或者VIM编辑器。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
或者
nano /etc/fail2ban/jail.local
第一部分是[DEFAULT]部分,它涵盖了fail2ban将遵循的基本规则。
DEFAULT设置适用于所有部分,并且在DEFAULT上下文中指定的重要参数是:
ignoreip:可以是IP地址,CIDR掩码或者DNS主机。 Fail2ban不会禁止与该列表中的地址匹配的主机。这是一个空格分隔的IP地址列表,不能被fail2ban阻止
maxretry:在主机被fail2ban禁止之前,最大登录尝试失败次数。
bantime:如果发现主机违反任何规则,则该主机被禁止的时间(以秒为单位)。默认值为600秒= 10分钟。这对于漫游器特别有用,一旦被禁止,它将仅继续进入下一个目标
协议:使用默认协议。
findtime:如果主机在上一次findtime期间生成了maxretry,则该主机被禁止。默认设置为600秒(10分钟)。如果客户端在10分钟的时间内未尝试登录3次,则Fail2ban将禁止该主机。
destemail:接收禁止消息警报的电子邮件地址
电子邮件动作参数
sendername:警报发件人的名称.设置电子邮件中发件人字段的值。
mta:配置用于发送电子邮件的邮件服务。
nano /etc/fail2ban/jail.local
服务配置
让我们仔细看看基本的SSH监狱文件
说明:
enabled:这意味着允许Fail2ban检查ssh服务
port:服务端口(在/etc/services文件中引用)
[sshd] enabled = true port = ssh filter = sshd #action = firewallcmd-ipset logpath = %(sshd_log)s maxretry = 5 bantime = 86400
filter:这是指配置文件,其中包含fail2ban将用于检测匹配项的规则。该名称对应于/etc/fail2ban/filter.d中的文件;没有.conf扩展名。例如:filter = sshd是指/etc/fail2ban/filter.d/sshd.conf。名称是文件扩展名的缩写。
logpath:指的是fail2ban用于检查失败的登录尝试的日志文件。
行动:告诉fail2ban采取步骤,以禁止一个匹配的IP地址。此处引用的文件位于/etc/fail2ban/action.d/中,没有.conf扩展名。例如:action = iptables是指/etc/fail2ban/action.d/iptables.conf。
步骤6:现在重新启动Fail2ban服务,以使新配置生效。
sudo service fail2ban restart
步骤7:运行Fail2Ban服务
启动并启用Fail2ban和Firewalld
systemctl enable fail2ban systemctl start fail2ban
启动并启用Firewalld守护程序。
systemctl enable firewalld systemctl start firewalld
如何检查Fail2Ban禁止的IP
iptables -L -n
如何检查Fal2Ban监狱状况
sudo fail2ban-client status
步骤8:如何取消禁用IP地址
fail2ban-client set sshd unbanip IPADDRESS
我们还可以使用以下命令语法手动取消和禁止IP地址:
sudo fail2ban-client设置<jail> banip/unbanip <ip地址>
例如
sudo fail2ban-client set sshd unbanip 192.168.1.45 sudo fail2ban-client set sshd banip 192.168.1.45
sshd:是监狱的名称,在这种情况下,是我们在步骤4中配置的sshd监狱。
IPADDRESS:需要禁止或者禁止的IP
使用iptables命令查看fail2ban放入IP表的规则:
iptables -L
总结
Fail2Ban由客户端,服务器和配置文件组成,以限制暴力验证尝试。服务器程序fail2ban-server负责监视日志文件和发出ban/unban命令。它由fail2ban-client通过一个简单的协议进行配置,该协议还可以读取配置文件并向服务器发出相应的配置命令。
在本教程中,我们介绍了在CentOS 7和CentOS 6.x服务器上逐步安装Fail2ban的过程。我们还研究了基本配置设置和DEFAULT上下文参数。