iptables 讀書筆記
原創文章,轉載請標明出處
http://space.itpub.net/26239116/viewspace-749818
iptables有多個表(table),每個表裡有一系列規則鏈。
預設的表叫filter,用來根據包來做過濾。filter表中有三個預設的鏈:
FORWARD鏈:過濾轉發包的規則
INPUT鏈:過濾輸入包規則
OUTPUT鏈:過濾輸出包規則
iptables還有nat和mangle兩個表,nat用在地址轉換中,mangle可以過濾和修改filter和net之外的包,如修改IP包的TTL等。
每條鏈有一個target,filter表中的規則可以使用的target有ACCEPT、DROP、REJECT、LOG、MIRROR、QUEUE、REDIRECT、RETURN、ULOG。
當一條規則落在ACCEPT上的時候,匹配這個規則的包就可以透過。
DROP和REJECT會把包丟棄,DROP是默默丟棄,REJECT會返回一個ICMP錯誤資訊。
REJECT把包分流到一個代理,而不是直接讓它透過,比如引導web流量。
iptables命令形式:
iptables -F chainName
iptables -P chainName target
iptables -A chainName -i interface -j target
-F:清除鏈條中的所有規則。
-p:設定預設策略。
-A:給鏈條附加規則,可以用-t指定表名,否則預設新增到filter表中。-j指定目標。
其它引數:
-p:協議,如tcp udp icmp
-s:源IP
-d:目標IP
--sport:源埠
--dport:目標埠
--icmp-type:ICMP型別
!:否定條件
-t:指定表名,如果不指定,則預設是filter表
舉例
假設一臺linux伺服器充當閘道器角色,有兩個網路介面:
ppp0
通往internet
IP地址128.138.101.4
eth0
通往內網
IP地址10.1.1.1
需要iptables保護內網中10.1.1.2伺服器
首先需要確保載入了iptables模組,並啟用ip forwarding。
vi /etc/sysctl.conf
新增 net.ipv4.ip_forward=1
然後執行sysctl -p
(如果怕引數名寫錯,可以看有個檔案叫/proc/sys/net/ipv4/ip_forward
把/proc/sys/去掉,然後把斜槓換成點就是net.ipv4.ip_forward。)
首先初始化filter表:
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
給FORWARD鏈定義透過規則:
iptables -A FORWARD -i eth0 -p ANY -j ACCEPT (信任內網的一切包)
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 22 -j ACCEPT (允許外網訪問10.1.1.2的SSH)
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 80 -j ACCEPT (允許外網訪問10.1.1.2的80埠)
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 443 -j ACCEPT(允許外網訪問10.1.1.2的https埠)
給閘道器自己設定規則:
iptables -A INPUT -i eth0 -d 10.1.1.1 -p tcp --dport 22 -j ACCEPT (允許來自內網的SSH連線)
iptables -A INPUT -i lo -d 10.1.1.1 -p ANY -j ACCEPT (閘道器透過loopback地址自己連自己)
iptables -A INPUT -i eth0 -d 10.1.1.1 -p icmp --icmp-type 8 -j ACCEPT (允許來自內網的ping)
開放各種icmp包
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 5 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 3 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 5 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 11 -j ACCEPT
為net表的PREROUTING設定策略,可以應用於所有其他鏈條。
iptables -t nat -A PREROUTING -i ppp0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 192.168.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 127.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 224.0.0.0/4 -j DROP
為外來的包記錄日誌
iptables -A INPUT -i ppp0 -j LOG
iptables -A FORWARD -i ppp0 -j LOG
檢視當前規則
iptables -nL --line-numbers (還會顯示行號,刪除時用行號)
刪除規則
iptables -D INPUT 1 (刪除INPUT鏈條的1號規則)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26239116/viewspace-749818/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讀書筆記...筆記
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- iptables筆記筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- 《重構》讀書筆記筆記
- webpackDemo讀書筆記Web筆記
- PMBook讀書筆記(一)筆記
- Effective Java 讀書筆記Java筆記
- js高程讀書筆記JS筆記
- “Docker Practice”讀書筆記Docker筆記
- FPGA讀書筆記5FPGA筆記
- FPGA讀書筆記3FPGA筆記
- FPGA讀書筆記4FPGA筆記
- FPGA讀書筆記2FPGA筆記
- FPGA讀書筆記1FPGA筆記
- 《精通JavaScript》讀書筆記JavaScript筆記
- 讀書筆記摘錄:筆記
- 《矽谷之父》讀書筆記筆記
- 重構讀書筆記筆記
- 讀書筆記之一筆記