Centos7防火牆iptables
防火牆配置iptables,filewalld
https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#DNATTARGET
三張表介紹:
filter負責過濾資料包,包括的規則鏈有,input,output和forward;
nat則涉及到網路地址轉換,包括的規則鏈有,prerouting,postrouting和output;
mangle表則主要應用在修改資料包內容上,用來做流量整形的,給資料包打個標識,預設的規則鏈有:INPUT,OUTPUT、forward,POSTROUTING,PREROUTING;
五個鏈:
input匹配目標IP是本機的資料包,
output 出口資料包 , 一般不在此鏈上做配置
forward匹配流經本機的資料包,
prerouting用來修改目的地址,用來做DNAT 。如:把內網中的80埠對映到路由器外網埠上
postrouting用來修改源地址用來做SNAT。 如:內網通過路由器NAT轉換功能實現內網PC機通過一個公網IP地址上網。
總結:iptables三個表,5個連結,結構如圖:
安裝安裝iptables防火牆
yum installiptables-services #安裝
iptable [-t 表名] 管理選項 [鏈名][條件匹配][-j目標動作或跳轉]
配置檔案位置:
[[email protected] ~]#ls /etc/sysconfig/iptables
[[email protected] ~]#systemctl start iptables.service
[[email protected] ~]# chkconfig --listiptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-A <鏈名> APPEND,追加一條規則(放到最後)
-I <鏈名> [規則號碼] INSERT,插入一條規則
-R num:Replays替換/修改第幾條規則
-D <鏈名> <規則號碼 | 具體規則內容> DELETE,刪除一條規則
ptables -D INPUT1(按號碼匹配)
iptables -D INPUT-s 192.168.0.1 -j DROP(按內容匹配)
-P <鏈名> <動作> POLICY,設定某個鏈的預設規則
iptables -P INPUTDROP(不用加-j)
-F [鏈名] FLUSH,清空規則
-L [鏈名] LIST,列出規則
v:顯示詳細資訊,包括每條規則的匹配包數量和匹配位元組數
x:在 v 的基礎上,禁止自動單位換算(K、M)
n:只顯示 IP 地址和埠號碼,不顯示域名和服務名稱
--line-number 可以檢視到規則號
匹配條件
£ 流入、流出介面(-i、-o)
£ 來源、目的地址(-s、-d)
£ 協議型別 (-p)
£ 來源、目的埠(--sport、--dport)
£ -i <匹配資料進入的網路介面> #此引數主要應用於nat表,例如目標地址轉換
£ -o 匹配資料流出的網路介面
£ -s <匹配來源地址>
£ -d <匹配目的地址>
£ -p <匹配協議型別>
£ --sport <匹配源埠>
£ --dport <匹配目的埠>
注意:--sport 和 --dport 必須配合 -p 引數使用
動作(處理方式)
-j ACCEPT
通過,允許資料包通過本鏈而不攔截它
-j DROP
丟棄,阻止資料包通過本鏈而丟棄它
-j SNAT --toIP[-IP][:埠-埠](nat 表的 POSTROUTING 鏈)
源地址轉換,SNAT 支援轉換為單 IP,也支援轉換到 IP 地址池(一組連續的 IP 地址)
-j DNAT --to IP[-IP][:埠-埠](nat 表的 PREROUTING鏈)
目的地址轉換,DNAT 支援轉換為單 IP,也支援轉換到 IP 地址池
-j MASQUERADE 偽裝
附加模組
£ 按包狀態匹配 (state)
£ 按來源 MAC 匹配(mac)
£ 按包速率匹配 (limit)
£ 多埠匹配 (multiport)
按包狀態匹配 (state)
-m state --state 狀態
狀態:NEW、RELATED、ESTABLISHED、INVALID
NEW:有別於 tcp 的 syn #如果我們傳送一個流的初始化包,狀態就會在OUTPUT鏈 裡被設定為NEW,當我們收到迴應的包時,狀態就會在PREROUTING鏈裡被設定為ESTABLISHED。如果第一個包不是本地產生的,那就會在PREROUTING鏈裡被設定為NEW狀 態。
ESTABLISHED:連線態
RELATED:衍生態,與 conntrack 關聯(FTP)
INVALID:不能被識別屬於哪個連線或沒有任何狀態
按來源 MAC 匹配(mac)
-m mac --mac-source MAC
匹配某個 MAC 地址
按包速率匹配 (limit)
-m limit --limit 匹配速率 [--burst 緩衝數量]
用一定速率去匹配資料包
多埠匹配 (multiport)
-m multiport<--sports|--dports|--ports> 埠1[,埠2,..,埠n]
一次性匹配多個埠,可以區分源埠,目的埠或不指定埠
儲存:service iptables save
1、開放20、21埠:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT #預設情況一般服務與本機通訊以127.0.0.1來通訊的。
iptables -A INPUT -p tcp -m multiport --dports21,22,80 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -jACCEPT
使用iptables搭建路由器,通過SNAT功能
啟用核心路由轉發功能:臨時生效
[[email protected] ~]#echo"1" > /proc/sys/net/ipv4/ip_forward
永久生效:
[[email protected] ~]#vim /etc/sysctl.conf
改:#net.ipv4.ip_forward =0
為: net.ipv4.ip_forward =1
改完使配置生效:
[[email protected] ~]# sysctl –p
配置之前,把前面的規則去除了,否認會達不到一定的效果
iptables -P INPUT ACCEPT
iptables –F
配置SNAT:
[[email protected] ~]#iptables-t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.63
或:
[[email protected] ~]#iptables -t nat -APOSTROUTING -s 192.168.2.0/24 -oeth0 -j MASQUERADE # ADSL撥號上網.
使用DNAT 功能,把內網web伺服器埠對映到路由器外網
做DNAT埠對映:
xuegod63:
[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp--dport 80 -j DNAT --to 192.168.2.2:80
或:
[[email protected] ~]# iptables -t nat -APREROUTING -d 192.168.1.63 -p tcp --dport 80 -j DNAT --to 192.168.2.2:80
£ 所有鏈名必須大寫
INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
£ 所有表名必須小寫
filter/nat/mangle
£ 所有動作必須大寫
ACCEPT/DROP/SNAT/DNAT/MASQUERADE
£ 所有匹配必須小寫
-s/-d/-m <module_name>/-p
修改配置的話只需要將/usr/lib/firewalld中的配置檔案複製到/etc/firewalld中修改。恢復配置的話直接刪除/etc/firewalld中的配置檔案即可。
就需要把/usr/lib/firewalld/ssh.xml 檔案拷貝到 /etc/firewalld/services/