آنچه در این مقاله میخوانید
آموزش استفاده از psad برای شناسایی و جلوگیری از حملات سایبری در اوبونتو
۲۲ فروردین ۱۴۰۴
پیشگیری همیشه بهتر از درمان است. شناسایی فعالیتهای مشکوک قبل از وقوع حمله میتواند از آسیبهای جبرانناپذیر جلوگیری کند. برای حل این مشکل، ابزار psad (تشخیص حملات اسکن پورت) بهعنوان یک سپر امنیتی قدرتمند وارد عمل میشود. این ابزار بهطور مداوم لاگهای فایروال را بررسی کرده و هرگونه تلاش برای نفوذ را شناسایی میکند. psad نهتنها به شما هشدار میدهد، بلکه میتواند تهدیدات را بهطور فعال مسدود کرده و امنیت سرور شما را تضمین کند.
در این راهنما از لیارا، نحوه نصب و پیکربندی psad در سرور مجازی اوبونتو را بررسی خواهیم کرد. تا پایان همراه ما باشید:)
پیشنهاد مطالعه: نحوه راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu
در ادامه میخوانید:
- گام اول: نصب psad
- گام دوم: پیکربندی قوانین iptables
- گام سوم: پیکربندی psad برای شناسایی اسکنها
- گام چهارم: پیادهسازی سیستم تشخیص نفوذ psad
- گام پنجم: انجام اسکن پورت آزمایشی
- گام ششم: پیادهسازی سیستم پیشگیری از نفوذ
- جمعبندی

گام اول: نصب psad
ابزار psad در مخازن پیشفرض اوبونتو موجود است، بنابراین به راحتی میتوان آن را از طریق apt نصب کرد:
sudo apt update
sudo apt install psad
گام دوم: پیکربندی قوانین iptables
ابزار psad برای شناسایی فعالیتها روی پورتهای سرور شما، لاگهای تولید شده توسط برنامه فایروال را نظارت میکند. اوبونتو بهطور پیشفرض از فایروال iptables استفاده میکند، اما این فایروال به صورت پیشفرض هیچ پیکربندیای ندارد و هیچچیز را نظارت یا مسدود نمیکند.
اگرچه میتوانید با وارد کردن چند دستور ساده، فقط لاگگیری را فعال کنید، اما در این گام، یک پیکربندی کاملتر و مناسبتر انجام خواهیم داد:
sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG
اگر قوانین بالا را وارد کردهاید، قبل از پیکربندی، قوانین را با دستور زیر پاک کنید تا بتوانید از ابتدا شروع کنید.
sudo iptables -F
برای دیدن قوانین فعلی، میتوانید دستور زیر را وارد کنید:
sudo iptables -S
خروجی نمونه:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
حالا میتوانید شروع به اضافه کردن قوانین خود کنید. هدف ما این است که به iptables بگوییم اتصالاتی که به آنها نیاز نداریم یا نمیخواهیم، مسدود شوند. ابتدا باید قوانین را برای مجاز کردن اتصالات معتبر خود اضافه کنیم، سپس محدودیتها را اعمال کنیم.
اولین قانون، تمام ترافیک تولید شده را مجاز میکند. این نوع اتصال معمولاً برای ارتباط بین سرویسها و انتقال آسان اطلاعات استفاده میشود:
sudo iptables -A INPUT -i lo -j ACCEPT
سپس باید قانونی اضافه کنیم که تمام ترافیک مربوط به یک اتصال موجود را بهطور صریح مجاز کند. این کار به جلسات جاری ما اجازه میدهد که بدون وقفه ادامه داشته باشند:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
حالا، سرویسهایی را که میخواهیم برای عموم باز نگه داریم، اضافه میکنیم. برای مثال، برای SSH، این خط را اضافه میکنیم:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
اگر وبسرور روی پورت پیشفرض 80 در حال اجرا باشد، میتوانیم قانونی مشابه این را اضافه کنیم:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
اکنون، برای باز نگه داشتن پورتهای دیگر از همان دستور استفاده کنید:
sudo iptables -A INPUT -p protocol --dport port_num -j ACCEPT
پس از افزودن سرویسهای معتبر، تمام اتصالات باقیمانده را مسدود میکنیم. قبل از آن، باید قانونی اضافه کنیم که به iptables بگوید ترافیکی که هنوز مسدود نشده را ثبت کند.
با دستور زیر:
sudo iptables -A INPUT -j LOG
حالا، این قانون را باید به زنجیره forward هم اضافه کنیم، برای مواقعی میخواهید که ترافیک را به جای دیگری فوروارد کنید.
sudo iptables -A FORWARD -j LOG
در نهایت، تمام ترافیک اضافی را با دستور زیر مسدود میکنیم:
sudo iptables -A INPUT -j DROP
بهطور پیشفرض، iptables پس از راهاندازی مجدد سیستم، قوانین خود را حفظ نمیکند.
ابتدا پکیج iptables-persistent
را نصب کنید:
sudo apt update
sudo apt install iptables-persistent
حالا، برای اطمینان از راهاندازی خودکار iptables
بعد از بوت سیستم، از دستور زیر برای فعالسازی سرویس netfilter-persistent
استفاده کنید:
sudo systemctl enable netfilter-persistent
sudo systemctl start netfilter-persistent
در آخر، پس از راهاندازی مجدد سیستم، این قوانین اعمال میشوند.
شاید بهدنبال این مطلب باشید: فایروال Iptables چگونه کار میکند؟
گام سوم: پیکربندی psad برای شناسایی اسکنها
حالا که مجموعه قوانین iptables را با سیاست default drop پیکربندی کردهایم، میتوانیم پیکربندی psad را آغاز کرده و پردازش لاگها را فعال کنیم.
برای این کار، فایل پیکربندی اصلی psad را با دسترسی root با ویرایشگر nano باز کنید:
sudo nano /etc/psad/psad.conf
اولین مواردی که باید تغییر دهید در بالای فایل قرار دارند. پارامتر EMAIL_ADDRESSES
را به آدرسهای ایمیلی که میخواهید هنگام تولید گزارش هشدار دریافت کنید، تغییر دهید. همچنین باید HOSTNAME
را به دامنه خود تغییر دهید تا به ماشین صحیح اشاره کند.
به این صورت:
EMAIL_ADDRESSES address1@domain.com, address2@other.com;
HOSTNAME your_domain.com;
مطمئن شوید که هر خط را با نقطهویرگول (;) تمام کنید تا psad فایل را به درستی بخواند.
بخشی که احتمالاً میخواهید به آن نگاهی بیندازید، اعلانهای danger levels است. این سطوح راهی برای دستهبندی تهدیدها توسط psad هستند.
این سطوح بهطور خودکار بر اساس تعداد بستههای درگیر در یک رویداد تعیین میشوند، اما شما میتوانید انواع خاصی از ترافیک را به سطح خطر مشخصی اختصاص دهید. آستانههای پیشفرض برای رسیدن به هر سطح به شرح زیر هستند:
DANGER_LEVEL1 5;
DANGER_LEVEL2 15;
DANGER_LEVEL3 150;
DANGER_LEVEL4 1500;
DANGER_LEVEL5 10000;
در عبارت بالا، شما میتوانید این سطوح را بسته به سطح حساسیتی که میخواهید psad برای هشدارها استفاده کند، تغییر دهید.
همچنین میتوانید حساسیت psad را از طریق پارامتر PORT_RANGE_SCAN_THRESHOLD
تنظیم کنید. این پارامتر تعداد پورتها در یک بازه را که باید اسکن شوند تا هشدار صادر شود، تعیین میکند. پیشفرض این است که پس از اسکن دو پورت، هشدار صادر میشود.
PORT_RANGE_SCAN_THRESHOLD 1;
یکی از مهمترین مواردی که باید پیکربندی کنید، پارامتر IPT_SYSLOG_FILE
است، زیرا در حال حاضر به فایلی که بهطور پیشفرض توسط syslog
استفاده میشود، اشاره نمیکند.
برای امنیت بیشتر، این پارامتر را طوری تغییر دهید که به فایل syslog
اشاره کند، جایی که psad قادر خواهد بود لاگهای فعال را بررسی کند:
IPT_SYSLOG_FILE /var/log/syslog;
اگر از پورتهای خاص استفاده میکنید، با دستور زیر به psad بگویید که این پورتها را نادیده بگیرد تا هشدارهای غیرضروری ایجاد نشود:
IGNORE_PORTS ports_or_range_to_ignore;
اگر متوجه شدید که هشدارهای زیاد دریافت میکنید، میتوانید با تنظیم آستانه، مشخص کنید چه زمانی برایتان ایمیل ارسال شود:
MIN_DANGER_LEVEL 1; # Controls psad logging and email alerts
EMAIL_ALERT_DANGER_LEVEL 1; # Applies only for email alerts
همچنین میتوانید با تنظیم این پارامتر، تعداد ایمیلها را مستقیماً محدود کنید:
EMAIL_LIMIT 0;
صفر یعنی هیچ محدودیتی وجود ندارد. این محدودیت تعداد ایمیلهای مربوط به تهدیدات از یک آدرس IP است. حالا فایل را ذخیره کرده و ببندید.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی ابری
گام چهارم: پیادهسازی سیستم تشخیص نفوذ psad
حالا که تا این مرحله ،پیکربندی پایهای psad با قابلیتهای هشدار فعال شد، میتوانید سیاستها را اعمال کرده و سیستم را فعال کنید.
قبل از شروع، باید تعاریف امضای psad را بهروزرسانی کنید تا حملات را بهدرستی شناسایی کند. برای این کار دستور زیر را اجرا کنید:
sudo psad --sig-update
این کار فایلهای آخرین نسخه را دریافت کرده و پایگاه داده را بهروزرسانی میکند.
حالا باید سرویس را راهاندازی مجدد کنید تا از این بهروزرسانیها استفاده کرده و تغییرات پیکربندی را اعمال کنید. دستور زیر را وارد کنید:
sudo service psad restart
این کار، مانیتورینگ لاگهای شما را اجرا میکند. برای مشاهده وضعیت فعلی رویدادهای شناساییشده توسط psad، دستور زیر را وارد کنید:
sudo service psad status
[+] psad (pid: 3735) %CPU: 0.0 %MEM: 0.3
Running since: Fri Jan 10 15:36:04 2014
Command line arguments: [none specified]
Alert email address(es): example@domain.com
[+] Version: psad v2.1.7
[+] Top 50 signature matches:
[NONE]
[+] Top 25 attackers:
[NONE]
[+] Top 20 scanned ports:
[NONE]
[+] iptables log prefix counters:
[NONE]
Total packet counters: tcp: 0, udp: 0, icmp: 0
[+] IP Status Detail:
[NONE]
Total scan sources: 0
Total scan destinations: 0
[+] These results are available in: /var/log/psad/status.out
همانطور که میبینید، هنوز هیچ موردی پیدا نشده است. همچنین میتوانید ببینید که رویدادهای شناساییشده در فایلهای موجود در مسیر /var/log/psad/
ثبت میشوند.
پیشنهاد مطالعه: موارد امنیتی بسیار مهم برای حفاظت از سرور مجازی

گام پنجم: انجام اسکن پورت آزمایشی
در این گام، باید پورتهای سرور را اسکن کنید تا رویدادهایی در لاگهای فایروال ایجاد شود. با ابزار nmap
اینکار را انجام دهید:
sudo nmap -PN -sS server_domain_or_ip
Starting Nmap 5.51 ( http://nmap.org ) at 2014-01-10 15:54 EST
Nmap scan report for server_domain_or_ip
Host is up (0.013s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 6.84 seconds
همانطور که میبینید، این اسکن نشان میدهد که فایروال چگونه تنظیم شده است. تمامی پورتها به عنوان filtered نمایش داده میشوند که به معنی محافظت آنها توسط فایروال است، به جز پورت SSH که باز است.
در سرور خود، دستور وضعیت را مجدداً اجرا کنید:
sudo service psad status
حالا، پس از اسکن، هشدارهای بیشتری دریافت خواهید کرد. حملههای خاصتر با امضاهای دقیقتری شناسایی میشوند. اگر هشدار ایمیلی تنظیم کرده باشید، ایمیلهایی دریافت خواهید کرد و میتوانید از گزارش who is برای تماس با مالک IP استفاده کنید.
گام ششم: پیادهسازی سیستم پیشگیری از نفوذ
حالا که مطمئن شدیم میتوانیم فعالیتهای تلاش برای دسترسی به سرور را شناسایی کنیم، میتوانیم یک مکانیزم پیشگیری پیادهسازی کنیم که در آن psad بهطور خودکار قوانین iptables را برای مسدود کردن اسکنرها تغییر دهد.
قبل از انجام این کار، بهتر است فایل auto_dl
را بررسی کنیم:
sudo nano /etc/psad/auto_dl
این فایل مشخص میکند که باید چه سطح خطری به آدرسهای IP خاص اختصاص دهیم. به عنوان مثال، اگر مهاجمی به طور مداوم تلاش کند سیستم ما را اسکن کند، میتوانیم بهطور خودکار آنها را در سطح خطر ۵ قرار دهیم:
attacker_ip 5;
از طرف دیگر، میتوانید برخی آدرسهای IP را از واکنش psad معاف کنید. برای جلوگیری از قفل شدن خود، باید کامپیوتر خانگیتان را به این لیست اضافه کنید:
local_computer_ip 0;
فایل را ذخیره کرده و ببندید.
دوباره فایل را باز کنید:
sudo nano /etc/psad/psad.conf
بهدنبال پارامتری به نام ENABLE_AUTO_IDS
بگردید. این قانون به psad اجازه میدهد تا فایروال ما را برای مسدود کردن آدرسهای خاص تغییر دهد. اگر میخواهید این کار بهطور خودکار انجام شود، میتوانید آن را به شکل زیر تغییر دهید:
ENABLE_AUTO_IDS Y;
سپس، باید تصمیم بگیرید که چه سطح تهدیدی برای مسدود کردن IP مهاجم کافی است. برای این کار میتوانید این پارامتر را تنظیم کنید:
AUTO_IDS_DANGER_LEVEL 5;
یکی دیگر از گزینههای مهم، زمان مسدود کردن کل ترافیک بهصورت ثانیه است:
AUTO_BLOCK_TIMEOUT 3600;
این دستور، بهطور پیشفرض، این گزینه آدرسهای IP را به مدت یک ساعت مسدود میکند.

پیشنهاد مطالعه: راهنمای انتخاب بهترین سیاست فایروال برای حفاظت از سرورها
برای آزمایش پیشگیری از نفوذ، میتوانید این مراحل را دنبال کنید:
1- در فایل پیکربندی، گزینههای زیر را تنظیم کنید:
ENABLE_AUTOIDS Y;AUTO_IDS_DANGER_LEVEL 4;AUTO_BLOCK_TIMEOUT 60;
این تنظیمات باعث فعالسازی پیکربندی خودکار فایروال، تعیین سطح تهدید به ۴ (برای اسکن SYN معمولی) و زمان مسدودسازی ۶۰ ثانیه میشود.
2- فایل را ذخیره کرده و بسته و فایل auto_dl
را باز کنید و موقتاً آدرس IP خود را کامنت کنید.
3- سرویس psad را ریستارت کنید:
sudo service psad restart
4- از کامپیوتر خود دوباره اسکن را اجرا کنید:
sudo nmap -PN -sS server_domain_or_ip
5- پس از چند ثانیه، اتصال شما قطع خواهد شد و تا ۶۰ ثانیه نمیتوانید دوباره متصل شوید.
6- برای مشاهده قوانین iptables، از دستور زیر استفاده کنید:
sudo iptables -S
7- پس از آزمایش، تنظیمات را به حالت اولیه بازگردانید و psad را دوباره ریستارت کنید:
sudo service psad restart
در آخر، توجه داشته باشید که حملاتی که آدرس IP منبع را جعل میکنند میتوانند باعث مسدود شدن سایتها یا خدمات معتبر شوند. باید با دقت این نوع پیکربندی را ارزیابی کنید.
جمعبندی
در این راهنما، به بررسی نحوه پیکربندی و استفاده از ابزار تشخیص نفوذ شبکه به نام psad پرداختیم. با پیکربندی صحیح این ابزار، میتوانید هشدارهای لازم درباره تهدیدات قبل از بروز مشکل دریافت کنید. ابزارهایی مانند psad میتوانند هشدارهای پیشرفته بدهند و در برخی موارد حتی به طور خودکار تهدیدات را مدیریت کنند.
کلید استفاده مؤثر از psad، تنظیم دقیق سطح تهدید و هشدارهای ایمیلی است و پس از آن باید به مشکلات شناساییشده پاسخ داده شود.