防火牆
防火牆是根據配置文件/etc/sysconfig/iptables來控制本機的"出、入"的網絡訪問行爲。linux
1,Filter表:主要是跟進入linux本機的數據包有關,過濾數據包,默認表安全
1):INPUT鏈:過濾全部目標地址是本機的數據。(對進入本機的數據包進行過濾)
2):OUTPUT鏈:過濾由本機產生的數據(對源地址是本機的數據包進行過濾)
3):FORWARD鏈:過濾全部路過本機的數據包(源地址和目的地址都不是本機的數據包)網絡
2,NAT表:網絡地址轉換,這個表主要用來進行來源或者目的的IP和port的轉換,與linux本機無關,主要是與linux主機的局域網內的環境有關。app
若是數據包容許通過NAT或者masquerade,那麼其餘的數據也會作一樣的動做,也就是說其餘數據包不會被一個一個的NAT。ssh
包含的3個動做:
DNAT:改變數據包的目的地址使包能從新路由到某臺機器。
SNAT:改變數據包的源地址(使局域網能訪問公網)
NASQUERADE:個SNAT同樣使局域網能訪問公網,無固定IP使用PPP.PPPoE等撥號上網模式鏈接公網。tcp
NAT表包含3條鏈:
PREROUTING鏈:數據包達到防火牆時改變包的目的地址。
POSTROUTING鏈:在數據包離開防火牆時改變數據包的源地址
OUTPUT鏈:改變本地產生數據的目標地址spa
3,MANGLE表:破壞者,主要是與特殊的數據包的路由標誌有關,修改數據包、改變數據包的頭內容(TTL、TOS、MARK)blog
TOS:設置改變數據包的服務類型,通常不建議使用TOS設置發往公網的包除非打算依賴TOS來路由。
TTL:改變數據包的生存時間,可讓數據包有一個特殊的TTL,欺騙ISP
MASK:給數據包設置特殊的標記,經過標記配置帶寬限制或者而基於請求分類接口
mangle表有5條鏈:
PREROUTING鏈:數據進入防火牆後,路由判斷以前改變數據包。
POSTROUTING鏈:在數據包肯定目的地址以後,改變數據包
INPUT鏈:在數據包進入本機以後,應用程序接受數據以前改變數據包
OUTPUT鏈:在數據包被肯定目的以前改變數據包
FORWARD鏈:第一次路由判斷以後,最後一次路由判斷以前改變數據包ip
4,RAW表:原始表格
主要是用於配置,原始表格有2中內置的鏈條
PREROUTING鏈
OUTPUT鏈
IPTABLES中數據包的被跟蹤的4種鏈接狀態:
一、NEW:該包想要開始一個鏈接(從新鏈接或者鏈接重定向)
二、RELATED:該包屬於某個已經創建的鏈接所創建的新鏈接,好比:FTP數據傳輸鏈接就是控制鏈接所RELATED出來的鏈接
三、ESTABLISHED:只要發送並接到應答,一個數據鏈接就從NEW變爲ESTABLISHED,並且該狀態會繼續這個鏈接的後繼數據包。
四、INVALID:數據包不能被識別屬於哪一個鏈接或者沒有任何的狀態好比內存溢出、收到不知屬於哪一個鏈接的ICMP錯誤信息。通常應該DROP這個狀態任何數據。
5,firewalld優先級
策略應用優先級:raw, mangle, nat, filter
策略經常使用優先級:filter,nat,mangle,raw
6,列舉全部規則:
iptables -L -n
-L:列舉在一個表或者鏈的全部規則
-n:以數字的方式輸出地址或者端口
顯示規則編號:
--line-numbers:當查詢時打印編號
iptables -L -n --line-numbers
指定表顯示規則:
iptables -L -n -t nat
清除表規則:
-F:刪除一個或者多個鏈的全部的規則
iptables -F -t nat
保存規則:
service iptables save
/etc/rc.d/init.d/iptables save
禁止ssh登陸:
iptables -A INPUT -p tcp --dport 22 -j DROP
刪除:
iptables -D INPUT -p tcp --dport 22 -j DROP
iptables -D INPUT 1
-A,append chain新增規則到某個規則鏈中,該規則將會成爲規則鏈的最後一條規則
-D,delete chain [rulenum]從某個規則鏈中刪除一條規則,能夠輸入完整的規則,也能夠輸入規則編號
-R,--replace,取代現行的規則,規則被取代後不會改變規則順序。
-I,insert chain [rulenum],插入一條規則,本來該位置上的規則將會日後移一個順位。
-p:porto protocol,例如:tcp、udp、icmp。
-j:jump表示跳轉,跟target結合起來表示數據表將跳轉到哪一個目標,並執行相應的動做。常見的動做有:ACCEPT\DROP\REJECT三種,可是通常不適用REJECT,會帶來安全隱患。
--dport:目的端口號
注意:INPUT和ACCEPT等關鍵字必須大寫
禁止ip 192.168.137.0 網段 從eth0網卡接入:####
iptables -A INPUT -p icmp -i eth0 -s 192.168.137.0 -j DROP
禁止ip地址非192.168.137.113的全部類型的數據進入:
iptables -A INPUT ! -s 192.168.137.113 -j DROP
擴展匹配:一、隱式擴展 二、顯式擴展
隱式擴展:
-p tcp
--sport:源端口
--dport:目的端口
顯式擴展:
-m extension --sub-opt
-p tcp --dport 22 和-p tcp -m tcp --dport 22 功能相同
state:狀態擴展,接口ip_contrack跟蹤會話狀態
NEW:新的鏈接狀態
RELATED:相關聯的鏈接
ESTABLEISHED:已創建的鏈接請求
INVALID:非法的鏈接
匹配端口範圍:
iptables -A INPUT -p tcp --dport 22:80 -j DROP
匹配多個端口:
iptables -A INPUT -p tcp --dport 22,80,3306 -j DROP
-m 匹配擴展:
iptables -A INPUT -p tcp -m multiport --dport 22,80,3306 -j DROP
不容許源端口80的數據輸出:iptables -A OUTPUT -p tcp --sport 80 -j DROP