Linux火墻管理及優化

網絡環境配置

使用3個新的虛擬機【配置好軟件倉庫和網絡的】

F1

192.168.150.133

NAT

F2

192.168.150.134

192.168.10.20

NAT

HOST-ONLY ???網絡適配僅主機

F3

192.168.10.30

HOST-ONLY ???網絡適配僅主機

1?~]# hostnamectl hostname?double1.timinglee.org?????【更改虛擬機姓名】

[root@double2 ~]# hostnamectl hostname double2.timinglee.org

[root@double3?~]# hostnamectl hostname double3.timinglee.org

2 ~]# vmset.sh ens192 192.168.10.20????????【使用# ip a查看地址ens后面數字再更改】

3 ~]# vmset.sh ens160?192.168.10.30

# vim /etc/NetworkManager/system-connections/ens160.nmconnection?????【修改網關】

# nmcli connection reload????????????????【重啟】

# nmcli connection up ens160?????????????【啟動ens160】

# route -n???查看結果:

什么是防火墻

從功能角度來講

????????防火墻是位于內部網和外部網之間的屏障,它按照系統管理員預先定義好的規則來控制數據包的進出

從功能實現角度來講,

????????火墻是系統內核上的一個模塊netfilter(數據包過濾機制)

????????通過netfiler來管理kernelspace中的策略

netfilter簡介

????????Netfilter是Linux2.4.x引入的一個子系統

????????它作為一個通用的、抽象的框架,提供一整套的hook函數的管理機制,使得諸如數據包過濾、網絡地址轉換(NAT)和基于協議類型的連接跟蹤等等

????????netfilter分析OSI七層協議的2、3、4層

????????onetfiler可以直接分析數據包頭部數據,包括硬件地址,軟件地址、TCP、UDP、ICMP等數據包的信息都可以進行過濾分析

????????oInux的netfilter機制可以進行的工作有:

????????????????。拒絕讓Internet的數據包進入主機的某些端口

????????????????。拒絕讓某些來源ip的數據包進入

????????????????。拒絕讓帶有某些特殊標志(flag)數據包進入,最常拒絕的是帶SYN主動連接標志的包

????????????????。分析硬件地址(MAC)來決定連接與否

????????????????。地址轉換

????????防火墻并不能有效阻擋病毒或木馬程序,并且防火墻對于內部LAN的攻擊無能為力

netfiler策略管理工具

????????onetfilter這個內核網絡棧過濾框架的使用需要通過iptables或nftables來進行與netfilter進行交互工具常用種類

????????oiptables服務使用iptables交互RHEL6之前系統默認使用此服務,管理手段豐富,配置比較復雜

????????ofirewalld服務使用nftables交互RHEL6及之后的版本中默認使用此服務,配置類似windows火墻,功能模塊度高,使用簡單。

netfilter的五類hook函數及iptables的默認表和鏈

NF_IP_PRE_ROUTING【將要進入的】:位于路由之前,報文一致性檢查之后(報文一致性檢查包括:報文版本、報文長度和checksum

NF_IP_LOCAL_IN【進入主機的數據包】:位于報文經過路由之后,并且目的是本機的

NF_IP_FORWARD【經過的數據包】:位于在報文路由之后,目的地非本機的。

NF_IP_LOCAL_OUT【進入主機的數據包】:由本機發出去的報文,并且在路由之前。

NF_IP_POST_ROUTING【將要離開的】:所有即將離開本機的報文

內核空間的iptables

????????oIptables是基于Netfilter框架實現的報文選擇系統

????????oiptables用于報文的過濾、網絡地址轉換和報文修改等功能

????????oIptables本質上是包含了5個規則表,而規則表則包含了一些列的報文的匹配規則以及操作目標

1、raw表:

????????第一優先級的表,設置raw表規則后,不會對數據包進行鏈接跟蹤和NAT轉換,使用于

PREROUTING和OUTPUT鏈,對應的動作為NOTRACK。

2、mangle表:

????????第二優先級的表,根據規則,修改數據包的TOS(Typeofservice,服務類型)、TTL(TimeToLive,生存周期)以及設置Mark標記,以實現Qos以及策略路由等。

3、nat表:

????????第三優先級的表,網絡地址轉換表,用于修改源和目的的地址,分SNAT(源目的地址轉換)和DNAT(目的地址轉換)。

4、filter表:

????????第四優先級的表,用于控制到達鏈(forward鏈、input鏈、output鏈)上的數據包,是放行(accepte)、丟棄(drop)或者拒絕(reject)。

5、security表:

????????最不常用的表(通常,我們說iptables只有4張表,security表是新加入的特性),用于在數據包上應用SELinuxo

iptables服務

????????iptables服務是用戶管理內核空間的iptables的管理工具,通過iptables書寫內核空間的iptables策略。

????????iptables的規則是至上而下的讀取方式,遇到與數據包信息匹配的規則后直接采用。

????????iptables的規則默認保存在內存中,如果需要永久保存需要把策略以字符的形式保存 到/etc/sysconfig/iptables中。

啟動iptables 服務

2 ~]# dnf install iptables-nft-services.noarch -y ??????????【下載】

# systemctl disable --now firewalld??????????????????【開火墻】

# systemctl mask firewalld

# systemctl enable --now iptables.service

# iptables -L??????????????????【列出iptables表】

# iptables -F???????????????【刷新iptables表】

再次 # iptables -L?刷新結果:

# cat /etc/sysconfig/iptables?????????【查看iptables文件內容】

# service iptables save????????【保存當前火墻狀態】

# cat /etc/sysconfig/iptables???運行結果:

iptables命令參數

2 ~]# systemctl enable --now nginx

1/3 ~]# curl 192.168.(150/10).(134/20)可以訪問到F2了

????????-t ?對指定的表進行操作,table必須是raw,nat,filter,mangle中的一個。默認是filter表。

????????-p ?指定要匹配的數據包協議類型

????????-s ?--source?address/mask:把指定的一個或者一組地址作為源地址,按此規則進行過濾。當后面沒有mask時,address是一個地址,比如:192.168.1.1;當mask指定時,可以表示一組范圍內的地址,比如:192.168.1.0/255.255.255.0

????????-d ?--destination?address/mask:地址格式同上,但指定地址為目的地址,按此進行過濾

????????-i ?--in-interface?name:指定數據包的來自來自網絡接口,比如最常見的etho。注意:它只對INPUT,FORWARD,PREROUTING這三個鏈起作用。如果沒有指定此選項,說明可以來自任何一個網絡接口。同前面類似,"!"表示取反

2 ~]# iptables -A INPUT -i lo -j ACCEPT????【允許本機環回接口訪問】

????????-O??--out-interface?name:指定數據包出去的網絡接口。只對OUTPUT,FORWARD,POSTROUTNG三個鏈起作用

????????-L ?--list[chain]列出鏈chain上的所有規則,如果沒有指定鏈,列出表上所有鏈的所有規則

????????-A ?--append?chain?rule-specification:在指定鏈chain的末尾插入指定的規則,也就是說,這條規則會被放到最后,最后才會被執行。規則是由后面的匹配來指定INPUT【限制對方進來】 ??FORWARD ??OUTPUT【限制對方出去】

2 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.150.133 -j REJECT

【不允許80接口被133訪問】

# iptables -t filter -A INPUT -p tcp --dport 80 ! -s 192.168.10.128?-j REJECT

【僅允許128訪問80接口】

# iptables?-nL???查看結果:

????????-I ?--insert?chain?[rulenum]?rule-specification:在鏈chain中的指定位置插入條或多條規則。如果指定的規則號是1,則在鏈的頭部插入。這也是默認的情況,如果沒有指定規則號

注意:火墻讀取策略是從第一條開始讀取的

# iptables -I INPUT 1 -i lo -j ACCEPT????【添加到第一條,允許本機環回接口訪問】

????????-D ?--delete?chain?rule-specification-D,--delete?chain?rulenum:在指定的鏈chain中刪除一個或多個指定規則

# iptables -D INPUT 1???????【刪除第一條規則】

????????-R ?Replays替換/修改第幾條規則

# iptables -R INPUT 1 -p tcp --dport 22 -s 192.168.150.133 -j ACCEPT?????【替換端口為22】

? ? ? ? -P ?--policy?chain?target:為指定的鏈chain設置策略target。注意,只有內置的鏈才允許有策略,用戶自定義的是不允許的

????????-F ?--flush?[chain]清空指定鏈chain上面的所有規則。如果沒有指定鏈,清空該表上所有鏈的所有規則

????????-N ?--new-chain?chain用指定的名字創建一個新的鏈

# iptables -N lee???????【新建鏈表lee】

????????-E ?--rename-chain?old-chain?new-chain:用指定的新名字去重命名指定的鏈。這并不會對鏈內部照成任何影響

# iptables -E lee LEE?????????【更改lee鏈表名字】

????????-X ?--delete-chain?[chain]:刪除指定的鏈,這個鏈必須沒有被其它任何規則引用,而且這條上必須沒有任何規則。如果沒有指定鏈名,則會刪除該表中所有非內置的鏈

# iptables -X LEE?????????????【刪除鏈表LEE】

????????-Z ?--zero?[chain]:把指定鏈,或者表中的所有鏈上的所有計數器清零

????????-j ?--jump?target<指定目標>:即滿足某條件時該執行什么樣的動作。target可以是內置的目標,比如ACCEPT,也可以是用戶自定義的鏈

????????-h ?顯示幫助信息

snat地址轉換

2 ~]# iptables -F???????【刪除所有策略】

# iptables -t nat -A POSTROUTING -o ens160?-j SNAT --to-source 192.168.150.134

【將所有從ens160出去的網址都把地址改為2?~]150.134,用# ip a 查看自身ens的號碼】

# iptables -t nat -nL??查看結果:

3?~]# ip route add default via 192.168.10.20?????????【添加網關】

# route -n?查看結果:

在做nat實驗時需要開啟雙網卡主機的內核路由功能,否則雙網卡主機的兩個網卡如果不在同一個洪范范圍是無法通信的。

2 ~]# vim /etc/sysctl.conf??????????【配置內核路由功能】

# sysctl -p ?查看結果:

現在3?~]10.128可以訪問到1?~]150.133了

dnat地址轉換

2?~]# iptables -t nat -A PREROUTING -i?ens160?-j DNAT --to-dest 192.168.10.128

【將所有從ens160進入(訪問)的網址都把地址改為3 ~]10.128

# iptables -t nat -nL?查看結果:

1?~]# ssh -l root 192.168.150.134??訪問結果:

firewalld管理

frewallid服務管理萬式與iptables的管理方式區別

????????? iptables是基于Linux內核的Netfiten子系統構建的,直接操作Netfilter;

libnftables庫與Netfilter交互,提供了一個更高的抽象層

????????? iptables使用基于表的規則集,包括filter、nat、mangle、raw及securty五個表;firewalld采用基于區域的規則集,包括default、public、internal、external和dmz五個區域

????????? iptables的配置較為復雜,需要用戶掌握特定的命令行語法;firewalld提供了更直觀和靈活的配置方式,支持命令行和圖形界面

????????? 由于firewalld通過libnftables庫與Netfilter交互,其性能相對于直接操作Netfilter的iptables來說較低

firewalld域

2?~]#?iptables -t nat -F??????????【清空指定nat表策略】

# systemctl disable --now iptables.service?????????【火墻】

# systemctl mask iptables.service

# systemctl unmask firewalld.service

# systemctl enable --now firewalld

# firewall-cmd --list-all??查看結果:

環境配置

2?~]# vim /etc/firewalld/firewalld.conf?????????【修改firewalld默認管理底層】

# systemctl restart firewalld????????????????【重啟】

firewalld中默認使用的域是pubic

firewalld默認提供的九個zones的調用文件都保存在"/usr/lib/firewalld/zones/"目錄下

firewall-cmd命令

2?~]# firewall-cmd --get-default-zone?????【查詢默認區域】

# firewall-cmd --set-default-zone=trusted?????【更改默認區域為trusted

# firewall-cmd --state???????????【查看當前狀態】

# firewall-cmd --reload ?????????【刷新】

# firewall-cmd --list-all????????????【查看默認區域】

# firewall-cmd --set-default-zone=public

# firewall-cmd --get-services???????????【查看可執行服務】

# firewall-cmd --add-service=dns??????????【臨時添加允許dns訪問】

# firewall-cmd --list-all?查看結果:

# firewall-cmd --permanent --add-service=dns??????????【永久更改】

# cat /etc/firewalld/zones/public.xml?查看結果:

# firewall-cmd --remove-service=dns

# firewall-cmd --reload???????????????????【重啟才會有效】

# firewall-cmd --permanent --remove-service=dns?????【刪除dns訪問】

# firewall-cmd --reload

# firewall-cmd --list-all?查看結果:

# firewall-cmd --add-source=192.168.10.128/24 --zone=trusted?????【默認允許10.128訪問】

# firewall-cmd --remove-source=192.168.10.128/24 --zone=trusted?????【刪除訪問策略】

# firewall-cmd --get-active-zones ????????【查看活躍域】

# firewall-cmd --list-all-zones?????????????【顯示所有網卡配置】

# vim /etc/nginx/nginx.conf ?????????????【配置網站端口】

# nginx -s reload ??????????????????????【重啟】

# netstat -antlupe | grep nginx ?查看修改:

# firewall-cmd --add-service=http?????????【開啟http也無法生效】

# firewall-cmd --add-port=8080/tcp????????【允許8080端口訪問】

# firewall-cmd --remove-port=8080/tcp??????【刪除端口】

firewalllld高級規則

Direct Rules

通過 firewall-cmd 工具,可以使用--direct選項在運行時間里增加或者移除鏈。如果不熟悉 iptables,使用直接接口非常危險,因為您可能無意間導致防火墻被入侵。

I直接端口模式適用于服務或者程序,以便在運行時間內增加特定的防火墻規則。直接端口模式添加的規則優先應用。

2?~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 ! -s 192.168.10.128/24 -j ACCEPT????????【禁止10.128訪問】

# firewall-cmd --direct --get-all-rules?????????【查看規則】

地址偽裝與端口轉發

3?~]# ip route add default via 192.168.10.20

# route -n?查看結果:

2?~]# firewall-cmd --permanent --add-masquerade????【開啟雙網卡主機路由器】

# firewall-cmd --reload????????????????????????【reload完后F3就可以訪問F1了】

2?~]# firewall-cmd --permanent?--add-forward-port=port=22:proto=tcp:toport=22:toaddr=

192.168.10.128??????????????【訪問22端口都轉到10.128】

# firewall-cmd --reload

1?~]# ssh -l root 192.168.150.134??訪問結果:

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

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

相關文章

java配置webSocket、前端使用uniapp連接

一、這個管理系統是基于若依框架&#xff0c;配置webSocKet的maven依賴 <!--websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 二、配…

基于Yolov8+PyQT的老人摔倒識別系統源碼

概述 ??基于Yolov8PyQT的老人摔倒識別系統??&#xff0c;該系統通過深度學習算法實時檢測人體姿態&#xff0c;精準識別站立、摔倒中等3種狀態&#xff0c;為家庭或養老機構提供及時預警功能。 主要內容 ??完整可運行代碼?? 項目采用Yolov8目標檢測框架結合PyQT5開發…

Oracle 創建外部表

找別人要一下數據&#xff0c;但是他發來一個 xxx.csv 文件&#xff0c;怎么辦&#xff1f; 1、使用視圖化工具導入 使用導入工具導入&#xff0c;如 DBeaver&#xff0c;右擊要導入的表&#xff0c;選擇導入數據。 選擇對應的 csv 文件&#xff0c;下一步就行了&#xff08;如…

【華為OD- B卷 01 - 傳遞悄悄話 100分(python、java、c、c++、js)】

【華為OD- B卷 01 - 傳遞悄悄話 100分(python、java、c、c++、js)】 題目 給定一個二叉樹,每個節點上站一個人,節點數字表示父節點到該節點傳遞悄悄話需要花費的時間。 初始時,根節點所在位置的人有一個悄悄話想要傳遞給其他人,求二叉樹所有節點上的人都接收到悄悄話花…

房貸利率計算前端小程序

利率計算前端小程序 視圖效果展示如下&#xff1a; 在這里插入代碼片 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

自制操作系統day8 (鼠標數據取得、通往32位模式之路、A20GATE、切換到保護模式、控制寄存器cr0-cr4以及cr8、ALIGNB)

day8 鼠標數據取得方法 fifo8_init(&mousefifo, 128, mousebuf); for (;;) { io_cli(); if (fifo8_status(&keyfifo) fifo8_status(&mousefifo) 0) { io_stihlt(); } else { if (fifo8_status(&keyfifo) ! 0) { i fifo8_get(&keyfifo); io_sti(); spr…

IP大科普:住宅IP、機房IP、原生IP、雙ISP

不同類型的IP在跨境電商、廣告營銷、網絡技術、數據收集等領域都有廣泛應用&#xff0c;比如常見的住宅IP、機房IP、原生IP、雙ISP等&#xff0c;這些IP分別都有什么特點&#xff0c;發揮什么作用&#xff0c;適合哪些業務場景&#xff1f; 一、IP類型及其作用 1.住宅IP 住宅…

Elasticsearch面試題帶答案

Elasticsearch面試題帶答案 Elasticsearch面試題及答案【最新版】Elasticsearch高級面試題大全(2025版),發現網上很多Elasticsearch面試題及答案整理都沒有答案,所以花了很長時間搜集,本套Elasticsearch面試題大全,Elasticsearch面試題大匯總,有大量經典的Elasticsearch面…

Eigen與OpenCV矩陣操作全面對比:最大值、最小值、平均值

功能對比總表 功能Eigen 方法OpenCV 方法主要區別最大值mat.maxCoeff(&row, &col)cv::minMaxLoc(mat, NULL, &maxVal, NULL, &maxLoc)Eigen需要分開調用&#xff0c;OpenCV一次獲取最小值mat.minCoeff(&row, &col)cv::minMaxLoc(mat, &minVal, NU…

echarts之雙折線漸變圖

vue3echarts實現雙折線漸變圖 echarts中文官網&#xff1a;https://echarts.apache.org/examples/zh/index.html 效果圖展示&#xff1a; 整體代碼如下&#xff1a; <template><div id"lineChart" style"width:100%;height:400px;"></di…

MD編輯器推薦【Obsidian】含下載安裝和實用教程

為什么推薦 Obsidian &#xff1f; 免費 &#xff08;Typora 開始收費了&#xff09;Typora 實現的功能&#xff0c;它都有&#xff01;代碼塊可一鍵復制 文件目錄支持文件夾 大綱支持折疊、搜索 特色功能 – 白板 特色功能 – 關系圖譜 下載 https://pan.baidu.com/s/1I1fSly…

vue 鼠標經過時顯示/隱藏其他元素

方式一&#xff1a; 使用純css方式 , :hover是可以控制其他元素 1、 當兩個元素是父子關系 <div class"all_" ><div> <i class"iconfont icon-sun sun"></i></div> </div> .all_{} .sun {display: none; /* 默認…

靜態網站部署:如何通過GitHub免費部署一個靜態網站

GitHub提供的免費靜態網站托管服務可以無需擔心昂貴的服務器費用和復雜的設置步驟&#xff0c;本篇文章中將一步步解如何通過GitHub免費部署一個靜態網站&#xff0c;幫助大家將創意和作品快速展現給世界。 目錄 了解基礎情況 創建基礎站點 在線調試站點 前端項目部署 部署…

Pytorch里面多任務Loss是加起來還是分別backward? | Pytorch | 深度學習

當你在深度學習中進入“多任務學習(Multi-task Learning)”的領域,第一道關卡可能不是設計網絡結構,也不是準備數據集,而是:多個Loss到底是加起來一起backward,還是分別backward? 這個問題看似簡單,卻涉及PyTorch計算圖的構建邏輯、自動求導機制、內存管理、任務耦合…

基于DPABI提取nii文件模板的中心點坐標

基于DPABI提取nii文件模板的中心點坐標 在使用DPABI&#xff08;Data Processing Assistant for Resting-State fMRI&#xff09;處理NIfTI&#xff08;.nii&#xff09;文件時&#xff0c;可以通過以下步驟提取模板中每個坐標點的中心點坐標&#xff1a;https://wenku.csdn.n…

redis 基本命令-17 (KEYS、EXISTS、TYPE、TTL)

Redis 基本命令&#xff1a;KEYS、EXISTS、TYPE、TTL Redis 提供了一套基本命令&#xff0c;這些命令對于管理密鑰和了解數據庫中存儲的數據至關重要。這些命令雖然簡單&#xff0c;但提供了對 Redis 實例的結構和狀態的重要見解。具體來說&#xff0c;KEYS、EXISTS、TYPE 和 …

加速leveldb查詢性能之Cache技術

加速leveldb查詢性能之Cache技術 目錄 1.兩種Cache2.Table Cache3.Block Cache 注&#xff1a;本節所有內容更新至星球。 學習本節之前最好提前需要學習前面兩篇文章&#xff0c;這樣便好理解本節內容。 多圖文講解leveldb之SST/LDB文件格式 【深入淺出leveldb】LRU與哈希表 1.…

5.2.3 使用配置文件方式整合MyBatis

本實戰通過使用Spring Boot和MyBatis技術棧&#xff0c;實現了文章列表顯示功能。首先&#xff0c;通過創建ArticleMapper接口和對應的ArticleMapper.xml配置文件&#xff0c;實現了對文章數據的增刪改查操作&#xff0c;并通過單元測試驗證了功能的正確性。接著&#xff0c;通…

Node.js 源碼架構詳解

Node.js 的源碼是一個龐大且復雜的項目&#xff0c;它主要由 C 和 JavaScript 構成。要完全理解每一部分需要大量的時間和精力。我會給你一個高層次的概述&#xff0c;并指出一些關鍵的目錄和組件&#xff0c;幫助你開始探索。 Node.js 的核心架構 Node.js 的核心可以概括為以…

【NLP 76、Faiss 向量數據庫】

壓抑與痛苦&#xff0c;那些輾轉反側的夜&#xff0c;終會讓我們更加強大 —— 25.5.20 Faiss&#xff08;Facebook AI Similarity Search&#xff09;是由 Facebook AI 團隊開發的一個開源庫&#xff0c;用于高效相似性搜索的庫&#xff0c;特別適用于大規模向…