## 🔥 راهنمای مقدماتی فایروال لینوکس با `iptables` – دستورات و نکات مهم
`iptables` یکی از اصلیترین ابزارهای مدیریت فایروال در لینوکس است که امکان **فیلتر کردن ترافیک شبکه، جلوگیری از حملات، محدودسازی دسترسی به پورتها و مدیریت دقیق بستههای ورودی/خروجی** را فراهم میکند.
---
## 🧠 مقدمات اولیه
در iptables، قوانین به صورت زنجیرهای (chains) و جدول (tables) دستهبندی میشوند.
### 📋 جدولهای مهم:
* `filter`: جدول پیشفرض برای فیلتر کردن بستهها.
* `nat`: برای Network Address Translation، مثل port forwarding.
* `mangle`: تغییر در header بستهها.
* `raw`: برای پردازش اولیه پیش از اعمال connection tracking.
### 🔗 زنجیرههای اصلی:
* `INPUT`: ترافیکی که وارد سیستم میشود.
* `OUTPUT`: ترافیکی که از سیستم خارج میشود.
* `FORWARD`: ترافیکی که از سیستم عبور میکند (روتر/گیتوی).
---
## 🛠️ بررسی وضعیت فعلی iptables
```bash
sudo iptables -L -n -v
```
توضیحات:
* `-L`: لیست قوانین
* `-n`: نمایش IP بهجای نام دامنه
* `-v`: حالت verbose
---
## ✅ دستورات پایه و پرکاربرد
### 1. اجازهدادن به SSH (پورت ۲۲)
```bash
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
```
### 2. اجازه به HTTP و HTTPS
```bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
```
### 3. مسدودسازی یک IP خاص
```bash
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
```
### 4. اجازهدادن به ترافیک لوکال
```bash
sudo iptables -A INPUT -i lo -j ACCEPT
```
---
## 🚫 سیاست پیشفرض (Default Policy)
برای تنظیم پیشفرض رد کردن تمام بستهها:
```bash
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
```
---
## 🔄 حذف یا ویرایش قوانین
### مشاهده شماره قوانین:
```bash
sudo iptables -L --line-numbers
```
### حذف قانون خاص:
```bash
sudo iptables -D INPUT 2
```
---
## 💾 ذخیرهسازی و اعمال دائمی قوانین
در برخی توزیعها برای ذخیره iptables:
### Debian/Ubuntu:
```bash
sudo apt install iptables-persistent
sudo netfilter-persistent save
```
### RHEL/CentOS:
```bash
sudo service iptables save
```
یا:
```bash
sudo iptables-save > /etc/iptables/rules.v4
```
---
## 📦 ابزارهای مکمل
| ابزار | توضیح |
| ------------- | ---------------------------------------- |
| **ufw** | رابط ساده برای iptables (در اوبونتو) |
| **firewalld** | سیستم جدید مدیریت فایروال مبتنی بر zones |
| **nftables** | جایگزین آیندهنگر برای iptables |
---
## 🧪 نمونه: فقط اجازه به پورت خاص و بلاک سایر ترافیکها
```bash
sudo iptables -F # پاککردن تمام قوانین
sudo iptables -P INPUT DROP # رد کردن پیشفرض
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
sudo iptables -A INPUT -i lo -j ACCEPT # Localhost
```
---
## ✅ نتیجهگیری
`iptables` یکی از مهمترین ابزارهای امنیت شبکه در لینوکس است. با یادگیری نحوه نوشتن قوانین مناسب و ذخیرهسازی آنها، میتوانید کنترل کامل و دقیق روی ترافیک شبکهتان داشته باشید.