سرویس پروکسی لایه ۴ آروان‌کلاد راهکاری کارآمد برای توزیع بار و افزایش امنیت سرویس‌هایی است که بر پایه‌ی پروتکل‌هایی به‌جز HTTP/HTTPS فعالیت می‌کنند و امکان بهره‌مندی از خدمات CDN را به‌شکل مستقیم ندارند. هم‌چنین در مواردی که به‌دلیل حساسیت داده‌ها، TLS Termination مجاز نیست، این سرویس نقشی کلیدی ایفا می‌کند.

یکی از کاربردهای مهم این سرویس، ایجاد یک درگاه ورودی امن برای دسترسی به SSH است. با توجه به این‌که دسترسی SSH امکان اجرای دستورهای حساس و کدهای مخرب را در زیرساخت مقصد فراهم می‌کند، محدود کردن دسترسی به آن اهمیت بالایی دارد. به‌طور کلی راهکارهای افزایش امنیت دسترسی به سرویس SSH در دو لایه‌ی اصلی تعریف می‌شوند:

  • محدودسازی در لایه‌ شبکه (Firewall): در این روش با تعریف قوانین در دیواره‌ی آتش، دسترسی به سرور تنها برای IPهای شناسایی‌شده و مجاز (Whitelist) ممکن می‌شود. این کار از ایجاد اتصال توسط آدرس‌های ناشناس یا مشکوک جلوگیری می‌کند.

  • تنظیمات داخلی سرویس SSH و ابزارهای جانبی: در این لایه، با اصلاح پیکربندی‌های SSH، دسترسی کاربر ریشه (root) غیرفعال شده و احراز هویت تنها از طریق کلیدهای رمزنگاری‌شده (Public Key) انجام می‌شود. به این ترتیب، امکان ورود با استفاده از گذرواژه (Password) به‌کلی مسدود می‌شود.

در این راهنما، با ترکیب تنظیمات سیستم‌عامل و پروکسی لایه ۴، می‌توان یک لایه‌ی حفاظتی محکم برای سرور ایجاد کرد.

پیش‌نیازها

  • یک سرور با سیستم‌عامل لینوکس (مانند Ubuntu یا Debian)

  • دسترسی به پنل کاربری آروان‌کلاد و فعال‌سازی سرویس پروکسی لایه ۴

مرحله ۱: نصب و پیکربندی امن سرور OpenSSH

به‌طور معمول روی سرورهای ابری، سرویس OpenSSH به‌شکل پیش‌فرض نصب است. با این حال، اگر روی سرور شما OpenSSH نصب نبود، با دستور زیر آن را نصب و یک نام کاربری جدید ایجاد کنید:

$ sudo apt-get update && sudo apt-get install openssh-server
$ sudo useradd -M ssh-user

برای افزایش امنیت، فایل تنظیمات را در مسیر etc/ssh/sshd_config/ به‌شکل زیر اصلاح کنید. این تنظیمات شامل تغییر پورت پیش‌فرض، غیرفعال کردن ورود با یوزر root و اجباری کردن استفاده از کلید رمزنگاری (Public Key)

است:


# تغییر پورت پیش‌فرض به ۴۵۳۲۲
$ sudo sed -i 's/#\?\(Port\s*\).*$/\1 45322/' /etc/ssh/sshd_config
# غیرفعال کردن لاگین با روت
$ sudo sed -i 's/#\?\(PermitRootLogin\s*\).*$/\1 no/' /etc/ssh/sshd_config
# فعال‌سازی احراز هویت با کلید عمومی
$ sudo sed -i 's/#\?\(PubkeyAuthentication\s*\).*$/\1 yes/' /etc/ssh/sshd_config
# غیرفعال کردن پسورد (فقط کلید عمومی)
$ sudo sed -i 's/#\?\(PasswordAuthentication\s*\).*$/\1 no/' /etc/ssh/sshd_config
# تنظیمات کلید عمومی برای کاربر جدید
$ mkdir -p /home/ssh-user/.ssh
$ echo "<your_public_key>" > /home/ssh-user/.ssh/authorized_keys
$ sudo chown -R ssh-user:ssh-user /home/ssh-user/.ssh
$ sudo chmod 0600 /home/ssh-user/.ssh/authorized_keys
$ sudo systemctl restart sshd

نکته: حتمن پیش از بستن Session فعلی، اتصال با پورت جدید و کلید خود را بررسی کنید تا دسترسی شما به ابرک قطع نشود.

مرحله ۲: امن‌سازی لایه سیستم‌عامل با UFW و Fail2Ban

یکی از ابزارهای ساده برای مدیریت فایروال در Ubuntu، نرم‌افزار UFW است که رابطی ساده‌تر برای iptables به‌شمار می‌رود. در کنار مدیریت فایروال، جلوگیری از درخواست‌های مکرر ماشین‌های اسپم یا مخرب روی پورت SSH نیز ضروری است. Fail2Ban ابزاری کاربردی برای این هدف است؛ این سرویس با تحلیل لاگ‌های SSH، آدرس‌هایی را که تلاش‌های ناموفق مکرر داشته‌اند، برای مدتی محدود مسدود (Jail) می‌کند تا نفوذپذیری سامانه در برابر حملات اینترنتی کاهش یابد.

برای شروع، ابتدا از نصب بودن این دو ابزار مطمین شوید:

$ sudo apt-get update && sudo apt-get install ufw fail2ban -y

سپس برای امن‌سازی ماشین، دسترسی به پورت‌های آن را محدود کنید:

$ sudo ufw reset
$ SSH_PORT="45322"
$ sudo ufw allow proto tcp to any port $SSH_PORT
$ sudo ufw enable

پس از این گام، تنها پورت اختصاصی SSH یعنی ۴۵۳۲۲ در دسترس خواهد بود و سایر پورت‌ها مسدود می‌شوند.

در مرحله‌ی بعد، برای جلوگیری از حملات Brute-force، سرویس Fail2Ban را تنظیم کنید. برای این کار ابتدا لیست آی‌پی‌های سرورهای لبه‌ی آروان را دریافت کرده و در فایلی قرار دهید، سپس تنظیمات را با دستور زیر اعمال کنید:

$ ARVAN_CLOUD_IPS_FILE="/tmp/ips.txt"
$ SSH_PORT="45322"
$ sudo cat > /etc/fail2ban/jail.local << EOT
[sshd]
enabled = true
port = $SSH_PORT
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
ignoreip = 127.0.0.1 ::1 $(cat $ARVAN_CLOUD_IPS_FILE | xargs)
EOT
$ sudo systemctl restart fail2ban

با این پیکربندی، سرویس SSH شما بر بستر اینترنت دردسترس است و در برابر حملات Brute-force محافظت می‌شود. در این تنظیمات، آی‌پی‌های لبه‌ی آروان در Whitelist قرار گرفته‌اند تا دسترسی آن‌ها مسدود نشود. این روش برای سرورهای شخصی با کاربران محدود مناسب است؛ اما برای اعمال قوانین پیچیده‌تر دیواره‌ی آتش یا محافظت در برابر حملات لایه ۴ پیشرفته، استفاده از پروکسی لایه ۴ آروان گزینه‌ی بهتری خواهد بود.

مرحله ۳: راه‌اندازی پروکسی لایه ۴ در پنل آروان‌کلاد

حالا برای ایجاد یک لایه محافظتی اضافه (مانند محدودسازی دسترسی فقط به کاربران داخل ایران)، تنظیمات زیر را در پنل آروان انجام دهید:

۱- ساخت اپلیکیشن: در بخش پروکسی لایه ۴، یک اپلیکیشن جدید با نامی دل‌خواه (مانند SSH) ساخته و زیردامنه‌ی مورد نظر را وارد کنید. سپس با انتخاب یک IP اختصاصی (مثلن 172.20.100.100) و پورت ۳۴۴۴۳، پروتکل را روی TCP تنظیم کنید.

راهنمای پروکسی لایه ۴ به شما در این مسیر کمک می‌کند.

تنظیمات توزیع بار: آدرس IP ابرک و پورت ۴۵۳۲۲ را در بخش «سرورها» وارد کنید و روش توزیع بار را روی Source قرار دهید تا پایداری Session حفظ شود.

در این راهنما، برای سادگی، بخش مانیتورینگ را فعال و تنظیم نمی‌کنیم. با این حال راهنمای تنظیمات مانیتورینگ به شما برای پیکربندی این قسمت کمک می‌کند.

فایروال: در بخش فایروال اپلیکیشن، یک قانون جدید تعریف کنید. برای مثال، دسترسی را برای تمامی کشورها مسدود و فقط برای کشور ایران مجاز کنید.

مرحله ۴: تست و تایید نهایی

برای سادگی در اتصال، فایل کانفیگ SSH لوکال خود را (ssh/config./~) به‌شکل زیر تنظیم کنید:

Host direct-server
HostName <Server_IP>
Port 45322
User ssh-user
Host proxied-server
HostName <Arvan_Proxy_IP_or_Subdomain>
Port 34443
User ssh-user

بررسی عملکرد

  • با آی‌پی ایران: اتصال به هر دو Host باید با موفقیت برقرار شود.

# Test via Iran IP
$ ssh ssh-test-server echo hello
hello
$ ssh proxied-ssh-test-server echo hello
hello

  • با آی‌پی خارج از کشور: اتصال به ssh-test-server برقرار می‌شود (مگر آن‌که در UFW محدود شده باشد)، اما اتصال به proxied-ssh-test-server قطع (Drop) خواهد شد.

# Test via International IP
$ ssh ssh-test-server echo hello
hello
$ ssh proxied-ssh-test-server echo hello
Connection closed by <ip_address> port <port>

با این ساختار، شما یک درگاه ورود امن دارید که نه‌تنها در برابر حملات Brute-force مقاوم است، بلکه از قابلیت‌های پیشرفته زیرساخت ابری آروان‌کلاد نیز بهره می‌برد.