P.S. 为保万一,建议大家为服务器安装 2FA 两步认证,即便黑客有密码,最终也会因无法绕过2FA而失败;
本文示例背景
服务器系统:Ubuntu server;
系统日志存放路径:/var/log/;
日志名称:/var/log/auth.log;
中心思路
通过提取并分析 auth.log 日志中涉及登录失误的日志部分(内容通常含 failed(如认证失败) 、invalid(如用户名无效),... 我想,防爆力破解软件 - Fail2Ban 就是根据这个命名的。),然后得到一串串尝试登陆却失败的IP,如果它尝试超过3次却都失败了,那我们就把它送进黑名单(Ubuntu 下为 hosts.deny ),这样,它就无法继续尝试任何破解登录了;系统拒绝有关于它的任何登录认证请求,refuse... 之所以防暴力,就是让它无法付诸暴力;
最后,做好日志清理;所有登录都会产生日志,存放在 auth.log(以Ubuntu举例),登录尝试太频繁的话,日志文件就会被塞爆,如果一直不管不顾,最终硬盘就会被塞满...;
BTW,给硬盘瘦身的话可以参阅,以前博客经常被压测,积累了一些经验:
以上。
脚本内容
#!/bin/bash
## 分析并提取所有恶意尝试登陆IP 达到一定恶意尝试登陆次数则提取至黑名单
cd /var/log
grep -iE "failed|invalid" ./auth.log | grep -oP "(\d{1,3}\.){3}\d{1,3}" | sort | uniq -c | awk '$1 > 3 {print $2}' > ./auth.log.ip.2ban
sed -i 's/^/sshd: &/g' ./auth.log.ip.2ban
cat ./auth.log.ip.2ban >> /etc/hosts.deny
## 更新 ./hosts.deny
cd /etc/
sort ./hosts.deny | uniq -d > ./hosts.deny.filter
sort ./hosts.deny | uniq -u >> ./hosts.deny.filter
cp ./hosts.deny.filter ./hosts.deny
service sshd restart
## 清理日志
if [ `du -m /var/log/auth.log|awk '{print $1}'` -gt 10 ]; ## 当日志达到10MB时,清空
then
> /var/log/auth.log;
fi
将脚本命名为 fail2ban.sh 并赋权;
julia@localhost:/var/log$ chmod +x fail2ban.sh
julia@localhost:/var/log$ ./fail2ban.sh
最后,设置 cron,让系统每隔5分钟提取执行脚本;
julia@localhost:/var/log$ crontab -e
添加一条:
*/5 * * * * /var/log/fail2ban.sh
以上,一个简易的防爆力破解Shell脚本。
其他建议
1.安装2FA进行二次登录验证,令牌在你手上;
2.修改默认登录端口;
julia@localhost:/var/log$ vim /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
#Port 22 注释掉 22 端口
Port 9527 #改为 9527 端口(举例)
3.设置较难的登录密码,例如;
e_8_0c]ZXN7=M]dk=vjj=Z]tdW}VCph:0XED!kh+u^~=5Gm
可以试试由1Password提供的随机密码生成器:https://1password.com/zh-cn/password-generator/ ;当然,你要有地方保存密码才行;我的意思是,安装 1password;
4.做一个邮箱服务/电报机器人🤖:每次有新登录/或大量登录尝试都推送消息:
以上,仅作为一些思路参考,大可不必完全参考教程;
附注
如果你对 Shell 还一知半解,可以参阅入门书单进一步学习;
版权属于:毒奶
联系我们:https://limbopro.com/6.html
毒奶搜索:https://limbopro.com/search.html
机场推荐:https://limbopro.com/865.html IEPL专线/100Gb/¥15/月起
毒奶导航:https://limbopro.com/daohang/index.html本文链接:https://limbopro.com/archives/27192.html
本文采用 CC BY-NC-SA 4.0 许可协议,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!