iptables使用詳解( 三 )

拒絕掉對某個ip的回應iptables -A OUTPUT -d 31.13.78.35 -j DROP-d 表示destination , 即所有返回給ip 31.13.78.35的數據包都直接丟掉,不回應 。
清空某個鏈中的所有規則iptables -t filter -F INPUT所有TCP協議的數據包 , 都丟棄iptables -A INPUT -p tcp -j DROP-p表示protocol
丟棄掉某個ip對端口22的訪問iptables -A INPUT -p tcp -m tcp --dport 22 -s 59.45.175.0/24 -j DROP由于要對端口進行精準匹配 , 所以先-m tcp 進行tcp module加載 。
如何對多個端口進行匹配iptables -A INPUT -p tcp -m multiport --dports 22,5901 -s 59.45.175.0/24 -j DROP匹配指定鏈接狀態的數據包鏈接狀態有以下幾種:

  • NEW:新創建的連接
  • ESTABLISHED 已經建立的連接
  • RELATED:跟已經創建的連接相關的連接
  • INVALID:非正常狀態
  • DNAT:如果一個連接其目標地址被nat表PREROUTING鏈中的規則修改了 , 即是這個狀態
  • SNAT:如果一個連接其源地址被nat表中的規則修改了 , 即是這個狀態
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT即只對已經建立的連接和由此產生的相關連接進行放行
有些版本的linux,對應的module不是conntrack,而是state 。對應指定狀態的參數不是ctstate 而是--state 。所以,上述寫法在有些linux版本中需要替換成
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT一般來講,這些規則不可能單獨出現,如果都不允許任何NEW狀態連接建立,那哪來的已建立連接和相關連接?所以正確的做法一般是:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //這條規則允許已經建立的連接和相關連接iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT //新建鏈接如果是訪問22號端口,則允許訪問改變某個鏈的默認規則一般每個鏈都有默認規則,即該鏈沒有任何規則或者沒有任何一條規則被匹配的情況下 , 對數據的放行策略是怎么樣的 。
Chain INPUT (policy ACCEPT)...Chain FORWARD (policy ACCEPT)...Chain OUTPUT (policy ACCEPT)..以filter表的三個鏈為例 , 默認是ACCEPT 。但是我們可以改變這個模型規則,比如默認規則就是DROP
iptables -t filter -P INPUT DROP回環地址的訪問始終允許iptables -t filter -A INPUT -i lo -j ACCEPT //在本地網絡通信的所有包,都放行-i 表示input 輸入網口 。lo表示本地的網絡接口 。這里沒有指定-s-d地址 ,表示在回環網絡上通信的所有端口,都放行,這樣我們本機的web service,訪問本機的mysql數據庫才不會有問題 。當然一般INPUT的默認規則是ACCEPT,你不用配置上述的規則,只要沒有其它規則去限制,那么本機回環地址之間的端口通信也是放行的,除非你對INPUT鏈默認開啟了拒絕策略
在使用某個網絡時,不響應請求iptables -A OUTPUT -o wlan0 -d 121.18.238.0/29 -j DROP上述配置含義:所有發給目標網口是wlan0 且 目標ip是121.18.238.0/29 地址的包,都會被丟棄 。-o 表示 數據包的目標網口 。
在linux命令行中,使用ifconfig,就能看見當前已連接的所有網絡接口
iptables使用詳解

文章插圖
規則的取反配置上述規則配置 , 一般都是滿足某某條件 , 做什么動作 。除此之外,我們還可以配置,如果不滿足某某條件,則做某個動作 。
iptables -A INPUT -p tcp -m multiport ! --dports 22,80,443 -j DROP這個不滿足則的取動作,是通過感嘆號來實現的 。上述命令的含義是:非22,80,443的端口,我們直接丟棄 。
當然這條命令之前,應該要配置一條規則:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT因為通過22或80建立的連接,可能會衍生出一些RELATED的連接,他們的端口可能不是22或80,那樣也就被拒掉了 。會導致通信出問題 。
如何將規則持久化上述命令對iptable的操作,并不是永久生效的,機器重啟后,對應配置會丟失 。如果需要持久化,則需要以下命令進行保存
centos
  1. 第一步,在修改iptables配置后,將其導出到某個文件,比如:/etc/iptables.conf。命令為:

    推薦閱讀