防火墻是用戶限制某些ip或用戶對其主機的訪問。防火墻從種類上分為兩大類,硬件防火墻以及軟件防火墻。軟件防火墻主要是對數據包進行過濾,硬件防火墻主要用來對惡意攻擊的防護以及數據包的過濾,比如ddos攻擊。這里,我們來講解linux下的軟件防火墻——iptables。
iptables與firewalld
在centOS6下,默認的軟件防火墻是iptables,而到了centos7,則是firewalld。它們之間有什么聯系了,其實firewalld就是在原iptables上新封裝成的一個軟件。
學習iptables時,建議先關閉firewalld,并開啟iptables
yum?install?iptables-services systemctl?stop?firewalld systemctl?start?iptables
iptables的表和鏈
iptables的不同的表代表著不同的功能,默認有4個表
-
filter(過濾器) nat(地址轉換) mangle raw
不同的表下面,有著自己的規則鏈:
-
filter(INPUT/OUTPUT/FORWARD)
-
nat(prerouting/output/postouting)
這些鏈代表的意義如下:
-
INPUT鏈——進來的數據包應用此規則鏈中的規則
-
OUTPUT鏈——外出的數據包應用此規則鏈中的規則
-
FORWARD鏈——轉發數據包時應用此規則鏈中的規則
-
PREROUTING鏈——對數據包作路由選擇前應用此鏈中的規則
-
POSTROUTING鏈——對數據包作路由選擇后應用此鏈中的規則
iptables的規則查看與清除
規則查看
用法示例:iptables [-t tables] -L [-nv]
選項與參數:
-
-t后接表類型,省略該選項,則默認為filter表。
-
-L列出當前表的規則
-
-n 不進行域名與ip反查
-
-v 顯示更多信息
#?查看filter表的規則 #?iptables?-nvL Chain?INPUT?(policy?ACCEPT?0?packets,?0?bytes) ?pkts?bytes?target?????prot?opt?in?????out?????source???????????????destination????????? ???67??4444?ACCEPT?????all??--??*??????*???????0.0.0.0/0????????????0.0.0.0/0????????????state?RELATED,ESTABLISHED ????0?????0?ACCEPT?????icmp?--??*??????*???????0.0.0.0/0????????????0.0.0.0/0??????????? ????0?????0?ACCEPT?????all??--??lo?????*???????0.0.0.0/0????????????0.0.0.0/0??????????? ????0?????0?ACCEPT?????tcp??--??*??????*???????0.0.0.0/0????????????0.0.0.0/0????????????state?NEW?tcp?dpt:22 ????2???286?REJECT?????all??--??*??????*???????0.0.0.0/0????????????0.0.0.0/0????????????reject-with?icmp-host-prohibited Chain?FORWARD?(policy?ACCEPT?0?packets,?0?bytes) ?pkts?bytes?target?????prot?opt?in?????out?????source???????????????destination????????? ????0?????0?REJECT?????all??--??*??????*???????0.0.0.0/0????????????0.0.0.0/0????????????reject-with?icmp-host-prohibited Chain?OUTPUT?(policy?ACCEPT?38?packets,?4664?bytes) ?pkts?bytes?target?????prot?opt?in?????out?????source???????????????destination?? ? #?查看nat表的規則 iptables?-t?nat?-L?-nv
鏈下的規則選項的含義如下:
-
target:代表進行的操作,ACCEPT放行、drop丟棄、reject拒絕
-
prot:代表使用的數據包協議,有tcp、udp以及icmp
-
opt:說明信息
-
source:對某來源主機進行限制
-
destination:對某目標主機進行限制
上面顯示的INPUT鏈的5條規則含義如下:
-
只要數據包的狀態為RELATED,ESTABLISHED,都接受
-
只要是icmp包都接受
-
只要是本地回環網卡,所有數據都接受
-
只要是發送給22端口的主動式連接的TCP數據包都接受。
-
拒絕所有的數據包
清楚iptables的規則
默認安裝centOS7后,系統就已經有許多iptables的規則,這里教大家如何去清除這些規則。
用法示例:iptables [-t tables] [-FXZ]
選項與參數:
-
-F 清理所有已定制的規則
-
-X 清理所有用戶自定義的規則
-
-Z 將所有的統計計數置零
#?iptables?-F #?iptables?-X #?iptables?-Z
查看具體的規則
使用iptables-save可以查看具體的規則
用法:iptables-save [-t tables]
#?iptables-save?-t?filter #?Generated?by?iptables-save?v1.4.21?on?Sat?Nov?14?21:51:56?2020 *filter :INPUT?ACCEPT?[0:0] :FORWARD?ACCEPT?[0:0] :OUTPUT?ACCEPT?[56:7196] -A?INPUT?-m?state?--state?RELATED,ESTABLISHED?-j?ACCEPT -A?INPUT?-p?icmp?-j?ACCEPT -A?INPUT?-i?lo?-j?ACCEPT -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?22?-j?ACCEPT -A?INPUT?-j?REJECT?--reject-with?icmp-host-prohibited -A?FORWARD?-j?REJECT?--reject-with?icmp-host-prohibited ? #?Completed?on?Sat?Nov?14?21:51:56?2020
定義默認策略
當我們清楚完規則后,就只剩下默認的策略了。什么是默認的策略,就是當不滿足我們任何一條規則時,就采用默認規則。默認的策略有ACCEPT(接受數據包)和DROP(丟棄數據包)
用法:iptables [-t tables] -P [INPUT|OUTPUT|FORWARD……] [ACCEPT|DROP]
現在,我們嘗試將filter的INPUT鏈的默認修改為DROP、OUTPUT及FORWARD鏈修改為ACCETP
iptables?-t?filter?-P?INPUT?DROP #?注意,該命令敲完后,你的終端就可能會斷開連接了 iptables?-P?OUTPUT?ACCEPT iptables?-P?FORWARD?ACCEPT
相關推薦:《linux課程》