ssh放行端口_CentOS 7 搭配fail2ban + Firewalld防止SSH爆破

什么是fail2ban

Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击。它是用 Python 编程语言编写的。Fail2Ban 基于auth 日志文件工作,默认情况下它会扫描所有 auth 日志文件,如 /var/log/auth.log/var/log/apache/access.log 等,并禁止带有恶意标志的IP,比如密码失败太多,寻找漏洞等等标志。

通常,Fail2Ban 用于更新防火墙规则,用于在指定的时间内拒绝 IP 地址。它也会发送邮件通知。Fail2Ban 为各种服务提供了许多过滤器,如 ssh、apache、nginx、squid、named、mysql、nagios 等。

检查SSH失败的登录记录

lastb | grep root | wc -l
83cc584dd41b91497540ea62c217ba93.png

统计一下尝试失败的ip地址都有哪些

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'
5b287777c2a90be7e261f751c27a5d88.png


检查Firewalld是否启用

#如果您已经安装iptables建议先关闭
service iptables stop
#查看Firewalld状态
firewall-cmd --state

Firewalld的常用操作

# 启动服务
systemctl start firewalld

# 设置服务自启动
systemctl enable firewalld

# 取消服务自启动
systemctl disable firewalld

# 停止服务
systemctl stop firewalld

# 查看服务状态
systemctl status firewalld

# 重启服务
systemctl restart firewalld

放行22端口

先放行ssh端口,不然就把自己也给拦截了

#放行22端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
#重载配置
firewall-cmd --reload
#查看已放行端口
firewall-cmd --zone=public --list-ports

其它端口依次按上述操作即可

安装fail2ban

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件

配置规则

新建jail.local来覆盖fail2ban的一些默认规则:

#新建配置
vi /etc/fail2ban/jail.local
#默认配置
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
#这里banaction必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写
banaction = firewallcmd-ipset
action = %(action_mwl)s
  • ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
  • bantime:屏蔽时间,单位为秒(s)
  • findtime:时间范围
  • maxretry:最大次数
  • banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口

防止SSH爆破

jail.local后面追加如下内容:

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure
  • [sshd]:名称,可以随便填写
  • filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
  • port:对应的端口
  • action:采取的行动
  • logpath:需要监视的日志路径

systemctl start fail2ban启动fail2ban

Docker配置

docker防火墙使用的是底层iptables,封装后的firewalld默认不生效

如果想要使用firewalld,需要做以下调整:

firewall-cmd --permanent --zone=trusted --change-interface=docker0

重启 firewalld、docker 以生效

验证是否可以正常访问

docker run --rm busybox nslookup baidu.com

验证

可以使用另一个IP的VPS来尝试错误密码登录,要想查看状态,使用下面的命令,status后面跟的是上面配置文件里面的单元组名

fail2ban-client status sshd
d0b856ee8e34f7d0198fc5d7e907cdd1.png

实时查看日志 tail -f /var/log/fail2ban.logn

5f2fc19e1228d4b5ee3e302484ad670e.png

82ecb8b69a0e371764fa0235a5359457.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值