๐ก Linux ๅฏฆๆฐ้ฒ็ฆฆ:Firewalld、iptables ่ nftables ็ๆดๅ็ญ็ฅ่ๆไฝณๅฎๅ จๆถๆง
ๅจ็พไปฃ Linux ็ณป็ตฑไธญ,้ฒ็ซ็ๅทฅๅ ทๅ ๆฌ iptables、nftables ่ firewalld。 ๅพๅคไบบไธ็ฅ้ๆ่ฉฒไฝฟ็จๅชไธๅ、ไธ่ ๆฏๅฆๆ่ก็ช、ไปฅๅๅฆไฝๅจไผๆฅญ็ฐๅขๅปบ็ซไธๅ็ฉฉๅฎๅๅฎๅ จ็ Firewall ๆถๆง。
ๆฌๆๅฐ็จๆๅฎๆด็ๆนๅผๅธถไฝ ็่งฃไธ่ ็ๅทฎ็ฐ、็ธๅฎนๆง、ๆดๅๆนๅผ่ๅฏฆๆฐ็ญ็ฅ,ไธฆๆไพๅฏฆ้ๆถๆงๅ、่จญๅฎ็ฏไพ่ๆไฝณๅฏฆๅ。
๐ ไธ、Firewalld、iptables、nftables ็่ง่ฒ่ๅทฎ็ฐ
| ้ฒ็ซ็ๅทฅๅ ท | ๅฎไฝ | ็น่ฒ |
|---|---|---|
| iptables | ๅณ็ตฑ้ฒ็ซ็ๅพ็ซฏ | ๆ็็ฉฉๅฎ,ไฝ่ฆๅ้ฃ็ถญ่ญท、ๆ่ฝๆ้ |
| nftables | ๆฐไธไปฃ้ฒ็ซ็(iptables ็็นผๆฟ่ ) | ๆ่ฝๆด้ซ、่ชๆณ็ตฑไธ、ๅไปฃ iptables |
| firewalld | ๅ็ซฏ็ฎก็ๆกๆถ(API) | ้ฉๅไผๆฅญ、็ณป็ตฑ็ฎก็,่ชๅไฝฟ็จ nftables |
่ช RHEL / CentOS 8 ่ตท,firewalld ๅทฒๆญฃๅผๅๆๅฐ nftables backend,ๅ ๆญค firewalld ไธ nftables ไธๆ่ก็ช。
๐ ไบ、ไธ่ ็ๆดๅ้ไฟ(ASCII ๆถๆงๅ)
้ฒ็ซ็ๅฎๆดๆถๆง
---------------------------------
firewalld
(ๆงๅถ API ๅฑค)
|
v
nftables
(ๅพ็ซฏๆ ธๅฟ)
|
v
Netfilter / Kernel
้้ป:
- Firewalld ๆฏๅ็ซฏๅทฅๅ ท,่ฒ ่ฒฌ็ฎก็ zones、services、runtime/permanent ่จญๅฎ
- nftables ๆฏ็ๆญฃ็ๅพ็ซฏๅท่ก่
- iptables ๅจๆฐ็ณป็ตฑๆ่ฝ็บ nftables ็ธๅฎนๅฑค
ๅ ๆญคๅจ 2023~2025 ๅนด็ Linux ็ฐๅขไธญ,ๆๆจ่ฆ็็ตๅๆฏ: Firewalld(ๅ็ซฏ) + nftables(ๅพ็ซฏ)
๐ ไธ、ไฝ ็ Linux ็ณป็ตฑ็พๅจไฝฟ็จๅช็จฎ backend?(ๅฟซ้็ขบ่ช)
sudo firewall-cmd --state sudo firewall-cmd --info-zone=public # ๆฅ็ firewalld backend sudo firewall-cmd --system-info # ๆฅ็ nftables ๆฏๅฆ้ไฝไธญ sudo nft list ruleset # ๆฅ็ iptables ๆฏๅฆ่ฝ็บ nft backend sudo iptables -L -n --wait
่ฅไฝ ็ๅฐ nft ๅญๆจฃ,ไปฃ่กจ็ณป็ตฑๅทฒๅๆๅฐ nftables。
๐ ๅ、ๆไฝณๅฎๅ จ็ญ็ฅ:Firewalld + nftables(ไผๆฅญๆถๆง)
ๅจไผๆฅญ็ฐๅขไธญ,ๅปบ่ญฐไฝฟ็จ Firewalld ไพ็ฎก็้ฒ็ซ็,ไธฆ่ฎ nftables ไฝ็บๅพ็ซฏๅท่ก่ 。
✔ ็ฎก็ๅกๅชๆไฝ firewalld(็ฐกๅฎ)
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent sudo firewall-cmd --reload
✔ ็ณป็ตฑๅพ็ซฏ็ฑ nftables ่ชๅ็ๆ่ฆๅ(ๆ่ฝ้ซ)
sudo nft list ruleset
้ๆจฃๅฏไปฅ้ฟๅ ไบบๅทฅ็ฎก็ iptables ็่ค้ๅบฆ,ไน่ฝ้ฟๅ ่ฆๅไบ็ธ่ก็ช。
๐ ไบ、Firewalld ๅธธ็จ Zone ่จญ่จ(ๆไฝณๅฏฆๅ)
Zone ็จๆผ้ๅถไธๅ็ถฒๆฎต็ๆฌ้,ๅปบ่ญฐๅฆไธ:
- public:ๅฐ Internet ้ๆพ(ๆๅฎๅ จ、้ๅถๆๅค)
- internal:ๅ ง็ถฒ,ๅ ๅ ่จฑ็นๅฎๆๅ
- trusted:ๅฎๅ จไฟกไปป,ไพๅฆ็ฎก็ VLAN
- drop:ๅฎๅ จๅฐ้,ไธๅๆ
็ฏไพ:ๆ็ฎก็ VLAN ่จญๅฎ็บ trusted
sudo firewall-cmd --zone=trusted --add-source=10.10.0.0/24 --permanent sudo firewall-cmd --reload
๐ ๅ ญ、Firewalld ็พไปฃๅๆๅ็ฎก็(services)
ไธๅฟ ๅๆๅๅฏซๆฏๅ port,ๅฏไปฅ็ดๆฅไฝฟ็จ「ๆๅๆจกๆฟ」:
sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-service=https --permanent sudo firewall-cmd --reload
ไฝ ไนๅฏไปฅๆฐๅข่ช่จๆๅ:
sudo nano /etc/firewalld/services/myservice.xmlsudo firewall-cmd --reload MyService
๐ ไธ、iptables ่ nftables ๅ ฑๅญๆไธๆ่ก็ช?
็ญๆก:ๅจๆฐ็ณป็ตฑไธญไธๆ。
iptables ๆไปคๆ่ชๅ่ฝๆๆ nftables ่ฆๅ。 ๅฏไธไธๅปบ่ญฐ็ๆ ๆณ:
- ❌ ๅๆๅคง้ๅฏซ iptables ๆๅ่ฆๅ + ไฝฟ็จ firewalld
- ❌ ไบบๅทฅ็ทจ่ผฏ
/etc/sysconfig/iptables+ firewalld
่ฅไฝ ่ฆ็จ firewalld,ๅฐฑ ไธ่ฆๅฏซ iptables rules。 ่ฅไฝ ่ฆ็ด nftables,ๅฐฑ ไธ่ฆ็จ firewalld。
๐ ๅ ซ、ไผๆฅญๅฏฆๆฐๆถๆง:ไธๅฑค Firewall ่จญ่จ
Layer 1:ๅบ็ค้ฒ็ซ็(firewalld)
└── ports、services、zones
Layer 2:็ดฐ็ฒๅบฆ็ญ็ฅ(nftables ๅ็)
└── ้ๅถๆต้ๅคงๅฐ、port-range、็ๆ
ๆชขๆฅ
Layer 3:ๆ็จๅฑคไฟ่ญท
└── Fail2Ban、WAF、Rate Limit
้็จฎๆถๆงๅฏ็ขบไฟ:
- ๆ่ฝๆไฝณ
- ่ฆๅไนพๆทจ、ไธไบ็ธ่ก็ช
- ็ฌฆๅ็พไปฃ Linux(RHEL 8+ / Ubuntu 22.04+)ๆถๆง
๐ ไน、ๅฎๆด Firewalld + nftables ๅฎๅ จๅบ็ค้ ็ฝฎ(ๅปบ่ญฐ)
sudo systemctl enable firewalld --now sudo firewall-cmd --set-default-zone=public # SSH ้ๅถ sudo firewall-cmd --zone=public --add-port=22/tcp --permanent # ้ๅฎ็ฎก็ VLAN sudo firewall-cmd --zone=trusted --add-source=10.10.0.0/24 --permanent # ไฝฟ็จๆๅๆจกๆฟ sudo firewall-cmd --zone=public --add-service=https --permanent sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --reload
ๆๅพๆชขๆฅ nftables ่ฆๅ:
sudo nft list ruleset
๐ ๅ、็ต่ซ:ไฝ ๆ่ฉฒๆก็จไป้บผๆถๆง?
๐ฅ ๆๆจ่ฆ(ไผๆฅญ็ฐๅข):Firewalld + nftables
- ็ฎก็็ฐกๅฎ(Zone、ๆๅๆจกๆฟ)
- ่ฆๅๆธ ๆฅ、็ตๆงๅ
- ๆ่ฝ้ซ(nftables backend)
- ่ SELinux、Fail2Ban、Auditd ๅฎๅ จ็ธๅฎน
๐ฅ ่ฅไฝ ๆฏ้ฒ้ไฝฟ็จ่ :็ด nftables
❌ ไธๅปบ่ญฐๆฐ็ณป็ตฑไฝฟ็จๅคง้ iptables ่ฆๅ(ๆๆ ข、้ฃ็ถญ่ญท)
ไฝฟ็จ Firewalld ไฝ็บๅ็ซฏ、nftables ไฝ็บๅพ็ซฏ, ๅฐฑ่ฝ่ฎ Linux ็้ฒ็ซ็่จญ่จๆดๅฎๅ จ、ๅฏ็ถญ่ญท、ๆ่ฝๆด้ซ,ไธฆ้ฟๅ ไธ่ ่ก็ช。
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ