linux:iptables

IP tables

一、常用命令:

-A 追加規則–>iptables -A INPUT
-D 刪除規則–>iptables -D INPUT 1(編號)
-R 修改規則–>iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代現行規則,順序不變(1是位置)
-I 插入規則–>iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一條規則,原本位置上的規則將會往後移動一個順位
-L 查看規則–>iptables -L INPUT 列出規則鏈中的所有規則
-N 新的規則–>iptables -N allowed 定義新的規則
-P 設置默認策略
-F 清空規律鏈
通用參數:

-p 協議  例:iptables 		-A INPUT -p tcp
-s源地址 例:iptables 		-A INPUT -s 192.168.1.1
-d目的地址 例:iptables 		-A INPUT -d 192.168.12.1
-sport源端口 例:iptables		-A INPUT -p tcp --sport 22
-dport目的端口 例:iptables 	-A INPUT -p tcp --dport 22
-i指定入口網卡 例:iptables 	-A INPUT -i eth0
-o指定出口網卡 例:iptables	-A FORWARD -o eth0
-j 指定要進行的處理動作

常用的ACTION:
DROP:丟棄
REJECT:明示拒絕
ACCEPT:接受
SNAT基於原地址的轉換
source–指定原地址
比如我們現在要將所有192.168.10.0網段的IP在經過的時候全都轉換成172.16.100.1這個假設出來的外網地址:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外網有效ip)
這樣,只要是來自本地網絡的試圖通過網卡訪問網絡的,都會被統統轉換成172.16.100.1這個IP.
MASQUERADE(動態僞裝)–家用帶寬獲取的外網ip,就是用到了動態僞裝
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
DNAT目標地址轉換
destination-指定目標地址
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2
10.18訪問80端口轉換到100.2上
MASQUERADE:源地址僞裝
REDIRECT:重定向:主要用於實現端口重定向
MARK:打防火牆標記的
RETURN:返回 在自定義鏈執行完畢後使用返回,來返回原規則鏈。
添加允許INPUT訪問規則,以下時常見服務的端口設置,如果需要拒絕訪問,則將ACCEPT改爲DROP即可

#SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#POP3
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
#SMTP
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#DNS
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#設置默認策略
Iptables -P input accept (drop)

使用iptables配置防火牆策略規則默認會在下次重啓後失效,如果想永久生效請執行永久生效命令,因個版本不同,就不一一列舉,詳情,查詢百度
Firewalld
區域名稱:
drop – 丟棄所有傳入的網絡數據包並且無迴應,只有傳出網絡連接可用。
block — 拒絕所有傳入網絡數據包並回應一條主機禁止的 ICMP 消息,只有傳出網絡連接可用。
public — 只接受被選擇的傳入網絡連接,用於公共區域。
external — 用於啓用了地址僞裝的外部網絡,只接受選定的傳入網絡連接。
dmz — DMZ 隔離區,外部受限地訪問內部網絡,只接受選定的傳入網絡連接。
work — 對於處在你工作區域內的計算機,只接受被選擇的傳入網絡連接。
home — 對於處在你家庭區域內的計算機,只接受被選擇的傳入網絡連接。
internal — 對於處在你內部網絡的計算機,只接受被選擇的傳入網絡連接。
trusted — 所有網絡連接都接受。

二、firewalld的基本使用

啓動: systemctl start firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
查看狀態: systemctl status firewalld 

實例:
1>查看服務當前所使用區域:

Firewall-cmd --get-default-zone

2>修改服務當前所使用區域:

Firewall-cmd --get-default-zone=public

3>查詢網卡所在區域

Firewall-cmd --get-zone-of-interface=eth0

4>把網卡默認區域修改爲exterface,在不重啓情況下,查看生效情況

修改:Firewall-cmd -permanent --zone=external --change-interface=eth0
查看運行情況:Firewall-cmd --get-zone-of-interface=eth0
查看永久情況:Firewall-cmd -permanent --get-zone-of-interface=eth0

補充:
–change-interface=eth0 將某個網卡與區域進行關聯
使用firewalld配置的防火牆策略默認爲運行模式,隨着系統的重啓而失效。所以想配置永久生效時需添加永久生效參數-permanent,以達到永久生效,但永久生效後當前模式卻未生效,所有還需執行firewall-cmd --reload
5>啓動應急模式

Firewall-cmd --panic-on
Firewall-cmd --panic-off

6>查詢public區域是否允許請求ssh和https協議的流量

Firewall-cmd --zone=public --query-service=ssh
Firewall-cmd --zone=public --query-service=https

補充:query-service用來查詢正在運行的所有服務的狀態
7>把firewalld服務中請求https協議的流量設置爲永久允許,並立即生效

Firewall-cmd --zone=public -add-service=https
Firewall-cmd -permanent --zone=public -add-service=https
firewall-cmd --reload

8>把firewalld服務中請求http協議的流量設置爲永久拒絕,並立即生效

Firewall-cmd -permanent --zone=public -remove-service=http
firewall-cmd --reload

補:remove-service=http 設置默認區域不再允許使用該端口流量
9>對端口流量策略設置爲允許,當前生效

Firewall-cmd --zone=public -add-port=端口號/協議名稱

補:校驗端口生效:Firewall-cmd --zone=public --list-ports
10>把原本訪問本機6000的端口流量轉發到22端口,並長期,當前都要有效

Firewall-cmd --permanent --zone=public --add-forward-port=port=6000:proto=tcp:toport=22:toaddr=192.168.10.10

註釋:
add-forward-port 源端口號
Proto 協議
Toport 目標端口
Toaddr 目標ip地址
11>拒絕(允許)其192.168.10.0/24網段訪問ssh服務

Firewall-cmd -permanent --zone=public --add-rich-rule=”rule family=”ipv4” source address=”192.168.10.0/24” service name=”ssh” reject(accept)

12>查看富規則

firewall-cmd --list-rich-rules

13>啓用區域中的 IP 僞裝功能
說明:此操作啓用區域的僞裝功能。私有網絡的地址將被隱藏並映射到一個公有IP。這是地址轉換的一種形式,常用於路由。由於內核的限制,僞裝功能僅可用於IPv4。
(外網卡的網卡接口在哪個區域,就在哪個區域啓用IP地址僞裝)
注意:啓用僞裝功能的主機同時也需要開啓轉發服務:
要將文件/proc/sys/net/ipv4/ip_forward內的值改爲1,(默認是0)。

方法1:Echo “net.ipv4 ip_forward=1”>>/etc/sysctl.conf
方法2:echo "1">/proc/sys/net/ipv4/ip_forward

保存退出並執行#sysctl -p使修改生效
14>禁用區域中的 IP 僞裝

Firewall-cmd --zone=external --remove-masquerade

15>查詢區域的僞裝狀態

Firewall-cmd --zone=external --query-masquerade

16>啓用區域的 ICMP 阻塞功能

Firewall-cmd --zone=external --add-icmp-block=echo-request

說明:此操作將啓用選中的 Internet 控制報文協議(ICMP)報文進行阻塞。 ICMP 報文可以是請求信息或者創建的應答報文,以及錯誤應答。
17>禁止區域的 ICMP 阻塞功能

Firewall-cmd --zone=external --remove-icmp-block=echo-request

18>查詢區域的 ICMP 阻塞功能

Firewall-cmd --zone=external --query-icmp-block=echo-request

19>在區域中啓用端口轉發或映射
例:凡是來從external進來的22端口的數據包全部轉發到另一臺主機211.106.65.50

Firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=211.106.65.50

20>禁止區域的端口轉發或者端口映射

Firewall-cmd --zone=external --romove-forward-port=port=22:proto=tcp:toaddr=211.106.65.50

21>查詢區域的端口轉發或者端口映射

Firewall-cmd --zone=external --query-forward-port=port=22:proto=tcp:toaddr=211.106.65.50
發佈了22 篇原創文章 · 獲贊 391 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章