利用 firewalld ipset 禁止 Linux 服务器被暴力破解登录

系统 Linux
为了禁止Linux服务器被暴力破解登录,我想到了使用firewalld来禁止这些ip地址通过ssh连接,从而阻断服务器被远程暴力破解,以下是详细步骤。

不知道之前是哪位同事心大,居然把一台Linux主机在防火墙上做了主机映射,结果这台主机完全暴露在公网上,关键是sshd服务端口也没改。一查日志,全是暴力登录的记录,真担心哪天密码被暴力破解了。

为了解决这个问题,想到了使用firewalld来禁止这些ip地址通过ssh连接,从而阻断服务器被远程暴力破解,以下是详细步骤。

1.定义firewalld ipset

firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip

2.定义firewalld规则调用ipset

firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset=blacklist port protocol="tcp" port=22 drop'

3.将日志中的ip添加到ipset中

因为日志中ip很多,而且会不断更新,不可能手动添加,于是打算写个shell脚本,通过定时任务添加到ipset中。shell脚本内容如下:

#!/bin/bash
# Author: Harry
# Description: 使用root账号登录错误大于10次的IP被加入到黑名单中
for ip in `grep -i 'Failed password for root' /var/log/secure | awk '{print $11}' | sort -n | uniq -c | sort -k1nr | awk '{if ($1>10) print $2}'`; do
    firewall-cmd --permanent --ipset=blacklist --add-entry="${ip}";
done;
firewall-cmd --reload;

4.定时任务

0 * * * * /opt/blockips.sh >/dev/null 2>&1

说明:任务每小时执行一次

5.其他

此时可以用如下方法查询被禁止的IP地址:

使用firewall-cmd命令查看已经被进入黑名单的IP地址

firewall-cmd --permanent --info-ipset=blacklist
firewall-cmd --ipset=blacklist --get-entries

经过查询,居然有这么多IP,由此可见服务器暴露在公网上是有多不安全。

图片

查看ipset配置文件blacklist.xml

cat /etc/firewalld/ipsets/blacklist.xml

注意,这里使用的firewalld ipset 是指 firewalld 与 ipset 工具的集成,而不是独立的ipset工具,如果使用ipset命令创建IP地址集合,firewalld将无法与之关联。

责任编辑:赵宁宁 来源: IT人家
相关推荐

2022-08-06 13:04:27

LinuxSHH

2022-08-10 08:43:46

僵尸网络DDoS功能SSH服务器

2013-04-18 09:52:56

2009-11-04 21:46:39

2011-07-04 09:09:19

2015-10-19 11:44:00

2021-07-09 05:20:14

暴力破解网络攻击Kubernetes集

2017-03-01 11:52:30

2018-04-09 10:24:31

2015-03-17 09:50:00

2023-09-11 07:17:30

2009-05-20 11:30:21

2019-02-25 18:03:15

2024-01-29 00:10:00

2010-08-18 10:17:12

2009-08-10 15:47:20

2013-08-19 15:14:02

2013-05-14 10:12:13

2011-11-29 10:03:24

2013-06-08 10:41:51

点赞
收藏

51CTO技术栈公众号