最近刚搞完网络安全攻防演练,正好整理用到的一些命令。
这次记录的是将SSH多次登录失败的IP加入黑名单的过程。
代码语言:javascript代码运行次数:0运行复制# 统计暴力破解次数awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' /var/log/secure|column -t我虽然将ssh的端口更改了,但还是免不了被人发现,并且尝试暴力破解。

查看记录才发现一直有被爆破的记录,最离谱的一个IP爆破了2W次......
代码语言:javascript代码运行次数:0运行复制列出登入失败的用户记录lastb
经过查询网上网友们的解决方案,发现可以使用定时任务来检查登录失败主机列表,并将达到登录失败次数的主机IP地址加入到黑名单。
感觉很不错,为了服务器的安全,我决定在服务器也弄一个,降低 sshd 服务的压力。
脚本如下:
代码语言:javascript代码运行次数:0运行复制#!/usr/bin/bash# 通过lastb获取登录失败的IP及登录失败的次数lastb | awk '{print $3}' | grep ^[0-9] | sort | uniq -c | awk '{print $1"\t"$2}' > /tmp/host_listlist=`cat /tmp/host_list`line=`wc -l /tmp/host_list | awk '{print $1}'`count=1# 如果/tmp/host_list中有数据,循环至少需要执行一次while [[ "$line" -ge "$count" ]]; do ip_add=`echo $list | awk '{FS="\t"} {print $2}'` num=`echo $list | awk '{FS="\t"} {print $1}'` # 登录失败达到5次就将该IP写入文件 if [[ "$num" -ge 5 ]]; then grep "$ip_add" /etc/hosts.deny &> /dev/null if [[ "$?" -gt 0 ]]; then # --------> 此处添加当前系统时间,请根据实际情况定义日期格式 echo "# $(date +%F' '%H:%M:%S)" >> /etc/hosts.deny echo "sshd:$ip_add" >> /etc/hosts.deny fi fi let count+=1 # 删除已经写入文件的IP sed -i '1d' /tmp/host_list # 修改$list变量 list=`cat /tmp/host_list`done# 清空临时文件echo '' > /tmp/host_listexit 0弄好脚本将其加到 crontab 定时任务执行就完成了~
以上就是将SSH多次登录失败的IP加入黑名单的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号