iptables學習筆記

iptables防火墻簡介

  • 基于包過濾防火墻
  • OSI 二三四層
  • iptables+squid實現7層過濾
  • Netfilter/iptables是表的容器
    filter nat mangle raw
  • iptables的表又是鏈的容器
    • 鏈: input output forward prerouting postrouting
  • 鏈chains是規則的容器
  • 規則:一條條過濾的語句
image.png
  • 所有鏈名都要大寫

filter表

提供主機防火墻的主要功能,iptables的默認表。這個表定義了三個鏈:

  • input - 過濾進入主機的數據包。
  • forward - 轉發流經主機的數據包,起轉發作用,和nat關系很大,lvs nat模式,net.ipv4.ip_forward=0
  • output - 處理本機發出去的數據包。
# 查看filter表
iptables -L -n 
# 查看nat表需要指定
iptables -L -n -t nat

nat表

網絡地址轉換,即來源與目的ip地址和port的轉換。

  • 用于企業路由(zebra)或網關(iptables),共享上網(POSTROUNTING)。
  • 做內部外部IP地址一對一映射(dmz) (prerouting)
  • web 單個端口映射(prerouting)
  • PREROUTING - 在數據到達防火墻時進行路由判斷之前執行的規則,改變數據包的 目的地址端口
  • POSTROUTING - 在數據包離開防火墻是進行路由判斷之后執行的規則,改變數據包的 源地址端口

iptables數據流程

image.png

image.png

image.png

iptabels使用

# 版本
iptables -V
# 幫助
iptables -h
# -n 數字顯示 -L chain列表
iptables -L -n
# 基于內核參數
lsmod | grep -E "nat|filter|ipt"
# 如果沒有加載輸入下列命令讓內核加載相關參數
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modporbe ip_conntrack
modporbe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

# -F 清除所有規則,無法清除默認規則
# -X 刪除用戶自定義的鏈
# -Z 鏈計數器清零

# 禁用22端口
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
# 刪除規則
iptables -t filter -D INPUT -p tcp --dport 22 -j DROP
# 根據序號來刪除
iptables -L -n --line-numbers
iptables -t filter -D INPUT 1

# -A 在指定鏈的結尾插入
# -I 在指定鏈的開頭插入
# -i 網卡接口
# -s 源地址

# 禁用ICMP
iptables -t filter -I INPUT -p icmp --icmp-type 8 -i eth0 ! -s 10.0.0.0/24 -j DROP
# 封端口范圍
iptables -I INPUT -p tcp -dport 52000:53000 -j  DROP
iptables -I INPUT -p tcp -m multoport --dport 21,22,23,24 -j ACCEPT

# -m state(NEW DSTABLISHED RELATED INVALID)

實驗

iptables做nat轉發,使內網機器訪問外網

  1. 實驗環境
    ## 跳板機
    [root@jump ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:b2:8c:36 brd ff:ff:ff:ff:ff:ff
        inet 192.168.88.133/24 brd 192.168.88.255 scope global eth0
        inet6 fe80::20c:29ff:feb2:8c36/64 scope link 
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:b2:8c:40 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.200/24 brd 192.168.56.255 scope global eth1
        inet6 fe80::20c:29ff:feb2:8c40/64 scope link 
           valid_lft forever preferred_lft forever
    ## 內網機器
    [root@inner ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
        link/ether 00:0c:29:28:22:a1 brd ff:ff:ff:ff:ff:ff
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:28:22:ab brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.222/24 brd 192.168.56.255 scope global eth1
        inet6 fe80::20c:29ff:fe28:22ab/64 scope link 
           valid_lft forever preferred_lft forever
    
  2. 開啟ipv4轉發
    [root@inner ~]# sed -i "s/^net.ipv4.ip_forward .*/net.ipv4.ip_forward = 1/g" /etc/sysctl.conf
    [root@inner ~]# sysctl -p
    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    
  3. 默認允許轉發
    [root@inner ~]# 
    [root@inner ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     all  --  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 
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination  
    
  4. 加載必要的內核模塊:
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modporbe ip_conntrack
    modporbe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state
    
  5. 添加nat轉發:
    方法1:適合于有固定外網地址的:
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j SNAT --to-source 192.168.56.200
    方法2:適合變化外網地址(ADSL):
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容