系统安全学习之旅(服务器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分执行脚本


目录
相关文章
|
8天前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
12 2
|
19天前
服务器迁移上云训练营打卡学习领好礼
服务器迁移上云训练营打卡学习领好礼
36 4
|
18天前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
37 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
27天前
服务器迁移上云训练营打卡学习领好礼
服务器迁移上云训练营打卡学习领好礼
31 6
|
17天前
|
网络安全
Ubuntu14.04安装ssh服务器
Ubuntu14.04安装ssh服务器
34 0
|
2月前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
45 3
|
2月前
|
网络安全 数据安全/隐私保护
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
511 0
|
6天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
5天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
3天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。