25個iptables常用示例

来源:http://www.cnblogs.com/bill1015/archive/2017/05/13/6847841.html
-Advertisement-
Play Games

本文將給出25個iptables常用規則示例,這些例子為您提供了些基本的模板,您可以根據特定需求對其進行修改調整以達到期望。 格式 iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型] 參數 示例 1. 刪除已有規則 在開始創建iptables規則之前,你也許需要刪除已有規 ...


本文將給出25個iptables常用規則示例,這些例子為您提供了些基本的模板,您可以根據特定需求對其進行修改調整以達到期望。  格式

iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型] 參數

 
  1. -P 設置預設策略:iptables -P INPUT (DROP|ACCEPT)
  2. -F 清空規則鏈
  3. -L 查看規則鏈
  4. -A 在規則鏈的末尾加入新規則
  5. -I num 在規則鏈的頭部加入新規則
  6. -D num 刪除某一條規則
  7. -s 匹配來源地址IP/MASK,加嘆號"!"表示除這個IP外。
  8. -d 匹配目標地址
  9. -i 網卡名稱 匹配從這塊網卡流入的數據
  10. -o 網卡名稱 匹配從這塊網卡流出的數據
  11. -p 匹配協議,如tcp,udp,icmp
  12. --dport num 匹配目標埠號
  13. --sport num 匹配來源埠號

示例

1. 刪除已有規則

在開始創建iptables規則之前,你也許需要刪除已有規則。

 
  1. 命令如下:
  2. iptables -F
  3. (or)
  4. iptables flush

2.設置鏈的預設策略

鏈的預設政策設置為”ACCEPT”(接受),若要將INPUT,FORWARD,OUTPUT鏈設置成”DROP”(拒絕),命令如下:

 
  1. iptables -P INPUT DROP
  2. iptables -P FORWARD DROP
  3. iptables -P OUTPUT DROP

當INPUT鏈和OUTPUT鏈都設置成DROP時,對於每一個防火牆規則,我們都應該定義兩個規則。例如:一個傳入另一個傳出。在下麵所有的例子中,由於我們已將DROP設置成INPUT鏈和OUTPUT鏈的預設策略,每種情況我們都將制定兩條規則。當然,如果你相信你的內部用戶,則可以省略上面的最後一行。例如:預設不丟棄所有出站的數據包。在這種情況下,對於每一個防火牆規則要求,你只需要制定一個規則——只對進站的數據包制定規則。

3. 阻止指定IP地址

例:丟棄來自IP地址x.x.x.x的包

 
  1. iptables -A INPUT -s x.x.x.x -j DROP
  2. 註:當你在log里發現來自某ip地址的異常記錄,可以通過此命令暫時阻止該地址的訪問以做更深入分析

例:阻止來自IP地址x.x.x.x eth0 tcp的包

 
  1. iptables -A INPUT -i eth0 -s x.x.x.x -j DROP
  2. iptables -A INPUT -i eth0 -p tcp -s x.x.x.x -j DROP

4. 允許所有SSH的連接請求

例:允許所有來自外部的SSH連接請求,即只允許進入eth0介面,並且目標埠為22的數據包

 
  1. iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

5. 僅允許來自指定網路的SSH連接請求

例:僅允許來自於192.168.100.0/24域的用戶的ssh連接請求

 
  1. iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.允許http和https的連接請求

例:允許所有來自web - http的連接請求

 
  1. iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

例:允許所有來自web - https的連接請求

 
  1. iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. 使用multiport 將多個規則結合在一起

允許多個埠從外界連入,除了為每個埠都寫一條獨立的規則外,我們可以用multiport將其組合成一條規則。如下所示:  例:允許所有ssh,http,https的流量訪問

 
  1. iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. 允許從本地發起的SSH

 
  1. iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

請註意,這與允許ssh連入的規則略有不同。本例在OUTPUT鏈上,我們允許NEW和ESTABLISHED狀態。在INPUT鏈上,我們只允許ESTABLISHED狀態。ssh連入的規則與之相反。

9. 僅允許從本地發起到一個指定的網路域的SSH請求

例:僅允許從內部連接到網域192.168.100.0/24

 
  1. iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. 允許從本地發起的HTTPS連接請求

下麵的規則允許輸出安全的網路流量。如果你想允許用戶訪問互聯網,這是非常有必要的。在伺服器上,這些規則能讓你使用wget從外部下載一些文件

 
  1. iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

註:對於HTTP web流量的外聯請求,只需要將上述命令中的埠從443改成80即可。

11. 負載平衡傳入的網路流量

使用iptables可以實現傳入web流量的負載均衡,我們可以傳入web流量負載平衡使用iptables防火牆規則。  例:使用iptables nth將HTTPS流量負載平衡至三個不同的ip地址。

 
  1. 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
  2. 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
  3. 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內部主機

 
  1. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  2. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. 允許內部主機ping外部主機

 
  1. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
  2. iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. 允許迴環訪問

例:在伺服器上允許127.0.0.1迴環訪問。

 
  1. iptables -A INPUT -i lo -j ACCEPT
  2. iptables -A OUTPUT -o lo -j ACCEPT

15. 允許內部網路域外部網路的通信

防火牆伺服器上的其中一個網卡連接到外部,另一個網卡連接到內部伺服器,使用以下規則允許內部網路與外部網路的通信。此例中,eth1連接到外部網路(互聯網),eth0連接到內部網路(例如:192.168.1.x)。

 
  1. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. 允許出站的DNS連接

 
  1. iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
  2. iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. 允許NIS連接

如果你使用NIS管理用戶帳戶,你需要允許NIS連接。如果你不允許NIS相關的ypbind連接請求,即使SSH連接請求已被允許,用戶仍然無法登錄。NIS的埠是動態的,先使用命令rpcinfo –p來知道埠號,此例中為853和850埠。  rpcinfo -p | grep ypbind  例:允許來自111埠以及ypbind使用埠的連接請求

 
  1. iptables -A INPUT -p tcp --dport 111 -j ACCEPT
  2. iptables -A INPUT -p udp --dport 111
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這隻是一個簡單的排名例子,但可以從簡單的例子發現一些事物的某種共性,由此可以明白它可以應用於相識而不同的各種應用案例中。 ...
  • Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDA ...
  • 概述:UNION、SELECT INTO、INSERT INTO SELECT、SQL 約束。 UNION操作符 UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。 請註意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SEL ...
  • http://blog.csdn.net/lzq123_1/article/details/51354179 註意:要將/usr/bin/mysql_install_db替換成 /usr/bin/mysql_install_db --datadir=usr/local/mysql/data/var ...
  • 一、概念: 分片(sharding)是指將資料庫拆分,將其分散在不同的機器上的過程。將數據分散到不同的機器上,不需要功能強大的伺服器就可以存儲更多的數據和處理更大的負載。基本思想就是將集合切成小塊,這些塊分散到若幹片里,每個片只負責總數據的一部分,最後通過一個均衡器來對各個分片進行均衡(數據遷移)。 ...
  • 一、 G:\MySQL\MySQL Server 5.7\bin>mysqld --initialize G:\MySQL\MySQL Server 5.7\bin>mysqld -installService successfully installed. G:\MySQL\MySQL Serve ...
  • 直接-1 ...
  • 回到目錄 Twenproxy除了可以作為redis的代理,它同樣支持memerycached。我這裡主要瞭解Twemproxy在redis集群上的解決方案。Twemproxy除了完美的解決了分片,路由等功能(同樣採用了一致性hash演算法) Twenproxy實現redis集群高可用 它支持node ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...