您好,歡迎來到網暖!
?
當前位置:網暖 » 站長資訊 » 建站基礎 » 網絡技術 » 文章詳細 訂閱RssFeed

簡述iptales四表五鏈及詳細介紹iptables命令使用方法

來源:網絡整理 瀏覽:333次 時間:2019-12-06
簡述iptales四表五鏈及詳細介紹iptables命令使用方法
  1. 簡述iptables四表五鏈
    (1)四表
       filter:過濾規則表,根據定義的規則過濾符合條件的數據包   nat表:network address translation 地址轉換規則表   mangle:修改數據標記規則表   raw:關閉nat表上啟動的連接跟蹤制,加快封包穿越防火墻的速度

    (2)五chain(鏈)

    INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING

    (3)表<-->鏈的關系

    raw:PREROUTING, OUTPUTmangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTINGnat:PREROUTING,[INPUT,]OUTPUT,POSTROUTINGfilter:INPUT,FORWARD,OUTPUT

    (4)內核中數據包的傳輸過程:

     當一個數據包進入網卡時,數據包首先進入 PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去 如果數據包就是進入本機的,數據包就會沿著圖向下移動,到達INPUT鏈,數據包到達INPUT鏈后,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包OUTPUT鏈,然后到達POSTROUTING鏈輸出 如果數據包是要轉發出去的,且內核允許轉發,數據包就會向右移動,經過FORWARD鏈,然后到達POSTROUTING鏈輸出
  2. 詳細介紹iptables命令使用方法:
    (1)規則格式:
    iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]

    -t table:    raw, mangle, nat, [默認為:filter]
    (2)COMMAND:(a)鏈管理:    -N:new, 自定義一條新的規則鏈;    -X: delete,刪除自定義的規則鏈;            注意:僅能刪除 用戶自定義的 引用計數為0的 空的 鏈;    -P:Policy,設置默認策略;對filter表中的鏈而言,其默認策略有:           ACCEPT:接受           DROP:丟棄           REJECT:拒絕    -E:重命名自定義鏈;引用計數不為0的自定義鏈不能夠被重命名,也不能被刪除;(b)規則管理:    -A:append,追加;    -I:insert, 插入,要指明位置,省略時表示第一條;    -D:delete,刪除;        (1) 指明規則序號;        (2) 指明規則本身;    -R:replace,替換指定鏈上的指定規則;    -F:flush,清空指定的規則鏈;    -Z:zero,置零;        iptables的每條規則都有兩個計數器:            (1) 匹配到的報文的個數;            (2) 匹配到的所有報文的大小之和;           (2) 匹配到的所有報文的大小之和;        (c)查看:-L:list, 列出指定鏈上的所有規則;    -n:numberic,以數字格式顯示地址和端口號;    -v:verbose,詳細信息;        -vv, -vvv    -x:exactly,顯示計數器結果的精確值;    --line-numbers:顯示規則的序號;
    (3)chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    (4)匹配條件:(a)基本匹配條件:無需加載任何模塊,由iptables/netfilter自行提供;       [!] -s, --source  address[/mask][,...]:檢查報文中的源IP地址是否符合此處指定的地址或范圍;       [!] -d, --destination address[/mask][,...]:檢查報文中的目標IP地址是否符合此處指定的地址或范圍         所有地址:0.0.0.0/0      [!] -p, --protocol protocol         protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or  "all",{tcp|udp|icmp}      [!] -i, --in-interface name:數據報文流入的接口;只能應用于數據報文流入的環節,           只能應用于PREROUTING,INPUT和FORWARD鏈;      [!] -o, --out-interface name:數據報文流出的接口;只能應用于數據報文流出的環節,           能應用于FORWARD、OUTPUT和POSTROUTING鏈
    (b)擴展匹配條件:隱式擴展:在使用-p選項指明了特定的協議時,無需再同時使用-m選項指明擴展模塊的擴展機制;不需要手動加載擴展模塊;因為它們是對協議的擴展,所以,但凡使用-p指明了協議,就表示已經指明了要擴展的模塊;  (1) tcp:       [!] --source-port, --sport port[:port]:匹配報文的源端口;可以是端口范圍;       [!] --destination-port,--dport port[:port]:匹配報文的目標端口;可以是端口范圍;       [!] --tcp-flags  mask  comp                mask is the flags which we should examine,  written as a comma-separated list,例如 SYN,ACK,FIN,RST            comp is a comma-separated list  of  flags  which must be set,例如SYN            例如:“--tcp-flags  SYN,ACK,FIN,RST  SYN”表示,要檢查的標志位為SYN,ACK,FIN,RST四個,其中SYN必須為1,余下的必須為0;       [!] --syn:用于匹配第一次握手,相當于”--tcp-flags  SYN,ACK,FIN,RST  SYN“;   (2)udp:       [!] --source-port, --sport port[:port]:匹配報文的源端口;可以是端口范圍;       [!] --destination-port,--dport port[:port]:匹配報文的目標端口;可以是端口范圍;   (3)icmp:       [!] --icmp-type {type[/code]|typename}            echo-request:8            echo-reply:0顯式擴展:必須要手動加載擴展模塊, [-m matchname [per-match-options]];    (1)multiport      This  module  matches  a  set  of  source  or  destination  ports. Up  to 15 ports can be specified.  A port range (port:port) counts as two ports.  It can only be used in conjunction with one of the following protocols: tcp,  udp, udplite, dccp and sctp.      以離散或連續的 方式定義多端口匹配條件,最多15個;       [!] --source-ports,--sports port[,port|,port:port]...:指定多個源端口;       [!] --destination-ports,--dports port[,port|,port:port]...:指定多個目標端口;       # iptables -I INPUT  -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -j ACCEPT    (2)iprange,指明連續的(但一般不是整個網絡)IP地址范圍      以連續地址塊的方式來指明多IP地址匹配條件;       [!] --src-range from[-to]       [!] --dst-range from[-to]       # iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT    (3)mac擴展       指明源MAC地址       適用于:PREROUTING,FORWARD,INPUT chains       [!]--mac-source XX:XX:XX:XX:XX:XX     (4)time擴展        This  matches  if the packet arrival time/date is within a given range.         --timestart hh:mm[:ss]         --timestop hh:mm[:ss]         [!] --weekdays day[,day...]         [!] --monthdays day[,day...]         --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]          --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]         --kerneltz:使用內核配置的時區而非默認的UTC;     (5)string擴展          This modules matches a given string by using some pattern matching strategy.        --algo {bm|kmp} 字符匹配算法        [!] --string pattern  要檢測的字符串模式        [!] --hex-string pattern 要檢測字符串模式,16機制格式       --from offset 開始偏移       --to offset  結束偏移       ~]# iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT    (6)connlimit:根據每客戶端IP做并發連接數數量匹配                可防止CC(Challenge Collapsar挑戰黑洞)      Allows  you  to  restrict  the  number  of parallel connections to a server per client IP address (or client address block).      --connlimit-upto n:連接的數量小于等于n時匹配      --connlimit-above n:連接的數量大于n時匹配       ~]# iptables -I INPUT -d 172.16.0.7 -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT    (7)limit,基于收發報文的速率做匹配,令牌桶過濾器       This  module  matches  at  a limited rate using a token bucket filter.       --limit rate[/second|/minute|/hour|/day]       --limit-burst number       ~]iptables -I INPUT -d 172.16.0.67 -p icmp --icmp-type 8 -m limt --limt-brust 5 --limit 20/minute -j ACCEPT       ~]# iptables -I OUTPUT -s 172.16.0.7 -p icmp --icmp-type 0 -j ACCEPT       限制本機某tcp服務接收新請求的速率:--syn, -m limit    (8)state       根據"連接追蹤機制"去檢查連接的狀態,較耗資源       conntrack機制:追蹤本機上的請求和響應之間的關系       [!] --state state           INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.           NEW: 新連接請求;連接追蹤信息庫中不存在此連接的相關信息條目,因此,將其識別為第一次發出的請求           ESTABLISHED:已建立的連接,NEW狀態之后,連接追蹤信息庫中為其建立的條目失效之前期間內所進行的通信狀態           INVALID:無法識別的連接,如flag標記不正確           RELATED:相關聯的連接,當前連接是一個新請求,但附屬于某個已存在的連接;新發起的但與已有的連接相關聯的連接,如:ftp協議中的數據連接與命令連接之間的關系           UNTRACKED:未追蹤的連接;如raw表中關閉追蹤           iptables -A OUTPUT -s 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT           iptables -I INPUT -d 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT           iptables -A INPUT  -d 172.20.11.58 -p tcp -m multiport --dports 22,80,139,445,3306 -m state --state NEW -j ACCEPT           iptables -A OUTPUT -s 172.20.11.58 -j REJECT           iptables -A INPUT -d 172.20.11.58 -j REJECT           iptables -R  OUTPUT 2 -s 172.20.11.58 -p udp -m multiport --dports 123,323 -m state --state NEW -j ACCEPT            state擴展:               內核模塊裝載:                  nf_conntrack                  nf_conntrack_ipv4               手動裝載:                  modprode nf_conntrack_ftp             追蹤到的連接,已經追蹤到的并記錄下來的連接信息庫                    /proc/net/nf_conntrack             調整連接追蹤功能所能夠容納的最大連接數量                     /proc/sys/net/nf_conntrack_max             超時時長:                   /proc/sys/net/netfilter/*timeout*              centos7需要加載模塊:                    modprode nf_conntrack         iptables的鏈接跟蹤表最大容量為/proc/sys/net/nf_conntrack_max,各種狀態的超時鏈接會從表中刪除,當模板滿載時,后續連接可能會超時,         解決方法兩個:              (1)加大nf_conntrack_max的值                 vim /etc/sysctl.conf                 net.nf_conntrack_max=393216                 net.netfilter.nf_conntrack_max=393216              (2)降低nf_conntrack timeout時間                 vim /etc/sysctl.conf                 net.netfilter.nf_conntrack_tcp_timeout_established=300                 net.netfilter.nf_conntrack_tcp_timeout_wait=120                 net.netfilter.nf_conntrack_tcp_close_wait=60                 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120

    (3)處理動作:

    -j targetname [per-target-options]    ACCEPT    DROP擴展target:    REJECT:       This is used to send back an error packet in response to the matched packet: otherwise it is equivalent to  DROP  so it  is  a  terminating  TARGET,  ending  rule traversal.        --reject-with type        The type given can be icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreach‐ able, icmp-net-prohibited, icmp-host-prohibited, or icmp-admin-prohibited (*), which return  the  appropriate ICMP  error  message (icmp-port-unreachable is the default).     LOG:          Turn  on  kernel  logging of matching packets.         --log-level        --log-prefix        默認日志保存于/var/log/messages     RETURN:          返回調用者;一般在自定義上使用           自定義鏈做為target:-j 調用

推薦站點

  • 騰訊騰訊

    騰訊網(www.QQ.com)是中國瀏覽量最大的中文門戶網站,是騰訊公司推出的集新聞信息、互動社區、娛樂產品和基礎服務為一體的大型綜合門戶網站。騰訊網服務于全球華人用戶,致力成為最具傳播力和互動性,權威、主流、時尚的互聯網媒體平臺。通過強大的實時新聞和全面深入的信息資訊服務,為中國數以億計的互聯網用戶提供富有創意的網上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐網是全球最大的中文門戶網站,為用戶提供24小時不間斷的最新資訊,及搜索、郵件等網絡服務。內容包括全球熱點事件、突發新聞、時事評論、熱播影視劇、體育賽事、行業動態、生活服務信息,以及論壇、博客、微博、我的搜狐等互動空間。

    www.sohu.com
  • 網易網易

    網易是中國領先的互聯網技術公司,為用戶提供免費郵箱、游戲、搜索引擎服務,開設新聞、娛樂、體育等30多個內容頻道,及博客、視頻、論壇等互動交流,網聚人的力量。

    www.163.com
  • 新浪新浪

    新浪網為全球用戶24小時提供全面及時的中文資訊,內容覆蓋國內外突發新聞事件、體壇賽事、娛樂時尚、產業資訊、實用信息等,設有新聞、體育、娛樂、財經、科技、房產、汽車等30多個內容頻道,同時開設博客、視頻、論壇等自由互動交流空間。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com
?
最牛一尾中特规律