前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动禁止攻击IP登陆SSH,保护服务器安全

自动禁止攻击IP登陆SSH,保护服务器安全

作者头像
zhangheng
发布2020-04-29 14:22:48
1.9K0
发布2020-04-29 14:22:48
举报
文章被收录于专栏:张恒的网络日志

当你拥有一台服务器并且可以远程ssh登陆后,你会发现有很多恶意扫描工具骚扰你的服务器。最好的方法就是更换SSH登陆的端口号并且定时修改。但是仅仅想禁止某些IP登陆呢?

在服务器上有这么一个文件记录着禁止IP访问的信息,/etc/hosts.deny,如果你不想一个IP通过SSH远程访问你的服务器,可以在这个文件下添加一条信息:sshd:xx.xx.xx.xx:deny即可。

既然手动添加即可生效,那我想通过从sshd的日志里发现恶意访问的IP自动添加到这里该怎么办呢?

前人提供了这么一个脚本可以做这件事。前提:有systemd服务管理。

ssh_deny.sh

代码语言:javascript
复制
#!/bin/bash


journalctl -u ssh.service | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.list
for i in `cat  /root/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ ${#NUM} -gt 1 ]; then
    grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

将这个脚本放到/root/下,然后输入命令:crontab -e,添加一个定时任务:*/1 * * * * sh /root/ssh_deny.sh ,这样就可以了。

目前我的服务器已经记录了600多个恶意尝试登陆的IP。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档