Linux系统运维脚本:一键添加防火墙规则(开启服务和网络端口)

目         录

一、要求

二、解决方案

(一)解决思路

(二)方案

三、脚本程序实现

(一)脚本代码和解释

1、脚本代码

2、代码解释

(二)脚本验证

1、脚本编辑

2、给予执行权限

3、运行脚本,查看效果

四、扩展


一、要求

        在部署一个linux应用程序后,经常发现某个服务没有开放、某个端口没有开放,这就需要一个个开放这些服务或者端口,非常麻烦。有时候若忘了某个端口,还要走一些弯路来查问题、解决问题,花费不少时间。有没有办法,一键添加这些防火墙规则,开放相关的所有服务、和网络端口呢?

二、解决方案

(一)解决思路

       Linux系统有 firewall-cmd 命令可以增加服务和网络端口到防火墙规则里面,我们可以通过在bash脚本中,调用这个命令,来实现一键添加防火墙规则。

(二)方案

       (1)定义要开放的服务列表;

       (2)定义要开放的TCP和UDP端口列表;

       (3)遍历这些列表,一次调用firewall-cmd来进行开放,并设置永久生效;

       (4)重新装载防火墙;

       (5)查看定义的服务和端口是否正确开放。

三、脚本程序实现

        直接把脚本写出来,分享给大家。

(一)脚本代码和解释

1、脚本代码

由于我的环境是centos7.9,编写如下bash代码,可以在centos7以后得版本运行,如下:

#!/bin/bash
#适⽤于RHEL7系列、centos系列
#firewall-cmd --get-services #可以查看firewall⽀持哪些服务
#cat /etc/services #可以查看服务、端⼝的对应表

services="ftp" #设置服务
tcpports="21 7060 8083 26088 26089 54389"
udpports="7060"

# 定义UDP端口范围
udpport_start=25100
udpport_end=26100

#循环将每个服务添加到防⽕墙规则中
for service in $services
do
echo "添加 $service 服务到防火墙"
firewall-cmd --add-service=${service}
done

#循环将每个tcp端⼝添加到防火墙规则中
for port in $tcpports
do
   echo "添加 $port 端到 防火墙"
  sudo firewall-cmd --add-port=${port}/tcp
done

#循环将每个udp端⼝添加到防火墙规则中
for port in $udpports
do
  echo "添加 $port 端到 防火墙"
  sudo firewall-cmd --add-port=${port}/udp
done

# 将udp端口范围添加到防火墙规则中
sudo firewall-cmd --add-port=$udpport_start-$udpport_end/udp

#将以上设置的临时防⽕墙规则,转换为永久有效的规则(确保重启后有效)
sudo firewall-cmd --runtime-to-permanent

2、代码解释

         脚本的目的是将指定的服务、TCP端口、UDP端口以及一个UDP端口范围添加到firewalld的防火墙规则中,并确保这些规则在系统重启后仍然有效。 解释如下:

(1)services="ftp":定义一个变量services,并为其分配一个值,即要添加到防火墙的服务名称(在这里是FTP)。

(2)tcpports 和 udpports:分别定义了要添加到防火墙的TCP和UDP端口列表。

(3)udpport_start 和 udpport_end:定义了要添加到防火墙的UDP端口范围。

(4)第一个for循环:遍历services变量中的每个服务,并使用 firewall-cmd命令将其添加到防火墙规则中。

(5)第二个for循环:遍历tcpports变量中的每个TCP端口,并使用sudo firewall-cmd命令将其添加到防火墙规则中。这里使用了sudo,因为更改防火墙规则通常需要超级用户权限。

(6)第三个for循环:遍历udpports变量中的每个UDP端口,并将其添加到防火墙规则中。

(7)sudo firewall-cmd --add-port=$udpport_start-$udpport_end/udp:这条命令将之前定义的UDP端口范围添加到防火墙规则中,由于这个范围比较多,一个个添加不方便。

(8)最后一个命令:sudo firewall-cmd --runtime-to-permanent。这条命令将当前的运行时防火墙规则转换为永久规则。这意味着即使系统重新启动,这些规则也会保持有效。

(二)脚本验证

1、脚本编辑

        使用编辑器,比如vi,把代码输入进去;

        保存这个脚本到一个文件中,比add-firewall-rules.sh

2、给予执行权限

      chmod +x add-firewall-rules.sh

3、运行脚本,查看效果

     可以运行这个脚本来检查进程的运行情况,如下:

[root@localhost home]#
[root@localhost home]# firewall-cmd --list-services
dhcpv6-client ssh

[root@localhost home]#
[root@localhost home]# [root@localhost home]# firewall-cmd --list-ports
22/tcp
[root@localhost home]#
[root@localhost home]# sh add_firewall_rules-1.sh
添加 ftp 服务到防火墙
添加 21 端到 防火墙
success
添加 7060 端到 防火墙
success
添加 8083 端到 防火墙
success
添加 26088 端到 防火墙
success
添加 26089 端到 防火墙
success
添加 54389 端到 防火墙
success
添加 7060 端到 防火墙
success
success
success
[root@localhost home]# firewall-cmd --list-services
dhcpv6-client ssh ftp
[root@localhost home]# firewall-cmd --list-ports
22/tcp 23/tcp 7060/tcp 8083/tcp 26088/tcp 26089/tcp 54389/tcp 7060/udp 25100-26100/udp
[root@localhost home]#
[root@localhost home]#

四、扩展

        在实际使用中, 可能还要添加其他端口,直接在脚本文件添加即可;可以添加一些udptcp的端口列表,也可以添加udptcp的端口范围。

      另外,也可以采用firewall-cmd --remove-port来删除端口,语法和firewall-cmd --add-port 基本一样,也可以删除端口列表,也可以删除端口范围。具体实例就不累述了。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Linux系统运维是一个广泛而庞大的领域,涉及到各种技术和工具。从入门到企业实战的过程需要掌握一系列的知识和技能。 首先,入门阶段需要了解Linux的基本概念和特点,学习常用的命令和操作技巧。可以通过阅读相关书籍或者在线教程来学习,也可以通过参加培训课程来系统性学习。 在掌握了基础知识之后,需要进一步学习Linux系统的安装、配置和管理。这包括对硬件环境的了解,系统安装过程的实践,以及对各种配置文件和系统组件的掌握。 接下来,需要学习Linux系统网络配置和服务管理。这包括理解网络的概念和协议,掌握网络配置的方式和方法,以及学习如何安装和管理各种网络服务,如Web服务器、邮件服务器等。 同时,必须熟悉Linux系统的安全管理和备份恢复。这包括理解系统安全的基本原理和方法,学会进行用户权限管理、防火墙配置和漏洞扫描等操作;同时,还需要构建合理的备份策略,定期备份系统和数据,并掌握恢复操作。 最后,进入企业实战阶段,需要学习和掌握大规模Linux系统的集中管理和自动化运维技术。这包括理解企业级Linux系统的架构和配置管理工具,学习如何使用脚本和自动化工具来管理和维护系统。 总之,Linux系统运维是一个学习和实践相结合的过程,需要不断地积累和提升知识和技能。通过不断的学习和实践,不仅可以应对各种常见的运维问题,还可以提高系统的稳定性和可靠性,为企业的业务发展提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值