0%

简单粗暴Centos7网络加固(三)

前边文章实现了只允许国内的IP地址来访问VPS,接下来我们使用fail2ban来防止SSH暴力破解。

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则表达式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)。比如有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员。

安装fail2ban

1
yum install fail2ban fail2ban-systemd

更改配置文件fail2ban

这里要注意的是所有.conf文件里面的配置信息都会被.local配置所覆盖。所以你会看到很多文档都创建了一个local文件。我这人比较爱使用原有配置文件。我是直接更改了 jail.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 将00-firewalld.conf改名否则fail2ban默认使用firewall防火墙否则日志会提示如下错误
# ERROR stderr: 'FirewallD is not running'
# ERROR killed with signal 124 (return code: 252)
# ERROR Failed to execute ban jail 'sshd' action 'firewallcmd-ipset' info 等等内容
cd /etc/fail2ban/jail.d/
mv 00-firewalld.conf 00-firewalld.conf.disabled
# ---------更改配置文件----------
vi /etc/fail2ban/jail.conf
# 找到如下两行
banaction = iptables-multiport
banaction_allports = iptables-allports
# 更改为如下内容
banaction = iptables-ipset-proto6
banaction_allports = iptables-ipset-proto6-allports
# 找到[sshd]在下面添加一行 enabled = true
[sshd]
enabled = true

我还更改了一处动作配置文件。默认是当ssh或者其他服务被多次爆破后只封端口,我更改配置文件的目的是为了把这个ip直接封掉不论端口。

1
2
3
4
5
6
7
vi iptables-ipset-proto6.conf
# 找到这两行
actionstart = ipset create <ipmset> hash:ip timeout <bantime><familyopt>
<iptables> -I <chain> -p <protocol> -m multiport --dports <port> -m set --match-set <ipmset> src -j <blocktype>
#更改为如下内容
actionstart = ipset create <ipmset> hash:ip timeout <bantime><familyopt>
<iptables> -I <chain> -m set --match-set <ipmset> src -j <blocktype>

开启服务

1
2
systemctl enable fail2ban
systemctl start fail2ban

后记

fail2ban目录大约如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/etc/fail2ban/
├── action.d #目录中存放了一系列操作动作脚本
│ ├── iptables-common.conf
│ ├── iptables.conf
│ ├── iptables-ipset-proto4.conf #适配ipset v4版本 ipset -v命令可以查看版本
│ ├── iptables-ipset-proto6-allports.conf #适配ipset v6版本我其实是ipset v7.1, protocol version: 7
│ ├── nftables.conf
│ └── 等等不再列举
├── fail2ban.conf #主配置文件
├── jail.conf #具体让fail2ban监视什么服务要更改和操作的配置文件
├── jail.local #如果你有创建的话.conf的配置将会被.local覆盖
├── filter.d #该目录是一系列分析日志的正则表达式
│ ├── apache-auth.conf
│ ├── apache-noscript.conf
│ ├── couriersmtp.conf
│ ├── postfix.conf
│ ├── proftpd.conf
│ ├── qmail.conf #通过对该目录中配置文件的更改、创建可以自定义
│ ├── sasl.conf #出很多高级功能,例如监视web页面的登录异常等等
│ ├── sshd.conf
│ └── 等等不在列举
└── paths-common.conf #定义了各个服务的日志路径

参考:https://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

简单粗暴Centos7网络加固(一)

简单粗暴Centos7网络加固(二)