shell 安全脚本的实现

 更新时间:2023年01月12日 09:01:31   作者:THE FOOL295  
本文主要介绍了shell 安全脚本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

题目:

将密码输入错误超过4次的IP地址通过firewalld防火墙阻止访问

1.初始配置

首先使用systemctl工具启用firewalld服务:

​[root@localhost ~]# systemctl enable firewalld

如果已经启用了,我们现在可以通过执行以下命令启动firewalld:

[root@localhost ~]# systemctl start firewalld

且可以通过运行以下命令验证firewalld的状态并且以下输出确认了firewalld启动了并且在运行:

[root@localhost ~]# systemctl status firewalld

在这里插入图片描述

2.分析

1、需要知道ssh远程访问记录在哪个文件中/var/log/secure
2、模拟远程访问输错密码,查看日志文件:

cat /var/log/secure

在这里插入图片描述

3、了解firewalld添加富规则的知识:

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.210.133/24" service name="ssh" reject'
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="192.168.210.133/24" service name="ssh" reject

4、回到192.168.210.133上进行测试:

[root@localhost ~]# ssh root@192.168.210.128
ssh: connect to host 192.168.210.128 port 22: Connection refused

5、测试后将添加的富规则删除:

[root@localhost ~]# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.210.133/24" service name="ssh" reject'
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

3.编写脚本

[root@localhost shell]# vim deny_ip.sh

#!/bin/bash
#*************************************************************
#Author:czc
#Date:  2023-01-09
#FileName: deny_ip.sh
#*************************************************************
serc_log=/avr/log/secure
ip_list=`awk '/Failed password/ {IP[$(NF-3)]++} END{for (k in IP){if (IP[k]>=4) {print k} }}' /var/log/secure`
for ip in `echo $ip_list`
do
        denyed_ip=`firewall-cmd --list-all | awk -F'[= ]' '/rule family/ && $NF="reject" && $(NF-1)~/ssh/ {print $6}' | awk -F'["/]' '{print $2}'`
        echo $denyed_ip | grep -q $ip
        [ $? -ne 0 ] && firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$ip" service name="ssh" reject"
done

firewall-cmd --reload

[root@localhost shell]# chmod a+rx deny_ip.sh

4.测试

由于此时192.168.210.133只输错密码3次,因此执行脚本后,并未添加富规则。

在这里插入图片描述

在这里插入图片描述

此时再到192.168.210.133上对本机进行访问,累计达到4次错误及以上:[root@localhost ~]# ssh

root@192.168.210.128
root@192.168.210.128's password: 
Permission denied, please try again.
root@192.168.210.128's password: 
Permission denied, please try again.
root@192.168.210.128's password: 

可以看到现在的输入密码错误次数累计达到5次:

在这里插入图片描述

#此时在192.168.210.128上执行脚本
[root@localhost shell]# ./deny_ip.sh
success
success
[root@localhost shell]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="192.168.210.133" service name="ssh" reject


#再回到192.168.210.133上进行测试

[root@localhost ~]# ssh root@192.168.210.128
ssh: connect to host 192.168.210.128 port 22: Connection refused

至此,脚本的编写和测试就完成了。更多相关shell 安全脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何利用shell开发keepalived启动脚本

    如何利用shell开发keepalived启动脚本

    Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。这篇文章主要介绍了使用shell开发keepalived启动脚本,需要的朋友可以参考下
    2020-03-03
  • Linux shell 实现用for循环100次的方法

    Linux shell 实现用for循环100次的方法

    今天小编就为大家分享一篇Linux shell 实现用for循环100次的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux shell字符串截取的详细总结(实用!)

    linux shell字符串截取的详细总结(实用!)

    在开发的时候经常会自行写一些小的脚本,其中就用到截取字符串的操作,这篇文章主要给大家介绍了关于linux shell字符串截取的详细方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Linux命令ifconfig报错command not found的解决方法

    Linux命令ifconfig报错command not found的解决方法

    最近在安装Vmware CentOS,输入ifconfig查看VM的IP地址,提示command not found,发现没安装命令包,此篇文章记录整个问题解决方法,有和小编遇到一样的问题的小伙伴可以参考阅读本文
    2023-08-08
  • 浅谈shell的一些循环格式

    浅谈shell的一些循环格式

    这篇文章主要介绍了浅谈shell的一些循环格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Linux shell脚本全面学习入门

    Linux shell脚本全面学习入门

    这篇文章主要为大家分享下Linux shell脚本相关的资料,对于linux系统中,shell脚本非常实用并强大
    2013-10-10
  • 在linux shell脚本中root切换到普通用户执行脚本或命令的方法

    在linux shell脚本中root切换到普通用户执行脚本或命令的方法

    今天小编就为大家分享一篇在linux shell脚本中root切换到普通用户执行脚本或命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 高级开发运维测试必须掌握的envsubst命令使用详解

    高级开发运维测试必须掌握的envsubst命令使用详解

    这篇文章主要为大家介绍了高级开发运维测试必须掌握的envsubst命令使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Shell中的for和while循环详细总结

    Shell中的for和while循环详细总结

    这篇文章主要介绍了Shell中的for和while循环详细总结,本文讲解了for循环的数字段形式、详细列出、对文件进行循环,while循环的三种使用场合等内容,需要的朋友可以参考下
    2015-05-05
  • linux下数据压缩的几种方法与查看方式(示例代码)

    linux下数据压缩的几种方法与查看方式(示例代码)

    这篇文章主要介绍了linux下数据压缩的几种方法与查看方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论