兩個路徑下的iptables的區別
1.首先介紹一下指令和相關配置檔案
啟動指令:service iptables start
重啟指令:service iptables restart
關閉指令:service iptables stop
然後是相關配置:/etc/sysconfig/iptables
如何操作該配置呢?
vim /etc/sysconfig/iptables
然後進去修改即可,修改完了怎麼辦?這裡很多人會想到/etc/rc.d/init.d/iptables save指令,但是一旦你這麼幹了你剛才的修改內容就白做了。。。
具體方法是:
只修改/etc/sysconfig/iptables 使其生效的辦法是修改好後先service iptables restart,然後才呼叫/etc/rc.d/init.d/iptables save,
因為/etc/rc.d/init.d/iptables save會在iptables服務啟動時重新載入,要是在重啟之前直接先呼叫了/etc/rc.d/init.d/iptables save那麼你
-A:指定鏈名
-p:指定協議型別
-d:指定目標地址
--dport:指定目標埠(destination port 目的埠)
--sport:指定源埠(source port 源埠)
例如我給SSH加放行的語句:
新增input記錄: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
新增output記錄: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
注意要/etc/rc.d/init.d/iptables save,以下每一步都最好執行一遍此語句,以下不再累述。
2.vim /etc/sysconfig/iptables確定是否已經加入配置,可以的話執行service iptables restart重啟後生效
3.下面是很危險的操作,如果你第一步沒做就會直接可能導致你連不上SSH,此步驟前切記執行第一步!!!
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
這個步驟是把所有不符合自己配置的規則ACCEPT的連線全部DROP掉,執行完以後如果我們SSH還沒掉,那麼謝天謝地,安全了,重啟下iptables後繼續下面的配置!
4.下面我們就不細說了,具體就是看自己伺服器要開放哪些埠或者是要訪問哪些埠來做具體的配置,下面是我自己的機器的配置:
/etc/sysconfig/iptables檔案配置如下:
# Generated by iptables-save v1.4.7 on Fri Mar 2 19:59:43 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [8:496]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#ping使用的埠
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
#允許伺服器自己的SSH(對外部請求來說伺服器是目標所以使用--dport)
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#80埠不用說了吧,伺服器網站訪問埠
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#53埠是DNS相關,TCP和UDP都要配置
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
#ping使用的埠
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
#允許伺服器SSH到其他機器(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
#允許伺服器自己的SSH(自已為源輸出就使用--sport)
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
#訪問外部網站80埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
#如果伺服器需要訪問外部網站,那麼OUTPUT也需要配置53埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#如果有訪問外部郵箱,那麼開啟郵箱相關埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
#伺服器網站訪問埠(自已為源輸出就使用--sport)
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT
COMMIT
語法是: iptables -D chain rulenum [options]
其中: chain 是鏈的意思,就是INPUT FORWARD 之類的
rulenum 是規則的編號。從1 開始。可以使用 --line-numbers 列出規則的編號
所以,例如上面要刪除一個INPUT鏈的規則的話可以這樣:iptables -D INPUT 3
意思是刪除第3條規則。
還有第二種方法。第二種辦法是 -A 命令的對映,不過用-D替換-A。當你的鏈中規則很複雜,而你不想計算它們的編號的時候這就十分有用了。也就是說,你如何用iptables -A.... 語句定義了一個規則,則刪除此規則時就用 -D 來代替- A 其餘的都不變即可。
======================
說一下上面的 --line-numbers 選項,如下面的命令:
iptables -L INPUT --line-numbers 列出INPUT 鏈所有的規則
num target prot opt source destination
1 REJECT tcp -- anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2 REJECT tcp -- anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
3 REJECT tcp -- anywhere anywhere tcp dpt:netbios-ssn reject-with icmp-port-unreachable
...
...
刪除指定行規則:
如果我需要對內網某機器單獨開放mysql埠,應該如下配置:
iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT
#遮蔽單個IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整個段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即從123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
指令I是insert指令 但是該指令會insert在正確位置並不像A指令看你自己的排序位置,因此用遮蔽因為必須在一開始就要載入遮蔽IP,所以必須使用I命令載入,然後注意執行/etc/rc.d/init.d/iptables save進行儲存後重啟服務即可
啟動指令:service iptables start
重啟指令:service iptables restart
關閉指令:service iptables stop
然後是相關配置:/etc/sysconfig/iptables
如何操作該配置呢?
vim /etc/sysconfig/iptables
然後進去修改即可,修改完了怎麼辦?這裡很多人會想到/etc/rc.d/init.d/iptables save指令,但是一旦你這麼幹了你剛才的修改內容就白做了。。。
具體方法是:
只修改/etc/sysconfig/iptables 使其生效的辦法是修改好後先service iptables restart,然後才呼叫/etc/rc.d/init.d/iptables save,
因為/etc/rc.d/init.d/iptables save會在iptables服務啟動時重新載入,要是在重啟之前直接先呼叫了/etc/rc.d/init.d/iptables save那麼你
的/etc/sysconfig/iptables 配置就回滾到上次啟動服務的配置了,這點必須注意!!!
-A:指定鏈名
-p:指定協議型別
-d:指定目標地址
--dport:指定目標埠(destination port 目的埠)
--sport:指定源埠(source port 源埠)
-j:指定動作型別
例如我給SSH加放行的語句:
新增input記錄: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
新增output記錄: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
最後注意需要再執行一下 /etc/init.d/iptables save,這樣這兩條語句就儲存到剛才那個/etc/sysconfig/iptables 檔案中了。
首先要做的是給我們的SSH進行ACCEPT配置,以免直接無法連線的情況發生:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
注意要/etc/rc.d/init.d/iptables save,以下每一步都最好執行一遍此語句,以下不再累述。
2.vim /etc/sysconfig/iptables確定是否已經加入配置,可以的話執行service iptables restart重啟後生效
3.下面是很危險的操作,如果你第一步沒做就會直接可能導致你連不上SSH,此步驟前切記執行第一步!!!
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
這個步驟是把所有不符合自己配置的規則ACCEPT的連線全部DROP掉,執行完以後如果我們SSH還沒掉,那麼謝天謝地,安全了,重啟下iptables後繼續下面的配置!
4.下面我們就不細說了,具體就是看自己伺服器要開放哪些埠或者是要訪問哪些埠來做具體的配置,下面是我自己的機器的配置:
/etc/sysconfig/iptables檔案配置如下:
# Generated by iptables-save v1.4.7 on Fri Mar 2 19:59:43 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [8:496]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#ping使用的埠
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
#允許伺服器自己的SSH(對外部請求來說伺服器是目標所以使用--dport)
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#80埠不用說了吧,伺服器網站訪問埠
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#53埠是DNS相關,TCP和UDP都要配置
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
#ping使用的埠
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
#允許伺服器SSH到其他機器(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
#允許伺服器自己的SSH(自已為源輸出就使用--sport)
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
#訪問外部網站80埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
#如果伺服器需要訪問外部網站,那麼OUTPUT也需要配置53埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#如果有訪問外部郵箱,那麼開啟郵箱相關埠(使用外部埠就使用--dport)
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
#伺服器網站訪問埠(自已為源輸出就使用--sport)
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT
COMMIT
# Completed on Fri Mar 2 19:59:43 2012
5.可能有時候需要刪除規則,最簡單就是修改一下/etc/sysconfig/iptables然後service iptables restart,最後/etc/rc.d/init.d/iptables save即可。當然也可以使用指令完成:
在網上找了一下,刪除規則的方法:語法是: iptables -D chain rulenum [options]
其中: chain 是鏈的意思,就是INPUT FORWARD 之類的
rulenum 是規則的編號。從1 開始。可以使用 --line-numbers 列出規則的編號
所以,例如上面要刪除一個INPUT鏈的規則的話可以這樣:iptables -D INPUT 3
意思是刪除第3條規則。
還有第二種方法。第二種辦法是 -A 命令的對映,不過用-D替換-A。當你的鏈中規則很複雜,而你不想計算它們的編號的時候這就十分有用了。也就是說,你如何用iptables -A.... 語句定義了一個規則,則刪除此規則時就用 -D 來代替- A 其餘的都不變即可。
======================
說一下上面的 --line-numbers 選項,如下面的命令:
iptables -L INPUT --line-numbers 列出INPUT 鏈所有的規則
num target prot opt source destination
1 REJECT tcp -- anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2 REJECT tcp -- anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
3 REJECT tcp -- anywhere anywhere tcp dpt:netbios-ssn reject-with icmp-port-unreachable
...
...
刪除指定行規則:
[root@localhost rc.d]# iptables -D INPUT 4
如果我需要對內網某機器單獨開放mysql埠,應該如下配置:
iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT
#遮蔽單個IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整個段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即從123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
指令I是insert指令 但是該指令會insert在正確位置並不像A指令看你自己的排序位置,因此用遮蔽因為必須在一開始就要載入遮蔽IP,所以必須使用I命令載入,然後注意執行/etc/rc.d/init.d/iptables save進行儲存後重啟服務即可
相關文章
- 計算兩個路徑的父親路徑
- 容器網路中的 Iptables 包路徑
- 絕對路徑和相對路徑的區別,
- 絕對路徑和相對路徑的區別
- iptables在網路中的兩個經典應用(轉)
- linux中環境便令PATH+路徑 和 路徑 + PATH的區別Linux
- PHP 計算兩個檔案的相對路徑PHP
- [轉]IPTABLES中SNAT和MASQUERADE的區別
- php -- 取路徑:getcwd()、__DIR__、__FILE__ 的區別PHP
- oracle常規與直接路徑插入區別Oracle
- Linux中絕對路徑和相對路徑有什麼區別?Linux
- Vue與React兩個框架的粗略區別對比VueReact框架
- 尋找兩條最短路的公共路徑
- ubuntu下iptables的配置Ubuntu
- 使用者許可權的兩個檢視的區別
- C# 獲取程式路徑的幾種方法及其區別【WPF】C#
- vue-cli 自定義路徑別名 assets和static資料夾的區別 --save-dev和--save的區別Vuedev
- socket在windows下和linux下的區別的網路文摘WindowsLinux
- [轉載] 整理下java中stringBuilder和stringBuffer兩個類的區別JavaUI
- SHLVL 和 BASH_SUBSHELL 兩個變數的區別變數
- windows mobile下的檔案路徑Windows
- ORACLE中的兩個概念:user和schema的區別和聯絡Oracle
- 兩種增量備份的區別!
- 考ocm走原廠途徑和wdp途徑的區別
- vue-router的兩種模式的區別Vue模式
- BAT執行相對路徑下的exeBAT
- [iptables] 基於iptables實現的跨網路通訊
- 獲取沙盒檔案路徑的兩種方法
- JavaScript兩個等號和三個等號區別JavaScript
- hash和history兩種模式的區別模式
- OData API 和 Restful API 這兩個概念的區別和聯絡APIREST
- Abaqus與Ansys的區別和不同, 兩種軟體哪個更好?
- SAP ABAP OData 服務的 $count 和 $inlinecount 兩個操作的區別inline
- html中的路徑的介紹:絕對路徑和相對路徑HTML
- Linux中絕對路徑和相對路徑是什麼?二者有何區別?Linux
- Python 函式中引數前面一個和兩個星號(**)的區別Python函式
- mysql 兩個表結果合拼到一個表,用常量區別不同的表MySql
- Linux系統iptables與Firewalld防火牆區別?Linux防火牆