抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

前言

刚做运维不久,很多东西初上手,自己租了服务器搭建环境折腾练手,无奈总有扫描端口和ssh暴力破解登录密码的人

起初我也没在意,自用的博客,并没有重要的东西,但是他们把我的后台搞挂了… 前台能访问,后台登不上,数据库无法写入,蛋碎一地。

听从群友的建议,做了一些措施,现在写出来.仅供参考,下面逐个说明

修改ssh连接端口

vim /etc/ssh/sshd_config找到这行 #Port 22去掉前面的#号,将22端口改成你认为别人想不到的端口

然后重启sshd服务

1
service sshd restart

centos7使用这个命令

1
systemctl restart sshd.service

禁止ROOT登陆

1
vim /etc/ssh/sshd_config

找到这行#PermitRootLogin no,去掉前面的#号,“Yes”改为“No”,并保存文件

然后重启sshd服务

1
service sshd restart

centos7使用这个命令

1
systemctl restart sshd.service

将攻击方的IP添加到iptables黑名

首先,如何得到这些IP?

可以在这里面找到:

1
/var/log/secure

grep查找关键字Failed

或者直接提取IPgrep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /var/log/secure |sort |uniq -c

之前使用的nginx搭建的,在后台错误日志里面同样也可以使用此命令来统计,尤其是那些发起奇怪地址请求的人,何为错误日志,发生error才打印,正常,人出错了不会一直访问,因此次数多的嫌疑很大,至于次数多与少,自己斟酌(PS:记住你本机IP,不要把自己误封了)

假设一个ip是123.4.5.6使用此命令iptables -I INPUT -s 123.4.5.6 -j DROP

然后保存

1
serivice iptables save

防止同步洪水包

1
2
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
serivice iptables save

`

防止端口扫描

1
2
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
serivice iptables save

防止洪水攻击

1
2
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
serivice iptables save

将几分钟内多次失败登陆的IP封掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
export LC_ALL=UTC
#扫描10分钟内的登陆失败的IP
SCANNER=$( tm=$(date -d '10 minutes ago' +"%h %-d %T") && \
awk -v tm="$tm" ' $0 ~ tm && /Failed password/ && /ssh2/ { print $(NF-3) ; } ' /var/log/secure \
| sort \
| uniq -c \
| awk '{print $1"="$2;}' \
)
for i in $SCANNER
do
#截取IP与数量
IP=`echo $i|awk -F= '{print $2}'`
NUM=`echo $i|awk -F= '{print $1}'`
#数量大于5次,则使用iptables禁止IP
if [ $NUM -gt 5 ]
then
iptables -vnL | grep DROP | grep $IP &>/dev/null
[ $? -eq 0 ] || /sbin/iptables -I INPUT -s $IP -j DROP
echo "`date` $IP($NUM)" >> /var/log/scanner.log
fi
done
#End of Script

然后写一个定时任务跑一下就OK了。

评论