日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux——Firewalld与iptables的基本配置

發布時間:2025/3/19 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux——Firewalld与iptables的基本配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Firewalld

Firewalld概述

  • 動態防火墻后臺程序 firewalld 提供了一個動態管理的防火墻,用以支持網絡 “ zones” ,以分配對一個網絡及其相關鏈接和界面一定程度的信任。它具備對 IP v4 和 IP v6 防火墻設置的支持。它支持以太網橋,并有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火墻規則的接口
  • 系統提供了圖像化的配置工具firewall-config、system-config-firewall,提供命令行客戶端firewall-cmd,用于配置firewalld永久性或非永久性運行時間的改變:它依次用 iptables工具與執行數據包篩選的內核中的 Netfilter通信

  • firewalld和iptables service 之間最本質的不同是:
    1、iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld將配置儲存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種XML文件里
    2、使用 iptables service每一個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables里讀取所有新的規則,然而使用 firewalld卻不會再創建任何新的規則;僅僅運行規則中的不同之處。因此,firewalld可以在運行時間內,改變設置而不丟失現行連接

    基于用戶對網絡中設備和交通所給與的信任程度,防火墻可以用來將網絡分割成不同的區域NetworkManager通知firewalld一個接口歸屬某個區域,新加入的接口被分配到默認區域。

網絡區名稱默認配置
trusted(信任)可接受所有的網絡連接
home(家庭)用于家庭網絡,僅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服務連接
internal(內部)用于內部網絡,僅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服務連接
work(工作) 用于工作區,僅接受ssh、ipp-client或dhcpv6-client服務連接
public(公共)在公共區域內使用,僅接受ssh或dhcpv6-client服務連接,為firewalld的默認區域
external(外部)出去的ipv4網絡連接通過此區域偽裝和轉發,僅接受ssh服務連接
dmz(非軍事區)僅接受ssh服務接連
block(限制)拒絕所有網絡連接
drop(丟棄) 任何接收的網絡數據包都被丟棄,沒有任何回復

管理防火墻

1、安裝防火墻軟件

  • yum install firewalld firewalld-config -y
  • [root@client Desktop]# firewalld-config & firewalld的圖形化管理

2、啟動和禁止防火墻

  • systemctl start firewalld
  • systemctl enable firewalld
  • systemctl stop firewalld
  • systemctl disable firewalld

3、使用命令行接口配置防火墻

  • 查看firewalld的狀態
[root@client Desktop]# firewall-cmd --state running
  • 查看當前活動的區域,并附帶一個目前分配給它們的接口列表
[root@client Desktop]# firewall-cmd --get-active-zones ROLsources: 172.25.0.252/32 public ##網絡區為公共interfaces: eth0
  • 查看默認網絡區域
[root@client Desktop]# firewall-cmd --get-default-zone public
  • 查看所有可用區域
[root@client Desktop]# firewall-cmd --get-zones ROL block dmz drop external home internal public trusted work
  • 列出指定域(public)的所有設置
[root@client Desktop]# firewall-cmd --zone=public --list-all public (default, active)interfaces: eth0sources: services: dhcpv6-client sshports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出指定域(block)的所有設置
[root@client Desktop]# firewall-cmd --zone=block --list-all blockinterfaces: sources: services: ports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出所有預設服務
[root@client Desktop]# firewall-cmd --get-services amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
  • 列出所有區域的設置
  • [root@client Desktop]# firewall-cmd --list-all-zones

  • 設置默認區域
[root@client Desktop]# firewall-cmd --set-default-zone=trusted success [root@client Desktop]# firewall-cmd --get-default-zone trusted [root@client Desktop]# firewall-cmd --get-active-zones ROLsources: 172.25.0.252/32 trusted ##網絡區為信任interfaces: eth0
  • 設置網絡地址到指定的區域
  • firewall-cmd -permanent --add-source=172.25.254.27 --zone=trusted
  • firewall-cmd -permanent --add-source=172.25.254.27/24 --zone=trusted
    –permanent參數表示永久生效設置
    如果沒有指定–zone參數,那么會加入默認區域
    172.25.254.27(IP指定)、172.25.254.27/24(網絡位相同即可)
  • 刪除指定區域中的網絡地址
  • firewall-cmd -permanent --remove-source=172.25.254.27 --zone=trusted
  • 添加、改變、刪除網絡接口

查看指定級別的接口

[root@client Desktop]# firewall-cmd --list-interfaces eth0

查看指定接口的 Zone 信息

[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0 trusted

添加網絡接口

[root@client Desktop]# firewall-cmd --add-interface=eth1 --zone=public success [root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1 public

改變某接口至某信任等級,譬如改變 eth0 至 public

[root@client Desktop]# firewall-cmd --change-interface=eth0 --zone=public success [root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0 public [root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1 public

刪除指定接口eth1

[root@client Desktop]# firewall-cmd --remove-interface=eth1 --zone=trusted success [root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1 no zone
  • 添加、刪除服務

添加

[root@client ~]# firewall-cmd --zone=public -add-service=http success [root@client ~]# firewall-cmd --list-all public (default, active)interfaces: eth0 eth1sources: services: dhcpv6-client http sshports: masquerade: noforward-ports: icmp-blocks: rich rules:

刪除

[root@client ~]# firewall-cmd --remove-service=http success [root@client ~]# firewall-cmd --reload ##不完全刷新 success [root@client ~]# firewall-cmd --list-all [root@client ~]# firewall-cmd --list-all public (default, active)interfaces: eth0 eth1sources: services: dhcpv6-client sshports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出、添加、刪除端口
  • firewall-cmd --zone=public -list-ports
  • firewall-cmd --add-port=8080/tcp --zone=public
  • firewall-cmd --remove-port=8080/tcp --zone=public

  • 重新加載防火墻

    注意:這并不會中斷已經建立的連接,如果打算中斷,可以使用 –complete-reload選項)firewalld的規則被保存在/etc/firewalld目錄下的文件中,你也可以直接編輯這些文件達到配置防火墻的目的。/usr/lib/firewalld目錄下的內容是不可以被編輯的,但可以用做默認模板

4、Direct Rules

通過 firewall-wall-cmd 工具,可以使用 --direct 選項在運行時間里增加或者移除鏈。 如果不熟悉 iptables ,使用直接接口非常危險,因為可能會無意間導致防火墻被入侵。 直接端口模式適用于服務或者程序,以便在運行時間內增加特定的防火墻規則。 直接端口模式添加的規則優先應用 firewall-cmd –-direct –get-all-rules ##列出規則 firewall-cmd –-direct –add-rule ipv4 filter INPUT 1 -p tcp –dport 80 -s 172.25.254.50 -j ACCEPT ##添加規則 firewall-cmd –-direct –remove-rule ipv4 filter INPUT 1 -p tcp –dport 80 -s 172.25.254.50 -j ACCEPT ##刪除規則

例如:不讓50主機訪問80端口的請求響應:

5、端口轉發與地址偽裝

在防火墻服務器上將偽裝打開:

當50從端口登陸主機時,將50偽裝

當訪問本機22端口時,將其轉到227這個主機上

刷新

IP為172.25.254.50的主機連接主機172.25.254.127時,將其轉到主機172.25.254.227
測試
用50主機ssh連接136主機:

登陸的是227主機:

查看登陸者,登陸者是127。50主機被偽裝起來了

Iptables

首先得保持一個純凈的環境,將firewalld關閉。安裝iptables,并啟動

  • yum install iptables-services -y 安裝iptables
[root@client Desktop]# iptables -nL ##查看策略 略,此時顯示出的是 firewalld 的策略 [root@client Desktop]# systemctl stop firewalld.service [root@client Desktop]# systemctl disable firewalld.service [root@client Desktop]# systemctl start iptables.service [root@client Desktop]# systemctl enable iptables.service [root@client Desktop]# iptables -F ##刷新策略 [root@client Desktop]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@client Desktop]#

(1)理論基礎:當主機收到一個數據包后,數據包先在內核空間中處理,若發現目的地址是自身,則傳到用戶空間中交給對應的應用程序處理,若發現目的不是自身,則會將包丟棄或進行轉發。
(2)iptables實現防火墻功能的原理是:在數據包經過內核的過程中有五處關鍵地方,分別是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,稱為鉤子函數,iptables這款用戶空間的軟件可以在這5處地方寫規則,對經過的數據包進行處理,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理數據包”。
iptables中定義有表,分別表示提供的功能,有filter表(實現包過濾)、nat表(實現網絡地址轉換)、mangle表(實現包修改)、raw表(實現數據跟蹤),這些表具有一定的優先級:raw–>mangle–>nat–>filter
下面是數據包流向圖:


數據包先經過PREOUTING,由該鏈確定數據包的走向:

  • 目的地址是本地,則發送到INPUT,讓INPUT決定是否接收下來送到用戶空間,流程為①—>②

  • 若滿足PREROUTING的nat表上的轉發規則,則發送給FORWARD,然后再經過POSTROUTING發送出去,流程為: ①—>③—>④—>⑥

  • 主機發送數據包時,流程則是⑤—>⑥

(3)iptables的規則書寫:
基本語法:iptables [-t 表] [操作命令] [鏈][規則匹配器][-j 目標動作]

iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface] [-p tcp,udp.icmp,all] [-s ip/nerwork] [--sport ports] [-d ip/network] [--dport ports] [-j ACCEPT DROP REJECT REDIRECT MASQUERADE LOG DNAT SNAT MIRROR QUEUE RETURN MARK]

常用操作命令:
-A 在指定鏈尾部添加規則
-D 刪除匹配的規則
-R 替換匹配的規則
-I 在指定位置插入規則


其他操作命令:
-L/S 列出指定鏈或所有鏈的規則
-F 刪除指定鏈或所有鏈的規則
-N 創建用戶自定義鏈
-X 刪除指定的用戶自定義鏈
-P 為指定鏈設置默認規則策略,對自定義鏈不起作用
-Z 將指定鏈或所有鏈的計數器清零
-E 更改自定義鏈的名稱
-n ip地址和端口號以數字方式顯示


常見規則匹配器說明:
-p tcp|udp|icmp|all 匹配協議,all會匹配所有協議
-s addr[/mask] 匹配源地址
-d addr[/mask] 匹配目標地址
–sport port1[:port2] 匹配源端口(可指定連續的端口)
–dport port1[:port2] 匹配目的端口(可指定連續的端口)
-o interface
匹配出口網卡,只適用FORWARD、POSTROUTING、OUTPUT。
匹配入口網卡,只使用PREROUTING、INPUT、FORWARD。


目標動作說明:
ACCEPT 允許數據包通過
DROP 丟棄數據包
REJECT 丟棄數據包,并且將拒絕信息發送給發送方

實驗

  • 顯示filter表所有鏈的規則,默認為filter表

    如上,可以看到filter三條鏈
  • 查看nat表的
  • 注意一點:火墻設置的策略好壞會影響到傳輸速率的快慢,因為火墻規則讀取是有先后順序的。
  • NAT (Net Address Trancelate:網絡地址轉換)
  • SNAT(源地址轉換)是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換為指定的IP,這樣,接收方就認為數據包的來源是被替換的那個IP的主機
  • DNAT(目標地址轉換),就是指數據包從網卡發送出去的時候,修改數據包中的目的IP,表現為如果你想訪問A,可是因為網關做了DNAT,把所有訪問A的數據包的目的IP全部修改為B,那么,你實際上訪問的是B

下面我們來模擬以下兩個轉換:

SNAT

實驗準備:
雙網卡主機:

單網卡主機:
IP:

網關:


注意:這里雙網卡主機類似于路由器的功能。所以單網卡主機的網關必須是和本機ip處于同一網段而且是和雙網卡主機上的一塊網卡IP相同。

接下來在單網卡主機上ping網關,檢查實驗環境(結果如下圖,說明雙網卡主機網卡良好。):

在進行SNAT之前,單網卡主機是不能連接不同網段的172.25.254.50這臺主機的 。
我們要用單網卡主機來連不同網段的主機,必須要做SNAT。在雙網卡主機上做防火墻規則書寫:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.127
查看火墻規則:

這時查看 net 表的ip轉發功能,0代表未開啟,則需要將其開啟;1代表已開啟:

注:開啟方法

[root@client Desktop]# sysctl -a | grep ip_forward net.ipv4.ip_forward = 0 [root@client Desktop]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 ##添加 [root@client Desktop]# sysctl -p net.ipv4.ip_forward = 1 [root@client Desktop]# sysctl -a | grep ip_forward net.ipv4.ip_forward = 1

此時在單網卡主機ping不同網段的主機,發現可以:

SNAT:局域網共享一個公網IP接入lnternel
好處如下:

  • 保護內網用戶安全,因為公網地址總有一些人惡意掃描,而內網地址在公網沒有路由所以無法被掃描,能被掃描的只有防火墻這一臺,這樣就減少了被攻擊的可能。

  • Ipv4地址匱乏,很多公司只有一個ipv4地址,但是卻有幾百個用戶需要上網,這個時候就需要使用SNAT。

  • 省錢,公網地址付費,使用SNAT只需要一個公網ip就可以滿足幾百人同時上網。

DNAT

在雙網卡主機上書寫規則:
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.20.227

從eth0接口進來的數據包我們將其目標地址轉為172.25.20.227這臺主機上

在172.25.254.50主機上測試——用ssh連接172.25.254.127:

但是卻是登陸的172.25.20.227這臺主機:

實現了目的地轉換。

DNAT的用途(DNAT:向internel發布內網服務器 )
在內網中有服務器,如果想讓公網用戶訪問有有兩種方法:

  • 配置雙網卡,一網卡對內,一網卡對外;一般是高訪問量的web服務器,為了避免占用網關的流量才這樣做,使用不是很廣泛。

  • 內網web服務器,或是ftp服務器,為了用戶在公網也可以訪問,有不想買公網ip地址,采用DNAT方案。

總結

以上是生活随笔為你收集整理的linux——Firewalld与iptables的基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。