Linux系統使用iptables建立可訪問白名單
阿新 • • 發佈:2019-01-05
目前由於專案要求需要修復一些linux系統的漏洞,部分使用了iptables的功能,因此研究了一下iptables的原理,並講述建立系統訪問白名單的過程。
1.iptables的工作機制
首先列出iptables在linux核心中涉及的五個位置: 1.核心空間中:從一個網路介面進來,到另一個網路介面去的 2.資料包從核心流入使用者空間的 3.資料包從使用者空間流出的 4.進入/離開本機的外網介面 5.進入/離開本機的內網介面 這五個位置也被稱為五個鉤子函式(hook functions),也叫五個規則鏈。 1.PREROUTING (路由前) 2.INPUT (資料包流入口) 3.FORWARD (轉發管卡) 4.OUTPUT(資料包出口) 5.POSTROUTING(路由後) 這是NetFilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。
2.iptables規則寫法
iptables定義規則的方式比較複雜:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3個filter nat mangle
COMMAND:定義如何對規則進行管理
chain:指定你接下來的規則到底是在哪個鏈上操作的,當定義策略的時候,是可以省略的
CRETIRIA:指定匹配標準
-j ACTION :指定如何進行處理
比如:不允許202.110.0.0/24的進行訪問。 iptables -t filter -A INPUT -s 202.110.0.0/16 -p udp --dport 53 -j DROP 當然你如果想拒絕的更徹底: iptables -t filter -R INPUT 1 -s 202.110.0.0/16 -p udp --dport 53 -j REJECT iptables -L -n -v #檢視定義規則的詳細資訊
3.iptables配置檔案
iptables配置檔案在系統的/etc/sysconfig/目錄下,主要記錄系統中iptables的規則,下面是定義某些ip為系統可訪問白名單的配置,主要是在INPUT (資料包流入口)這個規則下攔截白名單以外的ip進行具體埠的訪問:
# Generated by iptables-save v1.4.7 on Sun Sep 18 11:49:08 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [382404:29851692]
#定義白名單變數名
-N whitelist
#設定白名單ip段
-A whitelist -s 120.25.122.0 -j ACCEPT
-A whitelist -s 120.25.122.1 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j whitelist
-A INPUT -i lo -j ACCEPT
#開放http/https埠外界訪問
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
#系統遠端連線及資料庫埠規定白名單ip才可訪問
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j whitelist
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
修改完iptables配置檔案還需要通過命令:
service iptables save 進行儲存
service iptables save && service iptables restart 重啟iptables