1. 程式人生 > >Linux系統使用iptables建立可訪問白名單

Linux系統使用iptables建立可訪問白名單

目前由於專案要求需要修復一些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