系统安全学习之旅(服务器ssh加固)

简介: 系统安全学习之旅(服务器ssh加固)

前因

早上发现云服务遭到奇怪IP地址大量的ssh登录,查了一下是国外的IP地址,应该是因为我ssh端口修改了,不然可能会更多登录尝试  

[root@i-9d1eq6no black]# lastb |awk '{print $3}' |sort|uniq -c |sort -n 
      1 
      1 Sat
   6603 137.184.6.21
   7085 161.35.215.224

准备干活

写个脚本将最近登录失败的IP给加入黑名单,然后定时执行脚本

准备脚本

[root@i-9d1eq6no ~]# mkdir black
[root@i-9d1eq6no black]# cd !$
[root@i-9d1eq6no black]# vim black.sh
[root@i-9d1eq6no black]# chmod u+x black.sh 

脚本内容如下

#!/bin/bash
DATE=$(date +"%a %b %e %H")
# 定义DATE方便grep过滤
#BAD_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>5)print i}')
# 找出登录失败大于5次的地址
COUNT=0
# 定义循环次数方便判断是否重启sshd
for IP in $BAD_IP; do
        # insert_ip=$(grep "$IP" /etc/hosts.deny |wc -l) # 查询BAD_IP是否已经在 hosts.deny 中
        # 这个判断在调试的时候可以用一下,正式使用感觉没必要开启
        # if [[ $insert_ip -eq 0 ]]; then
                echo "sshd:$IP" >> /etc/hosts.deny
                # 将IP加入到hosts.deny,但是暂不生效
                iptables -t filter -A INPUT -s $IP -j DROP
                # 使用iptables拉黑IP
                echo "$(date +"%Y-%m-%d %H:%M:%S") 屏蔽IP: $IP" >> /root/black/black.log
                COUNT=$(( $COUNT + 1 ))
        # fi
done
if [[ $COUNT -ge 1 ]]; then
        service iptables save
#       systemctl restart sshd
#       echo -e "\n$(date +"%Y-%m-%d %H:%M:%S") 本次屏蔽$COUNT个IP完成\n" >> /root/black/black.log
fi 

本来是想将黑名单IP都加入到hosts.deny,然后重启sshd生效的,群里大佬提示这样频繁重启sshd太暴力,就改成iptables了,但是追加到hosts.deny任然存在,可以定期自己登录服务器查看一下决定是否重启sshd服务


ps:如果要自己测试hosts.deny的话,记得先把自己IP加入hosts.allow,避免出现自己登录不上的情况  

定时执行

[root@i-9d1eq6no ~]# crontab -e  # 加入定时任务
[root@i-9d1eq6no ~]# crontab -l
# config ssh blacklist
50 * * * * /root/black/black.sh  # 每小时的50分执行脚本


目录
相关文章
|
13天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
1月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
29 2
|
1月前
|
网络安全
Ubuntu14.04安装ssh服务器
Ubuntu14.04安装ssh服务器
52 0
|
3月前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
49 3
|
3月前
|
网络安全 数据安全/隐私保护
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
890 0
|
5月前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
134 2
|
3月前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
3月前
|
安全 Linux Shell
SSH 命令完整实用指南 | Linux SSH 服务
【8月更文挑战第20天】
409 0
|
3月前
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
184 0
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux——配置SSH免密登录
Linux——配置SSH免密登录
92 0