当前位置:首页 > 系统 > CentOS7 fail2ban+firewalld

CentOS7 fail2ban+firewalld

系统4年前 (2018-09-27)

CentOS7 fail2ban+firewalld

在CentOS7.5中使用fail2ban+firewalld方式,防御nginx、wordpress和ssh防止爆破攻击

CentOS7 fail2ban+firewalld

安装fail2ban

yum install epel-release
yum install fail2ban fail2ban-systemd


设置自启

systemctl start fail2ban.service
systemctl enable fail2ban.service


生成新配置文件

cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


配置fail2ban

vi /etc/fail2ban/jail.local


# "bantime" is the number of seconds that a host is banned.
bantime  = 600
改为
bantime  = 86400

CentOS7 fail2ban+firewalld


# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600
改为
findtime  = 3600

CentOS7 fail2ban+firewalld


# Note: if systemd backend is chosen as the default but you enable a jail
#       for which logs are present only in its own log files, specify some other
#       backend for that jail (e.g. polling) and provide empty value for
#       journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = auto
改为
backend = systemd

CentOS7 fail2ban+firewalld

# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = root@localhost
# Sender email address used solely for some actions
sender = root@localhost
改为
destemail = root
sender = root

CentOS7 fail2ban+firewalld


# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport
banaction_allports = iptables-allports
改为
banaction = firewallcmd-ipset
banaction_allports = firewallcmd-allports

CentOS7 fail2ban+firewalld


保护SSH

vi /etc/fail2ban/jail.d/sshd.local

找到[sshd]节点,改为如下

[sshd]
enabled = true
port    = ssh
maxretry = 3
logpath = %(sshd_log)s
action = firewallcmd-ipset
bantime = 86400


使其生效

systemctl restart fail2ban


查看ssh登录失败的记录

 tail -f /var/log/secure
 grep 'sshd.*Failed password for' /var/log/secure


查看被ban的IP

fail2ban-client status sshd
iptables -L -n

CentOS7 fail2ban+firewalld


查看运行状态

fail2ban-client status

CentOS7 fail2ban+firewalld


删除被ban地址

fail2ban-client set sshd unbanip 192.168.1.100


查看日志

cat /var/log/fail2ban.log


保护nginx

阻止对服务器进行过多访问

vi /etc/fail2ban/filter.d/nginx-auth.conf

添加
#
# Blocks IPs that makes too much accesses to the server
#
[Definition]

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"

ignoreregex =


ddos防护

vi /etc/fail2ban/filter.d/nginx-dos.conf

添加
#
# Block IPs trying to ddos the server.
#
[Definition]

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"

ignoreregex =


阻止过多ip使用Web应用程序登录页面进行身份验证

vi /etc/fail2ban/filter.d/nginx-login.conf

添加
#
# Blocks IPs that fail to authenticate using web application's log in page
# Scan access log for HTTP 200 + POST /sessions => failed log in
#
[Definition]

failregex = ^<HOST> -.*POST /wp-login.php.* HTTP/1\.." 200

ignoreregex =


阻止过多ip尝试执行脚本

vi /etc/fail2ban/filter.d/nginx-noscript.conf

添加
#
# Block IPs trying to execute scripts such as .php, .pl, .exe and other funny scripts.
#
[Definition]

failregex = ^<HOST> -.*GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\scgi)

ignoreregex =


阻止过多ip使用反向代理

vi /etc/fail2ban/filter.d/nginx-proxy.conf

添加
#
# Block IPs trying to use server as proxy.
#
[Definition]

failregex = ^<HOST> -.*GET http.*

ignoreregex =


添加到jail文件中

vi /etc/fail2ban/jail.local
# HTTP servers节点下添加

[nginx-auth]
enabled = true
filter = nginx-auth
action = %(action_mwl)s
logpath = /home/wwwlogs/*error*.log

[nginx-login]
enabled = false
filter = nginx-login
action = %(action_mwl)s
logpath = /home/wwwlogs/*access*.log
 
[nginx-badbots]
enabled  = true
filter = apache-badbots
action = %(action_mwl)s
logpath = /home/wwwlogs/*access*.log
maxretry = 1
 
[nginx-proxy]
enabled = true
action = %(action_mwl)s
filter = nginx-proxy
logpath = /home/wwwlogs/*access*.log
maxretry = 0

[nginx-dos]
enabled  = true
port     = http
filter   = nginx-dos
logpath  = /home/wwwlogs/*access*.log
findtime = 120
maxretry = 200

[nginx-noscript]
enabled = true
port = http,https
filter = nginx-noscript
logpath = /home/wwwlogs/error.log
maxretry = 1
findtime = 60
bantime = 7200


保护wordpress

vi /etc/fail2ban/filter.d/wordpress.conf

添加
[Definition]
failregex = ^ .*POST .*xmlrpc\.php.*
            ^ .*POST .*login\.php.*

ignoreregex =


添加到jail文件中

vi /etc/fail2ban/jail.local
添加
[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
logpath = /home/wwwlogs/access.log
maxretry = 3
findtime = 60
bantime = 3600


使其生效

service fail2ban restart
如果出错,使用journalctl -xe进行排错


查看生效的规则

fail2ban-client status

CentOS7 fail2ban+firewalld

本站所有文章均可随意转载,转载时请保留原文链接及作者。

本文链接:https://www.vos.cn/os/230.html

相关文章

CentOS 7.2安装Quagga 1.0

CentOS 7.2安装Quagga 1.0

准备装个quagga试试动态路由,熟悉一下命令行,毕竟太久没接触了官网下载包 http://download.savannah.gnu.org/releases/quagga/  ...

Fedora 24 Grub2修复Win 7启动

Fedora 24 Grub2修复Win 7启动

首先查看Win7在磁盘中的UUID号,看到/dev/sda1中的,复制下来在/boot/grub2/grub.cfg添加以下语句osprpber-chain-添加UUID...

Centos安装lrzsz通过Zmodem协议传输数据

Centos安装lrzsz通过Zmodem协议传输数据

主要还是懒,不想打开ssh之类的客户端进行windows与linux之间文件交互,想起来了使用modem协议传。系统是centos,客户端软件xshell,直接yum安装yum instal...

台式机使用u盘安装chromeos第三方cloudready

台式机使用u盘安装chromeos第三方cloudready

 首先准备好一个8G或者16G的u盘https://www.neverware.com/freedownload下载32位或者64位的系统将下载好的文件解压出bin格式的文件本地需要安装ch...

CentOS7 NFS配置

CentOS7 NFS配置

网络文件系统(Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区...

Redhat 6.5网卡聚合绑定

Redhat 6.5网卡聚合绑定

linux下网卡bonding配置是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术,常用聚合模式为0,1,60(balance-rr)轮循(RR)...