iptables
ip 的 tables ip的表格;
iptables只是netfilter的前端管理工具;netfilter是linux內核提供的數據流量管理模塊;
iptables/netfilter數據流量管理框架;
普遍人問IPtables就是一個防火牆;
作用:流量過濾;(防火牆:1、流浪過濾 2、接VPN)
1、網絡防火牆
首先,網絡防火牆一般處在外網出口處;
主要對於內外網交互的流量進行監控與過濾;
2、主機防火牆(並不提到360、xx管家)
主機有內核空間和用户空間,netfilter的過濾模塊運行在內核空間,但是它又無法提供數據匹配,所以我們需要使用函數來調用netfilter模塊,匹配數據流量;
5個鈎子:匹配數據流量:就有我們所説的 Chain (鈎子)
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
3種流量:1、到達主機的流量
2、通過主機的流量
3、主機發起的流量
4張表來決定行為:
1、raw 保持連接--建議不要開啓這個表的功能
2、mangle 做數據包修改
3、nat nat映射,包括SNAT DNAT
4、filter 數據包過濾(默認啓用)
那些表,可以關聯那些“鈎子”呢?
raw -- OUTPUT PREROUTING
mangle -- PREROUTING INPUT FORWARD OUTPUT POSTROUTING
nat -- POSTROUTING OUTPUT PREROUTING
filter -- OUTPUT INPUT FORWARD
【對於數據包的行為,就決定了這個數據包要經過那個鏈】
*注意:寫策略的時候,需要關聯鈎子,策略是屬於“鈎子”的,而鈎子只做策略匹配,但不能進行數據操作;
所以,我們需要再關聯表,每一種表決定了一種行為操作;
表 包含鏈 -- 鏈 包含 策略;
3、iptables的用法:
iptables [-t table] {-A|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
-t 指定 表
-A -I 添加策略 -A在最下面添加,-I 在最上面添加
建議:工作的時候一定要用 -A 不要用 -I
-D 刪除策略
-R 替換鏈表 需要指定所替換的編號
iptables -t filter -R INPUT 2 -s 1.1.1.1 -d 2.2.2.2 -j ACCEPT
-S 顯示鏈表的所有用法
-P 指定鏈表的默認行為
iptables -t filter -P INPUT DORP
建議:寫白名單
-N 自己定義鏈表;
如果策略過多,我們需要將策略分類,這就用自己定義鏈表來分類;
讓後再將自己定義的鏈表調用在其他可以匹配數據流量的鏈表上;
【如何去調用呢?】
-X 也是清除自定義的鏈表
iptables -t filter -X [chain]
-v 可以查看策略匹配的數據包
-vv 詳細查看數據包匹配情況 -vvv
iptables -t filter -L -v
-Z 將數據包計數歸零;
-L --list顯示所選chain上面所有規則rule
-F 清空制定chain上面所有規則
-E 替換chain的名稱;
------------------------------------------
-p udp icmp tcp esp ah
-s
-d
-j jump DROP ACCEPT REJECT SNAT DNAT MARK
-i 進入的網卡
-o 出去的網卡
-c 設置收發數據包的警告值
-n 不做解析
--line-number 顯示策略行號
-f TCP協議的標籤 -- syn ack fin rst pus ...