首先添加規則有兩個參數:-A和-I,其中-A是添加到規則的末尾;-I可以插入到指定位置,沒有指定位置的話默認插入到規則的首部,由於匹配規則是從上往下,依次查找的,可能出現配置的規則沖突導致后續的規則不起效
保存iptables規則
sudo iptables-save
保存ipv6 的iptables規則
sudo ip6tables-save
查看iptables規則
sudo iptables -L
查看iptables規則,以數字形式
sudo iptables -L -n
查看iptables規則的序號,用於刪除規則參考
sudo iptables -L -n --line-numbers
清除所有iptables預設表filter里的所有規則
sudo iptabels -F
清除預設表filter中使用者自定鏈中的規則
sudo iptables -X
清除單條iptables規則
sudo iptables -D INPUT(鏈) 3(規則對應的序號)
修改單條iptables規則,使用 -R,修改INPUT鏈序號為3的規則為允許,第4條規則為拒絕,丟棄
sudo iptables -R INPUT 3 -j ACCEPT
sudo iptables -R INPUT 4 -j DROP
允許已經建立的連接發送和接收數據,以免設置鏈為DROP時遠程ssh斷開
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
保證VPS可以運行的時候,可以為loopback網卡添加運行規則,插到第一行
sudo iptables -I INPUT 1 -i lo -j ACCEPT
允許某段IP訪問本機的所有類型的所有端口
sudo iptables -I INPUT -s 192.168.2.0/24 -p all -j ACCEPT
sudo iptables -I INPUT -s 192.168.0.0/16 -p all -j ACCEPT
允許本機127.0.0.1訪問自身所有端口
sudo iptables -I INPUT -s 127.0.0.1 -p all -j ACCEPT
允許某段IP訪問本機的TCP 3306端口
sudo iptables -I INPUT -s 192.168.2.0/24 -p tcp --dport 3306 -j ACCEPT
允許某段IP訪問本機的某段TCP端口
sudo iptables -I INPUT -s 192.168.2.0/24 -p tcp --dport 3306:65525 -j ACCEPT
向所有IP開放ssh的遠程連接,這里是已經更改了的19515端口,默認為22端口
sudo iptables -A INPUT -p tcp --dport 19515 -j ACCEPT
默認INPUT OUTPUT FORWORD 鏈都是全部接受,需要改為拒絕
確保ssh遠程連接端口已經添加進 IPUNT 允許規則中,否則執行以下命令將可能會斷開遠程
sudo iptables -A INPUT -p tcp --dport 19515 -j ACCEPT #這里ssh端口為19515
sudo iptables -P INPUT DROP
可選項,需保證SSH端口已經添加各鏈的允許規則,否則會斷開SSH連接並無法遠程連接
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWORD DROP
iptables規則配置后,無法訪問外網,無法接收返回的數據,進行以下配置,並保證OUTPUT狀態為ACCEPT,會使iptables允許由服務器本身請求的數據通過
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables 的持久化,由於重啟ubuntu會導致iptables規則消失,需要持久化
1.安裝iptables-persistent工具幫助我們持久化
sudo apt-get update
sudo apt-get install iptables-persistent -y
執行命令持久化
sudo netfilter-persistent save
sudo netfilter-persistent reload
2.將iptables規則存入文件,隨網卡狀態進行加載,保存
將iptables保存的規則保存入當前用戶的文件
sudo iptables-save > /home/user/iptables.rules
在/etc/network/interfaces 網卡配置文件里加入相應內容
vim /etc/network/interfaces
添加內容
pre-up iptables-restore < /home/user/iptables.rules
post-down iptables-save > /home/user/iptables.rules
用到的參數解釋:
pre-up: 網卡啟用前的動作
up: 啟用時候的動作
post-up: 啟用后的動作
pre-down: 關閉前的動作
down: 關閉時動作
post-down: 關閉后動作
iptables的關閉,使用清除規則來實現
sudo iptables-save > /home/user/iptables.rules
sudo iptables -X 清除默認filter表里的自定義規則
sudo iptables -t nat -F 清除nat表里的規則
sudo iptables -t nat -X
sudo iptables -t mangle -F 清除nat表里的規則
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT 將INPUT鏈默認更改為全部接受
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWORD ACCEPT
如果想了解深入一些,我個人覺得這個博主寫的挺不錯的朱雙印的個人博客-Iptables詳解