iptables筆記

查看iptables表

iptables -t filter -L
iptables -t nat -L
iptables -t mangle -L

介紹iptables命令

iptables -t table 命令 chain rules -j target

    table 可以是filter、nat、mangle,默認是filter
    -p 或--policy 定義默認策略
    -A 或--addend 在規則列表的最後增加一條規則
    -I 或--insert 在指定的位置插入一條規則
    -D 或--delete 刪除一個規則
    -R 或--replace 替換規則列表中的某個規則
    -F 或--flush  刪除表中所有規則

    iptables -t filter -P FORWARD ACCEPT
    iptables -t filter -I INPUT -p icmp -j DROP
    iptables -t filter -I INPUT 2 -p icmp -j DROP
    iptables -t filter -D INPUT 1
    iptables -t filter -R INPUT 1 -p icmp -j ACCEPT
    iptables -t filter -F

iptables 匹配選項

-i 或--in-interface---------指定數據包從哪個網絡接口進入。
-o 或--out-interface------指定數據包從哪個網絡接口輸出
-p 或--protocol------------協議類型,指定數據包匹配協議
-s 或--source--------------指定數據包匹配的源地址
-d 或--destination--------指定數據包匹配的目標地址
--sport----------------------指定數據包匹配的源端口號
--dport----------------------指定數據包匹配的目標端口

iptables 處理動作

-j 參數用來指定要進行的處理動作,常用的處理動作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、RETURN、MARK。

    ACCEPT:
        將封包放行,進行完此處理動作後,將不再匹配其它規則,直接跳往下一個規則鏈。

        示例:iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT      
    DROP:
        丟棄封包不予處理,進行完此動作後,將不再匹配其它規則,直接中斷過濾程序。

        示例:iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
    REJECT:
        阻攔該封包,並傳送封包通知對方,可以傳送的封包有幾個選擇:ICMP port-unreachable、ICMP echo-reply或是tcp-reset(這個封包會要求對方關閉連接)、進行完此處理動作後,將不再匹配其它規則,直接中斷過濾程序。

        示例:iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT
    LOG:
        將封包相關信息記錄到/var/log中,日誌文件詳細位置查閱/etc/syslog.conf配置文件,進行完此動作處理後,將會繼續匹配其它規則。

        示例:iptables -t filter -I INPUT -p tcp --dport 80 -j LOG

iptables 擴展匹配選項

匹配擴展中,還需要加-m引用模塊的顯示擴展

    參數 -m state
        基於狀態監測的包過濾,指定監測那種狀態
        --state {NEW, ESTTBLISHED, INVALID, RELATED}
        說明:用來比對鏈接狀態,鏈接狀態共有四種NEW, ESTTBLISHED, INVALID, RELATED。
        INVALID 表示該封包的鏈接編號(Session ID)無法辨識或編號不正常
        ESTABLISHED 表示該封包屬於某個已經建立的連接
        NEW 表示該封包想要起始一個連接(重設連接或將連接重定向)
        RELATED 表示該封包是屬於某個已經建立的連接,所建立的新連接。例如:FTP-DATA 連接必定是源自某個FTP連接

        示例:DMZ區域中的服務器不能主動建立TCP連接,在OUTPUT鏈中將所有SYN報文丟棄
            iptables -t filter -I OUTPUT -m state --state NEW -j DROP

    參數 -m icmp --icmp-type
        ping命令使用ICMP協議檢查網絡是否暢通,ICMP有兩種常見的類型的數據包即icmp-type,常用的類型爲echo-reply和echo-request。也可以使用代碼來表示。
        echo-reply 0
        echo-request 8

        示例:服務器可以ping通其他機器,其他機器不能ping通本機器
            iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP

    參數 -m multiport
        指定多端口號
            --sport     源端口
            --dport     目標端口
            可以使用"起始端口:結束端口"的格式指定一個範圍的端口

        示例:對外只放行22,80,1024-1026端口,其它端口的報文全部丟棄
            iptables -t filter -A INPUT -p tcp -m multiport --dport 22,80,1024:1026 -j ACCEPT
            iptables -t filter -P INPUT DROP

    參數 -m iprange
        指定多IP段
        --src-rangeip-ip
        --dst-rangeip-ip

        示例:只允許192.168.56.1-192.168.56.254訪問本服務器22,88端口,其它IP拒絕訪問
            iptables -t filter -A INPUT -p tcp -m multiport --dport 22,80 -m iprange --src-range 192.168.56.1-192.168.56.254 -j ACCEPT
            iptables -t filter -A INPUT -p tcp -m multiport --dport 22,80 -j DROP

    參數 -m connlimit
        --connlimit-above 限定連接數

        示例:ssh只允許同一個IP建立兩個會話,超出丟棄,防止ssh爆破
            iptables -t filter -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP

    參數 -m limit 
        --limit

        用來比對某段時間內封包的平均流量,上面的例子是用來比對每小時平均流量是否超過300個封包。
        除了每小時平均一次外,也可以每秒鐘、每分鐘、每小時或每天平均一次,

        示例:
            iptables -t filter -I INPUT -m limit --limit 300/second -j ACCEPT
            iptables -t filter -A INPUT -j DROP

    參數 -m mac --mac-source
        用來比對封包來源網絡接口網卡硬件地址,這個參數不能用在OUTPUT和Postrouing規則鏈上。

        示例:ssh服務只允許MAC爲 0A:00:27:00:00:14 訪問,其他全部拒絕
            iptables -t filter -A INPUT -p tcp --dport 22 -m mac --mac-source 0A:00:27:00:00:14 -j ACCEPT
            iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章