iptables防火牆規則
什麼是防火牆
- 一道保護性的安全屏障
- 保護、隔離
Linux包過濾防火牆
RHEL7預設使用firewalld做為防火牆
但firewalld底層還是呼叫包過濾防火牆iptables
一、iptables 規則瞭解
iptables的表、鏈結構
1)iptables的4個表(區分大小寫):
iptables預設有4個表,nat表(地址轉換表)、filter表(資料過濾表)、raw表(狀態跟蹤表)、mangle表(包標記表)。
2)iptables的5個鏈(區分大小寫): //資料包傳輸的方向
INPUT鏈(入站規則)
OUTPUT鏈(出站規則)
FORWARD鏈(轉發規則)
PREROUTING鏈(路由前規則)
POSTROUTING鏈(路由後規則)
包過濾匹配流程
規則鏈內的匹配順序
順序對比,匹配即停止(LOG除外)
若無任何匹配,則按該鏈的預設策略處理
iptables用法解析
iptables基本用法
管理程式位置
/sbin/iptables
指令組成
iptables [-t表名] 選項 [鏈名] [條件] [-j目標操作]
注意事項/整體規律
可以不指定表,預設為filter表
可以不指定鏈,預設為對應表的所有鏈
如果沒有匹配的規則,則使用防火牆預設的規則
選項/鏈名/目標操作用大寫字母,其餘都小寫字母
基本的目標操作
ACCEPT:允許通過/放行
DROP:直接丟棄,不給出任何回應
REJECT:拒絕通過,必要時會給出提示
LOG:記錄日誌,然後傳給下一條規則
(1)往該主機的filter(資料包過濾表)表中插入INPUT(入站)鏈,寫入規則是拒絕(REJECT)所有從本機進入的icmp包(ping)
[root@ip51 ~]# iptables -t filter -I INPUT -p icmp -j REJECT
(2)測試
[root@ip52 ~]# ping 192.168.4.51
PING 192.168.4.51 (192.168.4.51) 56(84) bytes of data.
From 192.168.4.51 icmp_seq=1 Destination Port Unreachable
(3)往本機filter表中的第一個序號處插入一條規則,允許22埠進
[root@ip51 ~]# iptables -t filter -I INPUT 1 -p 22 -j ACCEPT
(4)檢視filter表中所有的規則
[root@ip51 ~]# iptables -t filter -nL --line-numbers
(5)清除filter表中編號為1的規則
[root@ip51 ~]# iptables -t filter -D INPUT 1
(6)清除filter表的所有規則
[root@ip51 ~]# iptables -t filter -F
[root@ip51 ~]# iptables -F //預設清空filter表
(7)清空四個表的規則
[root@ip51 ~]# iptables -t filter -F
[root@ip51 ~]# iptables -t nat -F
[root@ip51 ~]# iptables -t mangle -F
[root@ip51 ~]# iptables -t raw -F
設定預設規則
所有鏈的初始預設規則均為ACCEPT
通過-P選項可重置預設規則
ACCEPT或者DROP
防護型別及條件
根據防火牆保護的物件不同,防火牆可以分為主機型防火牆與網路型防火牆,如圖所示。
主機型防火牆,主要保護的是伺服器本機(過濾威脅本機的資料包)。
網路防火牆,主要保護的是防火牆後面的其他伺服器,如web伺服器、FTP伺服器等。
開啟核心的IP轉發
做為閘道器、路由的必要條件
[root@ip51 ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
或者
[root@ip51 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
基本的匹配條件
通用匹配
可直接使用,不依賴於其他條件或擴充套件
包括網路協議、IP地址、網路介面等條件
隱含匹配
要求以特定的協議匹配作為前提
包括埠、TCP標記、ICMP型別等條件
注:需要條件取反時,用前面加!,如 !-p tcp,就是除tcp之外的協議
(1)配置51主機往filter表中的INPUT鏈中新增策略,允許tcp協議的22埠的資料包通過
[root@ip51 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
(2)將本機的預設策略修改為DROP
[root@ip51 ~]# iptables -t filter -P INPUT DROP
(3)檢視策略
[root@ip51 ~]# iptables -t filter -nL --line-numbers
(4)使用50主機ssh 51主機
[root@ip50 ~]# ssh 192.168.4.51
(5)禁止50主機ssh 51
[root@ip51 ~]# iptables -t filter -I INPUT -s 192.168.4.50 -p tcp --dport 22 -j DROP
(6)允許外網訪問本機的80埠
[root@ip51 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
(7)將防火牆配置規則永久儲存
[root@ip51 ~]# iptables-save > /etc/sysconfig/iptables
(8)由於OUTPUT預設的規則是ACCEPT,所以新增如下規則,允許本機的ping包進來,就會達到本機能ping外主機,外主機不能ping本機的效果
[root@ip51 ~]# iptables -t filter -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
(9)永久儲存配置
[root@ip51 ~]# iptables-save > /etc/sysconfig/iptables
擴充套件匹配
擴充套件條件的方法
前提條件
有對應的防火牆模組支援
基本用法
-m 擴充套件模組 --擴充套件條件 條件值
示例: -m mac --mac-source 00:0C:29:74:BE:21
常見的擴充套件條件型別
選項 | 用法 |
---|---|
MAC地址匹配 | -m mac --mac-source MAC地址 |
多埠匹配 | -m multiport --sports 源埠列表 |
-m multiport --dports 目標埠列表 | |
IP範圍匹配 | -m iprange --src-range IP1-IP2 |
-m iprange --dst-range IP1-IP2 |
(1)新增多埠的過濾規則
[root@ip51 ~]# iptables -t filter -I INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
(2)刪除單條的22跟80的tcp的過濾規則,使用上一條規則代替
[root@ip51 ~]# iptables -t filter -D INPUT 3
(3)新增允許250~254主機的ping包進來
[root@ip51 ~]# iptables -t filter -I INPUT -p icmp --icmp-type echo-request -m iprange --src-range 192.168.4.250-192.168.4.254 -j ACCEPT
(4)根據MAC地址封鎖主機
[root@ip51 ~]# arp -n //獲取ping過本主機的其他主機對應的mac地址
[root@ip51 ~]# iptables -t filter -I INPUT 4 -p icmp --icmp-type echo-request -m mac --mac-source 52:54:00:37:78:11 -j DROP //新增到上一條配置ip範圍的過濾規則之前
NAT轉換原理
私有地址的侷限性
從區域網訪問網際網路的時候
比如看網頁、收郵件、。。。。。
源地址為私有地址,伺服器如何正確的給出回應?
SNAT源地址轉換
Source Network Address Translation
修改資料包的源地址
僅用於nat表的POSTROUTING鏈
一,修改2-54主機閘道器(eth0:192.168.4.54,eth1:192.168.2.54)
[root@ip2-54 ~]# systemctl stop NetworkManager
//設定閘道器
[root@ip2-54 ~]# route add default gw 192.168.2.52
//刪除閘道器
[root@ip2-54 ~]# route add default gw 192.168.2.52
//檢視閘道器
[root@ip2-54 ~]# route -n
二,修改閘道器裝置的防火牆規則(eth0:192.168.4.52,eth1:192.168.2.52)
(1)開啟路由轉發功能
[root@ip52 ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
(2)配置防火牆的nat規則
[root@ip52 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.4.52
[root@ip52 ~]# iptables-save > /etc/sysconfig/iptables
[root@ip52 ~]# iptables -t nat -nL
(3)客戶端測試
[root@ip2-54 ~]# curl 192.168.4.51
地址偽裝策略
共享動態公網IP地址實現上網
主要針對外網介面的IP地址不固定的情況
將SNAT改為MASQUERADE即可
對於ADSL寬頻撥號連線,網路介面可寫為ppp+
[root@ip52 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE //指定閘道器域名跟外網網路卡(eth0)
相關文章
- Linux IPTables:如何新增防火牆規則Linux防火牆
- 20條IPTables防火牆規則用法!防火牆
- iptables防火牆簡介,原理,規則編寫,常見案例防火牆
- iptables防火牆防火牆
- 防火牆iptables防火牆
- Kali && Debain 防火牆規則AI防火牆
- Linux——防火牆、SELinux規則Linux防火牆
- Iptables防火牆應用防火牆
- 基於iptables防火牆堵漏防火牆
- Linux設定防火牆iptablesLinux防火牆
- 配置ModSecurity防火牆與OWASP規則防火牆
- Linux基礎命令---iptables防火牆Linux防火牆
- Docker 埠對映防火牆規則配置Docker防火牆
- windows/Linux 防火牆安裝配置規則WindowsLinux防火牆
- linux iptables安全技術與防火牆Linux防火牆
- iptables防火牆如何記錄日誌防火牆
- 在Linux中,如何設定防火牆規則?Linux防火牆
- iptables配置-Linux系統安全防火牆Linux防火牆
- win10怎麼自定義防火牆入站規則_win10設定防火牆入站規則的方法Win10防火牆
- 在Linux中,如何配置防火牆和安全規則?Linux防火牆
- NSIS 指令碼,安裝時新增防火牆規則指令碼防火牆
- firewall-cmd - 防火牆規則管理工具防火牆
- Linux 防火牆配置(iptables和firewalld)詳細教程。Linux防火牆
- Linux系統iptables與Firewalld防火牆區別?Linux防火牆
- 超級實用的 iptables 防火牆指令碼防火牆指令碼
- docker上面部署nginx-waf 防火牆“modsecurity”,使用CRS規則,搭建WEB應用防火牆DockerNginx防火牆Web
- linux系統檢視防火牆是否開啟並清除防火牆規則的方法步驟Linux防火牆
- iptables詳解及docker的iptables規則Docker
- CentOS 中 iptables 和 firewall 防火牆的相關命令CentOS防火牆
- Linux 防火牆:關於 iptables 和 firewalld 的那些事Linux防火牆
- 體驗iptables 企業級的防火牆實戰防火牆
- Linux防火牆介紹和iptables常用命令Linux防火牆
- Debian使用iptables-persistent持久化iptables規則持久化
- 1、iptables-基礎-包過濾防火牆-四層防火牆(只支援4層協議)防火牆協議
- win10系統怎麼更改防火牆預設規則Win10防火牆
- iptables 常用規則使用例項
- 在 Rocky Linux 中,你可以使用 firewalld 來管理防火牆規則。Linux防火牆
- 25個常用的Linux iptables規則Linux