Linux 预防利用 ssh 暴力破解用户:过滤试图非法登录 IP
之前买的腾讯云服务器,总是收到提醒被其它的 ip 攻击试图破解。实在是忍无可忍,自己在网上参考了一篇教程,就总结了下,防止 ssh 暴力破解 linux 用户,将试图入侵的 ip 达到一定次数就放入黑名单中。
分配文件基本权限时核心原则:在最小权限情况下能实现要求即可。
正文
一、通过 awk 命令记录黑名单
awk 命令的使用可以参考菜鸟教程,下面给出链接。
1 | cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort|uniq -c |
二、过滤出登录错误超过指定次数的 ip
编辑脚本:vim /usr/local/bin/secure_ssh.sh
1 | #! /bin/bash |
思来想去还是加上一些注释,便于理解。
三、赋予执行权限
权限目录的作用
- r:查询目录下的文件(
ls目命令) - w:修改目录的权限。例如:新建,删除,重命名,剪切,复制文件和目录(
touch,rm,mv,cp) - x:进入目录(
cd)
chmod 777(慎重赋予最高权限) 【文件】,这里就不详细讲基本权限了,后续会出相关的文章。
每一位对应的含义
- 第 1 个 7 代表所有者
- 第 2 个 7 代表所属组
- 第 3 个 7 代表 other
使用 chmod 755 secure_ssh.sh 命令赋予读与执行的权限。
对文件来讲:最高权限为 x(执行)
对目录来讲:最高权限为 w(写)
这里再啰嗦一遍,分配文件基本权限时核心原则:在最小权限情况下能实现要求即可。
四、循环执行脚本
首先了解 * 代表的意义
* * * * * 执行的任务 ," * " 的含义如下表所示:
| 内容 | 含义 | 范围 |
|---|---|---|
| 第一个 “*” 号 | 一小时当中的第几分钟 | 0-59 |
| 第二个 “*” 号 | 一天当中的第几小时 | 0-23 |
| 第三个 “*” 号 | 一个月当中的第几天 | 1-31 |
| 第四个 “*” 号 | 一年当中的第几个月 | 1-12 |
| 第五个 “*” 号 | 一周当中的星期几 | 0-7(0 和 7 都代表星期日) |
再看看一些符号代表的含义
- “*” :代表任意时间 例如:第一个 “ * ” 每分钟执行一次命令
- “,”: 代表不连续的时间 例如:“ 0 9,12,15 * * * 命令” 每天的 9:00,12:00,15:00 都执行一次命令
- “- “: 代表连续的时间范围 例如:“0 8 * * 1-6 命令” 每周一到周六的上午 8 点执行命令
- “* /n”:代表每隔多久执行一次 例如:“*/7 * * * * 命令” 每隔 7 分钟执行一遍命令
设置每分钟执行一次:
1 | */1 * * * * /usr/local/bin/secure_ssh.sh |
第一种方式:使用 crontab -e 设置循环执行脚本crontab -e,设置每隔 1 分钟执行一次
1 | */1 * * * * /usr/local/bin/secure_ssh.sh |