<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * # 25 個最常用的 Linux IPTables 規則示例 乍一看,IPTables 規則可能看起來很神秘。 在本文中,我給出了 25 條實用的 IPTables 規則,您可以復制/粘貼這些規則并根據需要使用它們。 這些示例將作為您調整這些規則以滿足您的特定要求的基本模板。 為便于參考,所有這 25 條 iptables 規則均采用 shell 腳本格式:[iptables-rules](https://bbs.huaweicloud.com/blogs/300486) ### 1\. 刪除現有規則 在開始構建新規則集之前,您可能需要清除所有默認規則和現有規則。使用如下所示的iptables flush 命令來執行此操作。 ~~~javascript iptables -F (或者) iptables --flush ~~~ ### 2\. 設置默認鏈策略 默認的鏈策略是 ACCEPT。對于所有 INPUT、FORWARD 和 OUTPUT 鏈,將其更改為 DROP,如下所示。 ~~~javascript iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP ~~~ 當您將 INPUT 和 OUTPUT 鏈的默認策略設置為 DROP 時,對于您擁有的每個防火墻規則要求,您應該定義兩個規則。即一種用于傳入,一種用于傳出。 在下面的所有示例中,每個場景都有兩個規則,因為我們已將 DROP 設置為 INPUT 和 OUTPUT 鏈的默認策略。 如果您信任內部用戶,則可以省略上面的最后一行。即默認情況下不要丟棄所有傳出數據包。在這種情況下,對于您擁有的每個防火墻規則要求,您只需定義一個規則。即只為傳入定義規則,因為所有數據包都接受傳出。 ### 3\. 阻止特定的 ip 地址 在我們繼續進行其他示例之前,如果您想阻止特定的 ip 地址,您應該首先執行如下所示的操作。將下面示例中的“xxxx”更改為您要阻止的特定IP地址。 ~~~javascript BLOCK_THIS_IP="xxxx" iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP ~~~ 當您從日志文件中的特定 ip 地址中發現一些奇怪的活動時,這很有用,并且您希望在進一步研究時暫時阻止該 ip 地址。 您還可以使用以下變體之一,該變體僅阻止此 IP 地址的 eth0 連接上的 TCP 流量。 ~~~javascript iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP ~~~ ### 4\. 允許所有傳入的 SSH 以下規則允許 eth0 接口上的所有傳入 ssh 連接。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 5\. 僅允許來自特定網絡的傳入 SSH 以下規則僅允許來自 192.168.100.X 網絡的傳入 ssh 連接。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT ~~~ 在上面的示例中,您還可以使用完整的子網掩碼來代替 /24。即“192.168.100.0/255.255.255.0”。 ### 6\. 允許傳入的 HTTP 和 HTTPS 以下規則允許所有傳入的 Web 流量。即到端口 80 的 HTTP 流量。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT ~~~ 以下規則允許所有傳入的安全 Web 流量。即到端口 443 的 HTTPS 流量。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A 輸出 -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 7\. 使用 MultiPorts 將多個規則組合在一起 當您允許來自外部世界的傳入連接到多個端口時,您可以使用多端口擴展將它們組合在一起,而不是為每個端口編寫單獨的規則,如下所示。 以下示例允許所有傳入的 SSH、HTTP 和 HTTPS 流量。 ~~~javascript iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 8\. 允許傳出 SSH 以下規則允許傳出 ssh 連接。即當您從內部 ssh 到外部服務器時。 ~~~javascript iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT ~~~ 請注意,這與傳入規則略有不同。即我們在 OUTPUT 鏈上允許 NEW 和 ESTABLISHED 狀態,而在 INPUT 鏈上只允許 ESTABLISHED 狀態。對于傳入規則,反之亦然。 ### 9\. 只允許傳出 SSH 到特定網絡 以下規則僅允許傳出 ssh 連接到特定網絡。即你的 ssh 只能從內部連接到 192.168.100.0/24 網絡。 ~~~javascript iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 10\. 允許傳出 HTTPS 以下規則允許傳出安全 Web 流量。當您希望允許用戶訪問 Internet 流量時,這很有用。在服務器上,當您想使用 wget 從外部下載某些文件時,這些規則也很有用。 ~~~javascript iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT ~~~ 注意:對于傳出的 HTTP 網絡流量,添加兩個類似上面的額外規則,并將 443 更改為 80。 ### 11\. 負載平衡傳入的 Web 流量 您還可以使用 iptables 防火墻規則對傳入的 Web 流量進行負載平衡。 這使用 iptables 第 n 個擴展。以下示例將 HTTPS 流量負載平衡到三個不同的 ip 地址。對于每 3 個數據包,它將負載平衡到適當的服務器(使用計數器 0)。 ~~~javascript iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443 iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443 iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443 ~~~ ### 12\. 允許從外到內 Ping 以下規則允許外部用戶能夠 ping 您的服務器。 ~~~javascript iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT ~~~ ### 13.允許從內到外ping 以下規則允許您從內部 ping 到任何外部服務器。 ~~~javascript iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT ~~~ ### 14\. 允許環回訪問 您應該允許在您的服務器上進行完全環回訪問。即使用 127.0.0.1 訪問 ~~~javascript iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ~~~ ### 15\. 允許內部網絡到外部網絡。 在一個以太網卡連接到外部,另一個以太網卡連接到內部服務器的防火墻服務器上,使用以下規則允許內部網絡與外部網絡通信。 本例中eth1連接外網(internet),eth0連接內網(例如:192.168.1.x)。 ~~~javascript iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ~~~ ### 16\. 允許出站 DNS 以下規則允許傳出 DNS 連接。 ~~~javascript iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT ~~~ ### 17\. 允許 NIS 連接 如果您正在運行 NIS 來管理您的用戶帳戶,您應該允許 NIS 連接。即使允許 SSH 連接,如果不允許 NIS 相關的 ypbind 連接,用戶將無法登錄。 NIS 端口是動態的。即當 ypbind 啟動時,它會分配端口。 首先執行如下所示的 rpcinfo -p 并獲取端口號。在此示例中,它使用端口 853 和 850。 ~~~javascript rpcinfo -p | grep ypbind ~~~ 現在允許傳入連接到端口 111,以及 ypbind 使用的端口。 ~~~javascript iptables -A INPUT -p tcp --dport 111 -j ACCEPT iptables -A INPUT -p udp --dport 111 -j ACCEPT iptables -A INPUT -p tcp --dport 853 -j ACCEPT iptables -A INPUT -p udp --dport 853 -j ACCEPT iptables -A INPUT -p tcp --dport 850 -j ACCEPT iptables -A INPUT -p udp --dport 850 -j ACCEPT ~~~ 當您重新啟動 ypbind 時,上述內容將不起作用,因為那時它將具有不同的端口號。 有兩種解決方案:1) 為您的 NIS 使用靜態 ip-address,或 2) 使用一些巧妙的 shell 腳本技術從“rpcinfo -p”命令輸出中自動獲取動態端口號,并使用上面的那些iptables 規則。 ### 18\. 允許來自特定網絡的 Rsync 以下規則僅允許來自特定網絡的 rsync。 ~~~javascript iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 19\. 只允許來自特定網絡的 MySQL 連接 如果您正在運行 MySQL,通常您不希望允許來自外部的直接連接。在大多數情況下,您可能在運行 MySQL 數據庫的同一臺服務器上運行 Web 服務器。 然而,DBA 和開發人員可能需要使用 MySQL 客戶端從他們的筆記本電腦和臺式機直接登錄到 MySQL。在這種情況下,您可能希望允許您的內部網絡直接與 MySQL 對話,如下所示。 ~~~javascript iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 20\. 允許 Sendmail 或 Postfix 流量 以下規則允許郵件通信。它可能是sendmail 或postfix。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 21\. 允許 IMAP 和 IMAPS 以下規則允許 IMAP/IMAP2 流量。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT ~~~ 以下規則允許 IMAPS 流量。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 22\. 允許 POP3 和 POP3S 以下規則允許 POP3 訪問。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT ~~~ 以下規則允許 POP3S 訪問。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 23\. 防止 DoS 攻擊 以下 iptables 規則將幫助您防止對您的網絡服務器的拒絕服務 (DoS) 攻擊。 ~~~javascript iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT ~~~ 在上面的例子中: * \-m 限制:這使用限制 iptables 擴展 * –limit 25/minute:這限制每分鐘最多 25 個連接。根據您的特定要求更改此值 * –limit-burst 100:此值表示僅在連接總數達到限制突發級別后才會強制執行限制/分鐘。 ### 24\. 端口轉發 以下示例將所有到達端口 442 的流量路由到 22。這意味著傳入的 ssh 連接可以來自端口 22 和 422。 ~~~javascript iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22 ~~~ 如果您執行上述操作,您還需要明確允許端口 422 上的傳入連接。 ~~~javascript iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT ~~~ ### 25\. 記錄丟棄的數據包 您可能還想記錄所有丟棄的數據包。這些規則應該在底部。 首先,創建一個名為 LOGGING 的新鏈。 ~~~javascript iptables -N LOGGING ~~~ 接下來,確保所有剩余的傳入連接都跳轉到 LOGGING 鏈,如下所示。 ~~~javascript iptables -A INPUT -j LOGGING ~~~ 接下來,通過指定自定義“日志前綴”來記錄這些數據包。 ~~~javascript iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped:" --log-level 7 ~~~ 最后,丟棄這些數據包。 ~~~javascript iptables -A LOGGING -j DROP ~~~ 以上25條iptables規則都是shell腳本格式:[iptables-rules](https://bbs.huaweicloud.com/blogs/300486)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看