防火墙安全应急

目录

防火墙安全应急

一、如何判断SSH远程登录失败?

基本思路

二、脚本实现

第一步:

第二步:

三、设定防火墙富规则,同时开启防火墙

四、在三的基础上阻止在阻止之前已经连接的存在

五、日志很多,需要将已经处理过的日志排除掉

六、如果同时找出了多条终端,该如何将他们全部终止

七、如果同时找出了多条ip地址改如何处理


防火墙安全应急

实验内容:

1.通过SSH远程登录失败多次,通过防火墙将其屏蔽,并发送通知

一、如何判断SSH远程登录失败?

基本思路

通过查看SSH的操作日志文件:/var/log/secure 来提取登录失败的特征进行判断:Failed password , 如果发现日志文件中出现多次,则可以判定为非法登录(暴力破解)。在通过日志文件中的客户端IP地址,将其提取出来,传递给 firewall-cmd 命令进行阻止

首先我们发现只要登录失败一次在文件 /var/log/secure 中就会有一次记录,就像下面图中的情况

image-20231021114707084

然后我们又如何在命令行中知道到底统计到了多少这个 Failed password ,可以使用命令

grep Failed\ password /var/log/secure| wc -l

grep "Failed password" /var/log/secure| wc -l

来计算统计到的次数

二、脚本实现

第一步:

判断如果密码输错了3次

 sshcount=$(grep "Failed password" /var/log/secure | wc -l)
 if[ $sshcount -gt 3 ]; then
     echo "密码输错3次"
 fi

第二步:

获取ip地址

 将以下内容添加进脚本
 grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | uniq
 #获取ip地址
 grep "Failed password for root" /var/log/secure | awk '{print $11}' | uniq
 #获取用户名
 脚本内容:
 sshcount=$(grep "Failed password" /var/log/secure | wc -l)
 if [ $sshcount -gt 3 ]; then
         echo "密码输入错误三次"
         ip1=$(grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | uniq)#这个是针对外界用户
         ip2=$(grep "Failed password for root" /var/log/secure | awk '{print $11}' | uniq)#这个是针对本地用户
 fi
 ​

三、设定防火墙富规则,同时开启防火墙

使用防火墙富规则禁止某个ip访问

 富规则形式如下:
 firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.230.1 drop'
 ​
 判断防火墙开关命令如下:
 openordown=firewall-cmd --state
 if [ $openordown!=running ]; then
     systemctl start firewalld
 fi

但是由于脚本中的 firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.230.1 drop' $IP 这个由于是在 ``之间,因此不会进行运算和变量的替换,所以这样就会报错

image-20231021163519191

所以在这里我们需要将他的形式修改一下

 富规则形式如下:
 firewall-cmd --add-rich-rule "rule family=ipv4 source address=$ip drop"

 完整代码为:
 sshcount=$(grep "Failed password" /var/log/secure | wc -l)
 if [ $sshcount -gt 3 ]; then
     echo "密码输入错误三次"
     ip1=$(grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | uniq)
     ip2=$(grep "Failed password for root" /var/log/secure | awk '{print $11}' | uniq)
     if [ $ip1 = $ip2 ]; then
         firewall-cmd --add-rich-rule "rule family=ipv4 source address=$ip1 drop"
         echo "防火墙已经阻止该$ip1的访问"
     else
         firewall-cmd --add-rich-rule "rule family=ipv4 source address=$ip1 drop"
         echo "防火墙已经阻止该$ip1的访问"
         firewall-cmd --add-rich-rule "rule family=ipv4 source address=$ip2 drop"
         echo "防火墙已经阻止该$ip2的访问"
     fi
         
 fi

image-20231021163731408

这样才算将这个问题解决了

image-20231021163904665

现在就根本连不上了

四、在三的基础上阻止在阻止之前已经连接的存在

我们知道,使用 who 命令可以查看登录的用户,通过 grep 和 awk 可以单独得出用户的代号

image-20231021170325104

补充知识:

通常情况下我们是使用的 kill pid 来阻止进程的,那我们要是需要使用进程名来阻止呢,需要怎么做 ?

使用 pkill 进程名 这样可以通过进程名来阻止进程

当然, pkill 还可以结束远程登录到 linux本台服务器的设备

 [root@mycentos opt]# who
 root     tty1         2023-09-11 00:23
 root     pts/0        2023-10-21 10:57 (192.168.230.1)
 root     pts/1        2023-10-21 11:45 (192.168.230.1)
 root     pts/2        2023-10-21 16:25 (192.168.230.1)
 #who 可以查看是谁登录进了我
 ​
 使用 pkill -kill -t pts/0 强制踢掉 pts/0 的登录

五、日志很多,需要将已经处理过的日志排除掉

可以选择将已经搜索过得 Failed password 替换掉 password 就好了(使用sed替换),替换后的结果自己随机制定

六、如果同时找出了多条终端,该如何将他们全部终止

七、如果同时找出了多条ip地址改如何处理

上面两个问题的解决办法是一样的

方法一:

将查询到的多条结果重定向到一个文件中,可以使用 wc -l 的方式获取文件行数,然后使用while循环按行读取文件的方式来解决

方法二:

使用 awk 的 NR 可以获得文件的总行数

awk 'END{print NR}' filename

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux安全应急响应是指在发生安全事件或遭受攻击时,对Linux系统进行紧急处置和响应的过程。以下是一些常见的Linux安全应急响应步骤: 1. 确认安全事件:首先要确定是否发生了安全事件,包括检查系统日志、网络流量分析和异常行为检测等。 2. 隔离受影响的系统:如发现受到攻击的系统,应立即将其隔离,以防止攻击扩散或进一步损害其他系统。 3. 收集证据:在处理安全事件之前,应收集相关证据,包括攻击日志、恶意文件和异常配置等。这些证据对于后续调查和分析非常重要。 4. 分析攻击:对收集到的证据进行深入分析以确定攻击类型、攻击者的目的和方法。这有助于加强安全防御和预防类似攻击再次发生。 5. 恢复系统:在确保已经理解并清除了安全威胁之后,可以开始恢复受损系统的正常运行。这可能包括修复被攻击的漏洞、移除恶意软件和重新配置受损的系统。 6. 安全加固:在响应安全事件后,应加强系统的安全防御机制,包括更新补丁、加强访问控制、安装防火墙以及加强账户和密码管理等措施。 7. 审查和改进:对安全事件的响应过程进行审查和改进,以提高安全性和应急响应的效率。这包括分析事件的原因和教训,制定更好的安全策略和流程。 请注意,这只是一个基本的安全应急响应框架,实际情况可能因事件类型和具体环境而有所不同。在面临安全事件时,建议寻求专业的安全团队或专家的帮助来进行处理和恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值