## 🔥 آموزش پیکربندی FirewallD در لینوکس – گام به گام
`FirewallD` ابزار مدیریت فایروال مبتنی بر **zones** و **services** است که بهصورت **داینامیک** عمل میکند و جایگزین مدرنتری برای `iptables` در بسیاری از توزیعهای لینوکس (مثل RHEL, CentOS, Fedora و Rocky) محسوب میشود.
---
## 🧠 تفاوت FirewallD با iptables چیست؟
* پشتیبانی از **zones** برای دستهبندی سطح امنیتی شبکهها
* قابلیت **تغییر قوانین بدون نیاز به ریستارت**
* رابط کاربری خط فرمان (`firewall-cmd`) و گرافیکی (`firewall-config`)
* پشتیبانی از **rich rules** برای قوانین پیچیدهتر
---
## ⚙️ نصب و فعالسازی FirewallD
### 📦 نصب (در صورت نیاز)
```bash
# برای RHEL/CentOS/Fedora
sudo yum install firewalld
# برای Ubuntu (در برخی نسخهها)
sudo apt install firewalld
```
### 🟢 فعالسازی و اجرا
```bash
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
```
---
## 🧱 مفاهیم کلیدی در FirewallD
* **Zone:** سطح امنیتی یا نقش اتصال شبکه (trusted, public, home, block...)
* **Service:** مجموعهای از قوانین پیشتعریفشده برای پورتها (مانند ssh، http، https)
* **Rich Rule:** قوانین سفارشی پیشرفته
---
## 📍 بررسی وضعیت فایروال و zone فعال
```bash
sudo firewall-cmd --state
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
```
---
## 🔧 تنظیم zone پیشفرض
```bash
sudo firewall-cmd --set-default-zone=public
```
---
## ✅ اضافهکردن و حذف سرویسها
### اضافهکردن SSH به zone فعلی (در لحظه)
```bash
sudo firewall-cmd --add-service=ssh
```
### اضافهکردن دائمی:
```bash
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
```
### حذف سرویس:
```bash
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
```
---
## 🔢 مدیریت پورتها
### اضافهکردن یک پورت:
```bash
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
```
### حذف پورت:
```bash
sudo firewall-cmd --permanent --remove-port=8080/tcp
```
---
## 🧪 افزودن قوانین پیشرفته (Rich Rules)
مثال: فقط اجازه به SSH از یک IP خاص:
```bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
sudo firewall-cmd --reload
```
---
## 📄 فهرست تمام zoneها و قوانین آنها
```bash
sudo firewall-cmd --list-all
sudo firewall-cmd --list-all-zones
```
---
## 🔒 بلاک کردن همه چیز بهجز یک پورت خاص
```bash
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --permanent --zone=public --add-port=2022/tcp
sudo firewall-cmd --reload
```
---
## 💾 بازنشانی به تنظیمات اولیه
```bash
sudo firewall-cmd --complete-reload
sudo firewall-cmd --permanent --reset-default-zone
```
---
## 🎯 نتیجهگیری
`FirewallD` مدیریت فایروال را ساده، ساختیافته و قابل تنظیم برای محیطهای حرفهایتر کرده است. استفاده از zones و rich rules امنیت سیستم شما را تا حد زیادی افزایش خواهد داد.