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
doecho "添加 $port 端到 防火墻"sudo firewall-cmd --add-port=${port}/tcp
done#循環將每個udp端?添加到防火墻規則中
for port in $udpports
doecho "添加 $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 基本一樣,也可以刪除端口列表,也可以刪除端口范圍。具體實例就不累述了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719726.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NumPy數據處理詳解的筆記2

NumPy數據處理詳解的筆記2 第1章NumPy基礎 NumPy是用于處理多維數組的數值運算庫,不僅可用于 機器學習,還可以用于圖像處理,語言處理等任務。 1.2 多維數據結構ndarray的基礎 在學習NumPy的過程中,只要理解了ndarray的相關知識…

java 關于 Object 類中的 wait 和 notify 方法。(生產者和消費者模式!)

4、關于 Object 類中的 wait 和 notify 方法。(生產者和消費者模式!) 第一:wait 和 notify 方法不是線程對象的方法,是 java 中任何一個 java 對象都有的方法,因為這兩個方法是 Object 類中自帶的。 wait 方…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停車位檢測系統(Python+PySide6界面+訓練代碼)

摘要:開發停車位檢測系統對于優化停車資源管理和提升用戶體驗至關重要。本篇博客詳細介紹了如何利用深度學習構建一個停車位檢測系統,并提供了完整的實現代碼。該系統基于強大的YOLOv8算法,并結合了YOLOv7、YOLOv6、YOLOv5的性能對比&#xf…

HarmonyOS端云體化開發—創建端云一體化開發工程

云開發工程模板 DevEco Studio目前提供了兩種云開發工程模板:通用云開發模板和商城模板。您可根據工程向導輕松創建端云一體化開發工程,并自動生成對應的代碼和資源模板。在創建端云一體化開發工程前,請提前了解云開發工程模板的相關信息。 …

前端學習之HTML(第一天)

什么是HTML HTML是一種用來描述網頁的一種語言&#xff0c;HTML不是一種編程語言&#xff0c;而是一種標記語言。 HTML標簽 HTML 標簽是由尖括號包圍的關鍵詞&#xff0c;比如 <html> HTML 標簽通常是成對出現的&#xff0c;比如 <b> 和 </b> 標簽對中的…

ROS 2基礎概念#3:主題(Topic)| ROS 2學習筆記

在ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;主題&#xff08;Topics&#xff09;是實現節點之間通信的主要機制之一。節點&#xff08;Node&#xff09;可以發布&#xff08;publish&#xff09;消息到話題&#xff0c;或者訂閱&#xff08;subscribe&…

市場復盤總結 20240304

僅用于記錄當天的市場情況&#xff0c;用于統計交易策略的適用情況&#xff0c;以便程序回測 短線核心&#xff1a;不參與任何級別的調整&#xff0c;采用龍空龍模式 一支股票 10%的時候可以操作&#xff0c; 90%的時間適合空倉等待 二進三&#xff1a; 進級率中 20% 最常用的…

格兩例12345

osu/Lucky Roll gaming 周末osu有道題&#xff1a;lcg已知低位 def lcg(s, a, b, p):return (a * s b) % pp getPrime(floor(72.7)) a randrange(0, p) b randrange(0, p) seed randrange(0, p) print(f"{p }") print(f"{a }") print(f"{b …

冪等性設計

目錄 前言 冪等性設計 冪等性設計處理流程 HTTP 冪等性 消息隊列冪等性 基于kafka 前言 冪等性設計&#xff0c;就是說&#xff0c;一次和多次請求某一個資源應該具有同樣的副作用。為什么我們要有冪等性操作&#xff1f;說白了&#xff0c;就兩點&#xff1a;1、網絡的…

LeetCode第125場雙周賽個人題解

目錄 100231. 超過閾值的最少操作數 I 原題鏈接 思路分析 AC代碼 100232. 超過閾值的最少操作數 II 原題鏈接 思路分析 AC代碼 100226. 在帶權樹網絡中統計可連接服務器對數目 原題鏈接 思路分析 AC代碼 100210. 最大節點價值之和 原題鏈接 思路分析 AC代碼 10023…

大話C++之:對象內存模型

一般繼承(無虛函數覆蓋) 只有一個虛指針&#xff0c;指向一個虛表&#xff0c;虛函數按順序從祖先節點開始插入到虛表上。字段按順序從祖先節點開始插入到對象內存上 一般繼承(有虛函數覆蓋) 只有一個虛指針&#xff0c;指向一個虛表&#xff0c;虛函數按順序從祖先節點開始&a…

桂院校園導航 靜態項目 二次開發教程 2.0

Gitee代碼倉庫&#xff1a;桂院校園導航小程序 GitHub代碼倉庫&#xff1a;GLU-Campus-Guide 靜態項目 2.0版本 升級日志 序號 板塊 詳情 1 首頁 重做了首頁&#xff0c;界面更加高效和美觀 2 校園頁 新增了 “校園指南” 功能&#xff0c;可以搜索和瀏覽校園生活指南…

【金三銀四】每日一點面試題(Java--JVM篇)

1、說一下 JVM 的主要組成部分及其作用&#xff1f; JVM&#xff08;Java虛擬機&#xff09;是Java程序運行的核心組件&#xff0c;它負責將Java字節碼翻譯成底層操作系統能夠執行的指令。JVM由以下幾個主要組成部分構成&#xff1a; 類加載器&#xff08;Class Loader&#…

Modbus協議詳細解析與案例分享

目錄 Modbus協議詳細解析與案例分享1. Modbus協議簡介2. Modbus RTU和Modbus TCP的區別3. Modbus幀結構4. Modbus協議示例5. Modbus應用場景結語 Modbus協議詳細解析與案例分享 1. Modbus協議簡介 Modbus是一種串行通信協議&#xff0c;用于實現工業自動化設備之間的通信。它…

消息中間件|初識消息隊列

文章目錄 消息隊列是什么&#xff1f;消息隊列關鍵概念消息隊列優點消息隊列的應用場景異步處理應用解耦流量削峰消息通訊 常用消息隊列中間件的對比 消息隊列是什么&#xff1f; 消息隊列&#xff08;Message Queue&#xff09;是一種用于在軟件系統之間傳遞消息的通信機制。…

spring boot概述

SpringBoot是由Pivotal團隊提供的全新框架&#xff0c;其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。 該框架使用了特定的方式來進行配置&#xff0c;從而使開發人員不再需要定義樣板化的配置。 通過這種方式&#xff0c;SpringBoot致力于在蓬勃發展的快速應用開發…

實時抓取SKU商品屬性詳細信息API數據接口(淘寶,某音)

item_sku-獲取sku詳細信息 taobao.item_sku詳細信息 API公共參數 請求地址: https://api-gw.onebound.cn/taobao/item_sku 名稱類型必須描述keyString是調用key&#xff08;演示示例&#xff09;secretString是調用密鑰api_nameString是API接口名稱&#xff08;包括在請求地…

設計模式學習筆記 - 設計原則 - 3.里氏替換原則,它和多態的區別是什么?

前言 今天來學習 SOLID 中的 L&#xff1a;里氏替換原則。它的英文翻譯是 Liskov Substitution Principle&#xff0c;縮寫為 LSP。 英文原話是&#xff1a; Functions that use points of references of base classes must be able to use objects of derived classes withou…

python-分享篇-生成仿微信公眾號推廣的個性二維碼(支持動態)

代碼 生成仿微信公眾號推廣的個性二維碼&#xff08;支持動態&#xff09;from MyQR import myqr # 要生成動態二維碼&#xff0c;只需要將piture參數和save_name參數設置gif動圖即可 myqr.run(wordshttps://blog.csdn.net/stqer/article/details/135553200, # 指定二維碼包含…

JVM(內存區域劃分)

JVM JVM - Java虛擬機 我們編寫的 Java 程序, 是不能夠被 OS 直接識別的 JVM 充當翻譯官的角色, 負責把我們寫的的 Java 程序 ,翻譯給 OS “聽”, 讓 OS 能夠識別我們所寫的 Java 代碼 JVM 內存區域劃分 JVM 是一個應用程序, 在啟動的時候, 會從 操作系統 申請到一整塊很大的內…