firewalld

iptables

1.

iptables 是與最新的 3.5 版本 Linux 內核集成的 IP 信息包過濾系統。如果 Linux 系統連接到因特網或 LAN、服務器或連接 LAN 和因特網的代理服務器, 則該系統有利於在 Linux 系統上更好地控制 IP 信息包過濾和防火牆配置。

iptables 組件是一種工具,也稱爲用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具並安裝使用它。

這裏有四種有效狀態,名稱分別爲 ESTABLISHED 、 INVALID 、 NEW 和 RELATED。

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl start iptables.service
systemctl enable iptables.service
systemctl status iptables.service
這裏寫圖片描述

2.

iptables
   -L ##列出指定表的策略
   -A ##添加策略
   -N ##增加鏈
   -E ##修改鏈名稱
   -X ##刪除鏈
   -D ##刪除指定策略
   -I ##(insert)插入策略
   -R ##修改策略
   -P ##修改默認策略
   -t ##指定表名稱
   -n ##不做解析
   -p ##網絡協議
   –dport ##端口
   -s ##數據來源source
   -j ##動作
ACCEPT ##允許
REJECT ##拒絕
DROP ##丟棄

iptables -t filter -nL ##查看filter表中策略
這裏寫圖片描述
iptables -F ##刷掉filter表中所有策略,當沒有-t指定表時,默認表爲filter
iptables -nL ##查看filter表中的策略
這裏寫圖片描述
service iptables save ##保存當前策略
這裏寫圖片描述
iptables -A INPUT -i lo -j ACCEPT ##允許lo(迴環)
iptables -A INPUT -p tcp –dport 22 -j ACCEPT ##允許訪問22端口
iptables -A INPUT -s 172.25.254.60 -j ACCEPT ##允許60主機訪問
iptables -A INPUT -j REJECT ##拒絕所有主機的數據來源
這裏寫圖片描述

iptables -N redhat ##增加鏈redhat
這裏寫圖片描述

iptables -E redhat westos ##修改鏈名稱
這裏寫圖片描述

iptables -X westos ##刪除westos鏈
這裏寫圖片描述

iptables -D INPUT 3 ##刪除INPUT表中的第3條策略
這裏寫圖片描述

iptables -I INPUT -s 172.25.254.41 -j ACCEPT ##插入策略到INPUT表中的第1條
這裏寫圖片描述

iptables -R INPUT 4 -p tcp –dport 80 -j ACCEPT ##修改INPUT表的第4條策略
這裏寫圖片描述

iptables -P INPUT DROP ##把INPUT表中的默認策略改爲DROP
這裏寫圖片描述

數據包狀態

RELATED —— RELATED 表示該信息包正在啓動新連接,以及它與已建立的連接相關聯
ESTABLISHED —— 指出該信息包屬於已建立的連接,該連接一直用於發送和接收信息包並且完全有效
NEW —— 狀態 NEW 意味着該信息包已經或將啓動新的連接,或者它與尚未用於發送和接收信息包的連接相關聯

iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT ##允許RELATED與ESTABLISHED包
iptables -A INPUT -i lo -m state –state NEW -j ACCEPT ##允許NEW包
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT ##允許NEW包通過22端口(ssh服務)
iptables -A INPUT -p tcp –dport 80 -m state –state NEW -j ACCEPT ##允許NEW包通過80端口
iptables -A INPUT -p tcp –dport 443 -m state –state NEW -j ACCEPT ##允許NEW包通過443端口
iptables -A INPUT -p tcp –dport 53 -m state –state NEW -j ACCEPT ##允許NEW包通過53端口
iptables -A INPUT -j REJECT ##拒絕所有主機數據來源
這裏寫圖片描述

防火牆路由設置nat

————server————
eth0 172.25.254.133
eth1 172.25.60.10
這裏寫圖片描述
————desktop————
eth0 172.25.60.11
GATEWAY=172.25.60.10
這裏寫圖片描述

1.配置
iptables -F ##刷掉策略
sysctl -a | grep forward ##查看內部網卡IP轉發功能是否開啓
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf ##允許雙網卡內部通信
sysctl -p ##重新加載
這裏寫圖片描述
iptables -t nat -A PREROUTING -i eth0 -j DNAT –to-dest 172.25.60.11 ##在nat表中的PREROUTING 鏈添加策略將外網轉換爲內網
iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 172.25.254.133 ##在nat表中的POSTROUTING鏈添加策略將內網發往外網數據包
這裏寫圖片描述

2.測試
desktop(172.25.60.11)ping (172.25.254.60)
這裏寫圖片描述

firewalld

動態防火牆後臺程序 firewalld 提供了一個 動態管理的防火牆,用以支持網絡 “ zones” ,以分配對一個網絡及其相關鏈接和界面一定程度的信任。它具備對 IP v4 和 IP v6 防火牆設置的支持。它支持以太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火牆規則的接口。

系統提供了圖像化的配置工具firewall-config、system-config-firewall, 提供命令行客戶端firewall-cmd, 用於配置 firewalld永久性或非永久性運行時間的改變:它依次用 iptables工具與執行數據包篩選的內核中的 Netfilter通信。

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

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( 丟棄 ) 任何接收的網絡數據包都被丟棄,沒有任何回覆

使用命令行接口配置firewalld

–permanent表示永久修改,不加則表示臨時修改
–reload表示重載防火牆(注意:這並不會中斷已經建立的連接,如果打算中斷,可以使用 –complete-reload選項)
——————查看firewalld的狀態——————
firewall-cmd –state
這裏寫圖片描述

——————查看當前活動的區域,並附帶一個目前分配給它們的接口列表——————
firewall-cmd –get-active-zones
這裏寫圖片描述
——————查看所有可用區域——————
firewall-cmd –get-zones
這裏寫圖片描述

——————列出指定域的所有設置——————
firewall-cmd –zone=public –list-all
這裏寫圖片描述
——————列出所有預設服務——————
firewall-cmd –get-services
這裏寫圖片描述
——————查看默認區域——————
firewall-cmd –get-default-zone
這裏寫圖片描述
——————設置默認區域——————
firewall-cmd –set-default-zone=trusted
這裏寫圖片描述

——————設置網絡地址到指定的區域——————
firewall-cmd –set-default-zone=trusted
firewall-cmd –permanent –add-source=172.25.254.60
firewall-cmd –reload
firewall-cmd –list-all
這裏寫圖片描述
測試:
yum install httpd -y
systemctl start httpd
172.25.254.60以瀏覽器訪問
這裏寫圖片描述
——————刪除指定區域中的網路地址——————
firewall-cmd –permanent –zone=trusted –remove-source=172.25.254.60
這裏寫圖片描述
——————添加、改變、刪除網絡接口——————
firewall-cmd –zone=public –add-interface=eth0 ##添加網絡接口eth0
firewall-cmd –zone=public –remove-interface=eth1 ##刪除網絡接口eth1
firewall-cmd –zone=public –change-interface=eth1 ##修改網絡接口爲eth1
這裏寫圖片描述
——————添加、刪除服務——————
firewall-cmd –zone=public –add-service=http
這裏寫圖片描述
172.25.254.60以瀏覽器訪問
這裏寫圖片描述

firewall-cmd –zone=public –remove-service=http
這裏寫圖片描述
172.25.254.60以瀏覽器訪問
這裏寫圖片描述
——————列出、添加、刪除端口——————
firewall-cmd –zone=public –list-ports
firewall-cmd –zone=public –add-port=53/tcp ##添加53端口(tcp協議)
這裏寫圖片描述

Direct Rules

通過 firewall-cmd 工具,可以使用 –direct 選項在運行時間裏增加或者移除鏈。
如果不熟悉 iptables ,使用直接接口非常危險,因爲您可能無意間導致防火牆被入侵。
直接端口模式適用於服務或者程序,以便在運行時間內增加特定的防火牆規則。
直接端口模式添加的規則優先應用。
添加規則:
firewall-cmd –direct –add-rule ipv4 filter INPUT 0 -s 172.25.254.60 -p tcp –dport 22 -j ACCEPT
這裏寫圖片描述
刪除規則:
firewall-cmd –direct –remove-rule ipv4 filter INPUT 0 -s 172.25.254.60 -p tcp –dport 22 -j ACCEPT
這裏寫圖片描述
列出規則:
firewall-cmd –direct –get-all-rules

Rich Rules

通過“ rich language”語法,可以用比直接接口方式更易理解的方法建立複雜防火牆規則。此外,還能永久保留設置。這種語言使用關鍵詞值,是 iptables 工具的抽象表示。
這種語言可以用來配置分區,也仍然支持現行的配置方式。
source
指定源地址,可以是一個ipv4/ipv6的地址或網段,不支持使用主機名。
destination
指定目的地址,用法和source相同。
service
服務名稱是 f irewalld 提供的其中一種服務。要獲得被支持的服務的列表,輸入以下命令:
firewall-cmd –get-services 。命令爲以下形式:
service name= service_name
port
端口既可以是一個獨立端口數字,又或者端口範圍,例如,5060-5062。協議可以指定爲 tcp 或udp 。命令爲以下形式:
port port= number_or_range protocol= protocol
protocol
協議值可以是一個協議 ID 數字,或者一個協議名。預知可用協議,請查閱 /etc/protocols。
命令爲以下形式:
protocol value= protocol_name_or_ID
icmp-block
用這個命令阻絕一個或多個ICMP類型。IC MP 類型是 firewalld支持的ICMP類型之一。
要獲得被支持的ICMP類型列表,輸入以下命令: firewall-cmd –get-icmptypes
icmp-block在內部使用 reject 動作,因此不允許指定動作。命令爲以下形式:
icmp-block name= icmptype_name
masquerade
打開規則裏的 IP 僞裝。用源地址而不是目的地址來把僞裝限制在這個區域內。不允許指定動作。
forward-port
從一個帶有指定爲 tcp 或 udp 協議的本地端口轉發數據包到另一個本地端口,或另一臺機器,或另一臺機器上的另一個端口。port 和 to-port 可以是一個單獨的端口數字,或一個端口範圍。而目的地址是一個簡單的 IP 地址。不允許指定動作,命令使用內部動作
accept 。命令爲以下形式:
forward-port port= number_or_range protocol= protocol /
to-port= number_or_range to-addr= address
log
註冊含有內核記錄的新連接請求到規則中,比如系統記錄。你可以定義一個前綴文本,
記錄等級可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的
一個。命令形式:
log [prefix= prefix text ] [level= log level ] limit value= rate/duration
(等級用正的自然數 [1, ..] 表達,持續時間的單位爲 s 、 m 、 h 、 d 。 s 表示秒, m 表示分鐘, h表示小時, d 表示天。最大限定值是 1/d ,意爲每天最多有一條日誌進入。)
audit
審覈爲發送到 aud i td 服務的審覈記錄來註冊提供了另一種方法。審覈類型可以是ACCEPT、REJECT或DROP中的一種,但不能在 audit命令後指定,因爲審覈類型將會從規則動作中自動收集。審覈不包含自身參數,但可以選擇性地增加限制。審覈的使用是可選擇的。選擇 accept 所有新的連接請求都會被允許。選擇 reject ,連接將被拒絕,連接來源將接到一個拒絕信息。拒絕的類型可以被設定爲使用另一種值。選擇 drop , 所有數據包會被丟棄,並且不會向來源地發送任何信息。

僞裝和端口轉發

*)server
eth0 172.25.254.133
eth1 172.25.60.10

*)desktop
eth0 172.25.60.11
gateway 172.25..10

僞裝:
(在server)
firewall-cmd –list-all
firewall-cmd –add-masquerade ##開啓僞裝功能
firewall-cmd –list-all
firewall-cmd –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.254.100 masquerade’ ##入站僞裝
這裏寫圖片描述
這裏寫圖片描述

轉發:
(在server)
firewall-cmd –zone=public –add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.60.11 ##連接本機時會轉連接到172.25.60.11主機
這裏寫圖片描述

測試:
172.25.254.60主機連接172.25.254.133主機時會連接到172.25.60.11主機
這裏寫圖片描述

發佈了87 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章