linux訪問控制:
Firewall:
rules、policy
防火牆分類:
工作在三層的網絡防火牆、七層防火牆
NetFilter:
hook functions 五個“鉤子函數”
chains
PREROUTINT 路由前的
INPUT 數據包包的流入接口
FORWARD 轉發
OUTPUT 由本機出來的
POSTROUTING 路由後的
防火牆策略:“通”、“堵” : 通就全通,堵只需單堵
允許/不允許:filter
地址轉換:nat
修改報文原數據:mangle
使用表來實現同一個鏈上的不同規則
四表五鏈
filter :INPUT,FORWARD,OUTPUT
nat :PREROUTING OUTPUT POSTROUTING
mngle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING
raw :PREROUTING OUTPUT
iptables定義規則
iptables [-t table(默認filter)] COMMAND chain CRETIRIA(匹配規則) -j ACTION
COMMAND:
鏈管理命令:
-P :設置默認策略
# iptables -P INPUT {DROP|ACCEPT}
-F : flush 清空規則鏈的
# iptables -t nat -F PREROUTING
-N :new 新建一個鏈
# iptables -N inbound_tcp_web
-X :刪除用戶自定義的空鏈,刪除之前清空裏面的規則
-E : 給用戶自定義的鏈重命名
-Z :清空鏈默認規則及鏈中規的計數器的
規則管理命令:
-A :在當前的鏈中最後追加
-I num:插入爲第num條
-R num:修改規則,替換
# iptables -R -num +新規則
-D num:刪除,指定刪除第num條
查看命令:
-L :list 查看
-n 以數字方式顯示,不進行解析
-v 詳細信息
-vv
-vvv
-x 計數器的精確值,不做單位換算
--line-numbers :顯示行號
匹配標準
通用匹配:
-s,--source,-src :做原地址匹配,不能使用主機名,使用ip
eg: IP,NETWORK/NETMASK,0.0.0.0/0.0.0.0
-d :匹配目標地址
-p :匹配協議的{tcp|udp|icmp}
-i eth0: inbount流入的
-o eth0:流出的接口
擴展匹配:
隱含擴展:
-p tcp
--dport :目標端口
--sport : 源端口
--tcp-flags:tcp的標誌位 SYN.ACK.FIN.PSH.RST.URG.
--tcp-flags 檢查的標誌位 必須爲1的標誌位
eg:--tcp-flags syn,ack,fin,rst syn ==--syn//實現第一次握手
-p udp
--dport
--sport
-p icmp
--icmp-type 8
echo-request ==8 ping出去的數據包
echo-reply ==0 ping的相應
顯式擴展
使用各種擴展模塊
-p tcp -m multiport --drops 21,23,80
ACTION
-j ACTION
DROP 悄悄拒絕
REJECT 明確拒絕
ACCEPT 接受
custom_chain
DNAT 目標nat
SNAT 原nat
MASQUERADE 地址僞裝
REDIRECT重定向
MARK 標記
RETURN
state狀態
NEW
ESTABLSHED
RELATED
INVALID
service iptables save 保存
默認保存在/etc/sysconfig/iptables
iptable-save > /etc/sysconfig/iptables.2 保存到指定的文件中
iptables-restore < /etc/sysconfig/iptables.2 啓動文件iptables.2裏面定義的規則
iptables實現nat:
源地址轉換
iptables -t nat -A POSTROUTING -s NETWORK/PREFIX -j SNAT --to-source Internet_IP
如果地址不是固定的,使用MASQUERADE來僞裝地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
目標 地址轉換
iptables -t nat -A PREROUTING -d INternet_fa -p tcp --dport 80 -j DNAT --to-destination NEI_IP