2023.05.08 ssh 防火墙
今天下午我不能从笔记本ssh到Virgo了,昨晚还正常,很可能是上午在配置wiki的时候做了什么导致的。 提示错了”operation timed out“,但是可以从笔记本ping通Virgo,开始怀疑Virgo的IP被禁了, 但Virgo仍然能ssh到另外的服务器上,可能是ssh server的问题。
下面的命令,检查ssh的状态,没发现问题。
systemctl status ssh
service ssh status
回顾我上午做了什么和ssh有关的事情。发现我运行了一条:
sudo ufw allow ssh
我打开/安装了ssh的防火墙,难道我之前没有?
检查防火墙状态:
sudo ufw status
其中没有我用的ssh的port号,添加相应的port号就恢复了!
sudo ufw allow XXXX
顺手把默认的22给禁了。
sudo ufw deny 22
我爱解决问题!
2023.07.08 未知IP暴力破解跑了7000多条试图ssh登录服务器
Ubuntu查看失败登录记录:
sudo lastb
sudo lastb -n 30 #查看最新的30条
sudo lastb |awk ‘{print $3}’|sort |uniq -c #查看失败记录并统计次数。
sudo last #显示成功登录的信息
sudo cat /var/log/auth.log #因为开了一个每分钟执行一次的cron任务,此log基本被cron刷屏。
如何提高ssh登录安全系数:
1. 更改ssh默认端口。
2. 禁止root用户ssh登录。只允许某些user和group登录。
3. 禁止明码登录,使用RSA私钥登录,但现在工作站上用户太多,以及其它需要临时登录的情况,如果你不许要考虑这些,如下操作禁止明码登录。
sudo vi etc/ssh/sshd_config
修改Port,linux端口1024以下是系统保留,从1024-65535是用户使用的。这三条都是在sshd_config文件中修改。修改完后重启ssd服务。
systemctl restart sshd
4. 将恶意的IP放进/etc/hosts.deny,把允许的IP放进/etc/hosts.allow。
这里可以使用一些脚本和方法,定时一段时间,检查出恶意IP,然后自动放进 /etc/hosts.deny。
比如,在/etc/cron.hourly/文件夹中放一个脚本,每小时检查一次日志,链接超过10次拉黑。
#! /bin/bash
data=` cat /var/log/auth.log | grep "Failed password" | grep -v "times:" | grep -v "invaild user" | awk '{print $11}' | sort |uniq -c | awk 'print $2"="$1'`
for i in $data
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i |awk -F= '{print $2}'`
echo $IP $NUM
if [ $NUM -gt 10 ]; then
EXIST=`grep $IP /etc/hosts.deny |wc -l`
echo "$[EXIST]"
if [$[EXIST] -eq 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
1. 注意Ubuntu 20.04可以直接用,其它环境需要按实际情况修改。
2. 注意文件命名,不要加后缀和点,否则可能不会执行。
2023.07.08 周期性执行脚本的命令crontab
安装和启动cron
安装:sudo apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
使用帮助:man crontab
列出当前用户的cron任务:crontab -l
查看其他用户的cron任务:crontab -l -u username
编辑cron任务:crontab -e
* * * * * echo "test crontab is work or not" >> /var/www/html/testcrontab.txt
移除已计划的cron任务:crontab -r
移除所有已计划的cron作业,且无需再次确认:crontab -ir
除了通过配置文件来处理计划cron作业之外,还有别的方法可以做到。如果你查看/etc目录,你会发现有这样的目录:cron.daily、cron.hourly、cron.monthly等等。因此,把cron脚本放入这些目录中,那么系统会根据这些目录名定时执行这些作业脚本的。
参考:https://blog.csdn.net/chszs/article/details/47276899