1. 程式人生 > >通過iptables為Linux伺服器配置動態防火牆

通過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 按序號刪除規則