# 🛡️ آموزش Shorewall – فایروال سطح بالا برای پیکربندی سرورهای لینوکس
**Shorewall – A High-Level Firewall for Configuring Linux Servers**
---
## 🔰 Shorewall چیست؟
**Shorewall** یا **Shoreline Firewall** یک فایروال سطح بالا (High-Level Firewall) برای لینوکس است که بر پایهی **iptables** ساخته شده. این ابزار به مدیران سیستم اجازه میدهد تا بدون نیاز به نوشتن قوانین پیچیده iptables، فایروال بسیار قدرتمند و منعطفی را پیکربندی کنند.
---
## ✅ ویژگیهای کلیدی Shorewall
* پشتیبانی از **Zones** (مناطق شبکهای مانند LAN، WAN، DMZ)
* رابط متنی ساده و قابلفهم
* پشتیبانی از **NAT, Port Forwarding, Traffic Shaping**
* قابل استفاده در **سرورهای چندگانه با چندین کارت شبکه**
* مناسب برای **Firewall Gatewayها**
---
## 🛠️ مراحل نصب Shorewall
### روی Debian/Ubuntu:
```bash
sudo apt update
sudo apt install shorewall
```
### روی RHEL/CentOS:
```bash
sudo yum install shorewall
```
---
## 🗂️ ساختار فایلهای پیکربندی Shorewall
فایلهای اصلی در مسیر `/etc/shorewall/` قرار دارند و شامل:
| فایل | توضیح |
| ---------------- | -------------------------------------------- |
| `interfaces` | تعیین کارتهای شبکه متصل به سیستم |
| `zones` | تعریف مناطق شبکهای (trusted, net, fw و...) |
| `policy` | قوانین کلی برای ارتباط بین مناطق |
| `rules` | قوانین خاص مانند اجازه یا مسدود کردن پورتها |
| `masq` | برای NAT و اشتراکگذاری اینترنت |
| `shorewall.conf` | فایل اصلی پیکربندی سراسری |
---
## 🧱 پیکربندی اولیه Shorewall (مثال ساده)
### 1. تعریف Zoneها:
`/etc/shorewall/zones`
```
fw firewall
net ipv4
```
### 2. تعریف اینترفیسها:
`/etc/shorewall/interfaces`
```
eth0 net detect
```
### 3. سیاست کلی ارتباطات:
`/etc/shorewall/policy`
```
net all DROP info
fw all ACCEPT
all all REJECT info
```
### 4. اجازه اتصال SSH:
`/etc/shorewall/rules`
```
ACCEPT net fw tcp 22
```
---
## 📦 فعالسازی NAT (اختیاری)
`/etc/shorewall/masq`
```
eth0 192.168.1.0/24
```
---
## 🚦 فعالسازی Shorewall
1. در فایل `/etc/default/shorewall` مقدار `startup=0` را به `startup=1` تغییر دهید.
2. سپس اجرا کنید:
```bash
sudo systemctl restart shorewall
sudo systemctl enable shorewall
```
---
## 🔍 بررسی وضعیت Shorewall
```bash
sudo shorewall status
```
---
## 💡 نکات امنیتی
* همیشه ابتدا با دسترسی محلی تست کنید تا اتصال SSH قطع نشود.
* تنظیمات را مرحلهبهمرحله انجام دهید و با دستور `shorewall check` از صحت آن مطمئن شوید.
* از لاگها در `/var/log/messages` یا `journalctl` برای اشکالزدایی استفاده کنید.
---
## 🎯 جمعبندی
اگر به دنبال **پیکربندی فایروال پیشرفته اما با مدیریت سادهتر از iptables** هستید، Shorewall انتخاب بسیار مناسبی است. این ابزار با استفاده از فایلهای متنی و مفاهیم Zone-Based یک لایه انتزاعی سادهتر برای مدیران سرور فراهم میکند.