Centos 7方式
黑名单IP
touch /etc/black.txt
ssh 防爆破脚本
cat /etc/secure_ssh.sh
#!/bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /etc/black.txt
for i in `cat /etc/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 3 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
#echo "* * * * * sh /etc/secure_ssh.sh" >> /etc/crontab
#chmod -x /etc/secure_ssh.sh
#crontab /etc/crontab
测试
创建脚本
故意输错密码,然后输入正确的密码,可以登录。
ubuntu方式
mkdir /script
touch /script/checkBlackIp.sh
chmod 755 /script/checkBlackIp.sh /script
chown root:root /script/checkBlackIp.sh
vim /script/checkBlackIp.sh
#!/bin/sh
lastb |awk '/ssh/{print $3}' |sort |uniq -c |awk '{print $2"="$1}' >/script/black.list
for i in `cat /script/black.list`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i |awk -F= '{print $2}'`
if [ ${#NUM} -ne 1 ]; then
grep $IP /etc/hosts.deny >/dev/null
if [ ! $? -eq 0 ]; then
echo "sshd:$IP:deny" >>/etc/hosts.deny
echo "$IP \c"
fi
fi
done
echo "is denied now."
手工运行测试
sudo bash checkBlackIp.sh
# echo > /var/log/wtmp;echo > /var/log/btmp;history -c;
# lastb |awk '/ssh/{print $3}' |sort |uniq -c |awk '{print $2"="$1}'
http://www.ctohome.com/FuWuQi/36/650.html
定时2分钟执行1次
#crontab -e
*/2 * * * * root sh /script/checkBlackIp.sh
如果被拒绝登陆了,需要在vi /etc/hosts.deny里面将拒绝ip删除,就可以登录 了;注释之后,就不会再添加进/etc/hosts.deny
已经被拒绝登陆
如何清空拦截记录
1、清空/删除history记录
echo > /var/log/wtmp;echo > /var/log/btmp;history -c;
2、清空wtmp
# echo > /var/log/wtmp # 此文件默认打开时乱码的,里面可以看到ip等等信息
#last
3、删除 /etc/hosts.deny里面被拒绝的IP地址
#vi /etc/hosts.deny
扩展
crontab -e配置完成后,如何把保存并退出?
1.Ctrl+O 写入
2.出现“FIile name to Write…”,输入Enter
3.Ctrl+x 保存输出
提示“crontab:installing new crontab”表示成功。
(root权限下)
crontab启动:/etc/init.d/cron start ( service cron start )
crontab重启: /etc/init.d/cron restart (service cron restart )
crontab关闭: /etc/init.d/cron stop ( service cron stop )
在终端中,可以利用 ps -aux|grep cron查询crontab状态,默认情况下,是自启动的。
(系统级的)做系统级配置我们会直接配置 /etc/crontab
(用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。
注意,Ubuntu和CentOS的SSH日志文件路径不一样:
/var/log/auth.log Ubuntu是这个文件
/var/log/secure CentOS是这个文件
外网服务器被黑挖矿。解决办法
- 前言
最近在学习远程连接Docker,需要开启TCP;都说容易被别人获取root权限,开始没以为然,慢慢我感觉远程操作服务器越来越缓慢,top命令后发现还真被挖矿了…第一次嘛没什么经验,简单的干掉可疑进程后重启了服务器,就没管了,结果两天后发现又被挖了…
- 思路
top 查看进程,占高达90%CPU以上基本都是可疑的
ls -l /proc/$PID/exe 查看可疑进程所在目录
kill $PID 干掉可疑进程
rm -rf $DIR 删掉可疑进程所在目录
service crond status 查看是否开启了定时任务
如果开启了定时任务,就进入目录cd /var/spool/cron/,这里的文件记录着每个用户的定时任务
rm -rf $FILE 删掉可疑定时任务文件
service crond stop 关闭定时任务
cat ~/.ssh/authorized_keys 查看配置的公钥,可能会出现一到多个没见过的公钥,编辑文件删除可疑的公钥或者重新生成密钥
cd /home/ && ls -all 进入到此目录下查看可疑用户
userdel [-r] $USERNAME 删除可疑用户
cat /etc/sudoers 查看 sudo 文件中是否有可疑用户添加了 sudo 权限,编辑文件删除可疑用户的 sudo 权限,例如$USERNAME ALL=(ALL) ALL这种格式的
参考链接 :
Centos Ubuntu防爆破ssh脚本 :
https://www.jianshu.com/p/e2daea9b93c2