统计ip

查询统计不同ip登录失败次数:

1
lastb -f /var/log/btmp | awk '{ print $3}' | sort|uniq -c | sort -n

禁用账户

连续登录失败,禁用一段时间账户:
修改文件:vim /etc/pam.d/sshd 文件,在第二行添加

1
auth required pam_tally2.so onerr=fail deny=5 unlock_time=3600 even_deny_root root_unlock_time=300

设置为密码连续错误5次锁定,锁定时间3600秒 root密码连续错误3次锁定,时间为 300秒 。

查看root用户的登录失败的次数:pam_tally2 --user root
重置计数器,即手动解锁:pam_tally2 --user root --reset

禁用ip

使用Fail2ban工具,登录失败多次,ip加入黑名单:

安装 Fai2Ban

简单说来,这是一个入侵防御软件的框架,可以保护计算机服务器免受暴力攻击。Fail2Ban 使用 Python 编程语言编写,能够运行在 POSIX 系统上(例如:Linux),并且具有与本地安装的数据包控制系统或防火墙的接口,例如iptables或TCP Wrapper 等。更进一步的解释,Fail2Ban 帮助我们自动化的监视暴力攻击和密码猜测者的攻击,对于在短时间内反复未能通过身份验证,则自动的禁止进行尝试。
yum install -y fail2ban

配置 Fai2Ban

Fail2Ban安装包中含有一个名为jail.conf的默认配置文件。 升级Fail2Ban时,该文件将被覆盖。因此,如果有定制化的配置,需要在升级前做好备份。

另一种推荐的方法是将jail.conf文件复制到一个名为jail.local的文件中。 我们将定制的的配置更改存入jail.local中。这个文件在升级过程中将保持不变。 Fail2Ban启动时会自动读取这jail.conf与jail.local这两个配置文件,当然后者的优先级比较高。

先复制一份:

1
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

再修改:

1
sudo vim /etc/fail2ban/jail.local

配置 jail.local

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[DEFAULT]
#IP白名单 白名单中的IP不会屏蔽,可填写多个以(,)分隔
ignoreip = 127.0.0.1/8 ::1
#封禁时间 单位为秒(s)24小时可以设置成24h
bantime = 48h
#在这个时间段内,超过最大重试次数就封禁该操作的IP
findtime = 3600
#最大重试次数
maxretry = 5
#屏蔽IP所使用的方法,这里使用firewalld屏蔽端口,使用的防火墙规则
banaction = hostsdeny
#触发规则后的选择行为
action = %(action_)s
#名称,可以随便填写
[sshd]
#需要监听的项,规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
filter = sshd
enabled = true
#需要监听的项
port = 22
action = %(action_)s
#监听的日志路径
logpath = /var/log/secure

启动 Fail2Ban 服务:
sudo systemctl start fail2ban

停止 Fail2Ban 服务:
sudo systemctl stop fail2ban

重启 Fail2Ban 服务:
sudo systemctl restart fail2ban

检查 Fail2Ban 服务状态:
sudo systemctl status fail2ban

查看指定 JAIL 的详细信息和状态:
sudo fail2ban-client status [JAIL 名称]

解封 IP 地址:
sudo fail2ban-client set [JAIL 名称] unbanip [IP 地址]
这个命令用于手动解封指定的 IP 地址。将 [JAIL 名称] 替换为实际的 Fail2Ban 配置文件中定义的监控规则(如 sshd),将 [IP 地址] 替换为需要解封的 IP 地址。

常用命令合集

显示当前磁盘使用情况 :df -h
查找大于300M的文件:find . -type f -size +300M
查询文件的大小:du -ah --max-depth=1
查询docker占用磁盘:du -sh /var/lib/docker/
排行前十的内存占用:ps -auxf |sort -nr -k 4 |head -10
查看docker 容器占用内存大小 :docker stats --no-stream --format "table {{.Container}}\t{{.MemUsage}}"