通過iptables為Linux伺服器配置動態防火牆
Linux iptalbes 初級用法
作業系統Centos6.10
為方便操作,請切換root使用者
警告:以下命令請勿直接在生產環境操作,僅供技術參考!!!
- 背景知識
- 防火牆開啟、關閉、檢視、重啟、儲存當前狀態
- 命令引數釋義
- 例項
背景知識
Iptables 是用來設定、維護和檢查Linux核心的IP包過濾規則的。可以定義不同的表(通常只用到預設表filter),每個表都包含幾個內部的鏈,也能包含使用者定義的鏈。每個鏈都是一個規則列表,對對應的包進行匹配:每條規則指定應當如何處理與之相匹配的包。--來自《百度百科》 1.如果資料包的目的地址是本機,則系統將資料包送往Input鏈。如果通過規則檢查,則該包被髮給相應的本地程序處理;如果沒有通過規則檢查,系統就會將這個包丟掉。 2.如果資料包的目的地址不是本機,也就是說,這個包將被轉發,則系統將資料包送往forward鏈。如果通過規則檢查,則該包被髮給相應的本地程序處理;如果沒有通過規則檢查,系統就會將這個包丟掉。 3.如果資料包是由本地系統程序產生的,則系統將其送往output鏈。如果通過規則檢查,則該包被髮給相應的本地程序處理;如果沒有通過規則檢查,系統就會將這個包丟掉。 制定規則的時候有個原則就是 放行的要先放在前面, 禁止的要放在最後.
防火牆服務開啟、關閉、檢視、重啟、儲存當前狀態
- service iptables start —開啟
- service iptables stop —關閉
- service iptables status —檢視當前狀態
- service iptables restart —重啟
- service iptables save —儲存
命令引數釋義
-t table 指定處理的表名 -P policy 設定鏈拉目標規則 -A append 在所選擇的鏈末新增一條或更多規則 -D delete 從所選鏈中刪除一條或更多規則。 -L list 顯示所選鏈的所有規則。如果沒有選擇鏈,所有鏈將被顯示。 -F flush 清空所選鏈。這等於把所有規則一個個的刪除。 -p -protocal [!]protocol 指定規則對應的協議, 選項可以是tcp、udp、icmp或者0,0代表這三個全部。 -s --source [!] address[/mask] 指定源地址,可以是主機名、網路名和清楚的IP地址。 -d --destination [!] address[/mask] 指定目標地址 -j jump 目標跳轉
例項
說明:以下規則預設使用iptables的預設表filter
step 0:檢視所有表規則
iptables -L -n
step 1:清空表規則
iptables -F 所有鏈的規則
step 2: 設定鏈的目標(預設情況下,此步驟可直接跳過)
iptables -P INPUT DROP
釋義:在iptables的filter表的INPUT鏈上設定DROP目標
功能:所有經過INPUT入站的資料將全部被丟棄
iptables -P OUTPUT ACCEPT
釋義:在iptables的filter表的OUTPUT鏈上設定ACCEPT目標
功能:所有經過INPUT入站的資料將全部被接受
iptables -P FORWARD DROP
釋義:在iptables的filter表的FORWARD鏈上設定DROP目標
功能:所有經過FORWARD入站的資料將全部被丟棄
step 3: 新增入站規則(對應的,可新增DROP目標)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
釋義:在iptables的filter表的INPUT鏈上設定針對tcp協議的22埠的ACCEPT目標
功能:允許任意外部主機的tcp型別資料包經由22埠入站
iptables -A INPUT -p tcp --dport 6379:6388 -j ACCEPT
釋義:在iptables的filter表的INPUT鏈上設定針對tcp協議的從6379到6388範圍內埠的ACCEPT目標
功能:允許任意外部主機的tcp型別資料包經由從6379到6388範圍內的埠入站
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
釋義:在iptables的filter表的INPUT鏈上設定針對tcp協議的22埠的ACCEPT目標
功能:允許ip為192.168.0.3的tcp型別資料包經由22埠入站
step 4: 允許icmp包入站(ping)
iptables -A INPUT -p icmp -j ACCEPT
step 5: 允許loopback(本地環回)
iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
功能: 使得127.0.0.1網絡卡可收發資料
step 6:如果需要,可以將現有的規則列表中的某一條刪除
1. service iptables status 檢視所有表的規則,每條規則都有一個序號
2. iptables -D INPUT 1 按序號刪除規則