این دوره به صورت جامع به نصب، پیکربندی و مدیریت TCP Wrappers میپردازد که یکی از ابزارهای مهم برای کنترل دسترسی به سرویسهای شبکهای است. TCP Wrappers از فایلهای hosts.allow و hosts.deny برای تعیین مجوزهای دسترسی استفاده میکند و امکان مدیریت امنیتی دقیق و انعطافپذیر را فراهم میکند.
بخش 1. مقدمهای بر TCP Wrappers
فصل 1. معرفی TCP Wrappers
- TCP Wrappers چیست و چگونه کار میکند؟
- جایگاه TCP Wrappers در مدل امنیتی لینوکس
- نقش آن در کنترل دسترسی به سرویسهای شبکهای
فصل 2. تاریخچه و هدف طراحی TCP Wrappers
- معرفی Wietse Venema و توسعه اولیه این ابزار
- انگیزه طراحی TCP Wrappers در پاسخ به نیازهای امنیتی
- جایگاه تاریخی آن در مقایسه با روشهای نوین مانند Firewalld و iptables
فصل 3. کاربردهای اصلی در کنترل دسترسی به سرویسهای شبکه
- استفاده برای محدود کردن دسترسی به سرویسهای حساس
- ترکیب با سایر ابزارهای امنیتی برای افزایش امنیت شبکه
- کاربرد در مقابله با حملات brute force و سوءاستفاده از سرویسها
فصل 4. ساختار کلی TCP Wrappers
- نحوه تعامل با daemonهای مختلف
- وابستگی به libwrap و تأثیر آن در عملکرد
- محدودیتهای TCP Wrappers در مقایسه با فایروالهای مدرن
فصل 5. فایلهای اصلی: hosts.allow و hosts.deny
- معرفی دو فایل اصلی تنظیمات
- نحوه پردازش درخواستها بر اساس ترتیب بررسی این فایلها
- تأثیر وجود یا عدم وجود هر کدام از این فایلها در تصمیمگیری دسترسی
فصل 6. نحوه عملکرد در فرآیند دسترسی به سرویسها
- مراحل پردازش یک درخواست اتصال به سرویس تحت پوشش TCP Wrappers
- بررسی اولیه در hosts.allow و hosts.deny
- تعامل با DNS و مشکلات احتمالی در name resolution
- بررسی چگونگی اعمال تغییرات بهصورت لحظهای بدون نیاز به راهاندازی مجدد سرویس
فصل 7. مزایا و معایب TCP Wrappers
-
نقاط قوت در مدیریت امنیت:
- امکان کنترل دسترسی بهصورت منعطف
- تنظیمات ساده و بدون نیاز به نصب ابزارهای اضافی
- امکان ثبت لاگهای دقیق از دسترسیها
-
محدودیتها و روشهای مقابله با آنها:
- عدم پشتیبانی از تمام سرویسها
- تأثیر عملکردی هنگام استفاده در محیطهای بزرگ
- مقایسه با ابزارهای مدرن مانند nftables و Firewalld و روشهای ترکیبی برای جبران محدودیتها
بخش 2. نصب و راهاندازی TCP Wrappers
فصل 1. معرفی روشهای نصب TCP Wrappers
- بررسی پیشفرض بودن TCP Wrappers در توزیعهای مدرن لینوکس
- بررسی پشتیبانی از
libwrapدر سرویسهای سیستم - روشهای نصب دستی در صورت نبود بسته TCP Wrappers
فصل 2. نصب TCP Wrappers در سیستمهای لینوکسی
- بررسی نصب در توزیعهای مختلف:
- Debian و Ubuntu (
apt install tcpd) - CentOS و RHEL (
dnf install tcp_wrappers) - Arch Linux (
pacman -S tcp_wrappers)
- Debian و Ubuntu (
- اطمینان از نصب صحیح و بررسی نسخه TCP Wrappers
فصل 3. بررسی سرویسهایی که از TCP Wrappers پشتیبانی میکنند
- روش تشخیص پشتیبانی یک سرویس از TCP Wrappers
- استفاده از
lddبرای بررسی وابستگی سرویسها بهlibwrap.so - لیست برخی از سرویسهای معروف که از TCP Wrappers پشتیبانی میکنند (SSH, vsftpd, xinetd, telnet و …)
فصل 4. فعالسازی و تست اولیه TCP Wrappers
- ایجاد فایلهای اولیه
hosts.allowوhosts.deny - اضافه کردن یک قانون اولیه برای تست دسترسی
- تست محدودسازی سرویسها با ابزارهای
telnet,ncوssh
فصل 5. ابزارهای بررسی پشتیبانی و تست TCP Wrappers
- استفاده از
tcpdchkبرای بررسی تنظیمات و خطاهای احتمالی - استفاده از
tcpdmatchبرای تست قواعد تعریفشده درhosts.allowوhosts.deny - مانیتورینگ لاگهای دسترسی و بررسی تأثیر TCP Wrappers در
syslog
بخش 3. پیکربندی اولیه TCP Wrappers
فصل 1. ساختار و نحوه استفاده از فایلهای hosts.allow و hosts.deny
- معرفی و محل قرارگیری فایلهای /etc/hosts.allow و /etc/hosts.deny
- ترتیب بررسی این فایلها در فرآیند احراز هویت سرویسها
- تأثیر ترتیب قوانین در هر فایل
- نمونهای از فایل پیشفرض در یک سیستم لینوکسی
فصل 2. قواعد نگارشی و فرمت خطوط در فایلهای تنظیمات
- نحوه تعریف یک قانون دسترسی
- ترکیب کلی هر خط:
service_name : client_address - استفاده از چندین مقدار در یک خط
- درج کامنتها در فایلهای تنظیمات
فصل 3. پیکربندی ساده برای کنترل دسترسی
- اجازه دادن یا مسدود کردن یک IP خاص
- مسدود کردن یا اجازه دادن یک محدوده IP
- استفاده از Wildcardها برای کنترل دسترسی انعطافپذیر
- مثالهایی از تنظیمات رایج در hosts.allow و hosts.deny
فصل 4. پیکربندی بر اساس آدرس IP و محدوده شبکه
- استفاده از IP Address مستقیم برای مجاز کردن یا مسدود کردن دسترسی
- تعیین Subnet Mask برای دسترسی به یک شبکه کامل
- جلوگیری از دسترسی آدرسهای ناشناس
فصل 5. کار با نام میزبان و دامنهها در TCP Wrappers
- تنظیم دسترسیها بر اساس نام میزبان (hostname)
- بررسی و فعالسازی Reverse DNS Lookup
- نحوه حل مشکلات تأخیر در پردازش نام میزبان
- مثالهایی از تنظیمات hosts.allow و hosts.deny با نام دامنه
فصل 6. پیکربندی دسترسی برای سرویسهای خاص
- کنترل دسترسی به سرویس SSH
- مدیریت دسترسی برای FTP و Telnet
- تنظیمات محدودکننده برای سرویسهای مهم شبکهای
- ترکیب چندین سرویس در یک خط
فصل 7. بررسی و تست پیکربندی اولیه
- بررسی تغییرات با استفاده از tcpdchk
- تست قوانین دسترسی با tcpdmatch
- خواندن و تحلیل لاگهای مرتبط با TCP Wrappers
بخش 4. قواعد پیشرفته در پیکربندی TCP Wrappers
فصل 1. استفاده از پارامترهای پیشرفته
- تعریف پیامهای سفارشی برای دسترسی غیرمجاز با استفاده از
twist - ثبت و لاگگذاری پیشرفته با
severityدرsyslog - استفاده از
spawnبرای اجرای دستورات هنگام برقراری یا رد اتصال - ترکیب TCP Wrappers با اسکریپتهای سفارشی
فصل 2. ایجاد قوانین ترکیبی و شرطی
- ترکیب استفاده از hosts.allow و hosts.deny برای مدیریت دسترسی پیچیده
- اعمال دسترسیهای خاص بر اساس محدودههای IP
- پیکربندی قوانین منعطف با استفاده از wildcards
- تعیین دسترسیها برای کاربران خاص با user@host
فصل 3. پیکربندی پیشرفته بر اساس نام میزبان و DNS
- کنترل دسترسیها بر اساس hostname به جای IP
- استفاده از domain-based rules برای محدود کردن کل دامنهها
- بهینهسازی عملکرد TCP Wrappers با کاهش DNS lookups
- جلوگیری از DNS spoofing attacks در پیکربندیها
فصل 4. افزودن تأخیر و محدودیت در پاسخگویی به اتصالات
- استفاده از delay برای ایجاد تأخیر در پاسخ به درخواستهای مشکوک
- محدود کردن تعداد تلاشهای ورود ناموفق
- اعمال rate limiting برای کاهش بار روی سرویسها
فصل 5. بهینهسازی امنیتی و جلوگیری از دور زدن TCP Wrappers
- اطمینان از عدم وجود تنظیمات ناسازگار بین iptables و TCP Wrappers
- جلوگیری از backdoor access از طریق تنظیمات اشتباه
- تست و نظارت بر قوانین امنیتی با tcpdmatch و tcpdchk
این ابزار در لایهی Transport Layer از مدل OSI کار میکند و بهعنوان یک ACL (Access Control List) برای برنامههایی مانند SSH, FTP, Telnet و دیگر سرویسهای تحت TCP عمل میکند.
نحوه کار TCP Wrappers
TCP Wrappers بر پایهی دو فایل اصلی عمل میکند:
/etc/hosts.allow: تعیین میکند که کدام کلاینتها مجاز به اتصال هستند./etc/hosts.deny: تعیین میکند که کدام کلاینتها مجاز به اتصال نیستند.
هنگامی که یک کلاینت سعی در برقراری ارتباط با یک سرویس محافظتشده دارد، فرآیند زیر اتفاق میافتد:
- بررسی میشود که آیا برنامهی موردنظر از libwrap پشتیبانی میکند یا نه.
- سیستم ابتدا فایل
/etc/hosts.allowرا بررسی میکند.- اگر یک قانون منطبق یافت شود، اتصال مجاز است.
- اگر در
hosts.allowموردی پیدا نشود، فایل/etc/hosts.denyبررسی میشود.- اگر در این فایل نیز موردی وجود داشته باشد، اتصال رد میشود.
- در صورت عدم وجود هیچگونه قانون در هر دو فایل، اتصال برقرار میشود.
مثالهایی از پیکربندی TCP Wrappers
اجازه دسترسی به یک IP خاص برای SSH:
فایل /etc/hosts.allow را ویرایش کنید:
sshd: 192.168.1.100
مسدود کردن تمام دسترسیهای دیگر:
فایل /etc/hosts.deny را ویرایش کنید:
ALL: ALL
اجازه دسترسی به یک رنج IP برای FTP:
vsftpd: 192.168.1.
ثبت تمامی تلاشهای ناموفق:
میتوان دستورات لاگگیری را برای ثبت تلاشهای ناموفق استفاده کرد:
sshd: ALL: /bin/echo "Unauthorized access attempt detected!" >> /var/log/tcpwrappers.log
بررسی وضعیت سرویسهای تحت کنترل TCP Wrappers
برای بررسی اینکه یک برنامه از libwrap پشتیبانی میکند یا نه، میتوان از دستور زیر استفاده کرد:
ldd /usr/sbin/sshd | grep libwrap
اگر خروجی شامل libwrap.so باشد، یعنی سرویس موردنظر از TCP Wrappers پشتیبانی میکند.
جمعبندی
TCP Wrappers یکی از روشهای قدیمی و مؤثر برای کنترل دسترسی به سرویسهای شبکهای در لینوکس است. با این حال، امروزه اغلب از فایروالهایی مانند iptables و firewalld برای مدیریت دسترسیها استفاده میشود. با این وجود، در سیستمهای قدیمی که هنوز از TCP Wrappers پشتیبانی میکنند، میتواند یک لایه امنیتی اضافی مفید باشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”جایگاه TCP Wrappers در مدل امنیتی لینوکس” subtitle=”توضیحات کامل”]TCP Wrappers یکی از مکانیزمهای کنترل دسترسی در سطح شبکه است که در کنار سایر ابزارهای امنیتی مانند iptables، SELinux، AppArmor و firewalld به بهبود امنیت سیستم کمک میکند. این ابزار بهعنوان یک لایه امنیتی اضافی در سیستمعاملهای یونیکس و لینوکس بهکار گرفته میشود.
ارتباط TCP Wrappers با سایر لایههای امنیتی
مدل امنیتی لینوکس شامل چندین لایه است که هرکدام در بخشهای مختلفی از سیستم عمل میکنند. جایگاه TCP Wrappers در این مدل بهصورت زیر مشخص میشود:
- کنترل سطح دسترسی به سرویسها (Application Layer Security)
- TCP Wrappers در لایه کاربردی (Application Layer) کار میکند و به برنامهها این امکان را میدهد که قبل از قبول یک اتصال، آن را فیلتر کنند.
- برای برنامههایی که از libwrap استفاده میکنند، یک فیلتر اولیه برای درخواستهای ورودی ایجاد میکند.
- قبل از پردازش توسط سرویسها
- در حالی که iptables و firewalld ترافیک را در سطح کرنل و بستههای شبکهای (Packet Filtering) کنترل میکنند، TCP Wrappers قبل از پردازش درخواست توسط سرویسهای کاربر (User-Space Services) اجرا میشود.
- بهعبارت دیگر، اگر یک درخواست در TCP Wrappers مسدود شود، هرگز به برنامه اصلی مانند SSH یا FTP نخواهد رسید.
- هماهنگی با سایر مکانیزمهای امنیتی
- TCP Wrappers میتواند در کنار iptables و firewalld برای ارائهی یک لایه امنیتی مضاعف استفاده شود.
- در کنار ابزارهایی مانند fail2ban برای جلوگیری از حملات brute-force مفید است.
- در صورتی که SELinux یا AppArmor فعال باشد، آنها میتوانند از اجرای غیرمجاز سرویسهای محافظتشده جلوگیری کنند، اما TCP Wrappers مشخص میکند که کدام کلاینتها مجاز به استفاده از سرویسها هستند.
تفاوت TCP Wrappers با فایروالهای مبتنی بر کرنل
| ویژگی | TCP Wrappers | iptables / firewalld |
|---|---|---|
| سطح اجرا | User Space | Kernel Space |
| فیلتر کردن | در سطح سرویسهای شبکهای | در سطح بستههای شبکهای |
| سرویسهای پشتیبان | فقط سرویسهایی که از libwrap استفاده میکنند | تمامی ارتباطات شبکهای |
| انعطافپذیری | ساده اما محدود به برنامههای خاص | پیشرفته و قابل تنظیم برای تمام پروتکلها |
| جایگاه در مدل امنیتی | کنترل دسترسی در لایه اپلیکیشن | فیلترکردن بستهها در سطح کرنل |
کاربرد TCP Wrappers در کنار فایروالها
در محیطهایی که از فایروالهایی مانند iptables یا firewalld استفاده میشود، همچنان میتوان از TCP Wrappers برای کنترل دقیقتر دسترسی به سرویسها بهره برد. این ترکیب امنیتی میتواند به شکل زیر پیادهسازی شود:
- مسدود کردن آیپیهای ناشناس در فایروال
iptables -A INPUT -s 203.0.113.0/24 -j DROP - اجازه دسترسی به یک IP خاص برای SSH در TCP Wrappers
echo "sshd: 192.168.1.100" >> /etc/hosts.allow echo "sshd: ALL" >> /etc/hosts.deny - استفاده از fail2ban برای جلوگیری از حملات brute-force
apt install fail2ban
جمعبندی
TCP Wrappers بهعنوان یک لایه امنیتی اضافی در سطح برنامههای شبکهای عمل میکند و به مدیران سیستم امکان میدهد که کنترل دقیقتری بر دسترسی کلاینتها داشته باشند. اگرچه امروزه ابزارهایی مانند iptables، firewalld و SELinux جایگزین بهتری برای کنترل دسترسی در سطح سیستمعامل هستند، اما در برخی موارد استفاده از TCP Wrappers بههمراه این ابزارها میتواند امنیت شبکه را بهبود بخشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نقش TCP Wrappers در کنترل دسترسی به سرویسهای شبکهای” subtitle=”توضیحات کامل”]TCP Wrappers بهعنوان یک مکانیزم کنترل دسترسی در سطح سرویسهای شبکهای در سیستمعاملهای یونیکس و لینوکس استفاده میشود. این ابزار به مدیران سیستم اجازه میدهد که اتصالات ورودی به سرویسهای مشخصی را بر اساس آدرس IP، نام میزبان (Hostname) و دیگر مشخصات کنترل کنند.
نحوه عملکرد TCP Wrappers
TCP Wrappers به کمک کتابخانهی libwrap کار میکند و برای برنامههایی که از این کتابخانه پشتیبانی میکنند، قبل از برقراری ارتباط، یک مرحله احراز هویت و بررسی دسترسی را اجرا میکند. مراحل عملکرد آن بهصورت زیر است:
- دریافت درخواست اتصال به سرویس
- وقتی یک کلاینت سعی میکند به یک سرویس شبکهای (مانند SSH، FTP یا Telnet) متصل شود، ابتدا درخواست آن توسط TCP Wrappers بررسی میشود.
- بررسی فایلهای کنترل دسترسی
- TCP Wrappers از دو فایل مهم برای تعیین مجوز دسترسی استفاده میکند:
/etc/hosts.allow→ مشخص میکند که کدام کلاینتها اجازه دسترسی دارند./etc/hosts.deny→ مشخص میکند که کدام کلاینتها مسدود شوند.
- ابتدا فایل
/etc/hosts.allowبررسی میشود؛ اگر کلاینت در این فایل مجاز باشد، اجازه دسترسی داده میشود. - اگر کلاینت در فایل
/etc/hosts.allowنباشد، فایل/etc/hosts.denyبررسی شده و در صورت یافتن تطابق، اتصال رد میشود. - اگر هیچ قانونی برای کلاینت در این دو فایل وجود نداشته باشد، معمولاً دسترسی داده میشود.
- TCP Wrappers از دو فایل مهم برای تعیین مجوز دسترسی استفاده میکند:
- اجازه یا رد درخواست
- اگر کلاینت در لیست مجازها (
hosts.allow) باشد، سرویس موردنظر اجازه دسترسی را صادر میکند. - اگر کلاینت در لیست ممنوعها (
hosts.deny) باشد، اتصال رد شده و پیام مناسب در سیستم لاگ ذخیره میشود.
- اگر کلاینت در لیست مجازها (
مثالهایی از کنترل دسترسی با TCP Wrappers
۱. اجازه دسترسی فقط به یک IP خاص برای سرویس SSH
echo "sshd: 192.168.1.100" >> /etc/hosts.allow
echo "sshd: ALL" >> /etc/hosts.deny
توضیح:
- فقط آدرس
192.168.1.100اجازه اتصال به SSH را دارد. - تمامی کلاینتهای دیگر مسدود میشوند.
۲. اجازه دسترسی به کلاینتهای یک شبکه خاص
echo "vsftpd: 192.168.1." >> /etc/hosts.allow
echo "vsftpd: ALL" >> /etc/hosts.deny
توضیح:
- فقط کلاینتهایی که آدرس آنها با
192.168.1.شروع میشود، مجاز به اتصال به FTP Server (vsftpd) هستند.
۳. جلوگیری از دسترسی یک آدرس خاص
echo "telnetd: 203.0.113.50" >> /etc/hosts.deny
توضیح:
- کلاینتی با IP
203.0.113.50اجازه اتصال به Telnet Server را ندارد.
۴. ثبت ورودهای غیرمجاز در فایل لاگ
echo "sshd: ALL: spawn /bin/echo \"Unauthorized access from %h\" >> /var/log/tcpwrappers.log" >> /etc/hosts.deny
توضیح:
- هر درخواست SSH که رد شود، پیامی در لاگ
/var/log/tcpwrappers.logثبت میشود.
جمعبندی
TCP Wrappers یک لایه امنیتی در سطح سرویسهای شبکهای ایجاد میکند و به مدیران سیستم امکان میدهد که دسترسی کلاینتها را بر اساس IP، نام میزبان و سایر فیلترها مدیریت کنند. با اینکه امروزه ابزارهای مدرنتر مانند iptables، firewalld و fail2ban برای کنترل دسترسی به شبکه پیشنهاد میشوند، اما TCP Wrappers همچنان در برخی سناریوهای امنیتی مفید است و میتواند در کنار فایروالها برای افزایش امنیت شبکه مورد استفاده قرار گیرد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. تاریخچه و هدف طراحی TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”معرفی Wietse Venema و توسعه اولیه TCP Wrappers” subtitle=”توضیحات کامل”]Wietse Venema یک متخصص امنیت و برنامهنویس هلندی است که بهدلیل توسعه ابزارهای امنیتی مهم در دنیای یونیکس و لینوکس شناخته میشود. او در زمینه امنیت سیستمها، جرمشناسی دیجیتال و تحلیل رفتارهای مخرب فعالیت دارد و پروژههای مختلفی را در این حوزه توسعه داده است.
یکی از مهمترین ابزارهایی که Wietse Venema توسعه داد، TCP Wrappers است که تأثیر قابلتوجهی در افزایش امنیت سرویسهای شبکهای داشت.
توسعه اولیه TCP Wrappers
۱. انگیزه توسعه
در اواخر دهه ۱۹۸۰ و اوایل ۱۹۹۰، بسیاری از سرویسهای شبکهای در سیستمعاملهای یونیکس امنیت ضعیفی داشتند و فاقد مکانیزم کنترل دسترسی داخلی بودند. در آن دوران، مهاجمان بهراحتی میتوانستند از طریق سرویسهای ناامن مانند Telnet و RSH به سیستمها نفوذ کنند. Venema که در آن زمان در مؤسسه Eindhoven University of Technology فعالیت داشت، متوجه شد که بسیاری از حملات نفوذ از طریق پورتهای باز سیستم انجام میشود.
او برای نظارت و کنترل این دسترسیهای ناخواسته، ابزاری به نام TCP Wrappers توسعه داد که به مدیران سیستم اجازه میداد که دسترسی به سرویسهای شبکهای را بر اساس IP و نام میزبان کنترل کنند.
۲. نحوه توسعه اولیه
TCP Wrappers در ابتدا بهعنوان یک لایه امنیتی اضافی برای سرویسهای اینترنتی یونیکس طراحی شد. این ابزار به کمک یک کتابخانهی خاص به نام libwrap توسعه داده شد که بین کلاینت و سرویس موردنظر قرار میگرفت و قبل از برقراری ارتباط، مجوزهای دسترسی را بررسی میکرد.
۳. انتشار اولیه و تأثیرگذاری
اولین نسخه از TCP Wrappers در اوایل دهه ۱۹۹۰ منتشر شد و بهسرعت در سیستمعاملهای یونیکس و لینوکس مورد استفاده قرار گرفت. بسیاری از توزیعهای لینوکسی این ابزار را بهصورت پیشفرض در کنار سرویسهای Telnet، SSH، FTP و RSH قرار دادند تا کنترل دقیقتری بر روی دسترسیهای شبکهای داشته باشند.
پروژههای دیگر Wietse Venema
علاوه بر TCP Wrappers، Venema پروژههای مهم دیگری را در حوزه امنیت توسعه داده است، از جمله:
- Postfix → یکی از محبوبترین و امنترین سرویسهای Mail Server که بهعنوان جایگزینی برای Sendmail طراحی شد.
- SATAN (Security Administrator Tool for Analyzing Networks) → یکی از اولین ابزارهای امنیتی برای تحلیل آسیبپذیریهای شبکهای در دهه ۱۹۹۰.
- The Coroner’s Toolkit (TCT) → مجموعهای از ابزارهای جرمشناسی دیجیتال برای تحلیل سیستمهای آلوده.
- PORTUS → ابزاری برای تحلیل حملات به سرورها و لاگهای امنیتی.
جمعبندی
Wietse Venema یکی از چهرههای کلیدی در امنیت سیستمهای یونیکس و لینوکس است. توسعه TCP Wrappers تأثیر زیادی در افزایش امنیت سرویسهای شبکهای داشت و مبنای بسیاری از راهکارهای مدرن امنیتی مانند iptables و fail2ban شد. با اینکه امروزه فایروالها جایگزین این ابزار شدهاند، اما TCP Wrappers همچنان در برخی از توزیعهای لینوکسی قابل استفاده است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”انگیزه طراحی TCP Wrappers در پاسخ به نیازهای امنیتی” subtitle=”توضیحات کامل”]در اوایل دهه ۱۹۹۰، با رشد استفاده از شبکههای اینترنتی و سیستمهای یونیکس، مشکلات امنیتی مختلفی در زمینه دسترسی به سرویسهای شبکهای ظاهر شدند. این مشکلات عمدتاً ناشی از دسترسیهای غیرمجاز و حملات نفوذ از طریق سرویسهای باز و ناامن بودند. در آن زمان، بسیاری از سرویسهای موجود در سیستمعاملهای یونیکس، مانند Telnet، FTP، RSH و rlogin، دستگاههای شبکهای را به طور مستقیم در معرض حملات قرار میدادند.
۱. مشکلات امنیتی سرویسهای شبکهای
یکی از اصلیترین مشکلات امنیتی، عدم وجود کنترل دقیق بر دسترسیهای شبکهای به سرویسها بود. بسیاری از این سرویسها بهطور پیشفرض به همه میزبانها اجازه اتصال میدادند بدون اینکه محدودیتی برای کاربران یا آدرسهای IP خاص اعمال شود. به همین دلیل، مهاجمان میتوانستند به راحتی با اسکن کردن پورتها و استفاده از آسیبپذیریها به سیستمهای هدف نفوذ کنند. در نتیجه، نیاز به ابزاری برای کنترل دسترسی دقیق و بررسی تهدیدات شبکهای احساس میشد.
۲. انگیزه توسعه TCP Wrappers
Wietse Venema که در آن زمان بهعنوان متخصص امنیت سیستمها در دانشگاه Eindhoven هلند فعالیت میکرد، متوجه شد که باید ابزاری برای کنترل دسترسی به سرویسهای شبکهای ایجاد کند. این ابزار باید بتواند به مدیران سیستم کمک کند تا قبل از برقراری ارتباط، دسترسیها را بررسی کنند و از حملات نفوذ جلوگیری کنند. در همین راستا، او شروع به توسعه TCP Wrappers کرد که بهطور خاص برای مدیریت دسترسی به سرویسهای شبکهای و شناسایی تهدیدات طراحی شده بود.
۳. ویژگیهای کلیدی TCP Wrappers
TCP Wrappers با استفاده از یک کتابخانه به نام libwrap عمل میکند که بهطور میانافزار بین سرویسها و کاربران عمل میکند. این کتابخانه بهمدیران سیستم اجازه میدهد تا دسترسیهای ورودی به سرویسهای شبکهای را براساس آدرسهای IP و نام میزبان محدود کنند و فقط به آدرسهای مجاز اجازه اتصال بدهند. ویژگیهای کلیدی این ابزار شامل موارد زیر است:
- بررسی و فیلتر کردن دسترسیها: TCP Wrappers بهطور خودکار بررسی میکند که آیا درخواست اتصال به آدرسهای IP مجاز مربوط میشود یا خیر.
- پشتیبانی از فایلهای تنظیمات: فایلهایی مانند
/etc/hosts.allowو/etc/hosts.denyبه مدیران سیستم این امکان را میدهند که بهصورت دقیق و ساده دسترسی به سرویسها را مدیریت کنند. - یکپارچگی با سرویسهای مختلف: این ابزار بهطور مستقیم با سرویسهایی مانند SSH، Telnet، FTP و RSH یکپارچه میشود و به مدیران این امکان را میدهد که تمام این سرویسها را در یک محیط امن کنترل کنند.
۴. پاسخ به نیازهای امنیتی
هدف اصلی طراحی TCP Wrappers، فراهم کردن یک لایه امنیتی اضافی برای سرویسهای شبکهای بود. این ابزار به مدیران سیستم این امکان را میدهد که با محدود کردن دسترسیها، ایجاد فیلترهای دقیقتر و بررسی تهدیدات، امنیت سیستمها را بهطور چشمگیری افزایش دهند. به این ترتیب، TCP Wrappers به ابزاری حیاتی برای جلوگیری از حملات نفوذ، تشخیص حملات DoS (Denial of Service) و محافظت در برابر دسترسیهای غیرمجاز تبدیل شد.
جمعبندی
انگیزه اصلی طراحی TCP Wrappers، پاسخ به نیازهای امنیتی ناشی از ضعف در کنترل دسترسی به سرویسهای شبکهای و آسیبپذیریهای موجود در سیستمهای یونیکس بود. این ابزار با ارائه یک روش ساده و مؤثر برای مدیریت دسترسی به سرویسهای شبکهای، به مدیران سیستم کمک کرد تا از حملات نفوذ جلوگیری کنند و امنیت سیستمهای خود را افزایش دهند. TCP Wrappers بهعنوان یکی از اولین ابزارهای امنیتی در این حوزه، تأثیر بزرگی در ارتقاء سطح امنیت شبکههای یونیکس و لینوکس داشته است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”جایگاه تاریخی TCP Wrappers در مقایسه با روشهای نوین مانند Firewalld و iptables” subtitle=”توضیحات کامل”]TCP Wrappers در تاریخ امنیت شبکههای یونیکس و لینوکس بهعنوان یک ابزار ساده و مؤثر برای کنترل دسترسی به سرویسهای شبکهای معرفی شد. این ابزار بهویژه در زمانی که سیستمعاملهای یونیکس و لینوکس به سرعت در حال گسترش بودند، به مدیران سیستم کمک میکرد تا امنیت سرویسهای شبکهای را تقویت کنند. با این حال، در طی سالها با پیشرفتهای زیادی که در زمینه امنیت شبکهها و فیلترینگ بستهها رخ داد، روشهای نوینی مانند Firewalld و iptables توسعه یافتند که ابزارهای قویتری برای مدیریت امنیت شبکه و دسترسی به سرویسها ارائه میدهند.
۱. جایگاه تاریخی TCP Wrappers
TCP Wrappers در دهه ۱۹۹۰، زمانی که سرویسهای شبکهای زیادی در حال رشد بودند، بهعنوان یک ابزار ساده و مؤثر طراحی شد. این ابزار بهطور خاص برای کنترل دسترسی به سرویسهای شبکهای در سیستمهای یونیکس و لینوکس کاربرد داشت. برای مثال، ابزارهایی مانند Telnet، FTP، RSH، SSH، و NFS بهطور مستقیم به پورتهای شبکه متصل میشدند و در صورت نداشتن کنترل دسترسی مناسب میتوانستند به حملات نفوذ منجر شوند. TCP Wrappers این مشکل را با استفاده از فیلتر کردن دسترسیها بهوسیله فایلهای پیکربندی ساده مانند /etc/hosts.allow و /etc/hosts.deny حل میکرد.
این ابزار بهعنوان یک لایه امنیتی اضافی برای کنترل دسترسیها به سرویسها عمل میکرد و مدیران سیستم میتوانستند بهطور ساده و سریع دسترسی به سرویسها را برای آدرسهای IP مشخص مجاز یا غیرمجاز کنند. TCP Wrappers در زمان خود ابزاری موثر بود که نیاز به امنیت سرویسهای شبکهای را برطرف میکرد.
۲. معرفی روشهای نوین: Firewalld و iptables
در حالی که TCP Wrappers یک ابزار مؤثر برای کنترل دسترسی به سرویسها بود، با گذشت زمان و پیچیدهتر شدن نیازهای امنیتی شبکهها، ابزارهای قدرتمندتری مانند iptables و Firewalld توسعه یافتند.
- iptables:
iptables بهعنوان یک ابزار فیلترینگ بسته در سیستمعامل لینوکس معرفی شد و از زمان کرنل ۲.۴ به بعد بهعنوان ابزاری برای مدیریت ترافیک شبکه در سیستمهای لینوکس استفاده میشود. این ابزار بهطور مؤثر میتواند بستههای ورودی و خروجی را بر اساس آدرس IP، پورتها، پروتکلها و سایر ویژگیها فیلتر کند. iptables بهعنوان یکی از قدرتمندترین ابزارها برای مدیریت امنیت شبکه، نهتنها امکان کنترل دسترسی به سرویسها، بلکه قابلیتهای پیشرفتهای مانند ترکیب قوانین، فیلتر کردن بستهها بر اساس معیارهای مختلف و مدیریت NAT (ترجمه آدرس شبکه) را نیز فراهم میکند. - Firewalld:
Firewalld ابزاری است که بهطور خاص برای مدیریت فایروالها در سیستمعامل لینوکس طراحی شده و استفاده از آن راحتتر از iptables است. Firewalld در سیستمعاملهای مدرن مانند Fedora و RHEL استفاده میشود و قابلیت مدیریت فایروالها بهصورت داینامیک را فراهم میکند. برخلاف iptables که باید پیکربندیهای پیچیدهای داشته باشد، Firewalld بهطور خودکار میتواند با تنظیمات پیشفرض کار کند و بهطور زنده تنظیمات فایروال را اعمال کند.
۳. مقایسه TCP Wrappers با iptables و Firewalld
- سطح کنترل:
TCP Wrappers تنها به کنترل دسترسی به سرویسها میپردازد، یعنی تنها میتواند تعیین کند که کدام آدرسهای IP یا میزبانها به سرویسهای خاص دسترسی داشته باشند. این در حالی است که iptables و Firewalld کنترل بیشتری دارند و میتوانند بستههای شبکه را بر اساس ویژگیهای مختلف فیلتر کنند. این ابزارها میتوانند پروتکلها، پورتها، و آدرسهای IP را کنترل کنند و بهطور کلی مدیریت بهتری بر ترافیک شبکه دارند. - مقیاسپذیری و انعطافپذیری:
TCP Wrappers بیشتر برای سیستمهای کوچک و متوسط طراحی شده بود و به دلیل اینکه تنها دسترسی به سرویسها را فیلتر میکرد، در مقایسه با iptables و Firewalld که امکان مدیریت کامل ترافیک شبکه را دارند، محدودیتهای زیادی داشت. iptables و Firewalld بهعنوان ابزارهایی با قابلیتهای گستردهتر، میتوانند در مقیاسهای بزرگتر و پیچیدهتر نیز عمل کنند. - پیکربندی و سهولت استفاده:
پیکربندی TCP Wrappers بهدلیل استفاده از فایلهای پیکربندی ساده مانند/etc/hosts.allowو/etc/hosts.denyآسان بود. در مقابل، پیکربندی iptables و Firewalld پیچیدهتر است و نیازمند درک دقیقتری از اصول فیلترینگ بستهها و نحوه مدیریت شبکه است. Firewalld سعی کرده است این پیچیدگی را کاهش دهد و بهعنوان ابزاری کاربرپسندتر برای پیکربندی فایروالها طراحی شده است.
جمعبندی
در مقایسه با iptables و Firewalld، TCP Wrappers ابزاری ساده و مؤثر برای کنترل دسترسی به سرویسهای شبکهای بود که در زمان خود نقشی حیاتی در مدیریت امنیت ایفا میکرد. اما با پیچیدهتر شدن نیازهای امنیتی و افزایش سطح حملات، ابزارهای جدیدتر مانند iptables و Firewalld بهعنوان گزینههای پیشرفتهتری برای مدیریت ترافیک شبکه و کنترل دسترسی به سرویسها ظهور کردند. این ابزارها امکانات بیشتر و انعطافپذیری بیشتری دارند و به مدیران سیستم این امکان را میدهند که بهطور دقیقتر و پیچیدهتر شبکه را مدیریت کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. کاربردهای اصلی در کنترل دسترسی به سرویسهای شبکه”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده برای محدود کردن دسترسی به سرویسهای حساس” subtitle=”توضیحات کامل”]در بسیاری از موارد، مدیران سیستم نیاز دارند که دسترسی به سرویسهای حساس سیستم خود را محدود کنند تا از دسترسی غیرمجاز جلوگیری کنند. TCP Wrappers یکی از ابزارهای مؤثر برای محدود کردن دسترسی به این سرویسها بهویژه در سطح سرویسهای شبکهای است. این ابزار بهویژه برای سرویسهای حساس مانند SSH، FTP، Telnet و RSH مناسب است.
در این بخش، نحوه استفاده از TCP Wrappers برای محدود کردن دسترسی به سرویسهای حساس را با استفاده از پیکربندیهای کامندی توضیح خواهیم داد.
۱. پیکربندی TCP Wrappers برای محدود کردن دسترسی به سرویسهای حساس
برای استفاده از TCP Wrappers بهمنظور محدود کردن دسترسی به سرویسهای حساس، باید فایلهای پیکربندی زیر را ویرایش کنید:
/etc/hosts.allow: در این فایل، آدرسهای IP یا نام میزبانهایی که به سرویسها دسترسی دارند، مشخص میشود./etc/hosts.deny: در این فایل، آدرسهای IP یا نام میزبانهایی که دسترسی به سرویسها برای آنها مسدود است، مشخص میشود.
۲. محدود کردن دسترسی به سرویس SSH
برای مثال، اگر بخواهید دسترسی به سرویس SSH فقط از یک آدرس IP خاص را مجاز کنید، میتوانید فایلهای پیکربندی TCP Wrappers را به این شکل تنظیم کنید:
- ویرایش فایل
/etc/hosts.allowبرای مجاز کردن دسترسی به سرویس SSH فقط از یک IP خاص (مثلاً192.168.1.100):
sudo nano /etc/hosts.allow
در این فایل، خط زیر را اضافه کنید:
sshd: 192.168.1.100
این دستور باعث میشود که تنها آدرس IP 192.168.1.100 بتواند به سرویس SSH دسترسی داشته باشد.
- ویرایش فایل
/etc/hosts.denyبرای مسدود کردن دسترسی به سرویس SSH از سایر آدرسها:
sudo nano /etc/hosts.deny
در این فایل، خط زیر را اضافه کنید:
sshd: ALL
این خط باعث میشود که همه آدرسهای IP دیگر از دسترسی به سرویس SSH جلوگیری شوند.
۳. محدود کردن دسترسی به سرویس FTP
برای محدود کردن دسترسی به سرویس FTP تنها از یک دامنه خاص، مراحل زیر را دنبال کنید:
- ویرایش فایل
/etc/hosts.allowبرای مجاز کردن دسترسی به سرویس FTP از دامنه خاص (مثلاًexample.com):
sudo nano /etc/hosts.allow
در این فایل، خط زیر را اضافه کنید:
vsftpd: .example.com
- ویرایش فایل
/etc/hosts.denyبرای مسدود کردن دسترسی به سرویس FTP از سایر دامنهها:
sudo nano /etc/hosts.deny
در این فایل، خط زیر را اضافه کنید:
vsftpd: ALL
۴. محدود کردن دسترسی به سرویس Telnet
برای محدود کردن دسترسی به Telnet از یک آدرس IP خاص، مشابه با روشهای قبلی، ابتدا فایل /etc/hosts.allow را ویرایش کرده و خط زیر را اضافه کنید:
sudo nano /etc/hosts.allow
در این فایل، خط زیر را اضافه کنید:
in.telnetd: 192.168.1.100
سپس، در فایل /etc/hosts.deny دسترسی سایر آدرسها را مسدود کنید:
sudo nano /etc/hosts.deny
و خط زیر را اضافه کنید:
in.telnetd: ALL
۵. بررسی پیکربندیها
برای بررسی این تنظیمات و اطمینان از درست بودن پیکربندیها، میتوانید با استفاده از دستورات زیر تلاش کنید که از آدرسهای IP مختلف به سرویسها متصل شوید و ببینید که آیا دسترسی به درستی مسدود یا مجاز شده است:
برای تست دسترسی به SSH از یک IP مجاز:
ssh user@192.168.1.100
برای تست دسترسی به FTP از یک دامنه مجاز:
ftp ftp.example.com
برای تست دسترسی به Telnet از یک IP مجاز:
telnet 192.168.1.100
اگر همه چیز به درستی تنظیم شده باشد، تنها آدرسهای مجاز باید قادر به دسترسی به این سرویسها باشند.
جمعبندی
استفاده از TCP Wrappers برای محدود کردن دسترسی به سرویسهای حساس ابزاری ساده و مؤثر است که به شما این امکان را میدهد که تنها آدرسهای IP خاص یا دامنههای مشخص را به سرویسهای حساس مانند SSH، FTP، و Telnet دسترسی بدهید. این تنظیمات بهویژه در مواقعی که میخواهید امنیت سرویسها را افزایش دهید و دسترسی به سیستم را به حداقل برسانید، بسیار مفید هستند. TCP Wrappers بهعنوان یک لایه اضافی امنیتی، با پیکربندی ساده در فایلهای /etc/hosts.allow و /etc/hosts.deny میتواند کنترل دقیقی بر دسترسی به سرویسها اعمال کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ترکیب با سایر ابزارهای امنیتی برای افزایش امنیت شبکه” subtitle=”توضیحات کامل”]برای افزایش امنیت شبکه، استفاده از TCP Wrappers بهتنهایی ممکن است کافی نباشد، چراکه تهدیدات امنیتی به روشهای پیچیدهتر و متنوعتری از حملات شبکهای نیاز دارند. به همین دلیل، ترکیب TCP Wrappers با سایر ابزارهای امنیتی مانند iptables، firewalld، و SELinux میتواند بهطور مؤثری امنیت شبکه را ارتقا دهد.
در این بخش، نحوه ترکیب TCP Wrappers با ابزارهای امنیتی مختلف را بررسی خواهیم کرد و نشان میدهیم که چگونه این ابزارها بهطور هماهنگ کار میکنند تا امنیت شبکه را تقویت کنند.
۱. ترکیب TCP Wrappers با iptables
یکی از متداولترین روشها برای تقویت امنیت شبکه، ترکیب TCP Wrappers با iptables است. در حالی که TCP Wrappers به شما این امکان را میدهد که دسترسی به سرویسها را در سطح بازیابی شبکه محدود کنید، iptables یک فایروال سطح بسته است که میتواند ترافیک ورودی و خروجی به سیستم را فیلتر کند.
پیکربندی iptables برای تقویت امنیت شبکه
- ابتدا بررسی کنید که iptables نصب و فعال باشد:
sudo systemctl status iptables
- سپس میتوانید iptables را برای مسدود کردن تمام ترافیک به سرویسها به جز آدرسهای IP خاص پیکربندی کنید. بهعنوان مثال، برای محدود کردن دسترسی به SSH به آدرسهای IP خاص، دستورات زیر را وارد کنید:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
- برای ذخیره تغییرات، از دستور زیر استفاده کنید:
sudo service iptables save
این دستورات بهطور مؤثری ترافیک SSH را فقط از آدرس IP 192.168.1.100 مجاز میکنند و دسترسی از سایر آدرسها را مسدود میکنند.
۲. ترکیب TCP Wrappers با firewalld
firewalld یک ابزار فایروال برای کنترل ترافیک شبکه است که امکان پیکربندی آسانتر و بهروزرسانیهای پویا را نسبت به iptables فراهم میآورد. ترکیب firewalld و TCP Wrappers میتواند انعطافپذیری و امنیت بیشتری برای کنترل دسترسی به سرویسها فراهم کند.
پیکربندی firewalld برای استفاده همراه با TCP Wrappers
- ابتدا مطمئن شوید که firewalld فعال است:
sudo systemctl status firewalld
- سپس میتوانید از دستور زیر برای مسدود کردن دسترسی به SSH برای تمام IPها استفاده کنید:
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=22/tcp --permanent
- در ترکیب با TCP Wrappers، شما میتوانید دسترسی به SSH را فقط از IP خاص مجاز کنید. برای مثال:
sudo firewall-cmd --zone=public --add-source=192.168.1.100 --permanent
بعد از انجام این تنظیمات، firewalld بهطور مؤثری دسترسی به SSH را فقط از IP 192.168.1.100 مجاز خواهد کرد و سایر آدرسها از آن مسدود میشوند.
۳. ترکیب TCP Wrappers با SELinux
SELinux (Security-Enhanced Linux) یک ابزار امنیتی است که کنترل دسترسی دقیقتری به منابع سیستم فراهم میآورد. این ابزار میتواند بهویژه در ترکیب با TCP Wrappers برای افزایش امنیت سرویسها و جلوگیری از دسترسی غیرمجاز مفید باشد.
پیکربندی SELinux برای ترکیب با TCP Wrappers
- ابتدا وضعیت SELinux را بررسی کنید:
getenforce
- اگر SELinux غیرفعال است، آن را به حالت Enforcing تغییر دهید:
sudo setenforce 1
- برای کنترل دقیق دسترسی به سرویسهای مختلف با SELinux، میتوانید تنظیمات خاصی برای سرویسها اعمال کنید. بهعنوان مثال، برای محدود کردن دسترسی به SSH تنها به کاربران خاص، از دستور زیر استفاده کنید:
sudo semanage port -a -t ssh_port_t -p tcp 2222
این دستور باعث میشود که SSH به پورت 2222 منتقل شده و دسترسی به پورتهای پیشفرض برای دیگر کاربران محدود شود.
۴. ترکیب TCP Wrappers با ابزارهای مانیتورینگ و شناسایی تهدیدات
استفاده از TCP Wrappers میتواند به همراه ابزارهای مانیتورینگ و شناسایی تهدیدات مانند Fail2Ban و OSSEC مؤثر باشد. این ابزارها میتوانند تلاشهای دسترسی غیرمجاز را شناسایی کرده و بهطور خودکار آیپیهای مهاجم را مسدود کنند.
پیکربندی Fail2Ban برای استفاده با TCP Wrappers
- نصب Fail2Ban:
sudo apt install fail2ban
- سپس میتوانید پیکربندیهای لازم را برای Fail2Ban انجام دهید تا در صورت تلاشهای مکرر برای دسترسی غیرمجاز، TCP Wrappers وارد عمل شده و دسترسیها را مسدود کند.
sudo nano /etc/fail2ban/jail.local
در فایل پیکربندی، بخشهای مربوط به سرویسهای مختلف مانند SSH را بهصورت زیر تنظیم کنید:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
- برای راهاندازی مجدد Fail2Ban:
sudo systemctl restart fail2ban
این پیکربندی باعث میشود که تلاشهای ناموفق برای دسترسی به SSH بعد از تعداد مشخصی تلاش، بهطور خودکار مسدود شوند.
جمعبندی
ترکیب TCP Wrappers با ابزارهای امنیتی دیگر مانند iptables، firewalld، SELinux و Fail2Ban میتواند لایههای اضافی امنیتی را برای شبکه فراهم کند. این ابزارها هرکدام نقش خاص خود را دارند و در کنار یکدیگر میتوانند امنیت سیستم را به طور چشمگیری افزایش دهند. TCP Wrappers کنترل دسترسی به سرویسها را در سطح شبکه فراهم میکند، در حالی که ابزارهایی مانند iptables و firewalld به کنترل ترافیک ورودی و خروجی کمک میکنند و SELinux امنیت سیستم را با کنترل دقیق دسترسی به منابع بهبود میبخشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”کاربرد در مقابله با حملات brute force و سوءاستفاده از سرویسها” subtitle=”توضیحات کامل”]حملات Brute Force یکی از رایجترین و مؤثرترین روشها برای دسترسی غیرمجاز به سیستمها و سرویسها هستند. در این حملات، مهاجم از تلاشهای متعدد برای حدس زدن پسورد یا کلمه عبور استفاده میکند تا بتواند به سرویسهای حساس مانند SSH یا FTP دسترسی پیدا کند. از طرفی، سوءاستفاده از سرویسها نیز شامل بهرهبرداری از آسیبپذیریها و ضعفهای موجود در پیکربندی سرویسها برای دستیابی به سیستم است.
یکی از روشهای مؤثر برای مقابله با این تهدیدات، استفاده از ابزارهایی مانند TCP Wrappers است. این ابزار میتواند بهطور مؤثری دسترسی به سرویسها را محدود کرده و از سوءاستفاده و حملات Brute Force جلوگیری کند.
۱. استفاده از TCP Wrappers برای محدود کردن دسترسی به سرویسها
TCP Wrappers به شما این امکان را میدهد که دسترسی به سرویسهای مختلف مانند SSH را تنها برای آدرسهای IP خاص یا دامنههای مشخص محدود کنید. این روش بهویژه در برابر حملات Brute Force مؤثر است، زیرا مهاجم برای انجام حملات باید از آدرسهای IP مختلف استفاده کند و این کار باعث ایجاد محدودیتهای مهمی میشود.
پیکربندی TCP Wrappers برای محدود کردن دسترسی به SSH
- فایل پیکربندی TCP Wrappers، یعنی
/etc/hosts.allowو/etc/hosts.deny، را ویرایش کنید تا دسترسی به سرویسهای حساس مانند SSH فقط از آدرسهای IP مجاز انجام شود. - برای باز کردن دسترسی به SSH از آدرسهای IP خاص در فایل
/etc/hosts.allow:
sudo nano /etc/hosts.allow
سطر زیر را اضافه کنید:
sshd: 192.168.1.100
این دستور باعث میشود که فقط آدرس IP 192.168.1.100 بتواند به SSH دسترسی داشته باشد.
- سپس، برای مسدود کردن دسترسی به SSH از سایر آدرسها، فایل
/etc/hosts.denyرا ویرایش کنید:
sudo nano /etc/hosts.deny
سطر زیر را اضافه کنید:
sshd: ALL
این پیکربندی بهطور مؤثری دسترسی به SSH را برای همه آدرسها مسدود میکند، مگر اینکه در فایل /etc/hosts.allow اجازه داده شده باشد.
۲. جلوگیری از حملات Brute Force با استفاده از Fail2Ban و TCP Wrappers
Fail2Ban ابزاری است که میتواند تلاشهای ناموفق برای ورود به سیستم را شناسایی کند و پس از تعداد معینی تلاش، IP مهاجم را مسدود کند. ترکیب Fail2Ban با TCP Wrappers میتواند امنیت بیشتری برای مقابله با حملات Brute Force فراهم کند.
پیکربندی Fail2Ban برای مسدود کردن حملات Brute Force
- ابتدا Fail2Ban را نصب کنید:
sudo apt install fail2ban
- پیکربندی Fail2Ban را برای سرویس SSH انجام دهید. برای این کار، فایل پیکربندی
/etc/fail2ban/jail.localرا ویرایش کنید:
sudo nano /etc/fail2ban/jail.local
- بخش مربوط به SSH را بهصورت زیر تنظیم کنید:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
این پیکربندی باعث میشود که بعد از ۵ تلاش ناموفق برای ورود به SSH، IP مهاجم به مدت ۱۰ دقیقه مسدود شود.
- برای راهاندازی مجدد Fail2Ban، از دستور زیر استفاده کنید:
sudo systemctl restart fail2ban
این تنظیمات بهطور مؤثری از حملات Brute Force جلوگیری کرده و مهاجمان را از تلاشهای ناموفق برای ورود به سیستم باز میدارد.
۳. محدود کردن سرویسهای دیگر برای جلوگیری از سوءاستفاده
TCP Wrappers علاوه بر SSH، میتواند برای کنترل دسترسی به سایر سرویسهای حساس مانند FTP، HTTP و Telnet نیز استفاده شود. برای مثال، میتوانید دسترسی به سرویس FTP را فقط برای آدرسهای IP خاص محدود کنید تا از سوءاستفاده از این سرویسها جلوگیری شود.
پیکربندی TCP Wrappers برای محدود کردن دسترسی به FTP
- فایل
/etc/hosts.allowرا ویرایش کرده و آدرسهای IP مجاز برای دسترسی به سرویس FTP را اضافه کنید:
sudo nano /etc/hosts.allow
سطر زیر را اضافه کنید:
vsftpd: 192.168.1.100
- سپس برای مسدود کردن دسترسی به سرویس FTP از سایر آدرسها، فایل
/etc/hosts.denyرا ویرایش کنید:
sudo nano /etc/hosts.deny
سطر زیر را اضافه کنید:
vsftpd: ALL
این پیکربندی بهطور مؤثری دسترسی به FTP را فقط از آدرس IP 192.168.1.100 مجاز کرده و از سایر آدرسها مسدود میکند.
۴. استفاده از فایروالها برای مسدود کردن ترافیک مخرب
در کنار استفاده از TCP Wrappers، فایروالها مانند iptables یا firewalld نیز میتوانند برای مقابله با حملات Brute Force و سوءاستفاده از سرویسها مفید باشند. با مسدود کردن پورتهای ناخواسته و فیلتر کردن ترافیک ورودی، میتوان از بسیاری از حملات احتمالی جلوگیری کرد.
پیکربندی iptables برای مسدود کردن تلاشهای Brute Force
- برای مسدود کردن SSH برای آدرسهای IP مشکوک، از دستور زیر استفاده کنید:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.200 -j DROP
- برای ذخیره تغییرات، از دستور زیر استفاده کنید:
sudo service iptables save
این تنظیمات بهطور مؤثری دسترسی به SSH را از آدرس IP 192.168.1.200 مسدود میکند و از تلاشهای Brute Force جلوگیری میکند.
جمعبندی
ترکیب TCP Wrappers با ابزارهای امنیتی دیگر مانند Fail2Ban و iptables میتواند یک راهکار مؤثر برای مقابله با حملات Brute Force و سوءاستفاده از سرویسها فراهم کند. با محدود کردن دسترسی به سرویسهای حساس و شناسایی و مسدود کردن تلاشهای ناموفق، میتوان امنیت شبکه را بهطور قابلتوجهی افزایش داد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. ساختار کلی TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نحوه تعامل با daemonهای مختلف” subtitle=”توضیحات کامل”]TCP Wrappers یک ابزار ساده و کارآمد برای کنترل دسترسی به سرویسهای شبکهای در سیستمهای لینوکسی است. این ابزار با بررسی دسترسیهای ورودی و تطبیق آنها با قواعد تعریفشده در فایلهای پیکربندی، به شما امکان میدهد که دسترسی به سرویسهای مختلف را کنترل کنید. TCP Wrappers بر اساس یک مدل ساده با استفاده از دو فایل اصلی برای کنترل دسترسی عمل میکند:
- /etc/hosts.allow
- /etc/hosts.deny
این دو فایل نقش اصلی را در تعیین دسترسیها ایفا میکنند. همچنین، TCP Wrappers از فیلتر کردن بر اساس IP، نام دامنه و سایر پارامترها پشتیبانی میکند.
نحوه تعامل با daemonهای مختلف
TCP Wrappers با بسیاری از daemonهای شبکهای (خدماتی که به درخواستهای شبکه پاسخ میدهند) کار میکند. این خدمات یا daemons معمولاً درخواستهای شبکه را میپذیرند و پردازش میکنند. بهطور مثال، سرویسهای SSH، FTP، Telnet و HTTP معمولاً میتوانند توسط TCP Wrappers کنترل شوند.
در زیر نحوه تعامل TCP Wrappers با daemonهای مختلف و نحوه استفاده از این ابزار برای محدود کردن دسترسی به این سرویسها توضیح داده شده است:
۱. نحوه تعامل با SSH (Secure Shell)
در سیستمهای لینوکسی، SSH یکی از سرویسهای پرکاربرد برای دسترسی از راه دور به سرور است. شما میتوانید دسترسی به SSH را با استفاده از TCP Wrappers محدود کنید.
برای کنترل دسترسی به SSH، میتوانید فایلهای /etc/hosts.allow و /etc/hosts.deny را پیکربندی کنید.
- در فایل /etc/hosts.allow، میتوانید اجازه دهید تا فقط آدرسهای IP خاص به SSH دسترسی داشته باشند:
sshd: 192.168.1.100
این تنظیمات باعث میشود که تنها دستگاه با IP 192.168.1.100 مجاز به استفاده از SSH باشد.
- در فایل /etc/hosts.deny، شما میتوانید دسترسی به SSH را از دیگر دستگاهها مسدود کنید:
sshd: ALL
این پیکربندی باعث میشود که تمام آدرسهای IP بهجز آنهایی که در فایل /etc/hosts.allow ذکر شدهاند، از دسترسی به SSH مسدود شوند.
۲. نحوه تعامل با FTP (File Transfer Protocol)
برای محدود کردن دسترسی به FTP نیز میتوانید از TCP Wrappers استفاده کنید. بهطور مشابه، فایلهای /etc/hosts.allow و /etc/hosts.deny برای این سرویس نیز کاربرد دارند.
- در فایل /etc/hosts.allow، شما میتوانید دسترسی به FTP را از یک آدرس IP خاص مجاز کنید:
vsftpd: 192.168.1.100
- در فایل /etc/hosts.deny، میتوانید دسترسی به FTP را از دیگر آدرسها مسدود کنید:
vsftpd: ALL
این پیکربندی باعث میشود که فقط آدرس IP 192.168.1.100 اجازه دسترسی به FTP را داشته باشد.
۳. نحوه تعامل با Telnet
سرویس Telnet معمولاً بهطور امنتری نسبت به SSH استفاده نمیشود، اما در برخی موارد ممکن است بهطور موقت برای مدیریت از راه دور به کار رود. محدود کردن دسترسی به Telnet نیز مشابه روشهای بالا است.
- در فایل /etc/hosts.allow میتوانید دسترسی به Telnet را از یک آدرس IP خاص مجاز کنید:
telnetd: 192.168.1.100
- و در فایل /etc/hosts.deny، برای مسدود کردن دسترسی از دیگر آدرسها میتوانید دستور زیر را اضافه کنید:
telnetd: ALL
۴. نحوه تعامل با HTTP (Hypertext Transfer Protocol)
در برخی موارد، ممکن است بخواهید دسترسی به سرویسهای HTTP یا HTTPS را نیز محدود کنید. برای این کار، میتوانید تنظیمات مشابهی را در فایلهای /etc/hosts.allow و /etc/hosts.deny برای سرویسهای وبسایت خود اعمال کنید.
- برای مجاز کردن دسترسی به HTTP از یک آدرس IP خاص:
httpd: 192.168.1.100
- برای مسدود کردن دسترسی به HTTP از دیگر آدرسها:
httpd: ALL
۵. نحوه تعامل با سایر Daemonها
علاوه بر سرویسهای فوق، TCP Wrappers با بسیاری از دیگر daemons شبکهای نیز تعامل دارد. بهعنوان مثال، سرویسهایی مانند smtp (برای ارسال ایمیل)، pop3 (برای دریافت ایمیل) و imap (برای مدیریت ایمیل) میتوانند از TCP Wrappers استفاده کنند.
برای کنترل دسترسی به این سرویسها بهصورت مشابه با روشهای قبلی عمل میکنید:
- برای مجاز کردن دسترسی به یک سرویس خاص:
smtp: 192.168.1.100
- برای مسدود کردن دسترسی به آن سرویس از سایر آدرسها:
smtp: ALL
جمع بندی
TCP Wrappers ابزاری قدرتمند برای کنترل دسترسی به سرویسهای شبکهای است که با بسیاری از daemons شبکهای از جمله SSH، FTP، Telnet و HTTP کار میکند. با استفاده از فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny، شما میتوانید دسترسی به سرویسهای مختلف را براساس آدرسهای IP، دامنهها یا نامها محدود کنید. این ابزار بهویژه برای مقابله با تهدیدات امنیتی و کنترل دسترسی به سرویسهای حساس مفید است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”وابستگی به libwrap و تأثیر آن در عملکرد” subtitle=”توضیحات کامل”]libwrap یک کتابخانه است که توسط TCP Wrappers استفاده میشود و برای مدیریت دسترسی به سرویسهای شبکهای بر اساس آدرسهای IP، نام دامنه و سایر فیلترها عمل میکند. این کتابخانه بهطور خاص برای کنترل دسترسی به daemons شبکهای طراحی شده است، بهویژه در سیستمهای لینوکسی. استفاده از libwrap و TCP Wrappers میتواند تأثیرات مختلفی بر عملکرد سیستم و سرویسهای شبکهای داشته باشد.
وابستگی به libwrap
هنگامی که یک سرویس شبکهای مانند SSH، FTP یا HTTP با TCP Wrappers تنظیم میشود، این سرویس نیاز به اتصال به کتابخانه libwrap دارد تا فرآیند کنترل دسترسی را انجام دهد. به عبارت دیگر، libwrap این مسئولیت را دارد که بررسی کند آیا درخواستهای ورودی به سیستم مجاز هستند یا خیر.
هر زمانی که یک درخواست ورودی به یک سرویس میرسد که از libwrap استفاده میکند، درخواست ابتدا به این کتابخانه ارسال میشود تا بررسی شود که آیا این درخواست با تنظیمات hosts.allow یا hosts.deny تطبیق دارد یا نه. اگر تطابقی یافت شود، درخواست اجازه یا عدم اجازه برای ادامه اتصال به سرویس را دریافت میکند. این فرآیند نیاز به پردازش اضافی دارد که میتواند بر عملکرد سیستم تأثیر بگذارد.
تأثیر بر عملکرد سیستم
در حالی که libwrap بهطور عمومی ابزاری سبک و کارآمد است، استفاده از آن میتواند تأثیرات زیر را بر عملکرد سیستم داشته باشد:
- افزایش زمان تأخیر در پردازش درخواستها:
- وقتی یک سرویس شبکهای از TCP Wrappers استفاده میکند، هر درخواست ورودی باید ابتدا به کتابخانه libwrap ارسال شود تا بررسیهای دسترسی انجام شود. این فرآیند میتواند باعث تاخیر جزئی در پردازش درخواستها شود.
- در سیستمهایی که ترافیک شبکه بالا است یا درخواستهای زیادی برای دسترسی به سرویسها وجود دارد، این تأخیر میتواند محسوس باشد.
- مصرف منابع سیستم:
- libwrap برای هر درخواست ورودی که به آن ارسال میشود، باید منابعی را مصرف کند. این منابع شامل پردازش CPU و حافظه است. در مواقعی که حجم درخواستها زیاد باشد، ممکن است این منابع به میزان قابل توجهی مصرف شوند و باعث کاهش کارایی کلی سیستم شوند.
- افزایش زمان بارگذاری daemonها:
- سرویسهایی که از libwrap استفاده میکنند ممکن است هنگام راهاندازی کمی بیشتر از سرویسهای بدون این کتابخانه بارگذاری شوند. این بهویژه زمانی قابل توجه است که تعداد زیادی سرویس نیاز به بررسی دسترسی داشته باشند.
- عدم تأثیر بر عملکرد در سیستمهای کمترافیک:
- در محیطهای با ترافیک کم و سیستمهایی که نیاز به کنترل دسترسیهای پیچیده ندارند، تأثیر استفاده از libwrap و TCP Wrappers در عملکرد ممکن است ناچیز باشد. در این حالت، مزایای امنیتی آن میتواند از تأثیرات جزئی در عملکرد پیشی بگیرد.
- امنیت بهتر در مقابل تهدیدات:
- با وجود تأثیرات احتمالی بر عملکرد، استفاده از libwrap میتواند مزایای امنیتی بزرگی برای سیستم به ارمغان بیاورد. محدود کردن دسترسی به سرویسها از طریق TCP Wrappers میتواند خطر حملات غیرمجاز و دسترسی به منابع سیستم را کاهش دهد.
چگونه تأثیرات منفی را کاهش دهیم؟
اگر از TCP Wrappers و libwrap استفاده میکنید و نگران تأثیر آن بر عملکرد هستید، میتوانید چندین روش برای کاهش اثرات منفی در نظر بگیرید:
- محدود کردن تعداد سرویسهای استفادهکننده از TCP Wrappers:
- فقط سرویسهایی که نیاز به کنترل دسترسی دقیق دارند را از TCP Wrappers استفاده کنید و برای سرویسهای دیگر که نیازی به محدودیت دسترسی ندارند، این ابزار را غیرفعال کنید.
- استفاده از قوانین فایروال:
- بهجای استفاده از TCP Wrappers برای کنترل دسترسی به همه سرویسها، میتوانید از firewall ها (مانند iptables یا firewalld) برای اعمال قوانین دسترسی استفاده کنید. این روش میتواند عملکرد بهتری داشته باشد و فشار کمتری به سیستم وارد کند.
- بهینهسازی فایلهای پیکربندی:
- با بهینهسازی فایلهای /etc/hosts.allow و /etc/hosts.deny میتوانید از درخواستهای اضافی و بررسیهای غیرضروری جلوگیری کنید. بهعنوان مثال، برای دسترسیهای پرتکرار از قواعد دقیقتری استفاده کنید.
- نظارت و بررسی بار سیستم:
- بهطور مداوم عملکرد سیستم را بررسی کنید تا ببینید که آیا استفاده از libwrap و TCP Wrappers تأثیر منفی بر عملکرد دارد یا خیر. در صورت نیاز، میتوانید تنظیمات را تغییر داده یا راهکارهای جایگزین را پیادهسازی کنید.
جمعبندی
استفاده از libwrap و TCP Wrappers در کنترل دسترسی به سرویسهای شبکهای میتواند مزایای امنیتی زیادی را به ارمغان بیاورد، اما ممکن است تأثیراتی بر عملکرد سیستم داشته باشد. این تأثیرات بهویژه در سیستمهای با ترافیک بالا محسوستر خواهند بود. در عین حال، با بهینهسازی پیکربندیها و استفاده از راهحلهای جایگزین مانند فایروالها، میتوان این تأثیرات را کاهش داد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”محدودیتهای TCP Wrappers در مقایسه با فایروالهای مدرن” subtitle=”توضیحات کامل”]TCP Wrappers ابزار امنیتی قدیمی است که بهطور خاص برای کنترل دسترسی به سرویسهای شبکهای طراحی شده است. این ابزار با استفاده از فایلهای پیکربندی مانند hosts.allow و hosts.deny، درخواستهای ورودی به سرویسها را بررسی و اجازه یا عدم اجازه به اتصال را صادر میکند. در حالی که این ابزار همچنان در برخی سیستمها مورد استفاده قرار میگیرد، محدودیتهایی دارد که آن را در مقایسه با فایروالهای مدرن، مانند iptables، firewalld و nftables، محدود میکند.
محدودیتهای TCP Wrappers
- کنترل محدود فقط بر دسترسی به سرویسها
- TCP Wrappers تنها میتواند دسترسی به daemons خاصی را کنترل کند. این ابزار تنها قادر به محدود کردن اتصال به سرویسهای شبکهای است که بهطور صریح از آن استفاده میکنند.
- این بدان معناست که TCP Wrappers نمیتواند برای محدود کردن دسترسی به سیستم بهطور کلی یا بر روی ترافیکهای شبکهای خارج از سرویسهای مشخص کاربرد داشته باشد.
- پیکربندی دستی و مقیاسپذیری محدود
- پیکربندی TCP Wrappers در فایلهای hosts.allow و hosts.deny انجام میشود که نیاز به ویرایش دستی دارند. برای سازمانهایی که نیاز به مدیریت تعداد زیادی سرویس یا دستگاه دارند، این فرآیند میتواند زمانبر و مستعد اشتباه باشد.
- در مقایسه با فایروالهای مدرن، که از ابزارهایی مانند firewalld یا iptables برای اعمال قوانین بهصورت خودکار و بدون نیاز به تغییرات دستی در هر سرویس استفاده میکنند، TCP Wrappers کمتر مقیاسپذیر است.
- عدم بررسی بستههای داده و ترافیک
- TCP Wrappers نمیتواند بستههای داده یا محتوای ترافیک شبکهای را بررسی کند. این ابزار تنها به آدرسهای IP، نامهای دامنه و اطلاعات متا در مورد اتصالها توجه میکند.
- فایروالهای مدرن، مانند iptables یا nftables، میتوانند بستههای شبکه را بررسی کرده و با استفاده از فیلترهای پیچیده، به طور کامل ترافیک شبکه را مدیریت کنند.
- پشتیبانی ضعیف از پروتکلهای جدید و ویژگیهای پیشرفته
- TCP Wrappers عمدتاً برای پروتکلهای قدیمی مانند SSH و FTP طراحی شده است و پشتیبانی کمتری از پروتکلهای جدید یا ویژگیهای پیشرفته مانند IPv6 یا QoS دارد.
- فایروالهای مدرن بهطور کامل از پروتکلهای جدید و ویژگیهای پیشرفته پشتیبانی میکنند و میتوانند بستههای IPv6 را فیلتر کرده و انواع مختلفی از ترافیک شبکه را بر اساس اولویتها و سیاستهای امنیتی اعمال کنند.
- عدم توانایی در مقابله با حملات DDoS و تهدیدات پیچیده
- TCP Wrappers قادر به جلوگیری از حملات Distributed Denial of Service (DDoS) یا سایر تهدیدات پیچیده نیست. این ابزار تنها برای محدود کردن دسترسی بر اساس آدرسهای IP یا دامنهها طراحی شده است.
- فایروالهای مدرن میتوانند بستهها را بر اساس پروتکل، پورت، آدرسهای IP و حتی بارگذاری محتوا فیلتر کنند و قابلیتهایی برای جلوگیری از حملات DDoS دارند.
- محدودیت در ثبت و گزارشگیری
- گزارشگیری در TCP Wrappers محدود است و بیشتر بر روی ذخیره اطلاعات ورودی به hosts.allow و hosts.deny متمرکز است. این محدودیت ممکن است نظارت دقیق بر ترافیک و فعالیتهای مشکوک را دشوار کند.
- فایروالهای مدرن معمولاً ویژگیهای گزارشگیری و نظارت پیشرفتهای دارند که به مدیران سیستم کمک میکند تا ترافیک شبکه را تجزیه و تحلیل کرده و حملات را شناسایی کنند.
مقایسه با فایروالهای مدرن
در حالی که TCP Wrappers همچنان یک ابزار مفید برای مدیریت دسترسی به سرویسها است، فایروالهای مدرن از ویژگیهای پیشرفتهتری برخوردارند که میتوانند امنیت شبکه را به سطح بالاتری برسانند. برخی از ویژگیهای فایروالهای مدرن که TCP Wrappers قادر به ارائه آنها نیست عبارتند از:
- مدیریت پیچیده ترافیک شبکه
- فایروالهای مدرن مانند iptables و nftables توانایی بررسی و فیلتر کردن بستههای شبکه را دارند. این فایروالها میتوانند بهطور دقیق بستهها را بر اساس ویژگیهایی مانند آدرسهای IP، پروتکلها، پورتها و محتوا فیلتر کنند.
- این ویژگی به فایروالها اجازه میدهد که تهدیدات پیچیدهتری مانند DoS و DDoS را شناسایی و مسدود کنند.
- پشتیبانی از پروتکلهای پیشرفته
- فایروالهای مدرن از IPv6 و پروتکلهای پیچیدهتر بهطور کامل پشتیبانی میکنند و میتوانند از ویژگیهای پیشرفتهای مانند Quality of Service (QoS) و VPN برای مدیریت ترافیک شبکه استفاده کنند.
- این در حالی است که TCP Wrappers تنها برای کنترل دسترسی به سرویسهای خاص طراحی شده است و از ویژگیهای پیشرفته مانند IPv6 پشتیبانی نمیکند.
- قابلیت اتوماسیون و مدیریت متمرکز
- فایروالهای مدرن، بهویژه ابزارهایی مانند firewalld، از قوانین اتوماسیون پشتیبانی میکنند که میتوانند بهطور خودکار بر اساس ترافیک یا شرایط خاص، قوانین امنیتی را اعمال کنند.
- این در حالی است که برای TCP Wrappers نیاز به پیکربندی دستی و دخالت انسانی بیشتر است.
- پشتیبانی از عملکردهای پیشرفتهتر
- فایروالهای مدرن همچنین قادر به پشتیبانی از ویژگیهایی مانند Stateful Inspection هستند که به آنها اجازه میدهد تا وضعیت جلسات و اتصالها را پیگیری کنند. این ویژگی کمک میکند که فقط اتصالات معتبر و مورد تایید وارد شبکه شوند.
- TCP Wrappers به سادگی بررسیهایی ابتدایی برای تعیین اینکه آیا اتصال مجاز است یا خیر، انجام میدهد و از هیچ نوع نظارت پیچیدهتری پشتیبانی نمیکند.
جمعبندی
در حالی که TCP Wrappers یک ابزار مفید و ساده برای کنترل دسترسی به سرویسهای شبکهای است، فایروالهای مدرن ویژگیهای بیشتری را در اختیار دارند و میتوانند بهطور کاملتر و پیچیدهتری امنیت شبکه را مدیریت کنند. از جمله مزایای فایروالهای مدرن میتوان به پشتیبانی از پروتکلهای جدید، قابلیت فیلتر کردن دقیقتر بستهها، توانایی مقابله با حملات پیچیده، و امکان اتوماسیون اشاره کرد. بنابراین، برای سازمانها و سیستمهایی که نیاز به امنیت پیشرفته و مقیاسپذیری دارند، استفاده از فایروالهای مدرن بهطور چشمگیری بهتر از استفاده از TCP Wrappers است.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. فایلهای اصلی: hosts.allow و hosts.deny”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی دو فایل اصلی تنظیمات در TCP Wrappers” subtitle=”توضیحات کامل”]در TCP Wrappers، دو فایل اصلی برای تنظیم دسترسی به سرویسهای شبکهای وجود دارد: hosts.allow و hosts.deny. این دو فایل مسئول کنترل دسترسی به سرویسهای مختلف از طریق آدرسهای IP یا نامهای دامنه هستند. این فایلها بهصورت جداگانه و بر اساس ترتیب پردازش آنها، اجازه یا عدم اجازه دسترسی به سرویسها را مشخص میکنند.
معرفی دو فایل اصلی تنظیمات
- hosts.allow:
- فایل hosts.allow بهطور مشخص تعیین میکند که چه میزبانهایی (hosts) مجاز به دسترسی به سرویسهای خاص باشند. زمانی که یک اتصال جدید وارد سیستم میشود، TCP Wrappers ابتدا این فایل را بررسی میکند تا ببیند که آیا آدرس IP یا نام دامنه درخواستکننده در لیست مجازها قرار دارد یا خیر.
- اگر درخواست ورودی در این فایل موجود باشد و شرایط آن درست باشد، دسترسی به سرویس بهطور مجاز برقرار خواهد شد.
- hosts.deny:
- فایل hosts.deny برعکس hosts.allow عمل میکند. این فایل تعیین میکند که چه میزبانهایی (hosts) اجازه دسترسی به سرویسها را نداشته باشند. اگر درخواستی از یک میزبان مشخص در این فایل پیدا شود و شرایط آن درست باشد، درخواست ورودی مسدود خواهد شد.
- این فایل بهطور معمول در کنار hosts.allow برای ایجاد قوانین امنیتی قویتر و برای محدود کردن دسترسی به سیستمها استفاده میشود.
نحوه پردازش درخواستها بر اساس ترتیب بررسی این فایلها
TCP Wrappers هنگام دریافت درخواستهای ورودی، ابتدا فایل hosts.allow را بررسی میکند و سپس فایل hosts.deny را برای تصمیمگیری نهایی بررسی میکند. ترتیب پردازش بهصورت زیر است:
- hosts.allow بررسی میشود:
- اگر درخواست ورودی مطابق با یکی از قوانین در hosts.allow باشد، بهطور مستقیم مجاز به دسترسی خواهد بود.
- TCP Wrappers به محض پیدا کردن یک تطابق مجاز در این فایل، دسترسی را تأیید کرده و دیگر به hosts.deny نمیرود.
- hosts.deny بررسی میشود:
- اگر درخواست ورودی در فایل hosts.allow پیدا نشد، سیستم به سراغ فایل hosts.deny میرود.
- اگر آدرس IP یا نام دامنه درخواستکننده در این فایل موجود باشد، درخواست مسدود خواهد شد.
- مورد عدم وجود هر دو فایل:
- اگر هیچکدام از فایلهای hosts.allow و hosts.deny وجود نداشته باشند یا خالی باشند، TCP Wrappers بهطور پیشفرض به هیچکس اجازه دسترسی نخواهد داد.
- بنابراین، در صورت عدم وجود هر دو فایل، هیچکسی نمیتواند به سرویسها متصل شود.
تأثیر وجود یا عدم وجود هر کدام از این فایلها در تصمیمگیری دسترسی
- وجود فایل hosts.allow:
- اگر فقط فایل hosts.allow وجود داشته باشد و فایل hosts.deny موجود نباشد، هر درخواستی که در hosts.allow مشخص شده باشد، مجاز به دسترسی خواهد بود و تمام درخواستهای دیگر بدون مسدود شدن پذیرفته خواهند شد.
- به این معنی که دسترسی به سرویسها بهطور مشخص محدود به آدرسهای مشخص شده در hosts.allow خواهد بود.
- وجود فایل hosts.deny:
- اگر فقط فایل hosts.deny وجود داشته باشد و فایل hosts.allow غیرفعال باشد، تمام درخواستها بهطور پیشفرض رد خواهند شد، مگر آنکه در hosts.deny مجوز خاصی داده شده باشد.
- این فایل برای مسدود کردن دسترسی به سرویسها از آدرسهای مشخص بسیار مفید است.
- وجود هر دو فایل:
- زمانی که هر دو فایل hosts.allow و hosts.deny وجود داشته باشند، TCP Wrappers اول فایل hosts.allow را بررسی کرده و اگر درخواست مجاز باشد، دسترسی تأیید خواهد شد. در صورتی که در این فایل چیزی پیدا نشود، فایل hosts.deny بررسی خواهد شد.
- در صورتی که آدرس IP یا دامنه در hosts.deny قرار داشته باشد، دسترسی مسدود خواهد شد.
مثالهایی از پیکربندی فایلهای hosts.allow و hosts.deny
- محتویات فایل hosts.allow:
sshd: 192.168.1.0/24 vsftpd: .example.comاین پیکربندی نشان میدهد که تنها میزبانهایی که آدرس IP آنها از شبکه 192.168.1.0/24 است میتوانند از سرویس sshd (SSH) استفاده کنند. همچنین، تنها میزبانهایی با دامنه example.com میتوانند به سرویس vsftpd (FTP) دسترسی داشته باشند.
- محتویات فایل hosts.deny:
sshd: ALL vsftpd: ALLدر این پیکربندی، دسترسی به سرویسهای sshd و vsftpd برای تمام میزبانها مسدود شده است.
جمعبندی
وجود و ترتیب فایلهای hosts.allow و hosts.deny نقش کلیدی در تعیین دسترسی به سرویسهای شبکهای ایفا میکند. ابتدا فایل hosts.allow بررسی میشود و در صورت یافتن تطابق، دسترسی تأیید میشود. اگر در این فایل تطابقی یافت نشود، فایل hosts.deny بررسی خواهد شد. در صورت عدم وجود هر دو فایل، دسترسی به سرویسها بهطور پیشفرض مسدود میشود. این ویژگی به TCP Wrappers انعطافپذیری زیادی در مدیریت دسترسی به سرویسهای مختلف بر اساس آدرس IP و نام دامنه میدهد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. نحوه عملکرد در فرآیند دسترسی به سرویسها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مراحل پردازش یک درخواست اتصال به سرویس تحت پوشش TCP Wrappers” subtitle=”توضیحات کامل”]TCP Wrappers بهعنوان یک ابزار امنیتی برای محدود کردن دسترسی به سرویسهای شبکهای در سیستمهای مبتنی بر لینوکس عمل میکند. این ابزار درخواستهای ورودی به سرویسها را بررسی کرده و تصمیم میگیرد که آیا دسترسی به سرویس مورد نظر مجاز باشد یا خیر. TCP Wrappers بهطور کلی از دو فایل اصلی برای انجام این کار استفاده میکند: hosts.allow و hosts.deny.
مراحل پردازش یک درخواست اتصال به سرویس تحت پوشش TCP Wrappers
فرآیند پردازش یک درخواست اتصال به سرویس تحت پوشش TCP Wrappers به چند مرحله تقسیم میشود. این مراحل در ادامه توضیح داده شده است:
- دریافت درخواست اتصال:
- زمانی که یک اتصال به سرویس مورد نظر (مثل sshd، vsftpd یا هر سرویس دیگری که توسط TCP Wrappers محافظت میشود) برقرار میشود، درخواست اتصال از یک میزبان خارجی به سیستم شما ارسال میشود.
- این درخواست معمولاً شامل آدرس IP یا نام دامنه میزبان درخواستدهنده است.
- بررسی فایل hosts.allow:
- پس از دریافت درخواست، TCP Wrappers ابتدا فایل hosts.allow را بررسی میکند.
- TCP Wrappers بهطور دقیق بررسی میکند که آیا آدرس IP یا نام دامنه میزبان درخواستکننده در این فایل و مطابق با شرایط تعیینشده موجود است یا خیر.
- اگر میزبان درخواستدهنده در hosts.allow موجود باشد، درخواست بهطور خودکار مجاز و دسترسی برقرار میشود. در این مرحله، پردازش به پایان میرسد و هیچگونه بررسی دیگری صورت نمیگیرد.
مثال پیکربندی در فایل hosts.allow:
sshd: 192.168.1.0/24 vsftpd: .example.comدر این مثال، آدرسهای IP از شبکه 192.168.1.0/24 به sshd (SSH) دسترسی دارند و فقط میزبانهایی که دامنهشان به example.com ختم میشود، به سرویس vsftpd (FTP) دسترسی خواهند داشت.
- بررسی فایل hosts.deny:
- اگر میزبان درخواستدهنده در فایل hosts.allow پیدا نشد یا هیچ تطابقی نداشت، TCP Wrappers به بررسی فایل hosts.deny میپردازد.
- در این مرحله، بررسی میشود که آیا آدرس IP یا نام دامنه میزبان درخواستکننده در hosts.deny قرار دارد یا خیر.
- اگر میزبان درخواستدهنده در فایل hosts.deny وجود داشته باشد، دسترسی به سرویس برای این میزبان مسدود میشود.
مثال پیکربندی در فایل hosts.deny:
sshd: ALL vsftpd: ALLدر این مثال، تمام درخواستهای اتصال به سرویسهای sshd و vsftpd از تمام میزبانها مسدود شدهاند.
- پردازش پیشفرض (اگر هیچکدام از فایلها موجود نباشند):
- اگر هیچکدام از فایلهای hosts.allow و hosts.deny وجود نداشته باشند یا خالی باشند، TCP Wrappers دسترسی به تمام سرویسها را مسدود میکند. به این معنی که هیچ میزبان خارجی قادر به دسترسی به سرویسها نخواهد بود مگر آنکه فایلها بهطور دستی پیکربندی شوند.
- اعمال تغییرات (در صورت نیاز):
- پس از بررسیهای لازم و تصمیمگیری برای مجاز یا مسدود کردن درخواست اتصال، TCP Wrappers نتیجه را برای سرویسگیرنده ارسال میکند.
- در صورت تأیید دسترسی، ارتباط برقرار میشود و فرآیند اتصال انجام میگیرد.
- در صورت مسدود شدن دسترسی، اتصال رد میشود و پیامی مبنی بر عدم دسترسی به درخواستدهنده ارسال میشود.
جمعبندی
فرآیند پردازش یک درخواست اتصال به سرویس تحت پوشش TCP Wrappers بهصورت گامبهگام انجام میشود. ابتدا فایل hosts.allow بررسی میشود تا در صورتی که میزبان درخواستدهنده مجاز باشد، دسترسی تأیید شود. اگر در این فایل تطابقی پیدا نشد، فایل hosts.deny بررسی میشود تا در صورت وجود میزبان در این فایل، دسترسی مسدود شود. اگر هیچکدام از این فایلها وجود نداشته باشند یا تطابقی پیدا نشود، TCP Wrappers دسترسی را مسدود خواهد کرد. این ساختار به TCP Wrappers این امکان را میدهد که بهصورت مؤثر و دقیق دسترسی به سرویسها را مدیریت کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی اولیه در hosts.allow و hosts.deny” subtitle=”توضیحات کامل”]TCP Wrappers بهوسیلهی دو فایل اصلی hosts.allow و hosts.deny دسترسی به سرویسهای شبکهای را کنترل میکند. این دو فایل، که معمولاً در مسیر /etc/ قرار دارند، بهطور خاص برای بررسی و تعیین محدودیتها در دسترسی به سرویسها استفاده میشوند. در این قسمت، بررسی اولیه این دو فایل و نحوه کارکرد آنها ارائه میشود.
1. فایل hosts.allow
فایل hosts.allow بهطور خاص برای مجاز کردن دسترسی به سرویسهای شبکهای استفاده میشود. این فایل بهعنوان یک لیست سفید عمل میکند که در آن شما میتوانید مشخص کنید که کدام میزبانها یا آدرسهای IP مجاز به اتصال به سرویسهای مختلف باشند. اگر یک درخواست اتصال از یک میزبان به سیستم شما برسد و این میزبان در فایل hosts.allow مشخص شده باشد، دسترسی بهطور خودکار مجاز میشود.
ساختار فایل hosts.allow:
فایل hosts.allow معمولاً بهصورت زیر نوشته میشود:
service: hosts
- service: نام سرویس یا برنامهای است که باید دسترسی آن تنظیم شود، مانند sshd (SSH)، vsftpd (FTP) و غیره.
- hosts: آدرسهای IP یا نام دامنههایی هستند که اجازه دارند به سرویس متصل شوند. میتوان از عبارات خاص مانند
ALL(برای تمام میزبانها) یا شبکههای خاصی استفاده کرد.
مثال:
sshd: 192.168.1.0/24
vsftpd: .example.com
در این مثال:
- فقط میزبانهایی که آدرس IP آنها در محدوده 192.168.1.0/24 قرار دارد، به sshd دسترسی دارند.
- فقط میزبانهایی که دامنه آنها به example.com ختم میشود، به vsftpd دسترسی خواهند داشت.
2. فایل hosts.deny
فایل hosts.deny برای مسدود کردن دسترسی به سرویسهای شبکهای استفاده میشود. این فایل بهعنوان لیست سیاه عمل میکند که در آن میتوان میزبانهایی را که باید از دسترسی به سرویسها منع شوند، مشخص کرد. اگر یک درخواست اتصال از میزبان به سیستم برسد و این میزبان در فایل hosts.deny ذکر شده باشد، دسترسی بهطور خودکار رد میشود.
ساختار فایل hosts.deny:
فایل hosts.deny معمولاً بهصورت زیر نوشته میشود:
service: hosts
- service: نام سرویس یا برنامهای است که باید دسترسی آن مسدود شود.
- hosts: آدرسهای IP یا نام دامنههایی هستند که دسترسی به سرویسها از سوی آنها مسدود میشود.
مثال:
sshd: ALL
vsftpd: ALL
در این مثال:
- تمام میزبانها از دسترسی به sshd (SSH) مسدود شدهاند.
- تمام میزبانها از دسترسی به vsftpd (FTP) مسدود شدهاند.
3. ترتیب بررسی فایلها
هنگام پردازش یک درخواست اتصال به سرویس، TCP Wrappers ابتدا فایل hosts.allow را بررسی میکند. اگر آدرس IP یا نام دامنه میزبان درخواستدهنده در این فایل باشد، دسترسی بهطور خودکار مجاز میشود و هیچ بررسی دیگری صورت نمیگیرد.
اگر درخواست در فایل hosts.allow پیدا نشد، TCP Wrappers فایل hosts.deny را بررسی میکند. اگر میزبان درخواستدهنده در فایل hosts.deny وجود داشته باشد، دسترسی رد خواهد شد.
اگر هیچکدام از این فایلها وجود نداشته باشند یا خالی باشند، TCP Wrappers بهطور پیشفرض دسترسی را مسدود میکند.
4. نحوه ویرایش و موقعیت فایلها
فایلهای hosts.allow و hosts.deny معمولاً در مسیر /etc/ قرار دارند. برای ویرایش این فایلها میتوانید از یک ویرایشگر متن استفاده کنید. بهعنوان مثال، برای ویرایش فایل hosts.allow از دستور زیر استفاده میشود:
sudo nano /etc/hosts.allow
و برای ویرایش فایل hosts.deny:
sudo nano /etc/hosts.deny
جمعبندی
- hosts.allow برای مجاز کردن دسترسی به سرویسها از سمت میزبانهای خاص استفاده میشود.
- hosts.deny برای مسدود کردن دسترسی به سرویسها از سمت میزبانهای خاص استفاده میشود.
- TCP Wrappers ابتدا فایل hosts.allow را بررسی میکند و در صورت عدم تطابق، فایل hosts.deny را بررسی میکند.
- در صورت عدم وجود یا خالی بودن این فایلها، TCP Wrappers دسترسی را مسدود میکند.
[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تعامل با DNS و مشکلات احتمالی در name resolution” subtitle=”توضیحات کامل”]در سیستمعاملهای لینوکس و دیگر سیستمهای مبتنی بر یونیکس، TCP Wrappers از قابلیتهای سیستم DNS (Domain Name System) برای شناسایی میزبانها (hosts) استفاده میکند. این ویژگی بهویژه در فرآیند تعیین دسترسی به سرویسها از طریق نام دامنهها یا آدرسهای IP اهمیت دارد. در این بخش، به نحوه تعامل TCP Wrappers با DNS و مشکلات احتمالی در فرآیند name resolution پرداخته میشود.
1. تعامل TCP Wrappers با DNS
TCP Wrappers برای شناسایی میزبانها و دسترسی به سرویسها از طریق دو فایل اصلی hosts.allow و hosts.deny استفاده میکند. این فایلها میتوانند شامل آدرسهای IP، نامهای میزبان و حتی دامنههای خاص باشند. در صورتی که نام میزبان بهطور مستقیم در این فایلها ذکر شده باشد، TCP Wrappers برای تطابق و شناسایی درخواستها از DNS استفاده میکند.
فرآیند name resolution در اینجا بهاینصورت عمل میکند:
- نام دامنه به آدرس IP تبدیل میشود: وقتی که یک نام دامنه (مثلاً
example.com) در فایلهای hosts.allow یا hosts.deny قرار دارد، سیستم از DNS resolver برای تبدیل نام دامنه به آدرس IP واقعی استفاده میکند. - آدرس IP مورد بررسی قرار میگیرد: پس از تبدیل نام دامنه به آدرس IP، TCP Wrappers این آدرس IP را با مقادیر موجود در فایلها مقایسه میکند و تصمیم میگیرد که آیا دسترسی به سرویس مجاز است یا خیر.
در این فرآیند، هرگونه مشکل در name resolution میتواند منجر به مشکل در تعیین دسترسی به سرویسها شود.
2. مشکلات احتمالی در name resolution
مشکلات مختلفی میتواند در فرآیند name resolution ایجاد شود که تأثیر مستقیمی بر عملکرد TCP Wrappers دارد. برخی از این مشکلات عبارتند از:
- خطا در پیکربندی DNS:
- اگر DNS resolver بهدرستی پیکربندی نشده باشد، تبدیل نام دامنه به آدرس IP ممکن است انجام نشود.
- برای بررسی این مشکل، میتوان از دستور
nslookupیاdigبرای بررسی صحت عملکرد DNS استفاده کرد.
مثال:
nslookup example.comاگر این دستور نتایج مناسبی را برنگرداند، نشاندهنده مشکل در تنظیمات DNS است.
- DNS Cache و مشکلات مربوط به آن:
- سیستمها معمولاً دارای کش DNS هستند که نتایج جستجوهای قبلی را ذخیره میکند. اگر این کش منقضی شود یا تغییراتی در DNS اعمال شود، ممکن است درخواستها به آدرسهای قدیمی یا نادرست هدایت شوند.
- برای پاکسازی کش DNS در سیستمهای لینوکسی میتوانید از دستور زیر استفاده کنید:
sudo systemd-resolve --flush-caches - خطا در تعریف نامها در فایلهای hosts.allow یا hosts.deny:
- در صورتی که نامهای دامنه در فایلهای hosts.allow یا hosts.deny بهدرستی وارد نشده باشند یا اشتباه نوشته شده باشند، TCP Wrappers قادر به شناسایی صحیح میزبانها نخواهد بود.
- برای جلوگیری از این مشکل، میتوان از دستور getent برای بررسی نامهای دامنه استفاده کرد:
getent hosts example.com - وجود فایروالهای میانه که درخواستهای DNS را مسدود میکنند:
- برخی از فایروالها ممکن است درخواستهای DNS را مسدود کنند که این مسأله میتواند باعث اختلال در فرآیند name resolution شود.
- بررسی پیکربندی فایروال و اطمینان از باز بودن پورت 53 برای UDP و TCP میتواند به رفع این مشکل کمک کند.
برای بررسی وضعیت پورتهای باز میتوانید از دستور netstat استفاده کنید:
sudo netstat -tuln | grep :53 - تنظیمات اشتباه در فایل
/etc/hosts:- گاهی اوقات مشکلات مربوط به name resolution ممکن است به دلیل پیکربندی نادرست فایل
/etc/hostsرخ دهند. این فایل برای حل مسائل DNS محلی و تعیین IP برای نامهای دامنه به کار میرود. - اگر فایل
/etc/hostsبهدرستی پیکربندی نشده باشد، درخواستها به میزبانهای موردنظر ممکن است بهدرستی مسیریابی نشوند.
مثال پیکربندی صحیح
/etc/hosts:127.0.0.1 localhost 192.168.1.10 example.com - گاهی اوقات مشکلات مربوط به name resolution ممکن است به دلیل پیکربندی نادرست فایل
3. تأثیر مشکلات name resolution بر TCP Wrappers
اگر مشکلاتی در فرآیند name resolution وجود داشته باشد، TCP Wrappers نمیتواند آدرس IP را بهدرستی شناسایی کند و این ممکن است منجر به مسدود شدن یا مجاز شدن دسترسی به سرویسها بهطور اشتباه شود. این مسأله بهویژه در مواقعی که سرویسها به نام دامنهها وابسته هستند، تأثیرگذار خواهد بود.
برای رفع مشکلات ممکن، توصیه میشود که:
- پیکربندی DNS resolver و /etc/hosts بهدقت بررسی شود.
- کش DNS بهطور منظم پاکسازی شود.
- از ابزارهایی نظیر nslookup، dig و getent برای بررسی صحت عملکرد DNS استفاده گردد.
جمعبندی
- TCP Wrappers از DNS برای پردازش نام دامنهها و تبدیل آنها به آدرس IP استفاده میکند.
- مشکلات در فرآیند name resolution میتواند منجر به اختلال در عملکرد TCP Wrappers و تعیین دسترسی به سرویسها شود.
- برای رفع مشکلات مربوط به DNS، پیکربندی صحیح DNS، کش DNS و فایلهای hosts.allow و hosts.deny باید بررسی شوند.
[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی چگونگی اعمال تغییرات بهصورت لحظهای بدون نیاز به راهاندازی مجدد سرویس” subtitle=”توضیحات کامل”]یکی از مزایای TCP Wrappers این است که تغییرات اعمالشده در فایلهای hosts.allow و hosts.deny بدون نیاز به راهاندازی مجدد سرویسهای مربوطه بلافاصله تأثیرگذار خواهند بود. این ویژگی بهویژه در محیطهای تولیدی که نمیتوان سرویسها را بهطور مکرر راهاندازی مجدد کرد، بسیار مفید است. در این بخش، به بررسی نحوه اعمال تغییرات بهصورت لحظهای در TCP Wrappers پرداخته میشود.
1. نحوه عملکرد بدون نیاز به راهاندازی مجدد سرویس
TCP Wrappers بهطور مستقیم با Deny/Allow files (یعنی hosts.allow و hosts.deny) تعامل دارد. این فایلها در زمان درخواست اتصال به سرویس، بررسی میشوند و نیازی به راهاندازی مجدد سرویس برای اعمال تغییرات در این فایلها وجود ندارد. دلیل این امر این است که TCP Wrappers در هر درخواست اتصال بهصورت زنده و لحظهای این فایلها را بررسی میکند.
در واقع، زمانی که یک اتصال به سرویس برقرار میشود، TCP Wrappers فایلهای hosts.allow و hosts.deny را بررسی کرده و بر اساس آنها تصمیم میگیرد که آیا دسترسی مجاز است یا خیر. به همین دلیل، در صورتی که تغییراتی در این فایلها اعمال شود، تأثیر آنها بلافاصله پس از ذخیره تغییرات و بدون نیاز به راهاندازی مجدد سرویس اعمال خواهد شد.
2. اعمال تغییرات در فایلهای hosts.allow و hosts.deny
برای اعمال تغییرات در TCP Wrappers، کافی است که شما فایلهای hosts.allow و hosts.deny را ویرایش کرده و تغییرات خود را ذخیره کنید. در این حالت، سیستم بهطور خودکار فایلها را هنگام پردازش هر درخواست بررسی خواهد کرد.
مثال:
- ویرایش فایل hosts.allow: برای دادن دسترسی به یک آدرس IP خاص به سرویس SSH (بهعنوان مثال آدرس IP
192.168.1.100)، کافی است فایل /etc/hosts.allow را ویرایش کنید:sudo nano /etc/hosts.allowسپس خط زیر را به فایل اضافه کنید:
sshd: 192.168.1.100 - ویرایش فایل hosts.deny: برای مسدود کردن دسترسی از یک آدرس IP خاص به سرویس SSH (بهعنوان مثال آدرس IP
192.168.1.101)، کافی است فایل /etc/hosts.deny را ویرایش کنید:sudo nano /etc/hosts.denyسپس خط زیر را به فایل اضافه کنید:
sshd: 192.168.1.101
بعد از ذخیره این تغییرات، TCP Wrappers بهطور خودکار این فایلها را در هر درخواست بررسی کرده و اعمال میکند. نیازی به راهاندازی مجدد سرویس SSH یا هر سرویس دیگری نیست.
3. تأثیر تغییرات لحظهای در دیگر سرویسها
این ویژگی که تغییرات بهصورت لحظهای اعمال میشوند، به این معنی است که حتی اگر چندین سرویس مختلف تحت پوشش TCP Wrappers قرار داشته باشند، تمامی تغییرات اعمالشده در فایلهای hosts.allow و hosts.deny بلافاصله و بدون وقفه در دسترسی به سرویسها تأثیر میگذارند. این ویژگی بهویژه برای مدیریت دسترسیها در شرایط بحرانی و یا زمانهایی که نیاز به تغییرات فوری دارید، بسیار مفید است.
4. ابزارهایی برای بررسی و تأثیر فوری تغییرات
برای اطمینان از اعمال تغییرات، میتوانید از ابزارهایی نظیر telnet یا nc برای آزمایش اتصال به سرویسها و بررسی تأثیر تغییرات استفاده کنید.
مثال: برای بررسی اینکه آیا آدرس IP خاص به سرویس SSH دسترسی دارد یا خیر، از دستور telnet استفاده کنید:
telnet <IP_SSH_SERVER> 22
اگر آدرس IP شما در hosts.allow باشد، اتصال برقرار خواهد شد، در غیر این صورت، اتصال مسدود میشود.
جمعبندی
- TCP Wrappers تغییرات اعمالشده در فایلهای hosts.allow و hosts.deny را بلافاصله و بدون نیاز به راهاندازی مجدد سرویسها اعمال میکند.
- نیازی به راهاندازی مجدد سرویسهای شبکهای نیست، زیرا TCP Wrappers هر درخواست اتصال را بهطور زنده و آنی بررسی میکند.
- برای اعمال تغییرات کافی است فایلهای hosts.allow و hosts.deny را ویرایش کرده و آنها را ذخیره کنید.
- ابزارهایی مانند telnet و nc میتوانند برای بررسی تأثیر تغییرات و صحت عملکرد استفاده شوند.
[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. مزایا و معایب TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی نقاط قوت و ضعف TCP Wrappers در مدیریت امنیت” subtitle=”توضیحات کامل”]TCP Wrappers یکی از ابزارهای محبوب برای مدیریت دسترسی به سرویسها در سیستمهای لینوکسی است که مزایا و معایب خاص خود را دارد. در این بخش، به بررسی مزایا و معایب این ابزار پرداخته میشود.
نقاط قوت در مدیریت امنیت
1. امکان کنترل دسترسی بهصورت منعطف
یکی از مهمترین ویژگیهای TCP Wrappers این است که میتوانید دسترسی به سرویسها را بهصورت دقیق و انعطافپذیر مدیریت کنید. این ابزار با استفاده از فایلهای hosts.allow و hosts.deny اجازه میدهد که شما دسترسی به سرویسها را بر اساس IPهای خاص، دامنهها یا حتی شبکهها محدود کنید.
مثال: برای این که به آدرس IP خاص اجازه دسترسی به سرویس SSH را بدهید، میتوانید از دستور زیر استفاده کنید:
sudo nano /etc/hosts.allow
سپس خط زیر را اضافه کنید:
sshd: 192.168.1.100
این دستور به IP 192.168.1.100 اجازه دسترسی به سرویس SSH را میدهد.
2. تنظیمات ساده و بدون نیاز به نصب ابزارهای اضافی
یکی از مزایای اصلی TCP Wrappers این است که بهراحتی و با استفاده از تنظیمات ساده و بدون نیاز به نصب ابزارهای اضافی میتوان از آن استفاده کرد. TCP Wrappers بهطور پیشفرض روی اکثر توزیعهای لینوکس نصب شده است و تنها کافی است فایلهای تنظیمی مانند hosts.allow و hosts.deny را ویرایش کنید.
3. امکان ثبت لاگهای دقیق از دسترسیها
TCP Wrappers همچنین امکان ثبت دقیق لاگهای دسترسی را فراهم میکند. این ویژگی به مدیران سیستم اجازه میدهد تا دقیقاً بدانند که کدام آدرس IP تلاش کرده است به سرویس دسترسی پیدا کند و این تلاش موفق بوده یا خیر.
مثال: برای فعالسازی لاگها در TCP Wrappers، میتوانید گزینه log_action را در فایل /etc/hosts.allow تنظیم کنید:
sudo nano /etc/hosts.allow
و خط زیر را اضافه کنید:
sshd: ALL : allow, log
این دستور باعث میشود که تمامی تلاشهای دسترسی به سرویس SSH ثبت شوند.
محدودیتها و روشهای مقابله با آنها
1. عدم پشتیبانی از تمام سرویسها
یکی از محدودیتهای مهم TCP Wrappers این است که این ابزار فقط از سرویسهایی که از libwrap استفاده میکنند پشتیبانی میکند. این به این معناست که اگر سرویس شما از این کتابخانه استفاده نکند، TCP Wrappers قادر به کنترل دسترسی به آن نخواهد بود.
راهحل: برای رفع این محدودیت، میتوانید از فایروالهای مدرن مانند iptables یا nftables استفاده کنید که از تمامی سرویسها پشتیبانی میکنند.
2. تأثیر عملکردی هنگام استفاده در محیطهای بزرگ
در محیطهای بزرگ و پر ترافیک، TCP Wrappers ممکن است عملکرد سیستم را تحت تأثیر قرار دهد، بهویژه اگر تعداد زیادی درخواست اتصال به سرویسها وجود داشته باشد. به دلیل پردازش دسترسیها از طریق فایلهای hosts.allow و hosts.deny، این کار میتواند منابع سیستمی را مصرف کرده و باعث کاهش عملکرد شود.
راهحل: برای مقابله با این مشکل، میتوان از ابزارهایی مانند nftables که سرعت بالاتری دارند استفاده کرد. همچنین، در صورت استفاده از TCP Wrappers در محیطهای بزرگ، باید تعداد ورودیها و درخواستها را مدیریت و بهینهسازی کنید.
3. مقایسه با ابزارهای مدرن مانند nftables و Firewalld و روشهای ترکیبی برای جبران محدودیتها
در مقایسه با ابزارهای مدرن مانند nftables و Firewalld، TCP Wrappers از نظر کارایی و امکانات بهروز در سطح پایینتری قرار دارد. Firewalld و nftables قابلیتهای بیشتری برای مدیریت پیچیدهتر دسترسیها و فیلتر کردن بستهها ارائه میدهند. این ابزارها میتوانند دسترسیها را بر اساس معیارهای پیچیدهتری مانند پورتها، پروتکلها، آدرسهای IP و غیره مدیریت کنند.
راهحل ترکیبی: برای جبران محدودیتهای TCP Wrappers، میتوان از ترکیب آن با iptables یا nftables استفاده کرد. بهعنوان مثال، میتوانید TCP Wrappers را برای مدیریت دسترسی به سرویسها و nftables یا Firewalld را برای فیلتر کردن بستهها و کنترل دقیقتر شبکه استفاده کنید.
مثال: برای تنظیم فایروال با nftables بهصورت ترکیبی با TCP Wrappers، ابتدا میتوانید قوانینی برای nftables بنویسید که دسترسی به سرویسهای خاص را محدود کند:
sudo nft add rule ip filter input ip daddr 192.168.1.100 tcp dport 22 accept
این دستور ترافیک ورودی به آدرس IP 192.168.1.100 را که به پورت 22 (SSH) مربوط است، مجاز میکند.
جمعبندی
- TCP Wrappers قابلیت کنترل دسترسی به سرویسها بهصورت منعطف را فراهم میآورد و از تنظیمات ساده و بدون نیاز به نصب ابزار اضافی بهره میبرد.
- امکان ثبت لاگهای دقیق از دسترسیها یکی دیگر از ویژگیهای مفید این ابزار است.
- محدودیتهایی مانند عدم پشتیبانی از تمام سرویسها و تأثیر عملکردی در محیطهای بزرگ وجود دارد که میتوان با ترکیب آن با ابزارهای مدرن مانند iptables یا nftables و Firewalld آنها را جبران کرد.
[/cdb_course_lesson][/cdb_course_lessons]
hosts.allow و hosts.deny کنترل کنند. در توزیعهای قدیمیتر لینوکس، TCP Wrappers معمولاً به صورت پیشفرض در سیستمها نصب میشد، اما در توزیعهای مدرن این وضعیت تغییر کرده است.
در این بخش، به بررسی این موضوع خواهیم پرداخت که آیا TCP Wrappers بهطور پیشفرض در توزیعهای مدرن لینوکس فعال است یا خیر و چه تغییراتی در استفاده از آن رخ داده است.
1. پیشفرض بودن TCP Wrappers در توزیعهای مدرن لینوکس
در گذشته، بسیاری از توزیعهای لینوکس بهطور پیشفرض از TCP Wrappers برای کنترل دسترسی به سرویسها استفاده میکردند. این ابزار در بسیاری از بستههای نرمافزاری مانند OpenSSH و Telnet گنجانده شده بود و در فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny میتوانستند دسترسی به سرویسهای خاص را محدود کنند.
اما با گذشت زمان، بهویژه در توزیعهای مدرن و بهروزرسانیهای جدید، بسیاری از توزیعهای لینوکس دیگر بهطور پیشفرض TCP Wrappers را فعال نمیکنند. در بسیاری از موارد، این ابزار بهطور خودکار بر روی سیستم نصب نمیشود و شما باید بهطور دستی آن را نصب و پیکربندی کنید.
برای مثال، در توزیعهایی مانند Ubuntu یا Debian، در حالی که برخی از سرویسها ممکن است بهطور پیشفرض از TCP Wrappers استفاده کنند، در توزیعهای جدیدتر مانند CentOS 8 یا Fedora، اغلب این ابزار بهطور پیشفرض غیرفعال است و بسیاری از سرویسها از firewalld یا nftables برای کنترل دسترسی استفاده میکنند.
2. بررسی نصب و فعالسازی TCP Wrappers در توزیعهای مدرن
اگر شما تمایل دارید که از TCP Wrappers در توزیعهای مدرن استفاده کنید، باید آن را بهطور دستی نصب کرده و تنظیمات مربوطه را پیکربندی کنید.
نصب TCP Wrappers
برای نصب TCP Wrappers در توزیعهای مدرن لینوکس، معمولاً از دستور زیر استفاده میشود:
برای توزیعهای مبتنی بر Debian/Ubuntu:
sudo apt-get update
sudo apt-get install tcpd
برای توزیعهای مبتنی بر RHEL/CentOS:
sudo yum install tcp_wrappers
بعد از نصب، برای استفاده از این ابزار باید تنظیمات را در فایلهای /etc/hosts.allow و /etc/hosts.deny انجام دهید.
3. پیکربندی TCP Wrappers
بعد از نصب، برای فعالسازی و پیکربندی TCP Wrappers، باید فایلهای پیکربندی را ویرایش کنید. این تنظیمات به شما این امکان را میدهند که دسترسی به سرویسها را بر اساس آدرسهای IP و دامنههای خاص محدود کنید.
برای پیکربندی فایل /etc/hosts.allow:
این فایل به شما امکان میدهد دسترسی به سرویسها را به آدرسهای IP خاص محدود کنید. بهعنوان مثال:
sshd: 192.168.1.0/24
این تنظیمات دسترسی به سرویس SSH را فقط برای شبکه 192.168.1.0/24 مجاز میکند.
برای پیکربندی فایل /etc/hosts.deny:
این فایل معمولاً برای محدود کردن دسترسی به سرویسها استفاده میشود. بهعنوان مثال:
sshd: ALL
این تنظیمات دسترسی به سرویس SSH را برای تمام آدرسهای IP بهطور پیشفرض مسدود میکند.
بعد از اعمال تغییرات در این فایلها، سرویسهای تحت پوشش TCP Wrappers به این تنظیمات احترام خواهند گذاشت.
4. محدودیتها و مشکلات
با اینکه TCP Wrappers ابزاری مفید برای محدود کردن دسترسی به سرویسهاست، محدودیتهایی نیز دارد که در توزیعهای مدرن لینوکس ممکن است با آن روبهرو شوید:
- عدم پشتیبانی از برخی سرویسها: بسیاری از سرویسهای جدید مانند
sshdیاhttpdبهطور پیشفرض از TCP Wrappers استفاده نمیکنند. - نیاز به پیکربندی دستی: در توزیعهای مدرن، TCP Wrappers بهطور پیشفرض فعال نیست و باید بهطور دستی نصب و پیکربندی شود.
- جایگزینی با فایروالهای مدرن: توزیعهای جدید از فایروالهایی مانند firewalld و nftables برای کنترل دسترسی به سرویسها استفاده میکنند که قابلیتهای بیشتری نسبت به TCP Wrappers دارند.
جمعبندی
TCP Wrappers در توزیعهای قدیمیتر لینوکس بهطور پیشفرض فعال بود، اما در توزیعهای مدرن، معمولاً غیرفعال است و باید بهطور دستی نصب و پیکربندی شود. این ابزار همچنان میتواند برای محدود کردن دسترسی به سرویسها مفید باشد، اما باید در نظر گرفت که با توجه به جایگزینهای مدرن مانند firewalld و nftables، استفاده از آن در بسیاری از موارد کاهش یافته است.
در نهایت، استفاده از TCP Wrappers برای محیطهایی که نیاز به سادگی و کنترل دسترسی سطح پایین دارند، ممکن است مناسب باشد، اما برای مدیریت پیچیدهتر و محیطهای بزرگتر، توصیه میشود از ابزارهای مدرنتر مانند firewalld یا nftables استفاده شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی پشتیبانی از libwrap در سرویسهای سیستم” subtitle=”توضیحات کامل”]libwrap یا TCP Wrappers Library یک کتابخانه C است که بهطور سنتی برای کنترل دسترسی به سرویسها در سیستمهای یونیکس و لینوکس استفاده میشود. این کتابخانه بهویژه در سرویسهایی که برای کنترل دسترسی به شبکه طراحی شدهاند، مثل SSH، FTP و Telnet، کاربرد دارد.
در این بخش، به بررسی پشتیبانی از libwrap در سرویسهای مختلف سیستمهای مدرن لینوکس خواهیم پرداخت، چگونگی استفاده از آن در سرویسها، و اینکه کدام سرویسها بهطور پیشفرض از آن پشتیبانی میکنند و کدامها نیاز به پیکربندی دستی دارند.
1. کاربرد libwrap در سرویسهای شبکهای
libwrap به مدیران سیستم این امکان را میدهد که دسترسی به سرویسهای شبکهای را با استفاده از فایلهای پیکربندی مانند /etc/hosts.allow و /etc/hosts.deny کنترل کنند. این کتابخانه معمولاً برای فیلتر کردن ترافیک ورودی به سیستم و محدود کردن دسترسی به سرویسهای خاص استفاده میشود.
سرویسهایی که از libwrap پشتیبانی میکنند، بهطور معمول از این کتابخانه برای بررسی فایلهای پیکربندی استفاده میکنند تا تعیین کنند آیا درخواست اتصال به سرویس مجاز است یا خیر.
2. پشتیبانی از libwrap در سرویسهای مختلف
بسیاری از سرویسها در گذشته از libwrap بهطور پیشفرض پشتیبانی میکردند. اما در توزیعهای مدرن و بهویژه در نسخههای جدیدتر برخی سرویسها، پشتیبانی از libwrap بهطور پیشفرض غیرفعال شده است. در اینجا، بررسی میکنیم که کدام سرویسها همچنان از این کتابخانه پشتیبانی میکنند و برای استفاده از آن باید چه تنظیماتی اعمال کنید.
2.1. SSH (sshd)
در نسخههای قدیمیتر OpenSSH، پشتیبانی از libwrap بهطور پیشفرض فعال بود. به این معنی که SSH از فایلهای /etc/hosts.allow و /etc/hosts.deny برای کنترل دسترسی به سرور استفاده میکرد.
با این حال، از نسخههای جدیدتر OpenSSH، این پشتیبانی بهطور پیشفرض غیرفعال شده است. برای فعالسازی مجدد آن باید OpenSSH را با گزینه --with-libwrap کامپایل کنید.
فعالسازی libwrap در OpenSSH: برای فعالسازی مجدد libwrap در OpenSSH، باید سرویس SSH را مجدداً کامپایل کرده و گزینه --with-libwrap را هنگام نصب انتخاب کنید.
./configure --with-libwrap
make
sudo make install
بعد از این کار، فایلهای /etc/hosts.allow و /etc/hosts.deny بهطور کامل برای کنترل دسترسی از طریق SSH فعال خواهند شد.
2.2. FTP (vsftpd)
vsftpd، یکی از رایجترین سرویسهای FTP در لینوکس، بهطور پیشفرض از libwrap پشتیبانی میکند. برای محدود کردن دسترسی به سرویس FTP، میتوانید از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید.
مثال پیکربندی برای محدود کردن دسترسی FTP:
vsftpd: 192.168.1.0/24
این تنظیمات به سرویس FTP اجازه میدهد که فقط از شبکه داخلی 192.168.1.0/24 دسترسی داشته باشد.
2.3. Telnet
در بسیاری از سیستمها، Telnet از libwrap پشتیبانی میکند. این پشتیبانی بهطور پیشفرض فعال است و میتوانید دسترسی به سرویس Telnet را با استفاده از فایلهای /etc/hosts.allow و /etc/hosts.deny کنترل کنید.
مثال پیکربندی برای محدود کردن دسترسی Telnet:
telnetd: 192.168.1.0/24
این تنظیمات دسترسی به سرویس Telnet را فقط برای شبکه 192.168.1.0/24 محدود میکند.
2.4. NFS (Network File System)
در بسیاری از نسخههای NFS، libwrap بهطور پیشفرض فعال است و به شما این امکان را میدهد که دسترسی به منابع NFS را با استفاده از فایلهای /etc/hosts.allow و /etc/hosts.deny کنترل کنید.
با این حال، برای برخی از نسخههای جدیدتر NFS، ممکن است نیاز باشد که از گزینههای پیکربندی اضافی برای فعالسازی این قابلیت استفاده کنید.
مثال پیکربندی برای محدود کردن دسترسی NFS:
mountd: 192.168.1.0/24
این تنظیمات دسترسی به منابع NFS را فقط برای شبکه 192.168.1.0/24 محدود میکند.
3. سرویسهایی که از libwrap پشتیبانی نمیکنند
برخی از سرویسها و نرمافزارهای جدیدتر بهطور پیشفرض از libwrap پشتیبانی نمیکنند و به جای آن از ابزارهای جدیدتری مانند firewalld یا nftables برای کنترل دسترسی استفاده میکنند. برای مثال:
- HTTP Servers (Apache, Nginx): این سرویسها بهطور پیشفرض از libwrap پشتیبانی نمیکنند و به جای آن از firewalld یا iptables برای مدیریت دسترسی استفاده میکنند.
- Dovecot, Postfix (Mail Servers): این سرویسها نیز بهطور معمول از libwrap پشتیبانی نمیکنند و از ابزارهای مدرنتر برای کنترل دسترسی استفاده میکنند.
در این سرویسها، بهجای استفاده از TCP Wrappers، باید از فایروالهای مدرن یا ابزارهای دیگر برای محدود کردن دسترسی استفاده کنید.
4. پیکربندی دستی libwrap در سرویسها
برای استفاده از libwrap در سرویسهایی که بهطور پیشفرض پشتیبانی نمیکنند، نیاز به پیکربندی دستی دارید. این شامل اضافه کردن تنظیمات پیکربندی به فایلهای /etc/hosts.allow و /etc/hosts.deny است.
بهعنوان مثال، برای کنترل دسترسی به سرویس SSH در سیستمی که پشتیبانی از libwrap غیرفعال است، باید مراحل زیر را انجام دهید:
- نصب OpenSSH با پشتیبانی از libwrap (اگر هنوز نصب نکردهاید).
- پیکربندی فایلهای
/etc/hosts.allowو/etc/hosts.denyبهطور دستی.
مثال پیکربندی:
sshd: 192.168.1.0/24
این تنظیمات اجازه میدهند که تنها از شبکه 192.168.1.0/24 به سرویس SSH متصل شوند.
5. جمعبندی
پشتیبانی از libwrap در سرویسهای مدرن لینوکس ممکن است تغییر کرده باشد و بسته به توزیع و نسخهای که استفاده میکنید، فعال بودن این پشتیبانی متفاوت است. در حالی که سرویسهای قدیمیتری مانند SSH، FTP و Telnet هنوز از این ابزار پشتیبانی میکنند، سرویسهای جدیدتر ممکن است بهطور پیشفرض از libwrap استفاده نکنند و به ابزارهای دیگری مانند firewalld و nftables روی آوردهاند.
برای فعالسازی مجدد libwrap در سرویسها، ممکن است نیاز به نصب مجدد یا پیکربندی دستی داشته باشید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”روشهای نصب دستی در صورت نبود بسته TCP Wrappers” subtitle=”توضیحات کامل”]اگر بسته TCP Wrappers در سیستم شما موجود نیست یا بهطور پیشفرض نصب نشده است، میتوانید آن را بهصورت دستی نصب و پیکربندی کنید. این کار در توزیعهای لینوکسی که از آن پشتیبانی نمیکنند، مفید است. در این بخش، روشهای نصب TCP Wrappers را در سیستمهای مختلف بررسی خواهیم کرد.
1. نصب TCP Wrappers از طریق مخازن رسمی
در بسیاری از توزیعهای لینوکس، بسته TCP Wrappers بهطور رسمی در مخازن موجود است. برای نصب این بسته، میتوانید از ابزارهای مدیریت بسته مانند apt یا yum استفاده کنید. در صورتی که بسته در مخازن موجود نباشد، روشهای دیگر را برای نصب دستی بررسی خواهیم کرد.
1.1. نصب در توزیعهای مبتنی بر Debian/Ubuntu
برای نصب TCP Wrappers در توزیعهای مبتنی بر Debian یا Ubuntu، از دستور زیر استفاده کنید:
sudo apt update
sudo apt install tcpd
این دستور بسته tcpd را که شامل TCP Wrappers است، نصب میکند. پس از نصب این بسته، باید فایلهای پیکربندی مربوط به آن مانند /etc/hosts.allow و /etc/hosts.deny را ایجاد کنید و به تنظیمات مربوط به هر سرویس شبکهای اشاره کنید.
1.2. نصب در توزیعهای مبتنی بر RHEL/CentOS/Fedora
در توزیعهای مبتنی بر RHEL و CentOS نیز میتوان بسته TCP Wrappers را نصب کرد. دستور زیر برای نصب TCP Wrappers در این توزیعها استفاده میشود:
sudo yum install tcp_wrappers
در Fedora، میتوانید از دستور زیر استفاده کنید:
sudo dnf install tcp_wrappers
پس از نصب، باید فایلهای پیکربندی مانند /etc/hosts.allow و /etc/hosts.deny را تنظیم کنید.
2. نصب از کد منبع
اگر بسته TCP Wrappers در مخازن توزیع شما موجود نباشد یا ترجیح میدهید از کد منبع آن استفاده کنید، میتوانید TCP Wrappers را از سورس نصب کنید. برای این کار، مراحل زیر را دنبال کنید:
2.1. دریافت کد منبع
برای شروع، باید کد منبع TCP Wrappers را از وبسایت رسمی یا مخازن GitHub دریافت کنید. دستور زیر را برای دانلود کد منبع استفاده کنید:
wget https://github.com/hypertriton/tcp_wrappers/releases/download/v7.6-21/tcp_wrappers-7.6-21.tar.gz
این دستور فایل فشردهای به نام tcp_wrappers-7.6-21.tar.gz را دانلود میکند.
2.2. استخراج و کامپایل کد
پس از دانلود کد منبع، باید آن را استخراج کرده و کامپایل کنید:
tar -xvzf tcp_wrappers-7.6-21.tar.gz
cd tcp_wrappers-7.6-21
بعد از استخراج، وارد دایرکتوری کد منبع شوید.
2.3. پیکربندی و نصب
برای پیکربندی و نصب TCP Wrappers، دستورهای زیر را بهترتیب اجرا کنید:
./configure
make
sudo make install
دستورات بالا بسته TCP Wrappers را برای سیستم شما کامپایل کرده و نصب میکنند.
3. پیکربندی فایلهای /etc/hosts.allow و /etc/hosts.deny
بعد از نصب TCP Wrappers، برای کنترل دسترسی به سرویسهای شبکهای، باید فایلهای /etc/hosts.allow و /etc/hosts.deny را تنظیم کنید.
3.1. فایل /etc/hosts.allow
فایل /etc/hosts.allow برای تعیین دسترسی مجاز به سرویسها استفاده میشود. برای مثال، برای اجازه دادن به دسترسی SSH از یک شبکه خاص، فایل /etc/hosts.allow به شکل زیر خواهد بود:
sshd: 192.168.1.0/24
این تنظیمات به سرویس SSH اجازه میدهند که فقط از شبکه 192.168.1.0/24 دسترسی داشته باشد.
3.2. فایل /etc/hosts.deny
فایل /etc/hosts.deny برای مسدود کردن دسترسی به سرویسها استفاده میشود. بهعنوان مثال، برای مسدود کردن دسترسی به سرویس SSH از سایر منابع، فایل /etc/hosts.deny را به شکل زیر تنظیم کنید:
sshd: ALL
این تنظیمات دسترسی به سرویس SSH را از همه منابع مسدود میکند.
4. پیکربندی سرویسها برای استفاده از TCP Wrappers
بعد از نصب TCP Wrappers و تنظیم فایلهای پیکربندی hosts.allow و hosts.deny، ممکن است نیاز باشد که برخی از سرویسها را پیکربندی کنید تا از TCP Wrappers استفاده کنند. برخی از سرویسها بهطور پیشفرض از این قابلیت پشتیبانی میکنند، اما در برخی موارد ممکن است نیاز به فعالسازی دستی داشته باشید.
4.1. پیکربندی OpenSSH برای پشتیبانی از TCP Wrappers
اگر سرویس SSH از TCP Wrappers پشتیبانی نمیکند، برای فعالسازی آن، باید OpenSSH را با گزینه --with-libwrap کامپایل کنید.
./configure --with-libwrap
make
sudo make install
سپس، پیکربندیهای لازم را در فایلهای /etc/hosts.allow و /etc/hosts.deny برای محدود کردن دسترسی به SSH اعمال کنید.
4.2. پیکربندی سرویسهای دیگر
برای سرویسهای دیگر مانند vsftpd و telnetd، معمولاً نیاز به تغییرات خاصی در فایلهای پیکربندی ندارید. تنها کافی است که از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید تا دسترسی به این سرویسها را کنترل کنید.
جمعبندی
نصب دستی TCP Wrappers در صورتی که بستههای مورد نیاز در مخازن توزیع شما موجود نباشند، از طریق کامپایل کد منبع امکانپذیر است. پس از نصب، برای کنترل دسترسی به سرویسها باید از فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny استفاده کنید. این فایلها به شما امکان میدهند که دسترسی به سرویسهای مختلف سیستم را محدود یا مجاز کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. نصب TCP Wrappers در سیستمهای لینوکسی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی نصب TCP Wrappers در توزیعهای مختلف” subtitle=”توضیحات کامل”]در این بخش، روش نصب TCP Wrappers در توزیعهای مختلف لینوکس بررسی خواهد شد. بسته TCP Wrappers ابزاری است که برای کنترل دسترسی به سرویسها در سیستمهای لینوکسی مورد استفاده قرار میگیرد. در اینجا، نحوه نصب این بسته در توزیعهای مختلف را بررسی میکنیم:
1. نصب در Debian و Ubuntu
برای نصب TCP Wrappers در توزیعهای مبتنی بر Debian و Ubuntu، میتوانید از مدیر بسته apt استفاده کنید. بسته مورد نیاز در مخازن رسمی این توزیعها به نام tcpd موجود است. دستور نصب به صورت زیر است:
sudo apt update
sudo apt install tcpd
- پکیج tcpd شامل نرمافزار TCP Wrappers است.
- پس از نصب، میتوانید از فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny برای کنترل دسترسی به سرویسها استفاده کنید.
مسیر فایلهای پیکربندی:
- /etc/hosts.allow: برای اجازه دادن به دسترسی
- /etc/hosts.deny: برای مسدود کردن دسترسی
2. نصب در CentOS و RHEL
در توزیعهای CentOS و RHEL، بسته TCP Wrappers بهطور پیشفرض از طریق مخازن dnf (برای RHEL 8 و نسخههای جدیدتر) یا yum (برای نسخههای قدیمیتر) قابل نصب است. دستور نصب به صورت زیر است:
برای نسخههای جدیدتر RHEL و CentOS (با استفاده از dnf):
sudo dnf install tcp_wrappers
برای نسخههای قدیمیتر RHEL و CentOS (با استفاده از yum):
sudo yum install tcp_wrappers
- نصب این بسته به شما امکان میدهد تا از فایلهای /etc/hosts.allow و /etc/hosts.deny برای تنظیم قوانین دسترسی استفاده کنید.
مسیر فایلهای پیکربندی:
- /etc/hosts.allow
- /etc/hosts.deny
3. نصب در Arch Linux
در Arch Linux و توزیعهای مبتنی بر آن، بسته TCP Wrappers از طریق مدیر بسته pacman قابل نصب است. دستور نصب به این صورت است:
sudo pacman -S tcp_wrappers
- پس از نصب این بسته، میتوانید از پیکربندیهای مشابه به Debian و RHEL برای محدود کردن یا مجاز کردن دسترسی به سرویسها استفاده کنید.
مسیر فایلهای پیکربندی:
- /etc/hosts.allow
- /etc/hosts.deny
جمعبندی
نصب TCP Wrappers در توزیعهای مختلف لینوکس با استفاده از ابزارهای مدیریتی بسته مختلف (apt، dnf، pacman) انجام میشود. پس از نصب بسته، میتوانید دسترسی به سرویسها را با استفاده از فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny مدیریت کنید. این ابزار بهویژه برای جلوگیری از دسترسی غیرمجاز به سیستمها و سرویسها مفید است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”اطمینان از نصب صحیح و بررسی نسخه TCP Wrappers” subtitle=”توضیحات کامل”]برای اطمینان از اینکه بسته TCP Wrappers به درستی نصب شده است و بررسی نسخه آن در سیستم، میتوانیم از چند دستور مختلف استفاده کنیم. در این بخش، نحوه بررسی وضعیت نصب و نسخه TCP Wrappers را توضیح خواهیم داد.
1. بررسی نصب TCP Wrappers با استفاده از دستور which
یکی از سادهترین روشها برای بررسی نصب شدن TCP Wrappers، استفاده از دستور which است. این دستور مسیر فایل اجرایی بسته را نمایش میدهد.
which tcpd
- اگر TCP Wrappers به درستی نصب شده باشد، مسیر فایل اجرایی آن نمایش داده میشود. برای مثال، ممکن است مسیر
/usr/sbin/tcpdرا مشاهده کنید. - اگر دستور خروجی نداد یا مسیر فایل اجرایی را نشان نداد، نشاندهنده این است که TCP Wrappers نصب نشده است.
2. بررسی نسخه TCP Wrappers با استفاده از دستور tcpd -v
برای بررسی نسخه بسته TCP Wrappers، میتوانید از دستور tcpd -v استفاده کنید:
tcpd -v
- این دستور اطلاعات مربوط به نسخه TCP Wrappers را نمایش میدهد.
- اگر TCP Wrappers به درستی نصب شده باشد، خروجی مشابه زیر را دریافت خواهید کرد:
TCP Wrappers version 7.6 (Debian 7.6-1)
اگر این دستور خطا داد یا نسخهای نمایش داده نشد، احتمالاً TCP Wrappers به درستی نصب نشده است.
3. استفاده از دستور dpkg (در توزیعهای Debian/Ubuntu)
در Debian و Ubuntu، برای بررسی نصب و نسخه بستهها میتوانید از دستور dpkg استفاده کنید:
dpkg -l | grep tcpd
- این دستور تمام بستههای نصب شده را فهرست کرده و اگر بسته
tcpdنصب شده باشد، آن را نمایش خواهد داد. - خروجی دستور به شکل زیر خواهد بود:
ii tcpd 7.6-1ubuntu1 amd64 Wietse Venema's TCP wrappers tools
4. استفاده از دستور rpm (در توزیعهای RHEL/CentOS)
در RHEL و CentOS میتوانید از دستور rpm برای بررسی نصب بسته و نسخه آن استفاده کنید:
rpm -qi tcp_wrappers
- اگر بسته نصب شده باشد، اطلاعات نسخه آن نمایش داده خواهد شد.
- خروجی نمونه میتواند به شکل زیر باشد:
Name : tcp_wrappers
Version : 7.6
Release : 77.el8
Architecture: x86_64
5. بررسی فایلهای پیکربندی
پس از نصب TCP Wrappers، اطمینان حاصل کنید که فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny وجود دارند.
برای بررسی این که فایلها وجود دارند یا خیر، از دستور ls استفاده کنید:
ls /etc/hosts.allow /etc/hosts.deny
- اگر این فایلها وجود داشته باشند، نشاندهنده نصب صحیح TCP Wrappers است.
جمعبندی
برای اطمینان از نصب صحیح TCP Wrappers و بررسی نسخه آن، میتوان از دستورات مختلفی مانند which tcpd، tcpd -v، dpkg -l (در Debian/Ubuntu) و rpm -qi (در RHEL/CentOS) استفاده کرد. همچنین، بررسی وجود فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny میتواند نشانهای از نصب موفق باشد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. بررسی سرویسهایی که از TCP Wrappers پشتیبانی میکنند”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”روش تشخیص پشتیبانی یک سرویس از TCP Wrappers” subtitle=”توضیحات کامل”]برای بررسی اینکه آیا یک سرویس از TCP Wrappers پشتیبانی میکند، میتوان از روشهای مختلفی استفاده کرد. در این بخش، نحوه تشخیص این که یک سرویس از TCP Wrappers پشتیبانی میکند یا خیر را توضیح خواهیم داد.
1. استفاده از دستور ldd برای بررسی وابستگیها
یکی از روشهای اصلی برای تشخیص پشتیبانی سرویسها از TCP Wrappers، استفاده از دستور ldd است که وابستگیهای کتابخانهای یک فایل اجرایی را نشان میدهد. اگر یک سرویس از TCP Wrappers پشتیبانی کند، باید در میان کتابخانههای مورد نیاز آن، کتابخانه libwrap.so دیده شود.
1.1. نحوه بررسی پشتیبانی از TCP Wrappers برای یک سرویس
برای بررسی اینکه آیا سرویس sshd از TCP Wrappers پشتیبانی میکند، دستور زیر را اجرا کنید:
ldd $(which sshd) | grep libwrap
- توضیح دستور:
ldd $(which sshd)لیست کتابخانههای وابسته به سرویسsshdرا نمایش میدهد.grep libwrapفیلتر میکند تا فقط کتابخانههایی که حاویlibwrapهستند، نشان داده شوند.
- نتیجه مورد انتظار: اگر TCP Wrappers فعال باشد، باید کتابخانه
libwrap.soدر لیست خروجی دیده شود، به عنوان مثال:
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007ff60f925000)
اگر هیچ خروجی مشابهی مشاهده نشد، سرویس از TCP Wrappers پشتیبانی نمیکند.
2. بررسی کد منبع سرویس
در صورتی که دستور ldd اطلاعات کافی ندهد، میتوانید کد منبع سرویس را بررسی کنید تا ببینید آیا از TCP Wrappers پشتیبانی میکند یا خیر. این کار معمولاً برای سرویسهایی مانند sshd یا ftpd انجام میشود.
2.1. بررسی پیکربندی سرویس
در برخی موارد، پشتیبانی از TCP Wrappers ممکن است از طریق فایلهای پیکربندی مشخص شود. به عنوان مثال، در سرویس sshd میتوان گزینه UsePAM را در فایل پیکربندی sshd_config بررسی کرد.
برای این منظور، دستور زیر را اجرا کنید:
grep UsePAM /etc/ssh/sshd_config
- اگر مقدار گزینه
UsePAMبرابر باyesباشد، احتمالاً سرویس از TCP Wrappers پشتیبانی میکند.
3. بررسی فایلهای پیکربندی سیستم
در سیستمهایی که از TCP Wrappers استفاده میکنند، دو فایل مهم برای تنظیمات دسترسی وجود دارد: /etc/hosts.allow و /etc/hosts.deny.
3.1. بررسی پیکربندی /etc/hosts.allow
فایل /etc/hosts.allow برای تعیین سرویسهایی که اجازه دسترسی دارند، استفاده میشود. برای بررسی اینکه سرویس sshd از TCP Wrappers پشتیبانی میکند، میتوانید دستور زیر را اجرا کنید:
cat /etc/hosts.allow | grep sshd
- اگر این فایل شامل خطی مشابه زیر باشد، به این معنی است که سرویس
sshdاز TCP Wrappers پشتیبانی میکند:
sshd: ALL
3.2. بررسی پیکربندی /etc/hosts.deny
فایل /etc/hosts.deny برای مسدود کردن دسترسی به سرویسها استفاده میشود. بررسی این فایل نیز میتواند نشاندهنده پشتیبانی از TCP Wrappers باشد. برای بررسی دسترسیها به سرویسها، دستور زیر را اجرا کنید:
cat /etc/hosts.deny | grep sshd
اگر این فایل حاوی خطی برای مسدود کردن دسترسی به سرویسها باشد، آن وقت میتوانید مطمئن شوید که TCP Wrappers در سیستم پیکربندی شده است.
4. استفاده از دستور strace
روش دیگری برای بررسی پشتیبانی از TCP Wrappers، استفاده از دستور strace است که سیستم را در زمان اجرای سرویسها دنبال میکند و نشان میدهد که آیا سرویس به کتابخانههای libwrap وابسته است یا خیر.
4.1. اجرای strace برای بررسی سرویس
برای مثال، اگر بخواهید بررسی کنید که آیا سرویس sshd از TCP Wrappers استفاده میکند، میتوانید دستور زیر را اجرا کنید:
strace -e trace=network sshd -T
- توضیح دستور:
- دستور
straceبه شما امکان میدهد که سیستم را در زمان اجرای سرویسsshdدنبال کنید. - گزینه
-e trace=networkفقط تماسهای شبکهای را نمایش میدهد. - اگر TCP Wrappers فعال باشد، ممکن است در خروجی اطلاعاتی مربوط به
libwrapمشاهده کنید.
- دستور
جمعبندی
برای بررسی پشتیبانی یک سرویس از TCP Wrappers، میتوان از روشهای مختلفی استفاده کرد:
- استفاده از دستور
lddبرای بررسی وابستگی به کتابخانههایlibwrap. - بررسی کد منبع و تنظیمات پیکربندی سرویس.
- تحلیل فایلهای پیکربندی مانند
/etc/hosts.allowو/etc/hosts.deny. - استفاده از
straceبرای مشاهده تعامل سرویس با کتابخانههای TCP Wrappers.
این روشها میتوانند کمک کنند تا اطمینان حاصل کنید که سرویسها از TCP Wrappers پشتیبانی میکنند و تنظیمات لازم برای مدیریت دسترسیها به درستی انجام شده است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از ldd برای بررسی وابستگی سرویسها به libwrap.so” subtitle=”توضیحات کامل”]برای بررسی اینکه یک سرویس از TCP Wrappers پشتیبانی میکند و آیا به کتابخانه libwrap.so وابسته است، میتوان از دستور ldd استفاده کرد. این دستور وابستگیهای کتابخانهای یک فایل اجرایی را نشان میدهد.
اگر سرویسها از TCP Wrappers پشتیبانی کنند، باید در میان کتابخانههای مورد نیاز آن سرویس، کتابخانه libwrap.so وجود داشته باشد. این کتابخانه مسئول مدیریت دسترسی به سرویسها از طریق TCP Wrappers است.
1. نحوه استفاده از دستور ldd برای بررسی وابستگیها
برای بررسی وابستگیهای کتابخانهای یک سرویس به TCP Wrappers، میتوانید از دستور ldd استفاده کنید. این دستور به شما نشان میدهد که آیا سرویس به کتابخانه libwrap.so وابسته است یا خیر.
1.1. بررسی سرویس sshd
برای مثال، اگر بخواهید بررسی کنید که آیا سرویس sshd (OpenSSH) از TCP Wrappers استفاده میکند یا خیر، از دستور زیر استفاده کنید:
ldd $(which sshd) | grep libwrap
- توضیح دستور:
which sshdمسیر فایل اجراییsshdرا پیدا میکند.ldd $(which sshd)لیست کتابخانههای وابسته به فایل اجراییsshdرا نمایش میدهد.grep libwrapخروجی را فیلتر میکند و فقط خطوطی را نمایش میدهد که شاملlibwrapباشند.
1.2. نتیجه مورد انتظار
اگر سرویس sshd از TCP Wrappers پشتیبانی کند، در لیست کتابخانهها باید کتابخانه libwrap.so دیده شود. به عنوان مثال:
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f52d7bb7000)
این نشان میدهد که سرویس sshd به libwrap.so وابسته است و از TCP Wrappers برای مدیریت دسترسی استفاده میکند.
1.3. نتیجه زمانی که TCP Wrappers پشتیبانی نشود
اگر سرویس از TCP Wrappers پشتیبانی نکند یا به libwrap.so وابسته نباشد، خروجی دستور ldd هیچ نتیجهای با libwrap نشان نمیدهد.
جمعبندی
استفاده از دستور ldd یکی از سادهترین و سریعترین روشها برای بررسی وابستگی سرویسها به TCP Wrappers است. با این روش، میتوانید به راحتی بررسی کنید که آیا سرویسهایی مانند sshd به کتابخانه libwrap.so وابسته هستند یا خیر، و از این طریق تشخیص دهید که آیا سرویس از TCP Wrappers برای مدیریت دسترسی به سیستم استفاده میکند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”لیست برخی از سرویسهای معروف که از TCP Wrappers پشتیبانی میکنند” subtitle=”توضیحات کامل”]TCP Wrappers یک روش محبوب برای کنترل دسترسی به سرویسها در سیستمهای لینوکسی است. بسیاری از سرویسهای رایج در لینوکس از این فناوری برای مدیریت و کنترل دسترسی به خود استفاده میکنند. در ادامه به بررسی چند سرویس معروف که از TCP Wrappers پشتیبانی میکنند، میپردازیم.
1. SSH (Secure Shell)
سرویس sshd (OpenSSH Daemon) از TCP Wrappers برای مدیریت دسترسی به سیستم از طریق پروتکل SSH استفاده میکند. این سرویس امکان اتصال امن به سرور از راه دور را فراهم میکند و TCP Wrappers برای محدود کردن یا اجازه دادن به IPهای خاص برای دسترسی به آن استفاده میشود.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
2. vsftpd (Very Secure FTP Daemon)
سرویس vsftpd یک سرویس FTP امن است که از TCP Wrappers برای محدود کردن دسترسی به سرور FTP استفاده میکند. این سرویس برای انتقال فایلها به صورت امن و با سرعت بالا طراحی شده است.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
3. xinetd (Extended Internet Services Daemon)
سرویس xinetd یک دیمون است که به عنوان مدیر سرویسهای شبکه عمل میکند و بسیاری از سرویسهای قدیمی مانند FTP، Telnet و دیگر سرویسهای شبکه را اجرا میکند. xinetd از TCP Wrappers برای کنترل دسترسی به این سرویسها استفاده میکند.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
4. Telnet
سرویس telnet یکی از قدیمیترین پروتکلهای شبکه است که از TCP Wrappers برای کنترل دسترسی به سیستم از طریق این پروتکل استفاده میکند. این سرویس معمولاً برای مدیریت از راه دور سیستمها مورد استفاده قرار میگیرد، اما به دلیل ضعف امنیتی، کمتر مورد استفاده قرار میگیرد.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
5. FTP (File Transfer Protocol)
سرویسهای ftp که از پروتکل FTP برای انتقال فایلها استفاده میکنند، میتوانند از TCP Wrappers برای محدود کردن دسترسی به سرور FTP استفاده کنند. این سرویسها میتوانند تحت مدیریت xinetd قرار داشته باشند یا به صورت مستقل اجرا شوند.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
6. SMTP (Simple Mail Transfer Protocol) – Postfix
سرویس Postfix که یکی از سرویسهای محبوب برای ارسال ایمیل است، از TCP Wrappers برای محدود کردن دسترسی به پورتهای ارسال ایمیل استفاده میکند.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
7. Apache HTTP Server
اگرچه Apache HTTP Server به طور پیشفرض از TCP Wrappers استفاده نمیکند، اما میتوان آن را با استفاده از ماژولهای خاص برای کنترل دسترسی از طریق TCP Wrappers پیکربندی کرد.
- پشتیبانی TCP Wrappers: در صورت پیکربندی صحیح
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
8. IMAP (Internet Message Access Protocol) – Dovecot
سرویسهای IMAP، مانند Dovecot، که برای دریافت ایمیلها استفاده میشوند، از TCP Wrappers برای کنترل دسترسی به سرورهای ایمیل پشتیبانی میکنند.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
9. Pop3 (Post Office Protocol) – Dovecot
همچنین پروتکل POP3 که برای دریافت ایمیلها استفاده میشود، میتواند از TCP Wrappers برای محدود کردن دسترسی به سرورهای ایمیل استفاده کند.
- پشتیبانی TCP Wrappers: بله
- مکان فایل پیکربندی:
/etc/hosts.allowو/etc/hosts.deny
جمعبندی
در این بخش، لیستی از سرویسهای معروف که از TCP Wrappers پشتیبانی میکنند، ارائه شد. این سرویسها شامل SSH، FTP، xinetd، Telnet و سایر سرویسهای مرتبط با ایمیل و انتقال فایل میباشند. برای هر کدام از این سرویسها میتوانید دسترسیها را از طریق فایلهای پیکربندی TCP Wrappers مانند /etc/hosts.allow و /etc/hosts.deny مدیریت کنید تا فقط IPهای مجاز به سرویسها دسترسی داشته باشند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. فعالسازی و تست اولیه TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”فعالسازی و تست اولیه TCP Wrappers” subtitle=”توضیحات کامل”]در این بخش، به فرآیند فعالسازی و تست اولیه TCP Wrappers در یک سیستم لینوکس خواهیم پرداخت. این مراحل شامل ایجاد و پیکربندی فایلهای hosts.allow و hosts.deny برای کنترل دسترسی به سرویسها میباشد.
1. ایجاد فایلهای اولیه hosts.allow و hosts.deny
TCP Wrappers برای کنترل دسترسی به سرویسها از دو فایل پیکربندی اصلی استفاده میکند:
/etc/hosts.allow: این فایل به سرویسها اجازه میدهد که از IPهای خاص دسترسی دریافت کنند./etc/hosts.deny: این فایل برای مسدود کردن دسترسی از IPهای خاص استفاده میشود.
در ابتدا، باید این فایلها را در مسیر مناسب ایجاد کرده و تنظیمات اولیه را برای آنها انجام دهیم.
2. ایجاد و پیکربندی فایل hosts.allow
ابتدا فایل hosts.allow را ایجاد کرده و تنظیمات دسترسی به سرویسها را در آن وارد میکنیم. این فایل باید شامل IPهای مجاز باشد که اجازه دسترسی به سرویسها را دارند.
دستور ایجاد فایل hosts.allow:
sudo nano /etc/hosts.allow
محتوای فایل hosts.allow (مثال):
sshd: 192.168.1.0/24
vsftpd: 10.0.0.1
در این مثال:
- فقط دستگاههای داخل شبکه
192.168.1.0/24مجاز به اتصال به سرویسsshd(SSH) هستند. - فقط آدرس IP
10.0.0.1مجاز به اتصال به سرویسvsftpd(FTP) است.
3. ایجاد و پیکربندی فایل hosts.deny
فایل hosts.deny برای مسدود کردن دسترسی به سرویسها از IPهای خاص استفاده میشود. اگر قصد دارید که دسترسی از برخی آدرسها مسدود شود، این فایل را ویرایش کنید.
دستور ایجاد فایل hosts.deny:
sudo nano /etc/hosts.deny
محتوای فایل hosts.deny (مثال):
sshd: ALL
vsftpd: ALL
در این مثال:
- تمام آدرسهای IP برای اتصال به سرویس
sshdمسدود شدهاند. - تمام آدرسهای IP برای اتصال به سرویس
vsftpdمسدود شدهاند.
4. نکات مهم در پیکربندی
- در فایل
hosts.allow، اولین قانونی که وارد میشود، برای اجازه دسترسی است. اگر IP مورد نظر در این فایل باشد، به آن سرویس اجازه دسترسی داده میشود. - در فایل
hosts.deny، دسترسی به آدرسهای IP ذکر شده مسدود میشود. - اولویت اعمال قوانین: hosts.allow اولویت بیشتری نسبت به hosts.deny دارد. یعنی اگر یک IP در هر دو فایل وجود داشته باشد، دسترسی به آن IP طبق دستور موجود در
hosts.allowتعیین میشود.
5. تست اولیه
پس از تنظیم این فایلها، باید یک تست اولیه انجام دهیم تا اطمینان حاصل کنیم که TCP Wrappers به درستی پیکربندی شده است.
برای تست اولیه، میتوانید از دستور telnet یا ssh از یک دستگاه دیگر برای اتصال به سرور استفاده کنید.
مثال تست اتصال SSH:
از یک دستگاه دیگر که IP آن داخل شبکه مجاز نیست (مثلاً خارج از 192.168.1.0/24 باشد)، دستور زیر را وارد کنید:
ssh user@your-server-ip
اگر دسترسی مسدود باشد، پیغام خطای مشابه به این نمایش داده میشود:
Connection refused.
تست دسترسی FTP:
در صورت تنظیم vsftpd، از یک دستگاه دیگر که IP آن در لیست مجاز نیست (مثلاً IP آن 10.0.0.1 نباشد)، دستور زیر را وارد کنید:
ftp your-server-ip
اگر دسترسی به سرور FTP مسدود باشد، پیام خطای مشابه به این نمایش داده میشود:
Connection refused.
6. تست تکمیلی با استفاده از syslog
برای اطمینان بیشتر از اینکه TCP Wrappers به درستی کار میکند، میتوانید از لاگهای سیستم استفاده کنید. TCP Wrappers تمامی تلاشهای دسترسی را در لاگهای سیستم ثبت میکند.
برای مشاهده لاگها، دستور زیر را وارد کنید:
sudo tail -f /var/log/syslog
در این لاگها، تلاشهای ناموفق برای اتصال به سرویسها نمایش داده میشود و شما میتوانید مطمئن شوید که مسدودسازی یا اجازه دسترسی به درستی انجام شده است.
جمعبندی
در این بخش، نحوه فعالسازی و تست اولیه TCP Wrappers با استفاده از فایلهای پیکربندی hosts.allow و hosts.deny توضیح داده شد. این فایلها به شما این امکان را میدهند که دسترسی به سرویسها را از طریق IPهای خاص کنترل کنید. پس از پیکربندی این فایلها، تستهای اولیه با استفاده از دستوراتی مانند ssh و ftp انجام شد تا اطمینان حاصل شود که تنظیمات به درستی اعمال شدهاند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”اضافه کردن یک قانون اولیه برای تست دسترسی” subtitle=”توضیحات کامل”]در این بخش، نحوه اضافه کردن یک قانون اولیه برای تست دسترسی به TCP Wrappers را بررسی خواهیم کرد. این قانون به شما کمک میکند تا برای اطمینان از کارکرد صحیح پیکربندیهای hosts.allow و hosts.deny یک آزمایش ساده انجام دهید.
1. ایجاد قانون در فایل hosts.allow
ابتدا، برای تست دسترسی یک IP خاص به یکی از سرویسها، باید یک قانون به فایل hosts.allow اضافه کنیم. بهعنوان مثال، اگر بخواهیم اجازه دسترسی به سرویس sshd (SSH) را فقط برای یک IP خاص بدهیم، این کار را در فایل hosts.allow انجام میدهیم.
دستور ویرایش فایل hosts.allow:
sudo nano /etc/hosts.allow
محتوای فایل hosts.allow برای تست دسترسی:
sshd: 192.168.1.10
در این مثال:
- فقط دستگاهی که IP آن
192.168.1.10است میتواند به سرویسsshd(SSH) دسترسی پیدا کند.
2. ایجاد قانون در فایل hosts.deny
برای جلوگیری از دسترسی سایر دستگاهها، باید فایل hosts.deny را نیز ویرایش کرده و دسترسی سایر دستگاهها را مسدود کنیم.
دستور ویرایش فایل hosts.deny:
sudo nano /etc/hosts.deny
محتوای فایل hosts.deny برای مسدود کردن دسترسی سایر IPها:
sshd: ALL
در این مثال:
- تمام دستگاههای دیگر (بهجز IPهای موجود در
hosts.allow) به سرویسsshdدسترسی نخواهند داشت.
3. آزمایش دسترسی از IP مجاز
پس از اعمال این تنظیمات، از یک دستگاه با IP 192.168.1.10 تلاش کنید به سرور متصل شوید. برای این کار از دستور ssh استفاده کنید:
ssh user@your-server-ip
در صورتی که تنظیمات به درستی اعمال شده باشند، دستگاه با IP 192.168.1.10 باید بتواند به سرور SSH متصل شود.
4. آزمایش دسترسی از IP مسدود شده
برای اطمینان از اینکه تنها دستگاههایی که در لیست مجاز هستند به سرور متصل میشوند، از دستگاه دیگری که IP آن در لیست مسدود شده است (مثلاً دستگاه با IP 192.168.1.20) استفاده کنید و تلاش کنید تا به سرور SSH متصل شوید.
ssh user@your-server-ip
اگر دسترسی مسدود شده باشد، پیغام خطای مشابه زیر نمایش داده خواهد شد:
Connection refused.
5. بررسی لاگها برای تأیید دسترسی
برای اطمینان بیشتر از اینکه TCP Wrappers به درستی کار میکند، میتوانید از لاگهای سیستم استفاده کنید. این لاگها تمام تلاشها برای دسترسی به سرویسها را ثبت میکنند.
برای مشاهده لاگها از دستور زیر استفاده کنید:
sudo tail -f /var/log/syslog
در این لاگها، تلاشهای ناموفق برای اتصال به سرویسها نشان داده میشود. این به شما کمک میکند تا مطمئن شوید که قوانین TCP Wrappers به درستی اعمال شدهاند.
جمعبندی
در این بخش، نحوه اضافه کردن یک قانون اولیه برای تست دسترسی به TCP Wrappers با استفاده از فایلهای hosts.allow و hosts.deny توضیح داده شد. این تنظیمات به شما این امکان را میدهند که دسترسی به سرویسها را از طریق آدرسهای IP خاص مدیریت کنید. پس از اعمال این قوانین، تستهای دسترسی از دستگاههای مجاز و مسدود شده انجام شد و نتایج آنها با استفاده از لاگها تأیید شد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تست محدودسازی سرویسها با ابزارهای telnet, nc و ssh” subtitle=”توضیحات کامل”]در این بخش، نحوه تست محدودسازی دسترسی به سرویسها با استفاده از ابزارهای مختلف مانند telnet, nc (Netcat) و ssh را بررسی خواهیم کرد. این ابزارها به شما کمک میکنند تا بررسی کنید که آیا محدودیتهای اعمالشده در فایلهای hosts.allow و hosts.deny به درستی کار میکنند یا خیر.
1. تست دسترسی با ابزار Telnet
ابزار telnet به شما امکان میدهد تا به صورت دستی به سرویسهای مختلف (مانند SSH، HTTP و غیره) متصل شوید و اتصال را بررسی کنید. برای تست دسترسی به یک سرویس خاص، از دستور telnet استفاده میکنیم.
تست اتصال به سرویس SSH از یک IP مجاز:
اگر در فایل hosts.allow اجازه دسترسی به سرویس sshd را برای یک IP خاص دادهاید (مثلاً 192.168.1.10)، میتوانید با استفاده از telnet اتصال به سرور را بررسی کنید:
telnet your-server-ip 22
- در صورتی که دسترسی مجاز باشد، اتصال برقرار میشود.
- در صورتی که دسترسی مسدود شده باشد، خطای “Connection refused” نمایش داده میشود.
تست اتصال به سرویس SSH از یک IP مسدود شده:
اگر دسترسی از IPهای دیگر در فایل hosts.deny مسدود شده باشد، با استفاده از telnet از یک دستگاه با IP مسدود شده تلاش کنید تا به سرویس SSH متصل شوید:
telnet your-server-ip 22
- در این حالت، اتصال برقرار نمیشود و پیغام خطای “Connection refused” یا مشابه آن نشان داده میشود.
2. تست دسترسی با ابزار Netcat (nc)
ابزار nc (Netcat) یک ابزار قدرتمند است که برای بررسی دسترسی به پورتهای مختلف در سیستمهای راه دور استفاده میشود. این ابزار مشابه telnet است، اما امکانات بیشتری را برای تست پورتها فراهم میکند.
تست اتصال به سرویس SSH با استفاده از nc:
برای تست اتصال به سرویس SSH از طریق nc، از دستور زیر استفاده کنید:
nc -zv your-server-ip 22
در این دستور:
-z: برای اسکن پورتها بدون ارسال داده.-v: برای نمایش جزئیات اتصال.
اگر اتصال برقرار باشد، پیامی مشابه زیر نمایش داده میشود:
Connection to your-server-ip 22 port [tcp/ssh] succeeded!
اگر اتصال مسدود شده باشد، پیامی مشابه زیر خواهید دید:
nc: connect to your-server-ip port 22 (tcp) failed: Connection refused
3. تست دسترسی با ابزار SSH
ابزار ssh برای اتصال به سرویسهای SSH استفاده میشود. برای تست اتصال از یک IP مجاز و مسدود شده به سرویس SSH، از دستور زیر استفاده میکنیم.
تست اتصال به سرویس SSH از یک IP مجاز:
اگر IP شما در فایل hosts.allow مجاز باشد، میتوانید از طریق دستور ssh به سرویس SSH متصل شوید:
ssh user@your-server-ip
در صورتی که دسترسی مجاز باشد، باید قادر باشید وارد سیستم شوید.
تست اتصال به سرویس SSH از یک IP مسدود شده:
اگر IP شما در فایل hosts.deny مسدود شده باشد، دستور زیر را وارد کنید:
ssh user@your-server-ip
در این حالت، باید پیغام خطای مشابه زیر را دریافت کنید:
ssh: connect to host your-server-ip port 22: Connection refused
4. بررسی لاگها برای تأیید نتایج
پس از انجام تستها، برای تأیید اینکه محدودسازیها به درستی اعمال شدهاند، میتوانید لاگها را بررسی کنید. تمام تلاشهای اتصال به سرویسها در فایلهای لاگ ذخیره میشوند.
برای مشاهده لاگها از دستور زیر استفاده کنید:
sudo tail -f /var/log/auth.log
در این لاگها، میتوانید تلاشهای موفق و ناموفق برای اتصال به سرویسها را مشاهده کنید و اطمینان حاصل کنید که محدودیتها به درستی اعمال شدهاند.
جمعبندی
در این بخش، نحوه تست محدودسازی دسترسی به سرویسها با استفاده از ابزارهای telnet, nc (Netcat) و ssh توضیح داده شد. این ابزارها به شما کمک میکنند تا بررسی کنید که آیا محدودیتهای اعمالشده در فایلهای hosts.allow و hosts.deny به درستی کار میکنند یا خیر. پس از انجام تستها، بررسی لاگها نیز به شما اطمینان میدهد که محدودیتها به درستی اعمال شدهاند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. ابزارهای بررسی پشتیبانی و تست TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از tcpdchk برای بررسی تنظیمات و خطاهای احتمالی” subtitle=”توضیحات کامل”]ابزار tcpdchk برای بررسی پیکربندیهای TCP Wrappers استفاده میشود و به شناسایی خطاهای احتمالی در فایلهای hosts.allow و hosts.deny کمک میکند. این ابزار بهویژه برای بررسی صحت تنظیمات و اطمینان از اینکه هیچ خطای نگارشی یا منطقی در پیکربندیها وجود ندارد، بسیار مفید است.
1. نصب tcpdchk
اگر ابزار tcpdchk بر روی سیستم شما نصب نیست، ابتدا باید آن را نصب کنید. بسته tcpd شامل ابزار tcpdchk میباشد که معمولاً همراه با TCP Wrappers نصب میشود.
در توزیعهای Debian/Ubuntu:
sudo apt install tcpd
در توزیعهای CentOS/RHEL:
sudo dnf install tcp_wrappers
در توزیعهای Arch Linux:
sudo pacman -S tcp_wrappers
2. استفاده از tcpdchk برای بررسی تنظیمات
پس از نصب، میتوانید از tcpdchk برای بررسی فایلهای پیکربندی hosts.allow و hosts.deny استفاده کنید. این ابزار تنظیمات موجود در این فایلها را بررسی کرده و خطاها یا هشدارهای احتمالی را گزارش میدهد.
برای بررسی فایلهای hosts.allow و hosts.deny، دستور زیر را وارد کنید:
sudo tcpdchk
این دستور بهطور پیشفرض فایلهای /etc/hosts.allow و /etc/hosts.deny را بررسی میکند و هر گونه خطا یا تنظیمات نامناسب را نشان میدهد.
3. محتوای گزارش tcpdchk
اگر پیکربندی صحیح باشد، خروجی مشابه زیر خواهد بود:
/etc/hosts.allow: Syntax OK
/etc/hosts.deny: Syntax OK
اگر خطایی در پیکربندی وجود داشته باشد، tcpdchk خطا یا هشدار مربوطه را گزارش خواهد کرد. بهعنوان مثال:
/etc/hosts.allow: line 3: incorrect format
/etc/hosts.deny: line 5: duplicate entry
در این حالت، شما میتوانید با مراجعه به خطوط مربوطه در فایلهای hosts.allow و hosts.deny، خطاها را اصلاح کنید.
4. بررسی دسترسی به سرویسها با استفاده از tcpdchk
ابزار tcpdchk تنها به بررسی صحت پیکربندیها محدود نمیشود، بلکه به شما کمک میکند تا دسترسی به سرویسها را نیز بررسی کنید. این ابزار بررسی میکند که آیا قواعد امنیتی تنظیمشده در فایلهای hosts.allow و hosts.deny به درستی اعمال شدهاند یا خیر.
برای مثال، اگر تنظیمات شما به گونهای باشد که فقط از یک آدرس IP خاص به سرویس SSH دسترسی داده شده باشد، با اجرای tcpdchk میتوانید بررسی کنید که آیا تنظیمات به درستی اعمال شدهاند یا خیر. این ابزار از طریق بررسی قوانین موجود در این فایلها، اطمینان میدهد که قوانین دسترسی به درستی کار میکنند.
5. استفاده از tcpdchk برای بررسی پیکربندیهای سرویسهای خاص
اگر فقط به بررسی پیکربندی یک سرویس خاص نیاز دارید (برای مثال، sshd)، میتوانید از دستور زیر استفاده کنید:
sudo tcpdchk /etc/hosts.allow
این دستور بهطور ویژه فایل hosts.allow را بررسی میکند و گزارشهایی را در مورد مشکلات احتمالی مربوط به این فایل ارائه میدهد.
جمعبندی
در این بخش، نحوه استفاده از ابزار tcpdchk برای بررسی تنظیمات و خطاهای احتمالی در فایلهای hosts.allow و hosts.deny توضیح داده شد. ابزار tcpdchk میتواند به شناسایی خطاهای نحوی و منطقی در پیکربندیهای TCP Wrappers کمک کند و از بروز مشکلات امنیتی جلوگیری نماید. این ابزار به شما اطمینان میدهد که تنظیمات دسترسی به سرویسها به درستی اعمال شدهاند و هیچ خطایی در فایلهای پیکربندی وجود ندارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از tcpdmatch برای تست قواعد تعریفشده در hosts.allow و hosts.deny” subtitle=”توضیحات کامل”]ابزار tcpdmatch یک ابزار مفید برای آزمایش قواعد دسترسی تعریفشده در فایلهای hosts.allow و hosts.deny است. این ابزار به شما کمک میکند تا بررسی کنید که آیا یک درخواست خاص از یک آدرس IP یا دامنه خاص به سرویس مورد نظر شما مجاز است یا خیر. tcpdmatch معمولاً در شرایطی کاربرد دارد که میخواهید دسترسی به یک سرویس را برای یک آدرس IP خاص یا از طریق یک پروتکل خاص آزمایش کنید.
1. نصب tcpdmatch
اگر ابزار tcpdmatch بر روی سیستم شما نصب نیست، میتوانید آن را از بستهی tcpd نصب کنید که معمولاً به همراه TCP Wrappers نصب میشود.
در توزیعهای Debian/Ubuntu:
sudo apt install tcpd
در توزیعهای CentOS/RHEL:
sudo dnf install tcp_wrappers
در توزیعهای Arch Linux:
sudo pacman -S tcp_wrappers
2. نحوه استفاده از tcpdmatch
پس از نصب ابزار، میتوانید از tcpdmatch برای آزمایش یک درخواست خاص استفاده کنید. دستور کلی بهصورت زیر است:
sudo tcpdmatch <سرویس> <آدرس IP> <پورت>
در این دستور:
<سرویس>: نام سرویسی است که میخواهید دسترسی آن را آزمایش کنید (برای مثالsshd).<آدرس IP>: آدرس IP یا دامنهای است که میخواهید آزمایش کنید.<پورت>: پورت مربوط به سرویس است (اگر سرویس از پورت پیشفرض استفاده میکند، نیازی به مشخص کردن پورت نیست).
3. مثالهای استفاده از tcpdmatch
- آزمایش دسترسی به سرویس SSH از یک آدرس IP خاص:
فرض کنید میخواهید دسترسی به سرویس SSH را از آدرس IP
192.168.1.100آزمایش کنید. برای این کار از دستور زیر استفاده کنید:sudo tcpdmatch sshd 192.168.1.100این دستور بررسی میکند که آیا آدرس IP
192.168.1.100مطابق با قواعد موجود در فایلهایhosts.allowوhosts.denyمجاز به دسترسی به سرویسsshdاست یا خیر. - آزمایش دسترسی به سرویس Telnet از آدرس IP خاص:
در اینجا، فرض میکنیم که میخواهید دسترسی به سرویس Telnet از آدرس IP
203.0.113.50را بررسی کنید:sudo tcpdmatch telnet 203.0.113.50این دستور بررسی میکند که آیا دسترسی به سرویس Telnet برای آدرس IP
203.0.113.50مجاز است یا خیر. - آزمایش دسترسی به سرویس FTP از آدرس IP خاص:
برای تست دسترسی به سرویس FTP از آدرس IP
10.1.2.3:sudo tcpdmatch vsftpd 10.1.2.3
4. خروجی دستور tcpdmatch
خروجی این دستور به شما میگوید که آیا دسترسی به سرویس مجاز است یا نه. اگر دسترسی مجاز باشد، خروجی مشابه زیر خواهد بود:
Matched by /etc/hosts.allow: sshd: 192.168.1.100
Access granted
اگر دسترسی رد شده باشد (به دلیل وجود یک قاعده در hosts.deny یا عدم وجود قاعده در hosts.allow)، خروجی به شکل زیر خواهد بود:
No match for sshd: 192.168.1.100
Access denied
5. مورد استفاده tcpdmatch
ابزار tcpdmatch در موارد زیر بسیار مفید است:
- تست قواعد جدید: پس از افزودن یا ویرایش یک قاعده در فایلهای
hosts.allowوhosts.deny، میتوانید ازtcpdmatchاستفاده کنید تا بررسی کنید که آیا قاعده جدید به درستی اعمال شده است یا خیر. - آزمایش دسترسی: میتوانید بهراحتی بررسی کنید که آیا یک آدرس IP خاص قادر به دسترسی به یک سرویس است یا خیر.
- حل مشکلات دسترسی: در صورتی که مشکل دسترسی به سرویسها وجود داشته باشد، میتوانید با استفاده از
tcpdmatchبه راحتی علل مشکلات را شناسایی کرده و پیکربندی را اصلاح کنید.
جمعبندی
در این بخش، نحوه استفاده از ابزار tcpdmatch برای تست قواعد دسترسی موجود در فایلهای hosts.allow و hosts.deny توضیح داده شد. این ابزار به شما کمک میکند تا بررسی کنید که آیا درخواستهای خاص از آدرسهای IP مختلف به سرویسهای مشخص شده مجاز هستند یا خیر. با استفاده از این ابزار میتوانید مطمئن شوید که قوانین امنیتی شما به درستی پیکربندی شده و دسترسیها به درستی مدیریت میشوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مانیتورینگ لاگهای دسترسی و بررسی تأثیر TCP Wrappers در syslog” subtitle=”توضیحات کامل”]مانیتورینگ لاگهای دسترسی به سرویسها و بررسی تأثیر TCP Wrappers در لاگهای سیستم یکی از اجزای حیاتی برای اطمینان از کارایی و امنیت شبکه است. در صورتی که شما از TCP Wrappers برای محدود کردن دسترسی به سرویسهای خود استفاده میکنید، باید بتوانید بررسی کنید که آیا دسترسیهای مجاز و غیرمجاز به درستی ثبت و لاگ میشوند یا خیر. در این بخش، به نحوه پیکربندی لاگها، بررسی لاگهای دسترسی و تأثیر TCP Wrappers در سیستمهای مختلف میپردازیم.
1. فعالسازی لاگگیری در TCP Wrappers
در بسیاری از سیستمها، پیکربندی TCP Wrappers به گونهای است که خودکار لاگهای دسترسی به سرویسها را ثبت میکند. برای ثبت این اطلاعات، معمولا از فایلهای لاگ پیشفرض سیستم مانند syslog یا messages استفاده میشود. برای این کار، باید اطمینان حاصل کنید که تنظیمات صحیحی برای لاگگیری در سیستم پیکربندی شده است.
توزیعهای مختلف لینوکس به طور معمول از syslog برای مدیریت لاگها استفاده میکنند. برای اطمینان از ثبت صحیح لاگها، تنظیمات مربوطه باید در فایلهای پیکربندی syslog یا rsyslog انجام شود.
2. پیکربندی لاگ در syslog
برای پیکربندی ثبت لاگها در سیستمهای مختلف، باید اطمینان حاصل کنید که سرویسها و ابزارهای مربوط به TCP Wrappers مانند tcpd و sshd به درستی به syslog ارسال میکنند. در اینجا نحوه پیکربندی syslog یا rsyslog برای ثبت لاگهای TCP Wrappers آورده شده است.
الف) پیکربندی syslog برای ثبت لاگهای TCP Wrappers
- فایل
/etc/rsyslog.confیا/etc/syslog.confرا ویرایش کنید. در اینجا از/etc/rsyslog.confاستفاده میکنیم.sudo nano /etc/rsyslog.conf - بررسی کنید که خط زیر در فایل موجود باشد تا لاگها به درستی ثبت شوند:
local6.* /var/log/hosts.logاین خط باعث میشود که تمامی لاگهای مربوط به TCP Wrappers (که معمولاً در سطح
local6ثبت میشوند) به فایل/var/log/hosts.logارسال شوند. - اگر خط مورد نظر وجود ندارد، آن را به فایل اضافه کنید و سپس سرویس rsyslog را ریستارت کنید:
sudo systemctl restart rsyslog
ب) بررسی پیکربندی در سیستمهای دیگر (مانند syslog)
اگر از سیستمهایی غیر از rsyslog استفاده میکنید، باید به نحوه پیکربندی سیستم لاگگیری مربوطه توجه کنید و مطمئن شوید که لاگهای مربوط به TCP Wrappers به درستی ذخیره میشوند.
3. آزمایش و مشاهده لاگها
پس از پیکربندی، باید بتوانید لاگهای مربوط به TCP Wrappers را مشاهده کنید. برای این کار، میتوانید از دستور tail برای مشاهده لاگها استفاده کنید:
sudo tail -f /var/log/hosts.log
این دستور آخرین لاگهای مربوط به TCP Wrappers را به صورت زنده نمایش میدهد.
4. نمونه لاگهای مربوط به TCP Wrappers
وقتی یک درخواست دسترسی از طریق TCP Wrappers بررسی میشود، معمولاً یک لاگ مشابه زیر در فایل /var/log/hosts.log ثبت میشود:
sshd[12345]: connect from 192.168.1.100
sshd[12345]: allowed from 192.168.1.100
- در مثال بالا، درخواست اتصال از آدرس IP
192.168.1.100به سرویسsshd(SSH) وارد شده است و از آنجا که دسترسی به آن مجاز است، لاگallowedنمایش داده میشود.
اگر دسترسی به سرویس مورد نظر رد شود، لاگ به شکل زیر خواهد بود:
sshd[12345]: connect from 192.168.1.100
sshd[12345]: denied from 192.168.1.100
5. بررسی تاثیر دستورات hosts.allow و hosts.deny در لاگها
زمانی که شما قوانین hosts.allow و hosts.deny را تنظیم میکنید، تأثیر آنها به وضوح در لاگها قابل مشاهده است. وقتی یک آدرس IP مجاز به دسترسی به یک سرویس میشود، یک ورودی مشابه به شکل زیر در لاگها ظاهر میشود:
sshd[12345]: connect from 192.168.1.100
sshd[12345]: allowed from 192.168.1.100
و اگر دسترسی رد شود، مانند:
sshd[12345]: connect from 192.168.1.100
sshd[12345]: denied from 192.168.1.100
6. بررسی خطاهای احتمالی در تنظیمات TCP Wrappers
در صورتی که در تنظیمات فایلهای hosts.allow و hosts.deny خطاهایی وجود داشته باشد، ممکن است این خطاها در لاگهای سیستم ثبت شوند. برای بررسی این خطاها، میتوانید از دستور زیر برای مشاهده لاگهای syslog استفاده کنید:
sudo tail -f /var/log/syslog
در صورت وجود خطاهای پیکربندی، خطاهایی مشابه زیر در لاگها ظاهر خواهند شد:
tcpd[12345]: invalid rule in /etc/hosts.allow
جمعبندی
در این بخش، نحوه پیکربندی و مانیتورینگ لاگهای مربوط به دسترسیها از طریق TCP Wrappers و تأثیر آنها در syslog شرح داده شد. با استفاده از ابزارهایی مانند rsyslog و فایلهای لاگ، میتوانید بهراحتی دسترسیها را رصد کرده و از تأثیر قوانین پیکربندی شده در فایلهای hosts.allow و hosts.deny آگاه شوید. مانیتورینگ دقیق لاگها و تحلیل آنها به شما کمک میکند تا اطمینان حاصل کنید که امنیت شبکه شما بهدرستی تأمین شده است.
[/cdb_course_lesson][/cdb_course_lessons]
/etc/ قرار دارند و برای محدودسازی دسترسی به سرویسها و منابع سیستم از آنها استفاده میشود. این دو فایل به شرح زیر هستند:
- /etc/hosts.allow
این فایل برای تعیین سرویسهایی است که دسترسی آنها به سیستم مجاز است. شما میتوانید در این فایل قوانین و محدودیتهای دسترسی برای سرویسهای خاص را تعیین کنید. - /etc/hosts.deny
این فایل برای تعیین سرویسهایی است که دسترسی آنها به سیستم مسدود است. اگر قانونی در فایلhosts.allowبرای یک سرویس خاص وجود نداشته باشد، فایلhosts.denyبهعنوان پیشفرض عمل میکند و دسترسی به سرویسها را مسدود میکند.
محل قرارگیری فایلها
- فایل
hosts.allow:
/etc/hosts.allow - فایل
hosts.deny:
/etc/hosts.deny
هر دو فایل در دایرکتوری /etc/ قرار دارند و برای دسترسی و مدیریت آنها نیاز به دسترسی روت (root) خواهید داشت.
روش ویرایش این فایلها
برای ویرایش این فایلها باید از ویرایشگرهای متنی مانند nano یا vim استفاده کنید. در اینجا نحوه ویرایش این فایلها با استفاده از nano آمده است.
- ویرایش فایل
/etc/hosts.allow:
sudo nano /etc/hosts.allow
در این فایل میتوانید قوانینی مشابه به زیر اضافه کنید:
sshd: 192.168.1.0/24
vsftpd: 192.168.0.100
این قوانین به این معنی هستند که تنها IPهای محدوده 192.168.1.0/24 و 192.168.0.100 مجاز به دسترسی به سرویسهای sshd و vsftpd خواهند بود.
- ویرایش فایل
/etc/hosts.deny:
sudo nano /etc/hosts.deny
در این فایل میتوانید قوانینی مشابه به زیر اضافه کنید:
ALL: ALL
این قانون همه دسترسیها به تمامی سرویسها را مسدود میکند، مگر آنکه در فایل hosts.allow اجازه داده شده باشد.
جمعبندی
در این بخش، با فایلهای پیکربندی TCP Wrappers آشنا شدیم که در مسیر /etc/hosts.allow و /etc/hosts.deny قرار دارند. این فایلها به شما امکان کنترل دقیق دسترسی به سرویسها و منابع سیستم را میدهند و به کمک آنها میتوانید دسترسیها را برای آیپیهای خاص محدود یا مجاز کنید.
تمامی دستورات و تنظیمات باید با دقت انجام شوند تا امنیت سیستم حفظ شود و از بروز مشکلات احتمالی جلوگیری گردد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترتیب بررسی این فایلها در فرآیند احراز هویت سرویسها” subtitle=”توضیحات کامل”]در فرآیند احراز هویت سرویسها، سیستم ابتدا به بررسی فایلهای /etc/hosts.allow و /etc/hosts.deny میپردازد تا تعیین کند که آیا یک درخواست دسترسی از یک کاربر یا آیپی خاص مجاز است یا خیر. ترتیب بررسی این دو فایل به این صورت است:
- بررسی فایل
/etc/hosts.allow(ابتدا)
سیستم ابتدا فایلhosts.allowرا بررسی میکند. اگر در این فایل برای یک سرویس خاص یک قانون مربوط به آیپی یا دامنه خاص پیدا کند، دسترسی به آن سرویس مجاز میشود و فرآیند احراز هویت متوقف میشود. - بررسی فایل
/etc/hosts.deny(در مرحله بعدی)
اگر در فایلhosts.allowهیچ قانونی وجود نداشته باشد، سیستم سپس به بررسی فایلhosts.denyمیپردازد. اگر در این فایل یک قانون برای مسدود کردن دسترسی وجود داشته باشد، سیستم دسترسی را مسدود میکند. - تأثیر قوانین عمومی
در صورتی که هیچ قانونی در هر دو فایلhosts.allowوhosts.denyبرای سرویس خاصی پیدا نشود، دسترسی بهصورت پیشفرض مجاز یا مسدود میشود. معمولاً سیستم بهطور پیشفرض دسترسی را بر اساس وضعیت امنیتی تنظیم میکند.
مثال از روند بررسی
برای مثال، اگر یک درخواست برای اتصال به سرویس SSH (sshd) از آیپی 192.168.1.100 برسد، فرآیند بررسی به این صورت است:
- سیستم ابتدا به بررسی فایل
/etc/hosts.allowمیپردازد. اگر قانونی وجود داشته باشد که به آیپی192.168.1.100اجازه دسترسی بهsshdبدهد، دسترسی به همین ترتیب داده میشود و فرآیند به پایان میرسد. - اگر در فایل
hosts.allowهیچ قانونی برایsshdو آیپی192.168.1.100وجود نداشته باشد، سیستم سپس به بررسی فایل/etc/hosts.denyمیپردازد. - اگر قانونی در فایل
hosts.denyوجود داشته باشد که دسترسی بهsshdرا برای این آیپی مسدود کند، دسترسی رد میشود. - در غیر این صورت، اگر هیچیک از این دو فایل تنظیمات خاصی نداشته باشند، دسترسی بهطور پیشفرض مجاز یا مسدود میشود.
جمعبندی
در فرآیند احراز هویت سرویسها، ابتدا فایل /etc/hosts.allow بررسی میشود تا اگر قوانینی برای مجاز بودن دسترسی وجود داشت، دسترسی را مجاز کند. در صورت عدم وجود قوانین در این فایل، سیستم به بررسی فایل /etc/hosts.deny میپردازد و اگر قانونی برای مسدود کردن دسترسی وجود داشته باشد، دسترسی مسدود میشود. در صورت عدم وجود هر دو قانون در این فایلها، دسترسی بهصورت پیشفرض تصمیمگیری میشود.
این ترتیب بررسیها به شما کمک میکند تا کنترل دقیقی بر روی دسترسیها به سرویسها داشته باشید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تأثیر ترتیب قوانین در هر فایل” subtitle=”توضیحات کامل”]ترتیب قرارگیری قوانین در فایلهای /etc/hosts.allow و /etc/hosts.deny تأثیر زیادی بر فرآیند احراز هویت و تصمیمگیری دسترسی به سرویسها دارد. به این ترتیب که سیستم ابتدا اولین قانونی که در هر فایل مییابد را اجرا میکند. در نتیجه، ترتیب نوشتن این قوانین میتواند تأثیر زیادی در کنترل دسترسیها داشته باشد.
فایل /etc/hosts.allow:
- قوانین داخل فایل
hosts.allowاولویت دارند و اگر سیستمی قانونی در این فایل پیدا کند که اجازه دسترسی به سرویس خاصی را بدهد، آن دسترسی فوراً مجاز میشود. - برای مثال، اگر قانون زیر را در فایل
hosts.allowداشته باشیم:sshd: 192.168.1.100به این معنا است که آیپی
192.168.1.100بهطور خاص اجازه اتصال به سرویس SSH (sshd) را دارد، حتی اگر بعداً قانونی در فایلhosts.denyوجود داشته باشد.
فایل /etc/hosts.deny:
- در صورتی که در فایل
hosts.allowهیچ قانونی پیدا نشود یا قانونی برای سرویس خاصی وجود نداشته باشد، سیستم به بررسی فایلhosts.denyمیپردازد. - اگر قانونی در این فایل وجود داشته باشد که دسترسی را برای آیپی یا دامنه خاصی مسدود کند، دسترسی به آن سرویس برای آن آیپی مسدود میشود.
برای مثال، اگر قانونی مانند زیر در فایل
hosts.denyباشد:sshd: 192.168.1.100این به این معناست که آیپی
192.168.1.100از دسترسی به سرویس SSH مسدود میشود.
تاثیر ترتیب قوانین:
- قوانین فایل
/etc/hosts.allow:- اولین قانونی که برای یک سرویس پیدا شود، اجازه دسترسی میدهد و پس از آن دیگر بررسی فایل ادامه نمییابد.
- به همین دلیل، باید قوانین مجاز در ابتدا و قوانین مسدودکننده در انتهای فایل قرار گیرند.
- قوانین فایل
/etc/hosts.deny:- در صورتی که قانونی برای سرویس خاصی در فایل
hosts.allowیافت نشود، سیستم به دنبال قانونی برای مسدود کردن دسترسی در فایلhosts.denyمیگردد. - اگر این قانون پیدا شود، دسترسی به سرویس برای آیپی مورد نظر مسدود میشود.
- در صورتی که قانونی برای سرویس خاصی در فایل
مثال از تأثیر ترتیب:
اگر قوانین زیر را در دو فایل داشته باشیم:
در /etc/hosts.allow:
sshd: 192.168.1.100
در /etc/hosts.deny:
sshd: 192.168.1.100
در این حالت، دسترسی به سرویس SSH از آیپی 192.168.1.100 مجاز خواهد بود، زیرا فایل hosts.allow اولویت دارد.
جمعبندی
ترتیب قوانین در فایلهای /etc/hosts.allow و /etc/hosts.deny بسیار حائز اهمیت است. سیستم ابتدا فایل hosts.allow را بررسی میکند و در صورتی که قانونی برای اجازه دسترسی پیدا کند، بهطور فوری آن را اعمال میکند. اگر هیچ قانونی در این فایل نباشد، سپس فایل hosts.deny بررسی میشود و اگر قانونی برای مسدود کردن دسترسی پیدا کند، آن را اعمال میکند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نمونهای از فایل پیشفرض در یک سیستم لینوکسی” subtitle=”توضیحات کامل”]در سیستمهای لینوکسی، فایلهای /etc/hosts.allow و /etc/hosts.deny معمولاً به صورت پیشفرض خالی هستند یا تنظیمات پایهای برای مسدود کردن یا اجازه دسترسی برای برخی سرویسها وجود دارد. در اینجا یک نمونه از تنظیمات پیشفرض برای هر دو فایل آورده شده است.
نمونهای از فایل /etc/hosts.allow:
فایل /etc/hosts.allow معمولاً بهطور پیشفرض خالی است، اما ممکن است برخی از تنظیمات پایهای برای اجازه دسترسی به سرویسهای خاص وجود داشته باشد. به عنوان مثال، فایل پیشفرض ممکن است بهصورت زیر باشد:
# Allow SSH access from a specific IP address
sshd: 192.168.1.100
این قانون به این معنا است که فقط آیپی 192.168.1.100 اجازه دسترسی به سرویس SSH (sshd) را دارد. اگر فایل خالی باشد، یعنی هیچگونه محدودیت یا اجازهای برای دسترسی به سرویسها از طریق این فایل وجود ندارد.
نمونهای از فایل /etc/hosts.deny:
فایل /etc/hosts.deny نیز معمولاً بهطور پیشفرض خالی است، اما در برخی سیستمها، ممکن است تنظیمات پایهای برای مسدود کردن دسترسی به سرویسهای خاص وجود داشته باشد. یک نمونه از تنظیمات پیشفرض میتواند به صورت زیر باشد:
# Deny access to all services from all IPs
ALL: ALL
این قانون به این معنا است که دسترسی به تمام سرویسها از تمام آیپیها مسدود میشود. این تنظیمات بهطور پیشفرض در بیشتر سیستمها وجود ندارد، ولی اگر وجود داشته باشد، باید بررسی شود که این فایل تأثیری بر دسترسی به سرویسها نداشته باشد، زیرا ممکن است با قوانین موجود در فایل /etc/hosts.allow تداخل داشته باشد.
جمعبندی
در بیشتر سیستمهای لینوکسی، فایلهای /etc/hosts.allow و /etc/hosts.deny بهطور پیشفرض خالی هستند و تنظیمات خاصی در آنها اعمال نمیشود. در صورت وجود، فایلها میتوانند دسترسی به سرویسهای خاصی را برای برخی آیپیها مجاز یا مسدود کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. قواعد نگارشی و فرمت خطوط در فایلهای تنظیمات”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه تعریف یک قانون دسترسی” subtitle=”توضیحات کامل”]در فایلهای /etc/hosts.allow و /etc/hosts.deny، قوانین دسترسی باید طبق یک فرمت خاص و با استفاده از دستورات مخصوص تعریف شوند. هر خط در این فایلها باید از یک ساختار خاص پیروی کند تا سیستم بتواند آن را به درستی پردازش کند. در اینجا به قواعد نگارشی و نحوه تعریف یک قانون دسترسی پرداخته میشود.
فرمت کلی یک قانون دسترسی
فرمت کلی هر خط در فایلهای /etc/hosts.allow و /etc/hosts.deny به شکل زیر است:
service: client [options]
- service: نام سرویس که دسترسی به آن مجاز یا مسدود میشود (مثلاً
sshdبرای سرویس SSH). - client: آدرسهای IP یا نامهای دامنهای که باید مجاز یا مسدود شوند.
- [options]: گزینههای اضافی که میتوانند برای تنظیمات پیچیدهتر اضافه شوند (اختیاری).
نحوه تعریف یک قانون دسترسی
- اجازه دسترسی به یک آیپی خاص:
برای اجازه دادن به دسترسی یک آیپی خاص به یک سرویس، از فرمت زیر استفاده میشود:
sshd: 192.168.1.100
این خط اجازه میدهد که آیپی 192.168.1.100 به سرویس SSH (sshd) دسترسی داشته باشد.
- مسدود کردن دسترسی از یک آیپی خاص:
برای مسدود کردن دسترسی از یک آیپی خاص، از دستور زیر استفاده میشود:
sshd: 192.168.1.101: deny
این خط دسترسی به سرویس SSH را از آیپی 192.168.1.101 مسدود میکند.
- اجازه دادن به دسترسی از یک شبکه خاص:
برای اجازه دادن به دسترسی از یک شبکه خاص، میتوانید از یک رنج آیپی استفاده کنید:
sshd: 192.168.1.0/24
این خط به تمام آیپیها در شبکه 192.168.1.0 اجازه دسترسی به سرویس SSH را میدهد.
- اجازه دسترسی به چندین آیپی یا دامنه:
برای اجازه دادن به چندین آیپی یا دامنه، میتوانید آنها را با کاما جدا کنید:
sshd: 192.168.1.100, 192.168.2.100, .example.com
این خط دسترسی به سرویس SSH را برای آیپیها 192.168.1.100 و 192.168.2.100 و همچنین دامنه example.com مجاز میکند.
نکات تکمیلی
- هر خط باید فقط یک قانون را تعریف کند.
- خطوط کامنتدار با علامت
#شروع میشوند و برای توضیحات به کار میروند. - برای جلوگیری از ایجاد تداخل، ترتیب خطوط در این فایلها اهمیت زیادی دارد. اگر چندین قانون مشابه برای یک سرویس وجود داشته باشد، اولین قانون اعمال میشود.
جمعبندی
فرمت خطوط در فایلهای /etc/hosts.allow و /etc/hosts.deny باید با دقت رعایت شود. هر قانون دسترسی باید بهطور صحیح و با استفاده از فرمت مشخصی تعریف گردد تا از بروز مشکلات احتمالی جلوگیری شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب کلی هر خط: service_name : client_address” subtitle=”توضیحات کامل”]ترکیب کلی هر خط در فایلهای /etc/hosts.allow و /etc/hosts.deny به شکل زیر است:
service_name : client_address
- service_name: نام سرویس مورد نظر (برای مثال
sshdبرای سرویس SSH،httpdبرای Apache). - client_address: آدرس IP یا نام دامنهای که میخواهیم دسترسی آن را مجاز یا مسدود کنیم. این میتواند شامل یک آدرس IP واحد، یک رنج IP یا حتی یک دامنه باشد.
مثالها
- اجازه دادن به دسترسی از یک آیپی خاص به یک سرویس:
sshd: 192.168.1.100
این خط اجازه میدهد که آیپی 192.168.1.100 به سرویس SSH دسترسی داشته باشد.
- مسدود کردن دسترسی از یک آیپی خاص:
sshd: 192.168.1.101: deny
این خط دسترسی به سرویس SSH را برای آیپی 192.168.1.101 مسدود میکند.
- اجازه دادن به دسترسی از یک رنج IP:
sshd: 192.168.1.0/24
این خط به تمام دستگاههایی که در رنج آیپی 192.168.1.0 قرار دارند، اجازه دسترسی به سرویس SSH را میدهد.
- اجازه دسترسی به چندین آیپی یا دامنه:
sshd: 192.168.1.100, 192.168.2.100, .example.com
این خط به آیپیهای 192.168.1.100 و 192.168.2.100 و همچنین دامنه example.com دسترسی به سرویس SSH میدهد.
نکات مهم
- میتوانید از علامت
denyبرای مسدود کردن دسترسی استفاده کنید. - ترکیب هر خط باید دقیقاً به همین شکل باشد تا به درستی پردازش شود.
- برای جلوگیری از خطا، همیشه اطمینان حاصل کنید که از یک فرمت صحیح و معتبر استفاده میکنید.
جمعبندی
در فایلهای /etc/hosts.allow و /etc/hosts.deny، هر خط بهصورت ترکیب service_name : client_address نوشته میشود. این فرمت برای تعریف قوانین دسترسی بسیار مهم است و باید بهدرستی رعایت شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از چندین مقدار در یک خط” subtitle=”توضیحات کامل”]در فایلهای /etc/hosts.allow و /etc/hosts.deny، میتوان چندین مقدار را در یک خط برای اعمال قوانین مختلف بهصورت همزمان استفاده کرد. برای این منظور، میتوان مقادیر مختلف را با استفاده از کاما (,) از هم جدا کرد.
نحوه استفاده:
- اجازه دادن به چندین آیپی یا دامنه برای دسترسی به یک سرویس:
sshd: 192.168.1.100, 192.168.2.100, .example.com
در این مثال، به آیپیهای 192.168.1.100 و 192.168.2.100 و همچنین دامنه example.com دسترسی به سرویس SSH داده میشود.
- مسدود کردن دسترسی به چندین آدرس:
sshd: 192.168.1.101, 192.168.1.102 : deny
در این مثال، دسترسی به سرویس SSH از آیپیهای 192.168.1.101 و 192.168.1.102 مسدود میشود.
- استفاده از آدرسهای IP و رنجهای IP مختلف:
sshd: 192.168.1.100, 192.168.2.0/24 : allow
در این خط، به آیپی 192.168.1.100 و به تمامی آدرسهای IP موجود در رنج 192.168.2.0/24 اجازه دسترسی به سرویس SSH داده میشود.
نکات مهم:
- هر مقدار باید با کاما (
,) از هم جدا شود. - شما میتوانید ترکیبهای مختلف از آیپیها، رنجهای IP، و دامنهها را در یک خط استفاده کنید.
- از کلمه
denyمیتوان برای مسدود کردن دسترسی به آیپیهای مختلف استفاده کرد. - هنگام استفاده از چندین مقدار، ترتیب اهمیت ندارد ولی باید از نظر نحو دستورات دقیقاً رعایت شود.
جمعبندی
استفاده از چندین مقدار در یک خط امکانپذیر است و این امر به شما این اجازه را میدهد که چندین آیپی یا دامنه را به یک سرویس اختصاص دهید یا دسترسی به آنها را مسدود کنید. برای جدا کردن مقادیر از کاما استفاده میشود و میتوانید ترکیبهای مختلفی از مقادیر را برای اعمال قوانین دقیقتر استفاده کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”درج کامنتها در فایلهای تنظیمات” subtitle=”توضیحات کامل”]در فایلهای تنظیمات مانند /etc/hosts.allow و /etc/hosts.deny، میتوانید از کامنتها برای توضیح دادن قوانین یا تنظیمات استفاده کنید. کامنتها در این فایلها با علامت # آغاز میشوند و بلافاصله پس از آن، هر متنی که نوشته شود، بهعنوان کامنت در نظر گرفته خواهد شد و توسط سیستم نادیده گرفته میشود.
نحوه درج کامنتها:
- درج کامنت برای توضیح یک قانون:
# این قانون اجازه دسترسی به SSH را به آیپیهای 192.168.1.100 و 192.168.2.100 میدهد
sshd: 192.168.1.100, 192.168.2.100
در این مثال، کامنتی قبل از قانون تنظیم شده است که توضیح میدهد که این قانون دسترسی به سرویس SSH را به آیپیهای مشخصشده میدهد.
- استفاده از کامنت برای غیر فعال کردن یک قانون موقت:
#sshd: 192.168.1.101
در اینجا، خطی که دسترسی آیپی 192.168.1.101 را به سرویس SSH مسدود میکند، با کامنت شدن غیر فعال شده است.
- کامنت در انتهای یک خط:
sshd: 192.168.1.100 # اجازه دسترسی به SSH از آیپی 192.168.1.100
در این مثال، کامنت در انتهای خط قرار دارد که برای توضیح دادن بیشتر در مورد قانون استفاده شده است.
نکات مهم:
- تمام متن بعد از علامت
#بهعنوان کامنت در نظر گرفته میشود. - کامنتها میتوانند در ابتدای یک خط یا انتهای آن قرار گیرند.
- کامنتها برای توضیح، یادآوری یا غیرفعال کردن موقت خطوط مفید هستند.
- مطمئن شوید که کامنتها با دقت نوشته شوند تا از هرگونه سردرگمی در پیکربندی جلوگیری شود.
جمعبندی
کامنتها ابزاری مفید برای اضافه کردن توضیحات به قوانین و پیکربندیها هستند. با استفاده از علامت # میتوان توضیحاتی را به هر بخش از فایلهای تنظیمات اضافه کرد. این کامنتها به سیستم آسیبی نمیرسانند و میتوانند برای یادآوری یا غیرفعال کردن موقت تنظیمات مورد استفاده قرار گیرند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. پیکربندی ساده برای کنترل دسترسی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”اجازه دادن یا مسدود کردن یک IP خاص” subtitle=”توضیحات کامل”]در این بخش، نحوه پیکربندی فایلهای /etc/hosts.allow و /etc/hosts.deny برای اجازه دادن یا مسدود کردن دسترسی یک IP خاص به یک سرویس را بررسی خواهیم کرد.
1. اجازه دادن به یک IP خاص برای دسترسی به سرویس
برای اینکه به یک آیپی خاص اجازه دسترسی به یک سرویس را بدهید، باید از فایل /etc/hosts.allow استفاده کنید.
نمونه پیکربندی برای اجازه دادن به IP:
در فایل /etc/hosts.allow، خط زیر را اضافه کنید:
sshd: 192.168.1.100
این قانون اجازه میدهد که تنها آیپی 192.168.1.100 به سرویس SSH دسترسی داشته باشد. بهطور پیشفرض، فقط این آیپی میتواند به SSH متصل شود و سایر آیپیها مسدود خواهند بود.
2. مسدود کردن یک IP خاص از دسترسی به سرویس
برای مسدود کردن دسترسی یک آیپی خاص به سرویس، از فایل /etc/hosts.deny استفاده کنید.
نمونه پیکربندی برای مسدود کردن IP:
در فایل /etc/hosts.deny، خط زیر را اضافه کنید:
sshd: 192.168.1.101
این قانون باعث میشود که آیپی 192.168.1.101 نتواند به سرویس SSH دسترسی پیدا کند.
3. ترکیب قوانین برای کنترل دسترسی
ممکن است بخواهید قوانینی را برای اجازه دادن به برخی آیپیها و مسدود کردن آیپیهای دیگر ترکیب کنید.
نمونه ترکیب قوانین:
در فایل /etc/hosts.allow، اجازه دسترسی به یک آیپی خاص داده میشود:
sshd: 192.168.1.100
در فایل /etc/hosts.deny، دسترسی آیپیهای دیگر مسدود میشود:
sshd: ALL
این پیکربندی به این معناست که تنها آیپی 192.168.1.100 اجازه دسترسی به سرویس SSH را دارد و تمام آیپیهای دیگر مسدود هستند.
جمعبندی
برای کنترل دسترسی به سرویسها، میتوان از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کرد. با افزودن آیپیهای مجاز در فایل hosts.allow و آیپیهای مسدود شده در فایل hosts.deny، میتوان به راحتی دسترسی به سرویسها را مدیریت کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مسدود کردن یا اجازه دادن یک محدوده IP” subtitle=”توضیحات کامل”]برای مسدود کردن یا اجازه دادن دسترسی به یک محدوده IP بهجای یک آیپی خاص، میتوانید از بخشهای مختلف پیکربندی در فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید.
1. اجازه دادن به یک محدوده IP خاص
برای اجازه دادن به یک محدوده از IPها، باید از فرمتهای زیر در فایل /etc/hosts.allow استفاده کنید.
نمونه پیکربندی برای اجازه دادن به محدوده IP:
در فایل /etc/hosts.allow، خط زیر را اضافه کنید:
sshd: 192.168.1.0/24
این پیکربندی اجازه میدهد که تمامی IPهای موجود در محدوده 192.168.1.0 تا 192.168.1.255 به سرویس SSH دسترسی داشته باشند.
2. مسدود کردن یک محدوده IP خاص
برای مسدود کردن یک محدوده IP خاص، باید از فایل /etc/hosts.deny استفاده کنید.
نمونه پیکربندی برای مسدود کردن محدوده IP:
در فایل /etc/hosts.deny، خط زیر را اضافه کنید:
sshd: 192.168.1.0/24
این قانون تمامی IPهای موجود در محدوده 192.168.1.0 تا 192.168.1.255 را از دسترسی به سرویس SSH مسدود میکند.
3. ترکیب قوانین برای اجازه دادن یا مسدود کردن محدوده IPها
شما میتوانید قوانین برای اجازه دادن به یک محدوده IP خاص و مسدود کردن دیگر محدودهها را ترکیب کنید.
نمونه ترکیب قوانین برای محدودهها:
در فایل /etc/hosts.allow، اجازه دسترسی به محدودهای خاص داده میشود:
sshd: 192.168.1.0/24
در فایل /etc/hosts.deny، دسترسی سایر IPها مسدود میشود:
sshd: ALL
این پیکربندی به این معناست که تنها IPهای موجود در محدوده 192.168.1.0/24 میتوانند به سرویس SSH متصل شوند و سایر آیپیها مسدود خواهند بود.
جمعبندی
با استفاده از فرمتهای محدوده IP، میتوانید دسترسی به سرویسها را برای مجموعهای از آیپیها در فایلهای /etc/hosts.allow و /etc/hosts.deny مدیریت کنید. این امکان به شما میدهد که دسترسی را به طور خاص یا عمومی برای یک رنج IP تنظیم کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از Wildcardها برای کنترل دسترسی انعطافپذیر” subtitle=”توضیحات کامل”]Wildcardها (کاراکترهای جایگزین) ابزار مفیدی هستند که میتوانند به شما کمک کنند تا دسترسی به سرویسها را با انعطاف بیشتری کنترل کنید. با استفاده از Wildcardها، میتوانید به راحتی محدودههای وسیعتری از IPها یا نامهای سرویس را شامل کنید.
1. استفاده از Wildcard در آدرس IPها
با استفاده از Wildcardها میتوانید یک دامنه از IPها را به راحتی مشخص کنید. به عنوان مثال:
نمونه پیکربندی برای Wildcard در IPها:
در فایل /etc/hosts.allow برای اجازه دادن به IPهای خاص با استفاده از Wildcard:
sshd: 192.168.1.*
این پیکربندی به این معناست که تمامی IPهای موجود در رنج 192.168.1.0 تا 192.168.1.255 میتوانند به سرویس SSH دسترسی داشته باشند.
مسدود کردن محدودههای مشابه در /etc/hosts.deny:
sshd: 192.168.1.*
این قانون دسترسی به سرویس SSH را برای تمامی IPهای موجود در رنج 192.168.1.0/24 مسدود میکند.
2. استفاده از Wildcard در نامهای میزبان (Hostnames)
Wildcardها همچنین میتوانند در نامهای میزبان استفاده شوند. برای مثال، شما میتوانید به تمامی نامهای میزبان که با یک دامنه خاص شروع میشوند دسترسی بدهید:
نمونه پیکربندی برای Wildcard در Hostnames:
در فایل /etc/hosts.allow:
sshd: .example.com
این پیکربندی به تمامی سیستمهایی که نام میزبان آنها با example.com تمام میشود، اجازه دسترسی به سرویس SSH را میدهد.
3. استفاده از Wildcard در سرویسها
در برخی از موارد، میتوانید از Wildcard برای دسترسی به سرویسهای مختلف استفاده کنید. مثلاً برای اجازه دادن به تمام سرویسها به طور کلی:
نمونه پیکربندی برای Wildcard در سرویسها:
در فایل /etc/hosts.allow:
ALL: 192.168.1.*
این دستور به تمامی سرویسها اجازه دسترسی از رنج IP 192.168.1.0/24 را میدهد.
جمعبندی
استفاده از Wildcardها در فایلهای /etc/hosts.allow و /etc/hosts.deny انعطافپذیری بالایی را در مدیریت دسترسی به سرویسها ایجاد میکند. شما میتوانید از Wildcardها برای تعریف دامنههای IP، نامهای میزبان و حتی سرویسها استفاده کنید. این روش میتواند به شما کمک کند تا کنترل دقیقتری روی دسترسیها داشته باشید و مدیریت سیستم را آسانتر کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مثالهایی از تنظیمات رایج در hosts.allow و hosts.deny” subtitle=”توضیحات کامل”]فایلهای /etc/hosts.allow و /etc/hosts.deny به شما این امکان را میدهند که دسترسی به سرویسها را از آدرسهای IP یا نامهای میزبان خاص کنترل کنید. در این بخش، برخی از تنظیمات رایج و کاربردی را برای شما آوردهایم.
1. اجازه دسترسی به یک آدرس IP خاص
فایل /etc/hosts.allow:
اگر میخواهید تنها یک آدرس IP خاص را به سرویس SSH اجازه دهید:
sshd: 192.168.1.100
این قانون اجازه میدهد که فقط IP 192.168.1.100 به سرویس SSH دسترسی داشته باشد.
فایل /etc/hosts.deny:
برای مسدود کردن دسترسی از تمامی آدرسهای IP به سرویس SSH، میتوانید از این قانون استفاده کنید:
sshd: ALL
2. اجازه دسترسی به یک رنج IP
فایل /etc/hosts.allow:
برای اجازه دسترسی به رنج IP خاص (مثلاً رنج 192.168.1.0/24) به سرویس SSH:
sshd: 192.168.1.0/24
فایل /etc/hosts.deny:
برای مسدود کردن دسترسی از تمام IPها به سرویس FTP:
vsftpd: ALL
3. استفاده از Wildcard برای نامهای میزبان
فایل /etc/hosts.allow:
اگر بخواهید دسترسی را به نامهای میزبان خاص مانند تمام زیر دامنههای example.com بدهید:
sshd: .example.com
این دستور به تمامی سیستمهای که نام میزبان آنها با example.com تمام میشود، اجازه دسترسی به سرویس SSH را میدهد.
4. مسدود کردن دسترسی به سرویسها از یک رنج IP
فایل /etc/hosts.deny:
برای مسدود کردن تمامی دسترسیها به سرویس SSH از یک رنج IP خاص (مثل 192.168.1.0/24):
sshd: 192.168.1.0/24
این قانون دسترسی به سرویس SSH را برای تمامی IPها در رنج 192.168.1.0/24 مسدود میکند.
5. دسترسی به تمام سرویسها برای یک IP خاص
فایل /etc/hosts.allow:
برای اجازه دادن به دسترسی به تمام سرویسها برای IP خاص (مثل 192.168.1.100):
ALL: 192.168.1.100
این دستور به IP 192.168.1.100 اجازه میدهد به تمامی سرویسها در سیستم دسترسی داشته باشد.
6. مسدود کردن دسترسی به یک سرویس برای تمامی IPها
فایل /etc/hosts.deny:
برای مسدود کردن دسترسی به سرویس SSH برای تمامی IPها:
sshd: ALL
جمعبندی
با استفاده از فایلهای /etc/hosts.allow و /etc/hosts.deny، میتوانید دسترسی به سرویسهای مختلف را از IPها یا نامهای میزبان خاص محدود یا مجاز کنید. این تنظیمات به شما این امکان را میدهند که به طور دقیق و با استفاده از Wildcardها، رنجهای IP خاص و حتی تمام سرویسها را مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. پیکربندی بر اساس آدرس IP و محدوده شبکه”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از IP Address مستقیم برای مجاز کردن یا مسدود کردن دسترسی” subtitle=”توضیحات کامل”]در فایلهای /etc/hosts.allow و /etc/hosts.deny، میتوانید از آدرسهای IP مستقیم برای مجاز یا مسدود کردن دسترسی به سرویسها استفاده کنید. این روش به شما این امکان را میدهد که دسترسیها را به طور دقیقتر و بر اساس آدرسهای IP خاص مدیریت کنید.
1. مجاز کردن دسترسی از یک IP خاص به یک سرویس
فایل /etc/hosts.allow:
اگر بخواهید به یک آدرس IP خاص (مثلاً 192.168.1.100) اجازه دسترسی به سرویس SSH را بدهید، میتوانید از دستور زیر استفاده کنید:
sshd: 192.168.1.100
این دستور فقط به آدرس IP 192.168.1.100 اجازه دسترسی به سرویس SSH را میدهد.
2. مسدود کردن دسترسی از یک IP خاص به یک سرویس
فایل /etc/hosts.deny:
اگر بخواهید دسترسی از یک آدرس IP خاص (مثلاً 192.168.1.100) را به سرویس SSH مسدود کنید، از دستور زیر استفاده کنید:
sshd: 192.168.1.100
این دستور دسترسی به سرویس SSH را از IP 192.168.1.100 مسدود میکند.
3. مجاز کردن دسترسی از چندین IP خاص به یک سرویس
فایل /etc/hosts.allow:
برای اجازه دادن به چندین آدرس IP خاص (مثلاً 192.168.1.100 و 192.168.1.101) برای دسترسی به سرویس SSH، دستور زیر را استفاده کنید:
sshd: 192.168.1.100, 192.168.1.101
این دستور به دو IP مشخص اجازه دسترسی به سرویس SSH را میدهد.
4. مسدود کردن دسترسی از چندین IP خاص به یک سرویس
فایل /etc/hosts.deny:
اگر بخواهید دسترسی به سرویس SSH را از چندین IP خاص (مثلاً 192.168.1.100 و 192.168.1.101) مسدود کنید، از دستور زیر استفاده کنید:
sshd: 192.168.1.100, 192.168.1.101
این دستور دسترسی به سرویس SSH را از هر دو IP مشخص شده مسدود میکند.
جمعبندی
با استفاده از آدرسهای IP مستقیم در فایلهای /etc/hosts.allow و /etc/hosts.deny، میتوانید به طور دقیق دسترسی به سرویسها را برای آدرسهای IP خاص مجاز یا مسدود کنید. این روش برای مدیریت دسترسی به سرویسها به صورت دقیق و محدود کاربرد دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعیین Subnet Mask برای دسترسی به یک شبکه کامل” subtitle=”توضیحات کامل”]برای تعیین دسترسی به یک شبکه کامل با استفاده از Subnet Mask در فایلهای /etc/hosts.allow و /etc/hosts.deny، میتوانید از فرمت CIDR (Classless Inter-Domain Routing) برای تعیین یک شبکه خاص به جای استفاده از آدرسهای IP منفرد استفاده کنید. این روش امکان کنترل دسترسی به کل یک زیرشبکه را فراهم میکند.
1. مجاز کردن دسترسی به یک Subnet خاص
اگر بخواهید به یک شبکه کامل (مثلاً زیرشبکه 192.168.1.0/24) اجازه دسترسی به سرویس SSH را بدهید، از دستور زیر در فایل /etc/hosts.allow استفاده کنید:
sshd: 192.168.1.0/24
این دستور به تمام آدرسهای IP در بازه 192.168.1.0 تا 192.168.1.255 اجازه دسترسی به سرویس SSH را میدهد.
2. مسدود کردن دسترسی به یک Subnet خاص
اگر بخواهید دسترسی به سرویس SSH را برای یک زیرشبکه خاص (مثلاً زیرشبکه 192.168.1.0/24) مسدود کنید، از دستور زیر در فایل /etc/hosts.deny استفاده کنید:
sshd: 192.168.1.0/24
این دستور دسترسی به سرویس SSH را از تمامی آدرسهای IP در زیرشبکه 192.168.1.0/24 مسدود میکند.
3. مجاز کردن دسترسی به چندین Subnet
اگر بخواهید دسترسی را برای چندین زیرشبکه خاص (مثلاً 192.168.1.0/24 و 10.0.0.0/24) مجاز کنید، از دستور زیر در فایل /etc/hosts.allow استفاده کنید:
sshd: 192.168.1.0/24, 10.0.0.0/24
این دستور به تمام IPهای موجود در دو زیرشبکه 192.168.1.0/24 و 10.0.0.0/24 اجازه دسترسی به سرویس SSH را میدهد.
4. مسدود کردن دسترسی به چندین Subnet
اگر بخواهید دسترسی به یک سرویس را برای چندین زیرشبکه خاص مسدود کنید، از دستور زیر در فایل /etc/hosts.deny استفاده کنید:
sshd: 192.168.1.0/24, 10.0.0.0/24
این دستور دسترسی به سرویس SSH را از هر دو زیرشبکه 192.168.1.0/24 و 10.0.0.0/24 مسدود میکند.
جمعبندی
استفاده از Subnet Mask در فایلهای /etc/hosts.allow و /etc/hosts.deny امکان کنترل دقیقتر دسترسی به شبکههای کامل را فراهم میکند. با استفاده از فرمت IP Address/Netmask میتوانید دسترسی به تمام آدرسهای IP در یک زیرشبکه خاص را مجاز یا مسدود کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”جلوگیری از دسترسی آدرسهای ناشناس” subtitle=”توضیحات کامل”]برای جلوگیری از دسترسی آدرسهای ناشناس (Unknown IP addresses) به سیستم، میتوان از فایلهای hosts.allow و hosts.deny برای مسدود کردن دسترسیهایی که از آدرسهای IP نامشخص میآیند، استفاده کرد. در اینجا مثالی برای جلوگیری از دسترسی آدرسهای ناشناس آورده شده است:
جلوگیری از دسترسی آدرسهای ناشناس در فایل hosts.deny
فرض کنید میخواهید تمام دسترسیهایی که از آدرسهای IP ناشناس میآیند را مسدود کنید. شما میتوانید از علامت ALL برای مسدود کردن دسترسی به تمام سرویسها استفاده کنید.
- ویرایش فایل
hosts.denyبرای مسدود کردن تمام آدرسهای IP ناشناس:
sudo nano /etc/hosts.deny
- در این فایل، دستور زیر را اضافه کنید تا تمام دسترسیها از IP های ناشناس را مسدود کنید:
ALL: ALL
این دستور باعث میشود که دسترسی به تمام سرویسها برای همه IP ها مسدود شود، مگر اینکه در فایل hosts.allow به طور خاص مجاز شده باشند.
مجاز کردن دسترسی از یک یا چند IP خاص در فایل hosts.allow
برای اینکه تنها دسترسی به برخی از IP ها مجاز باشد، باید آنها را در فایل hosts.allow اضافه کنید. به عنوان مثال، برای مجاز کردن دسترسی فقط از یک IP خاص (مثلاً 192.168.1.100) به سرویس SSH، دستور زیر را در فایل hosts.allow قرار دهید:
- ویرایش فایل
hosts.allow:
sudo nano /etc/hosts.allow
- اضافه کردن دستوری برای مجاز کردن دسترسی از IP خاص به سرویس SSH:
sshd: 192.168.1.100
در اینجا، فقط آدرس IP 192.168.1.100 میتواند به سرویس SSH متصل شود.
توضیح
hosts.deny: تمامی درخواستهای دسترسی که در این فایل آمده است، مسدود میشود.hosts.allow: فقط درخواستهایی که در این فایل آمده باشند، مجاز به دسترسی به سرویسها خواهند بود.- با استفاده از این دو فایل میتوانید دسترسی به سیستم خود را به شکل دقیقتر و کنترلشدهتری مدیریت کنید.
در این حالت، هر IP که در hosts.allow نیامده باشد، به طور پیشفرض مسدود میشود، بنابراین میتوان از این روش برای جلوگیری از دسترسیهای ناشناس استفاده کرد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. کار با نام میزبان و دامنهها در TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم دسترسیها بر اساس نام میزبان (hostname)” subtitle=”توضیحات کامل”]برای تنظیم دسترسیها بر اساس نام میزبان (hostname) در فایلهای hosts.allow و hosts.deny، میتوان از نام میزبان به جای آدرس IP برای مجاز کردن یا مسدود کردن دسترسی استفاده کرد. این قابلیت به شما این امکان را میدهد که دسترسیها را بر اساس شناسه میزبان تنظیم کنید.
تنظیم دسترسیها بر اساس نام میزبان در فایلهای hosts.allow و hosts.deny
1. مسدود کردن دسترسی برای یک نام میزبان خاص
برای مسدود کردن دسترسی از یک میزبان خاص بر اساس نام میزبان (hostname)، شما میتوانید از دستور زیر در فایل hosts.deny استفاده کنید:
- ویرایش فایل
hosts.denyبرای مسدود کردن دسترسی از یک نام میزبان خاص:
sudo nano /etc/hosts.deny
- در این فایل، نام میزبان را به جای آدرس IP قرار دهید. به عنوان مثال، برای مسدود کردن دسترسی از میزبان با نام
host1.example.com:
ALL: host1.example.com
این دستور دسترسی به تمامی سرویسها را برای میزبان host1.example.com مسدود میکند.
2. مجاز کردن دسترسی از یک نام میزبان خاص
برای مجاز کردن دسترسی از یک نام میزبان خاص به یک سرویس (مثلاً SSH)، دستور زیر را در فایل hosts.allow قرار دهید:
- ویرایش فایل
hosts.allowبرای مجاز کردن دسترسی از نام میزبان خاص:
sudo nano /etc/hosts.allow
- اضافه کردن نام میزبان به این صورت:
sshd: host1.example.com
این دستور فقط به میزبان host1.example.com اجازه دسترسی به سرویس SSH را میدهد.
3. استفاده از Wildcardها برای نام میزبانها
شما میتوانید از Wildcardها برای دسترسی به چندین میزبان با نامهای مشابه استفاده کنید. برای مثال، اگر میخواهید به تمامی میزبانهایی که نامشان با host شروع میشود، دسترسی دهید، میتوانید از دستور زیر در فایل hosts.allow استفاده کنید:
- ویرایش فایل
hosts.allow:
sudo nano /etc/hosts.allow
- اضافه کردن دستور زیر:
sshd: host*.example.com
این دستور به تمامی میزبانهایی که نامشان با host شروع میشود و دامنه example.com دارند، دسترسی به سرویس SSH را میدهد.
4. توجه به ترتیب قوانین
ترتیب قوانین در فایلهای hosts.allow و hosts.deny بسیار مهم است. قوانین در hosts.allow به اولویت داده میشوند و اگر یک نام میزبان در این فایل مجاز باشد، دسترسی آن میزبان از hosts.deny نادیده گرفته میشود.
مثال نهایی
برای مثال، فرض کنید میخواهید دسترسی به تمامی سرویسها را از میزبان host1.example.com مسدود کرده و دسترسی به سرویس SSH را از میزبان host2.example.com مجاز کنید:
- در فایل
hosts.deny:
ALL: host1.example.com
- در فایل
hosts.allow:
sshd: host2.example.com
در این مثال، فقط host2.example.com به SSH دسترسی خواهد داشت، در حالی که تمامی درخواستها از host1.example.com مسدود خواهند شد.
این روش به شما کمک میکند تا دسترسیها را بر اساس نام میزبان به صورت دقیق و ساده کنترل کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی و فعالسازی Reverse DNS Lookup” subtitle=”توضیحات کامل”]Reverse DNS Lookup به فرآیندی اطلاق میشود که در آن آدرس IP به نام دامنه (hostname) معادل آن تبدیل میشود. این فرآیند میتواند برای تایید صحت درخواستها و شناسایی نام دامنه مرتبط با آدرس IP استفاده شود. در تنظیمات فایلهای hosts.allow و hosts.deny، امکان فعالسازی Reverse DNS Lookup برای کنترل دسترسیها بهصورت دقیقتر وجود دارد.
مراحل بررسی و فعالسازی Reverse DNS Lookup
1. فعالسازی Reverse DNS Lookup در فایلهای hosts.allow و hosts.deny
برای فعالسازی Reverse DNS Lookup در فایلهای hosts.allow و hosts.deny، باید مطمئن شوید که سیستم شما از این قابلیت پشتیبانی میکند و در تنظیمات سرور فعال شده است.
1.1. بررسی پیکربندی Reverse DNS Lookup در فایل /etc/hosts.allow و /etc/hosts.deny
برای این که از نام دامنه بهجای آدرس IP در فایلهای hosts.allow و hosts.deny استفاده کنید، ابتدا باید بررسی کنید که آیا پشتیبانی از Reverse DNS Lookup در سرور فعال است یا خیر.
- ویرایش فایل
hosts.allow:
sudo nano /etc/hosts.allow
- برای استفاده از نام دامنه به جای آدرس IP در این فایل، از دستور زیر استفاده کنید:
sshd: .example.com
در اینجا example.com نام دامنهای است که سیستم به دنبال آن خواهد گشت تا آدرس IP مرتبط را شناسایی کند.
1.2. بررسی پیکربندی Reverse DNS Lookup در فایل /etc/hosts.deny
- ویرایش فایل
hosts.deny:
sudo nano /etc/hosts.deny
- برای مسدود کردن دسترسی از یک دامنه خاص، از دستور مشابه زیر استفاده کنید:
ALL: .example.com
این دستور دسترسی به تمامی سرویسها را از تمام میزبانهایی که نامشان به example.com ختم میشود، مسدود خواهد کرد.
2. فعالسازی Reverse DNS Lookup در تنظیمات سرویسها
برای فعالسازی Reverse DNS Lookup در سرویسهای مختلف مانند sshd، باید پیکربندیهایی را در فایلهای پیکربندی آنها انجام دهید.
2.1. پیکربندی sshd برای فعالسازی Reverse DNS Lookup
- ویرایش فایل پیکربندی
sshd_config:
sudo nano /etc/ssh/sshd_config
- برای فعالسازی Reverse DNS Lookup، باید تنظیمات زیر را به فایل اضافه یا تغییر دهید:
UseDNS yes
این تنظیم به سرور دستور میدهد که از Reverse DNS Lookup استفاده کند تا نام دامنههای مرتبط با آدرسهای IP را بررسی کند.
- ذخیره و بستن فایل.
- راهاندازی مجدد سرویس SSH برای اعمال تغییرات:
sudo systemctl restart sshd
2.2. پیکربندی دیگر سرویسها (مثلاً vsftpd, apache)
بسیاری از سرویسها مانند vsftpd و apache نیز میتوانند از Reverse DNS Lookup پشتیبانی کنند. برای این کار، تنظیمات مشابهی را باید در فایل پیکربندی هر سرویس اعمال کنید.
بهطور مثال، در تنظیمات سرویس vsftpd برای فعالسازی Reverse DNS Lookup، باید در فایل /etc/vsftpd.conf مقدار زیر را اضافه کنید:
reverse_lookup_enable=YES
3. بررسی عملکرد Reverse DNS Lookup
پس از فعالسازی Reverse DNS Lookup در سیستم، میتوانید با استفاده از ابزار dig یا nslookup عملکرد آن را بررسی کنید.
- استفاده از دستور
digبرای بررسی Reverse DNS Lookup:
dig -x <IP_ADDRESS>
مثال:
dig -x 192.168.1.10
این دستور به شما کمک میکند تا نام دامنه مرتبط با آدرس IP مشخصشده را مشاهده کنید.
- استفاده از دستور
nslookup:
nslookup <IP_ADDRESS>
مثال:
nslookup 192.168.1.10
4. مشکلات متداول و رفع آنها
- عدم یافتن نام دامنه مرتبط با آدرس IP: اگر سیستم نتواند نام دامنه مرتبط با آدرس IP را پیدا کند، ممکن است تنظیمات DNS یا تنظیمات Reverse DNS در سرور نادرست باشند. بررسی کنید که آیا در سرور DNS شما اطلاعات معکوس (reverse records) برای آن آدرس IP وجود دارد.
- عدم عملکرد تنظیمات
UseDNSدر سرویسsshd: اگر تنظیماتUseDNSدرsshd_configکار نمیکنند، ممکن است DNS سرور قادر به بازگرداندن Reverse DNS Lookup نباشد. این مشکل ممکن است به دلیل پیکربندی نادرست DNS یا عدم وجود رکوردهای مناسب در DNS رخ دهد.
جمع بندی
فعالسازی Reverse DNS Lookup میتواند به افزایش امنیت و شفافیت در بررسی و کنترل دسترسیها کمک کند. با استفاده از نام دامنه به جای آدرس IP، شما قادر خواهید بود دسترسیها را بهطور دقیقتری کنترل کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه حل مشکلات تأخیر در پردازش نام میزبان” subtitle=”توضیحات کامل”]مشکلات تأخیر در پردازش نام میزبان معمولاً زمانی رخ میدهند که سیستم نتواند بهسرعت نامهای میزبان را به آدرسهای IP تبدیل کند یا برعکس، که میتواند بهواسطه تنظیمات نادرست DNS یا Reverse DNS Lookup رخ دهد. برای حل این مشکلات، چندین روش وجود دارد که در این بخش بررسی خواهیم کرد.
۱. بررسی تنظیمات فایل /etc/hosts
یکی از اولین گامها برای رفع تأخیر در پردازش نام میزبان، بررسی فایل /etc/hosts است. این فایل معمولاً برای نگهداری اطلاعات مربوط به نامهای میزبان و آدرسهای IP استفاده میشود.
مسیر فایل:
/etc/hosts
برای بررسی این فایل، ابتدا باید آن را باز کنید و مطمئن شوید که نام میزبانهای محلی بهدرستی تعریف شدهاند. مثالی از فایل hosts میتواند به شکل زیر باشد:
127.0.0.1 localhost
127.0.1.1 myhostname
در صورت وجود هرگونه خطا یا رکورد اشتباه، آن را اصلاح کنید.
۲. فعالسازی Reverse DNS Lookup
اگر تأخیر در پردازش نام میزبان مربوط به تبدیل آدرسهای IP به نامهای میزبان باشد (که بهطور معمول در برخی سرویسها و سرورها نیاز است)، فعالسازی Reverse DNS Lookup میتواند مشکل را برطرف کند.
برای فعالسازی Reverse DNS Lookup، باید مطمئن شوید که تنظیمات DNS بهدرستی انجام شده است و Reverse DNS برای آدرسهای IP شما پیکربندی شده باشد.
گامهای فعالسازی Reverse DNS Lookup:
- باز کردن فایل پیکربندی
/etc/nsswitch.conf:sudo nano /etc/nsswitch.conf - پیدا کردن خط
hostsو اطمینان حاصل کنید که در آن ازdnsبهعنوان یک گزینه استفاده شده است:hosts: files dns - ذخیره تغییرات و خروج از ویرایشگر.
۳. پیکربندی صحیح DNS
در صورتی که سیستم شما از DNS برای پردازش نام میزبان استفاده میکند، پیکربندی صحیح DNS بسیار مهم است. برای تنظیم صحیح DNS، فایل /etc/resolv.conf را بررسی کنید.
مسیر فایل:
/etc/resolv.conf
مطمئن شوید که نام سرورهای DNS بهدرستی وارد شدهاند:
nameserver 8.8.8.8
nameserver 8.8.4.4
این فایل باید شامل حداقل یک سرور DNS معتبر باشد که بتواند درخواستهای نام میزبان را بهسرعت پردازش کند.
۴. بررسی تنظیمات firewall
در برخی موارد، فایروالها میتوانند باعث تأخیر در پردازش نام میزبان شوند. برای رفع این مشکل، باید پیکربندیهای فایروال را بررسی کنید و اطمینان حاصل کنید که ترافیک DNS بهدرستی عبور میکند.
دستور بررسی وضعیت فایروال:
sudo ufw status
اگر فایروال مانع از عملکرد صحیح DNS شده است، باید آن را تنظیم کنید تا ترافیک DNS اجازه عبور داشته باشد.
۵. استفاده از Cache برای نامهای میزبان
برای کاهش تأخیر در پردازش نام میزبان، میتوانید از کش DNS استفاده کنید. در این صورت، سیستم شما نامهای میزبان قبلاً پردازششده را ذخیره میکند و از پردازش مجدد آنها جلوگیری میکند.
برای استفاده از کش DNS، میتوانید از سرویسهایی مانند systemd-resolved استفاده کنید.
فعالسازی systemd-resolved:
- بررسی وضعیت سرویس:
sudo systemctl status systemd-resolved - اگر غیر فعال است، آن را فعال کنید:
sudo systemctl enable systemd-resolved sudo systemctl start systemd-resolved
۶. بررسی و اصلاح رکوردهای DNS
گاهی اوقات تأخیر در پردازش نام میزبان به دلیل رکوردهای نادرست یا قدیمی DNS است. با استفاده از ابزارهای DNS مانند dig یا nslookup میتوانید وضعیت رکوردهای DNS را بررسی کنید.
استفاده از dig:
برای بررسی رکورد DNS برای یک نام میزبان، از دستور زیر استفاده کنید:
dig example.com
اگر رکوردهای DNS بهدرستی بازنگری نشدهاند یا تنظیمات نادرستی دارند، میتوانید آنها را اصلاح کنید.
۷. استفاده از ابزارهای عیبیابی
در نهایت، برای شناسایی علت اصلی تأخیر در پردازش نام میزبان، میتوانید از ابزارهای عیبیابی استفاده کنید. ابزارهایی مانند ping, traceroute, و dig میتوانند به شما کمک کنند تا مسیر و تأخیرهای نام میزبان را شناسایی کنید.
استفاده از ping:
ping example.com
این دستور به شما نشان میدهد که آیا نام میزبان قابل دستیابی است و چه مقدار تأخیر دارد.
جمعبندی
حل مشکلات تأخیر در پردازش نام میزبان نیازمند بررسی تنظیمات فایلهای سیستم، پیکربندی DNS، فعالسازی Reverse DNS Lookup، و اصلاح فایروالها است. با پیروی از گامهای فوق، میتوانید این مشکلات را شناسایی کرده و بهطور مؤثر برطرف کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مثالهایی از تنظیمات hosts.allow و hosts.deny با نام دامنه” subtitle=”توضیحات کامل”]در فایلهای hosts.allow و hosts.deny، علاوه بر استفاده از آدرسهای IP، میتوان از نامهای دامنه نیز برای تعیین دسترسی استفاده کرد. این قابلیت برای مدیریت دسترسی به سرورها با استفاده از نام دامنههای خوانا و قابل فهم به جای آدرسهای IP استفاده میشود.
۱. تنظیمات فایل /etc/hosts.allow
در این فایل، میتوان دسترسی به سرویسهای خاص را از دامنههای مشخص مجاز کرد. بهعنوان مثال، برای مجاز کردن دسترسی به سرویس SSH برای یک دامنه خاص، میتوان به صورت زیر عمل کرد:
sshd: .example.com
این دستور دسترسی به سرویس SSH را برای همه میزبانهایی که دامنه آنها به example.com ختم میشود، مجاز میکند.
همچنین میتوان دسترسی به دامنههای خاص را با استفاده از Wildcardها تنظیم کرد. بهعنوان مثال:
sshd: .example.org
این دستور به تمام میزبانهای دامنه example.org اجازه دسترسی به سرویس SSH میدهد.
۲. تنظیمات فایل /etc/hosts.deny
در این فایل، میتوان دسترسی را برای دامنهها یا IPهای خاص مسدود کرد. برای مسدود کردن دسترسی از یک دامنه خاص به سرویس SSH، از دستور زیر استفاده میشود:
sshd: .malicious.com
این دستور دسترسی به سرویس SSH را برای تمام میزبانهایی که دامنه آنها به malicious.com ختم میشود، مسدود میکند.
۳. استفاده از Wildcardها برای مسدود کردن دسترسی
برای مسدود کردن دسترسی به دامنههای خاص با استفاده از Wildcardها، میتوان از تنظیمات زیر استفاده کرد:
sshd: *.badexample.com
این دستور دسترسی به سرویس SSH را برای تمام میزبانهای دامنههایی که به badexample.com ختم میشوند، مسدود میکند.
۴. مثال ترکیبی از hosts.allow و hosts.deny
در صورتی که بخواهید دسترسی را برای یک دامنه خاص مجاز و برای دامنههای دیگر مسدود کنید، میتوانید ترکیبی از این دو فایل را استفاده کنید. بهعنوان مثال:
فایل /etc/hosts.allow:
sshd: .trusted.com
فایل /etc/hosts.deny:
sshd: ALL
در این مثال، دسترسی به سرویس SSH فقط برای دامنه trusted.com مجاز است و برای تمام دامنههای دیگر مسدود شده است.
جمعبندی
استفاده از نامهای دامنه در فایلهای hosts.allow و hosts.deny به شما این امکان را میدهد که دسترسی به سرویسها را بهراحتی کنترل کنید. با استفاده از این روشها میتوانید بهطور مؤثر امنیت سرور خود را افزایش دهید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. پیکربندی دسترسی برای سرویسهای خاص”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”کنترل دسترسی به سرویس SSH” subtitle=”توضیحات کامل”]برای کنترل دسترسی به سرویس SSH در سیستمهای لینوکسی، میتوان از روشهای مختلفی استفاده کرد. یکی از این روشها استفاده از فایلهای /etc/hosts.allow و /etc/hosts.deny است که میتواند به شما این امکان را بدهد که دسترسی به سرویس SSH را به آدرسهای IP یا دامنههای خاص محدود کنید.
۱. کنترل دسترسی به سرویس SSH با استفاده از فایل /etc/hosts.allow
در فایل hosts.allow میتوانید دسترسی به سرویس SSH را برای IPها یا دامنههای خاص مجاز کنید. بهعنوان مثال، برای اجازه دادن دسترسی به سرویس SSH برای یک آدرس IP خاص، میتوانید دستور زیر را اضافه کنید:
sshd: 192.168.1.100
اگر بخواهید دسترسی را برای تمام IPهای یک دامنه خاص مجاز کنید، میتوانید از دستور زیر استفاده کنید:
sshd: .example.com
این دستور دسترسی به سرویس SSH را برای همه میزبانهایی که دامنه آنها به example.com ختم میشود، مجاز میکند.
۲. کنترل دسترسی به سرویس SSH با استفاده از فایل /etc/hosts.deny
در فایل hosts.deny میتوانید دسترسی به سرویس SSH را برای IPها یا دامنههای خاص مسدود کنید. بهعنوان مثال، برای مسدود کردن دسترسی به سرویس SSH از یک آدرس IP خاص، دستور زیر را اضافه کنید:
sshd: 192.168.1.200
همچنین میتوانید دسترسی به سرویس SSH را برای تمام IPها و دامنهها بهطور کلی مسدود کنید و سپس فقط برخی IPها را در فایل hosts.allow مجاز کنید. برای مسدود کردن دسترسی به سرویس SSH از تمام آدرسها، دستور زیر را به فایل hosts.deny اضافه کنید:
sshd: ALL
۳. ترکیب تنظیمات در فایلهای hosts.allow و hosts.deny
برای کنترل دقیقتر دسترسیها، میتوانید از ترکیب تنظیمات در فایلهای hosts.allow و hosts.deny استفاده کنید. بهعنوان مثال، در فایل hosts.deny میتوانید دسترسی را برای تمام آدرسها مسدود کرده و سپس در فایل hosts.allow دسترسی را فقط برای IPهای خاص مجاز کنید.
فایل /etc/hosts.deny:
sshd: ALL
فایل /etc/hosts.allow:
sshd: 192.168.1.100
در این مثال، دسترسی به سرویس SSH برای تمام آدرسها مسدود شده است، مگر برای IP 192.168.1.100 که دسترسی مجاز است.
۴. فعالسازی تغییرات
پس از اعمال تغییرات در فایلهای hosts.allow و hosts.deny، نیازی به راهاندازی مجدد سرویس SSH نیست. تغییرات بلافاصله اعمال میشوند.
جمعبندی
استفاده از فایلهای hosts.allow و hosts.deny برای کنترل دسترسی به سرویس SSH یک روش کارآمد برای مدیریت امنیت است. این فایلها به شما این امکان را میدهند که دسترسی به سرویس SSH را بر اساس آدرسهای IP یا دامنهها محدود کرده و بهطور دقیقتر مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت دسترسی برای FTP و Telnet” subtitle=”توضیحات کامل”]مدیریت دسترسی برای سرویسهای FTP و Telnet مشابه با مدیریت دسترسی برای سرویس SSH است. برای محدود کردن دسترسی به این سرویسها، میتوانید از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید. در این بخش، نحوه مدیریت دسترسی برای سرویسهای FTP و Telnet توضیح داده میشود.
۱. مدیریت دسترسی به سرویس FTP
برای کنترل دسترسی به سرویس FTP، باید از نام سرویس vsftpd (یا هر نام سرویس مربوط به FTP که در سیستم شما استفاده میشود) در فایلهای hosts.allow و hosts.deny استفاده کنید.
الف) مجاز کردن دسترسی به FTP از یک آدرس IP خاص
در فایل /etc/hosts.allow دستور زیر را اضافه کنید تا دسترسی به سرویس FTP را فقط از IP 192.168.1.100 مجاز کنید:
vsftpd: 192.168.1.100
ب) مسدود کردن دسترسی به FTP از یک آدرس IP خاص
برای مسدود کردن دسترسی به سرویس FTP از یک آدرس IP خاص، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
vsftpd: 192.168.1.200
ج) مسدود کردن دسترسی به FTP از همه IPها
برای مسدود کردن دسترسی به سرویس FTP از تمام IPها، در فایل /etc/hosts.deny دستور زیر را اضافه کنید:
vsftpd: ALL
سپس، میتوانید در فایل /etc/hosts.allow دسترسی را برای IP خاص مجاز کنید:
vsftpd: 192.168.1.100
۲. مدیریت دسترسی به سرویس Telnet
برای کنترل دسترسی به سرویس Telnet، باید از نام سرویس telnet (یا نام سرویس مربوط به Telnet که در سیستم شما استفاده میشود) در فایلهای hosts.allow و hosts.deny استفاده کنید.
الف) مجاز کردن دسترسی به Telnet از یک آدرس IP خاص
برای مجاز کردن دسترسی به سرویس Telnet از IP 192.168.1.100، در فایل /etc/hosts.allow دستور زیر را اضافه کنید:
telnetd: 192.168.1.100
ب) مسدود کردن دسترسی به Telnet از یک آدرس IP خاص
برای مسدود کردن دسترسی به سرویس Telnet از IP 192.168.1.200، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
telnetd: 192.168.1.200
ج) مسدود کردن دسترسی به Telnet از همه IPها
برای مسدود کردن دسترسی به سرویس Telnet از تمام IPها، در فایل /etc/hosts.deny دستور زیر را اضافه کنید:
telnetd: ALL
سپس، دسترسی را برای IP خاص در فایل /etc/hosts.allow مجاز کنید:
telnetd: 192.168.1.100
۳. فعالسازی تغییرات
پس از اعمال تغییرات در فایلهای hosts.allow و hosts.deny، تغییرات بلافاصله اعمال میشوند و نیازی به راهاندازی مجدد سرویسها نیست.
جمعبندی
مدیریت دسترسی به سرویسهای FTP و Telnet با استفاده از فایلهای /etc/hosts.allow و /etc/hosts.deny مشابه مدیریت دسترسی برای سرویس SSH است. با استفاده از این فایلها، میتوانید دسترسی به سرویسها را برای IPها یا دامنههای خاص محدود کرده و امنیت سیستم خود را مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات محدودکننده برای سرویسهای مهم شبکهای” subtitle=”توضیحات کامل”]برای حفظ امنیت سیستم و محدود کردن دسترسی به سرویسهای مهم شبکهای، میتوان از فایلهای hosts.allow و hosts.deny برای تنظیم دسترسیها استفاده کرد. این فایلها به شما اجازه میدهند تا دسترسی به سرویسهای مختلف مانند SSH، FTP، Telnet و دیگر سرویسهای شبکهای را به طور دقیق مدیریت کنید. در اینجا نحوه محدود کردن دسترسی به سرویسهای مهم شبکهای توضیح داده شده است.
۱. محدود کردن دسترسی به سرویس SSH
الف) مجاز کردن دسترسی به SSH از یک آدرس IP خاص
در فایل /etc/hosts.allow دستور زیر را اضافه کنید تا فقط IP 192.168.1.100 به سرویس SSH دسترسی داشته باشد:
sshd: 192.168.1.100
ب) مسدود کردن دسترسی به SSH از یک آدرس IP خاص
برای مسدود کردن دسترسی به SSH از یک آدرس IP خاص، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
sshd: 192.168.1.200
ج) مسدود کردن دسترسی به SSH از همه IPها
برای مسدود کردن دسترسی به SSH از تمام IPها، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
sshd: ALL
سپس در فایل /etc/hosts.allow دسترسی را برای یک IP خاص مجاز کنید:
sshd: 192.168.1.100
۲. محدود کردن دسترسی به سرویس FTP
الف) مجاز کردن دسترسی به FTP از یک آدرس IP خاص
در فایل /etc/hosts.allow دستور زیر را اضافه کنید تا فقط IP 192.168.1.100 به سرویس FTP دسترسی داشته باشد:
vsftpd: 192.168.1.100
ب) مسدود کردن دسترسی به FTP از یک آدرس IP خاص
برای مسدود کردن دسترسی به FTP از یک آدرس IP خاص، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
vsftpd: 192.168.1.200
ج) مسدود کردن دسترسی به FTP از همه IPها
برای مسدود کردن دسترسی به FTP از تمام IPها، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
vsftpd: ALL
سپس در فایل /etc/hosts.allow دسترسی را برای یک IP خاص مجاز کنید:
vsftpd: 192.168.1.100
۳. محدود کردن دسترسی به سرویس Telnet
الف) مجاز کردن دسترسی به Telnet از یک آدرس IP خاص
در فایل /etc/hosts.allow دستور زیر را اضافه کنید تا فقط IP 192.168.1.100 به سرویس Telnet دسترسی داشته باشد:
telnetd: 192.168.1.100
ب) مسدود کردن دسترسی به Telnet از یک آدرس IP خاص
برای مسدود کردن دسترسی به Telnet از یک آدرس IP خاص، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
telnetd: 192.168.1.200
ج) مسدود کردن دسترسی به Telnet از همه IPها
برای مسدود کردن دسترسی به Telnet از تمام IPها، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
telnetd: ALL
سپس در فایل /etc/hosts.allow دسترسی را برای یک IP خاص مجاز کنید:
telnetd: 192.168.1.100
۴. محدود کردن دسترسی به سرویس NFS
الف) مجاز کردن دسترسی به NFS از یک آدرس IP خاص
در فایل /etc/hosts.allow دستور زیر را اضافه کنید تا فقط IP 192.168.1.100 به سرویس NFS دسترسی داشته باشد:
mountd: 192.168.1.100
ب) مسدود کردن دسترسی به NFS از یک آدرس IP خاص
برای مسدود کردن دسترسی به NFS از یک آدرس IP خاص، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
mountd: 192.168.1.200
ج) مسدود کردن دسترسی به NFS از همه IPها
برای مسدود کردن دسترسی به NFS از تمام IPها، دستور زیر را در فایل /etc/hosts.deny اضافه کنید:
mountd: ALL
سپس در فایل /etc/hosts.allow دسترسی را برای یک IP خاص مجاز کنید:
mountd: 192.168.1.100
جمعبندی
برای محدود کردن دسترسی به سرویسهای مهم شبکهای مانند SSH، FTP، Telnet و NFS میتوانید از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید. با این تنظیمات، میتوانید دسترسی به این سرویسها را برای IPهای خاص مجاز یا مسدود کنید و در نتیجه امنیت سیستم خود را افزایش دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب چندین سرویس در یک خط” subtitle=”توضیحات کامل”]برای مدیریت دسترسیها به چندین سرویس مختلف در فایلهای hosts.allow و hosts.deny، میتوان از یک خط برای ترکیب چندین سرویس استفاده کرد. این کار به شما کمک میکند تا تنظیمات پیچیدهتری را در یک خط ساده پیادهسازی کنید.
۱. مجاز کردن دسترسی به چندین سرویس از یک آدرس IP خاص
برای مجاز کردن دسترسی به چندین سرویس از یک آدرس IP خاص، میتوانید چندین سرویس را در یک خط در فایل /etc/hosts.allow ترکیب کنید. به عنوان مثال، برای مجاز کردن دسترسی به سرویسهای SSH و FTP از IP 192.168.1.100، دستور زیر را استفاده کنید:
sshd, vsftpd: 192.168.1.100
این دستور دسترسی به هر دو سرویس SSH و FTP را از IP 192.168.1.100 مجاز میکند.
۲. مسدود کردن دسترسی به چندین سرویس از یک آدرس IP خاص
برای مسدود کردن دسترسی به چندین سرویس از یک آدرس IP خاص، میتوانید چندین سرویس را در یک خط در فایل /etc/hosts.deny ترکیب کنید. به عنوان مثال، برای مسدود کردن دسترسی به سرویسهای SSH و Telnet از IP 192.168.1.200، دستور زیر را استفاده کنید:
sshd, telnetd: 192.168.1.200
این دستور دسترسی به هر دو سرویس SSH و Telnet را از IP 192.168.1.200 مسدود میکند.
۳. مجاز کردن دسترسی به چندین سرویس برای یک محدوده IP
برای مجاز کردن دسترسی به چندین سرویس از یک محدوده IP خاص، میتوانید محدوده IP را با استفاده از Wildcard و سرویسها را ترکیب کنید. به عنوان مثال، برای مجاز کردن دسترسی به سرویسهای SSH و FTP از محدوده IP 192.168.1.0/24، دستور زیر را استفاده کنید:
sshd, vsftpd: 192.168.1.0/24
این دستور دسترسی به هر دو سرویس SSH و FTP را از هر IP در محدوده 192.168.1.0/24 مجاز میکند.
۴. ترکیب چندین سرویس با قوانین مسدودسازی کلی
اگر بخواهید دسترسی به چندین سرویس را از همه IPها مسدود کنید، دستور زیر را در فایل /etc/hosts.deny استفاده کنید:
sshd, vsftpd, telnetd: ALL
این دستور دسترسی به سرویسهای SSH، FTP و Telnet را از همه IPها مسدود میکند.
جمعبندی
با استفاده از ترکیب چندین سرویس در یک خط، میتوانید تنظیمات دسترسی به سرویسهای مختلف را سادهتر و سریعتر مدیریت کنید. این روش به شما اجازه میدهد تا در فایلهای hosts.allow و hosts.deny، دسترسیها را به صورت مؤثر و در یک خط واحد تعریف کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. بررسی و تست پیکربندی اولیه”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی تغییرات با استفاده از tcpdchk” subtitle=”توضیحات کامل”]ابزار tcpdchk برای بررسی و تحلیل قوانین موجود در فایلهای hosts.allow و hosts.deny استفاده میشود. این ابزار به شما کمک میکند تا مطمئن شوید که تنظیمات دسترسی به درستی پیکربندی شدهاند و هیچ مشکلی در آنها وجود ندارد.
۱. نصب tcpdchk
اگر ابزار tcpdchk در سیستم شما نصب نیست، میتوانید آن را از طریق دستور زیر نصب کنید:
برای سیستمهای مبتنی بر Debian و Ubuntu:
sudo apt-get install tcpd
برای سیستمهای مبتنی بر RedHat و CentOS:
sudo yum install tcpd
۲. بررسی فایلهای hosts.allow و hosts.deny
برای بررسی فایلهای پیکربندی hosts.allow و hosts.deny، دستور زیر را اجرا کنید:
sudo tcpdchk
این دستور فایلهای /etc/hosts.allow و /etc/hosts.deny را بررسی میکند و خطاها یا مشکلات احتمالی را گزارش میدهد.
۳. بررسی یک فایل خاص
اگر فقط بخواهید یک فایل خاص را بررسی کنید، میتوانید نام فایل را به دستور tcpdchk بدهید:
برای بررسی فقط فایل hosts.allow:
sudo tcpdchk -a /etc/hosts.allow
برای بررسی فقط فایل hosts.deny:
sudo tcpdchk -d /etc/hosts.deny
۴. بررسی تنظیمات با گزارش دقیقتر
برای دریافت جزئیات بیشتر در مورد مشکلات موجود در پیکربندیها، از گزینه -v برای فعالسازی گزارش دقیقتر استفاده کنید:
sudo tcpdchk -v
این دستور گزارشی دقیقتر از مشکلات احتمالی در فایلهای پیکربندی hosts.allow و hosts.deny ارائه میدهد.
جمعبندی
ابزار tcpdchk یک ابزار مفید برای بررسی و تحلیل پیکربندیهای دسترسی در فایلهای hosts.allow و hosts.deny است. با استفاده از این ابزار، میتوانید مطمئن شوید که تغییرات اعمال شده در این فایلها به درستی تنظیم شده و مشکلی در فرآیند احراز هویت و دسترسی به سرویسها وجود ندارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست قوانین دسترسی با tcpdmatch” subtitle=”توضیحات کامل”]ابزار tcpdmatch به شما این امکان را میدهد که قوانین دسترسی تعریفشده در فایلهای hosts.allow و hosts.deny را بهصورت عملی تست کرده و بررسی کنید که آیا تنظیمات بهدرستی عمل میکنند یا خیر.
۱. نصب tcpdmatch
اگر ابزار tcpdmatch بر روی سیستم شما نصب نیست، میتوانید آن را با استفاده از دستور زیر نصب کنید:
برای سیستمهای مبتنی بر Debian و Ubuntu:
sudo apt-get install tcpd
برای سیستمهای مبتنی بر RedHat و CentOS:
sudo yum install tcpd
۲. استفاده از tcpdmatch برای تست قوانین دسترسی
برای تست یک درخواست دسترسی (مانند تلاش برای اتصال به سرویس خاص از یک آدرس IP مشخص) از دستور tcpdmatch استفاده میکنید. بهطور کلی، ترکیب دستور به این صورت است:
sudo tcpdmatch <service_name> <client_ip> <client_hostname>
<service_name>: نام سرویس که میخواهید تست کنید (مثلاًsshdبرای SSH).<client_ip>: آدرس IP کلاینتی که میخواهید تست کنید.<client_hostname>: نام میزبان (Hostname) کلاینت.
۳. مثالهای عملی
تست دسترسی برای یک آدرس IP خاص به سرویس SSH:
برای بررسی اینکه آیا آدرس IP 192.168.1.10 به سرویس sshd دسترسی دارد یا خیر، دستور زیر را وارد کنید:
sudo tcpdmatch sshd 192.168.1.10
اگر دسترسی مجاز باشد، خروجی بهصورت “Access granted” نمایش داده میشود. در غیر این صورت، پیامی مبنی بر “Access denied” دریافت خواهید کرد.
تست دسترسی برای یک آدرس IP خاص با نام میزبان:
اگر بخواهید دسترسی یک آدرس IP خاص همراه با نام میزبان آن را بررسی کنید، بهطور مثال برای آدرس IP 192.168.1.10 با نام میزبان client.example.com برای سرویس sshd دستور زیر را وارد کنید:
sudo tcpdmatch sshd 192.168.1.10 client.example.com
۴. بررسی نتایج
در خروجی دستور tcpdmatch، نتایج بهطور واضح نشاندهندهی این خواهند بود که آیا دسترسی بهدرستی مجاز یا مسدود شده است. در صورتی که هیچ تطابقی در فایلهای hosts.allow یا hosts.deny وجود نداشته باشد، سیستم بهطور پیشفرض دسترسی را مسدود میکند.
۵. تست چندین قانون
برای تست تطابق با چندین قانون در یک خط، میتوانید از آدرسهای IP مختلف یا نام میزبانهای مختلف استفاده کنید. این امر به شما کمک میکند تا چندین حالت مختلف را بررسی کنید.
جمعبندی
ابزار tcpdmatch به شما این امکان را میدهد که بهراحتی تنظیمات و قوانین دسترسی خود را تست کنید. با استفاده از این ابزار، میتوانید بررسی کنید که آیا درخواستهای دسترسی از IPها یا میزبانهای خاص به سرویسهای مختلف مجاز یا مسدود شدهاند. این ابزار یک روش مؤثر برای آزمایش و تأیید عملکرد صحیح فایلهای hosts.allow و hosts.deny است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”خواندن و تحلیل لاگهای مرتبط با TCP Wrappers” subtitle=”توضیحات کامل”]TCP Wrappers بهطور پیشفرض تمام تلاشهای دسترسی به سرویسهای تحتپوشش را در لاگهای سیستم ثبت میکند. این لاگها میتوانند به شما کمک کنند تا بفهمید که آیا دسترسی به سرویسها از یک آدرس IP خاص یا یک نام میزبان (hostname) مسدود یا مجاز شده است.
۱. محل ذخیره لاگها
لاگهای مرتبط با TCP Wrappers معمولاً در فایلهای لاگ سیستم مانند /var/log/auth.log یا /var/log/messages ذخیره میشوند. مکان دقیق این فایلها ممکن است بسته به توزیع سیستمعامل و تنظیمات لاگینگ متفاوت باشد.
برای مشاهده لاگهای مربوط به دسترسی به سرویسها میتوانید از دستور grep استفاده کنید تا خطوط مرتبط با TCP Wrappers را فیلتر کنید.
۲. مشاهده لاگهای مربوط به TCP Wrappers
برای بررسی لاگها و تحلیل تلاشهای دسترسی به سرویسها، از دستورات زیر استفاده کنید:
برای سیستمهای مبتنی بر Debian/Ubuntu (auth.log):
sudo grep "tcpd" /var/log/auth.log
برای سیستمهای مبتنی بر RedHat/CentOS (messages):
sudo grep "tcpd" /var/log/messages
۳. تحلیل لاگها
در این لاگها، شما ممکن است پیامهایی مانند “access granted” یا “access denied” را مشاهده کنید. بهطور مثال:
- Access granted:
Apr 12 14:30:45 server sshd[1234]: Accepted password for user from 192.168.1.10 port 22 ssh2 - Access denied:
Apr 12 14:30:45 server sshd[1234]: Failed password for invalid user guest from 192.168.1.10 port 22 ssh2
این پیامها به شما اطلاعاتی در مورد اینکه آیا دسترسی از یک آدرس IP خاص یا میزبان خاص مجاز یا مسدود شده است، میدهند.
۴. فیلتر کردن بر اساس IP یا میزبان
اگر میخواهید لاگها را بر اساس IP یا نام میزبان خاصی فیلتر کنید، میتوانید از دستور grep برای جستجو استفاده کنید. بهطور مثال، برای مشاهده لاگها مرتبط با IP 192.168.1.10:
sudo grep "192.168.1.10" /var/log/auth.log
اگر بهدنبال لاگهایی برای یک نام میزبان خاص باشید:
sudo grep "client.example.com" /var/log/auth.log
۵. استفاده از tail برای مشاهده لاگهای زنده
برای مشاهده لاگها بهصورت زنده، میتوانید از دستور tail استفاده کنید:
sudo tail -f /var/log/auth.log
این دستور بهطور مداوم جدیدترین ورودیهای لاگ را به شما نمایش میدهد.
۶. تجزیه و تحلیل دقیقتر
برای تحلیل دقیقتر، میتوانید از ابزارهای تحلیل لاگ مانند logwatch یا goaccess استفاده کنید که گزارشهای کاملی از دسترسیها و تلاشهای نا موفق ایجاد میکنند.
جمعبندی
خواندن و تحلیل لاگهای مرتبط با TCP Wrappers به شما این امکان را میدهد که فعالیتهای دسترسی به سرویسهای شبکه خود را رصد کنید و مشکلات امنیتی احتمالی را شناسایی کنید. با استفاده از دستورات grep و tail میتوانید بهراحتی لاگها را فیلتر کرده و از آنها برای تجزیه و تحلیل دسترسیها و وضعیت امنیتی سرویسهای خود استفاده کنید.[/cdb_course_lesson][/cdb_course_lessons]
twist در TCP Wrappers، میتوانید تنظیماتی را در فایلهای hosts.allow و hosts.deny ایجاد کنید تا بهطور خاص پیامهای سفارشی به کاربرانی که تلاش به دسترسی غیرمجاز دارند، ارسال کنید.
در اینجا روشهای استفاده از twist برای تعریف پیامهای سفارشی آورده شده است.
۱. نصب و پیکربندی ابزار twist
برای استفاده از ابزار twist، ابتدا باید آن را نصب کنید. ابزار twist بهطور معمول همراه با پکیجهای TCP Wrappers نصب میشود. با این حال، برای اطمینان از نصب آن، میتوانید دستور زیر را اجرا کنید:
نصب twist (برای سیستمهای Debian/Ubuntu):
sudo apt-get install tcpd
نصب twist (برای سیستمهای RedHat/CentOS):
sudo yum install tcp_wrappers
۲. تعریف پیامهای سفارشی برای دسترسی غیرمجاز
ابزار twist به شما این امکان را میدهد که برای دسترسیهای غیرمجاز پیامهای سفارشی ارسال کنید. شما میتوانید این پیامها را در فایل hosts.deny تعریف کنید.
نمونهای از تنظیم پیام سفارشی در hosts.deny:
ALL: ALL : twist /usr/sbin/twist -m "Access Denied: Unauthorized Access Attempt"
توضیح:
ALL: ALL: این بخش به معنای مسدود کردن دسترسی از تمام آدرسهای IP است. شما میتوانید بهجایALLآدرسهای خاص یا دامنههایی را که میخواهید دسترسیشان مسدود شود، وارد کنید.twist /usr/sbin/twist -m "Access Denied: Unauthorized Access Attempt": دستورtwistهمراه با پارامتر-mپیام سفارشی را به کاربر نمایش میدهد. این پیام میتواند هر متنی باشد که شما بخواهید.
۳. استفاده از پیامهای سفارشی برای سرویس خاص
اگر بخواهید پیام سفارشی فقط برای یک سرویس خاص (مثل SSH یا FTP) ارسال شود، میتوانید این تنظیمات را بهطور خاص برای آن سرویس انجام دهید.
مثال برای سرویس SSH:
sshd: ALL : twist /usr/sbin/twist -m "SSH Access Denied: Unauthorized Access Attempt"
توضیح: این تنظیم فقط برای دسترسیهای ناموفق به سرویس SSH پیام سفارشی ارسال میکند.
۴. تست پیامهای سفارشی
پس از تنظیمات، برای تست پیامها، میتوانید تلاش کنید از یک آدرس IP غیرمجاز به سرویسها متصل شوید و پیام سفارشی را مشاهده کنید.
جمعبندی
با استفاده از ابزار twist در فایلهای hosts.allow و hosts.deny میتوانید پیامهای سفارشی برای دسترسیهای غیرمجاز تعریف کنید. این پیامها بهطور مفید برای اطلاعرسانی به کاربران درباره دسترسیهای غیرمجاز یا مسدود شده نمایش داده میشوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ثبت و لاگگذاری پیشرفته با severity در syslog” subtitle=”توضیحات کامل”]برای ثبت و لاگگذاری پیشرفته با استفاده از severity در سیستم syslog در لینوکس، میتوان از ساختار syslog برای مدیریت لاگها و تنظیم سطح severity (شدت) استفاده کرد. این کار به شما این امکان را میدهد که پیامهای لاگ را با توجه به نوع و شدت مشکل تنظیم کنید.
۱. ساختار Severity در Syslog
در syslog، لاگها با استفاده از سطوح مختلف severity (شدت) ثبت میشوند. هر سطح severity نشاندهنده نوع و اهمیت پیامی است که باید ثبت شود. سطوح severity بهطور پیشفرض به شرح زیر هستند:
- debug: پیغامهایی برای اشکالزدایی، اطلاعات کماهمیت
- info: پیغامهای عمومی اطلاعاتی
- notice: پیغامهایی که نیاز به توجه دارند اما بحرانی نیستند
- warning: پیغامهایی که هشداردهنده هستند و ممکن است به مشکلی منتهی شوند
- err: پیغامهای خطا، مشکلات جدی اما قابل حل
- crit: پیغامهای بحرانی که نیاز به توجه فوری دارند
- alert: پیغامهایی که باید فوراً به آنها واکنش نشان داده شود
- emerg: پیامهای اضطراری که سیستم در وضعیت بحرانی قرار دارد و به طور فوری باید حل شوند
۲. پیکربندی Syslog برای ثبت پیامها با Severity
برای پیکربندی syslog و ثبت لاگها با severity خاص، میتوانید فایل تنظیمات syslog را ویرایش کنید.
۲.۱. ویرایش فایل /etc/rsyslog.conf
فایل پیکربندی rsyslog که مسئول ثبت لاگها در سیستمهای لینوکسی است، شامل بخشهایی است که میتوانند سطح severity پیامها را تعیین کنند.
برای مثال:
# فیلتر کردن پیامهای severity و تعیین نوع لاگ
*.info /var/log/messages
*.warn /var/log/warnings.log
*.err /var/log/errors.log
*.alert /var/log/alerts.log
در اینجا:
*.infoتمام پیامهای با سطح severity ازinfoبه بالا را به فایل/var/log/messagesارسال میکند.*.warnپیامهای با severitywarningیا بالاتر را در فایل/var/log/warnings.logثبت میکند.*.errبرای ثبت پیامهای خطا (err) یا بالاتر در فایل/var/log/errors.logاستفاده میشود.*.alertبرای ثبت پیامهای alert یا بحرانی در فایل/var/log/alerts.logمیباشد.
۲.۲. استفاده از severity در فایلهای خاص
برای استفاده از severity در سرویسهای خاص، شما میتوانید پیکربندیهای مشابه را در تنظیمات لاگ هر سرویس (مانند SSH، Apache، یا سیستمعامل خود) انجام دهید. این تنظیمات در فایلهایی مانند /etc/rsyslog.d/ یا /etc/rsyslog.conf قرار دارند.
۲.۳. مثالهای دیگر از Severity در پیکربندی syslog
در اینجا چند مثال بیشتر برای تنظیم severity در syslog آورده شده است:
برای ثبت پیامهای debug:
*.debug /var/log/debug.log
برای ثبت پیامهای warning یا بالاتر:
*.warning /var/log/warning.log
برای ثبت پیامهای crit یا بالاتر:
*.crit /var/log/critical.log
برای ثبت پیامهای alert یا بالاتر:
*.alert /var/log/alert.log
۳. تغییر سطح severity در سرویسها
برای سرویسهای خاص مانند SSH یا Apache، شما میتوانید با استفاده از گزینههای تنظیمات، severity را تغییر دهید. برای مثال در sshd_config برای سرویس SSH:
LogLevel VERBOSE
این دستور برای سرویس SSH پیامها را با سطح verbosity بیشتری ثبت میکند، بهطور پیشفرض INFO است، اما میتوانید از سطوحی مانند DEBUG، VERBOSE یا QUIET استفاده کنید.
۴. استفاده از logger برای ثبت دستی لاگها
ابزار logger به شما این امکان را میدهد که از خط فرمان بهطور دستی پیامهایی را به لاگ سیستم ارسال کنید. شما میتوانید severity پیامها را هنگام استفاده از logger تعیین کنید.
مثال: ارسال پیام با severity info:
logger -p user.info "This is an informational message"
مثال: ارسال پیام با severity error:
logger -p user.err "This is an error message"
مثال: ارسال پیام با severity alert:
logger -p user.alert "This is an alert message"
۵. استفاده از ابزارهای مختلف برای تجزیه و تحلیل لاگها
پس از تنظیم لاگها و severityها، میتوانید از ابزارهایی مانند logrotate برای مدیریت لاگها و grep برای جستجو و تجزیه و تحلیل پیامهای خاص استفاده کنید.
برای مثال، برای پیدا کردن پیامهای خطا:
grep "err" /var/log/errors.log
جمعبندی
با استفاده از تنظیمات severity در syslog، شما قادر به کنترل دقیقتر ثبت لاگها و تحلیل بهتر وضعیت سیستم خواهید بود. از ابزارهایی مانند logger و پیکربندیهای سطح سرویس میتوانید برای بهبود مدیریت لاگها و شناسایی مشکلات سیستم استفاده کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از spawn برای اجرای دستورات هنگام برقراری یا رد اتصال” subtitle=”توضیحات کامل”]spawn یک ویژگی در TCP Wrappers است که به شما امکان میدهد دستورات خاصی را هنگام برقراری یا رد اتصال از کلاینت اجرا کنید. این قابلیت بهویژه برای مدیریت بهتر و انجام اقدامات پیشگیرانه در هنگام تلاش برای دسترسی به سرویسها مفید است.
نحوه استفاده از spawn در فایلهای hosts.allow و hosts.deny
در صورتی که بخواهید یک دستور خاص را در هنگام اتصال موفق یا رد اتصال اجرا کنید، میتوانید از گزینه spawn استفاده کنید. این دستور به شما امکان میدهد تا از اسکریپتها یا برنامهها برای نظارت و اقدام روی تلاشهای اتصال استفاده کنید.
1. تنظیم spawn در فایل hosts.allow
اگر بخواهید بهطور خاص از spawn برای اجرای یک دستور هنگام برقراری اتصال استفاده کنید، میتوانید آن را در فایل hosts.allow قرار دهید. بهعنوان مثال، فرض کنید شما میخواهید با هر اتصال موفق به یک سرویس، یک اسکریپت خاص اجرا شود.
مسیر فایل: /etc/hosts.allow
sshd : 192.168.1.0/24 : spawn (/usr/local/bin/log_connection.sh)
در این مثال، هنگام برقراری اتصال از هر IP در شبکه 192.168.1.0/24 به سرویس sshd، اسکریپت log_connection.sh اجرا میشود.
2. تنظیم spawn در فایل hosts.deny
برای رد کردن اتصالات و اجرای دستور خاص هنگام مسدود کردن دسترسی، میتوانید از گزینه spawn در فایل hosts.deny استفاده کنید. این به شما این امکان را میدهد که هنگام رد اتصال، اقدامات خاصی انجام دهید.
مسیر فایل: /etc/hosts.deny
sshd : ALL : spawn (/usr/local/bin/log_denied.sh)
در این مثال، هنگام رد دسترسی به سرویس sshd از هر IP، اسکریپت log_denied.sh اجرا میشود.
توضیح دستورات
sshd: نام سرویس که در این مثال، سرویس SSH است.192.168.1.0/24یاALL: آدرسهای IP مجاز یا ردشده برای دسترسی به سرویس.spawn: دستور که باعث اجرای اسکریپت یا برنامه پس از برقراری یا رد اتصال میشود./usr/local/bin/log_connection.sh: مسیر به اسکریپت که قرار است اجرا شود.
مثالهای عملی
- گزارشگیری از اتصالات موفق: هنگام برقراری اتصال از یک آدرس خاص، ممکن است بخواهید گزارشی از اتصالات موفق ذخیره کنید.
فایل:
/etc/hosts.allowsshd : 192.168.1.10 : spawn (/usr/local/bin/log_success.sh) - گزارشگیری از اتصالات رد شده: هنگام رد دسترسی از هر IP، ممکن است بخواهید لاگهایی از اتصالات ردشده ذخیره کنید.
فایل:
/etc/hosts.denysshd : ALL : spawn (/usr/local/bin/log_failed.sh)
نکات مهم
- اسکریپتها و دستورات باید مسیر کامل خود را داشته باشند.
- زمانی که از
spawnاستفاده میکنید، اطمینان حاصل کنید که دستورات و اسکریپتها دارای مجوزهای مناسب برای اجرا هستند. - با استفاده از
spawn، میتوانید فرآیندهای خودکار و نظارتی در هنگام برقراری یا رد اتصالات تنظیم کنید.
جمعبندی
استفاده از spawn در فایلهای hosts.allow و hosts.deny امکان اجرای دستورات خاص هنگام برقراری یا رد اتصالات را فراهم میکند. این ویژگی به شما کمک میکند تا از ابزارهای مختلف برای نظارت و اقدامات امنیتی خودکار استفاده کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب TCP Wrappers با اسکریپتهای سفارشی” subtitle=”توضیحات کامل”]TCP Wrappers یک ابزار امنیتی است که به شما این امکان را میدهد تا دسترسی به سرویسهای شبکهای را کنترل کنید. شما میتوانید با استفاده از این ابزار، دسترسیها را بر اساس آدرس IP یا نام میزبان محدود کنید. ترکیب TCP Wrappers با اسکریپتهای سفارشی میتواند به شما این امکان را بدهد که هنگام وقوع یک رویداد خاص، واکنشهای دلخواهی داشته باشید، مانند ارسال ایمیل، ذخیره اطلاعات در لاگ یا اجرای دستورات خاص.
در این بخش، نحوه ترکیب TCP Wrappers با اسکریپتهای سفارشی را توضیح خواهیم داد.
1. ایجاد اسکریپت سفارشی برای واکنش به دسترسیهای مسدود شده
اولین قدم ایجاد یک اسکریپت است که بهطور خودکار واکنشهایی به تلاشهای ناموفق برای دسترسی به سرویسها بدهد. در این مثال، اسکریپت زیر هر بار که یک تلاش برای اتصال مسدود میشود، یک گزارش در فایل لاگ ایجاد کرده و ایمیلی به مدیر ارسال میکند.
#!/bin/bash
# /usr/local/bin/handle_failed_access.sh
# آدرس IP مشتری که درخواست دسترسی داشته است
CLIENT_IP=$1
# نام سرویس هدف
SERVICE=$2
# نوع اقدام (دسترسی مسدود شده یا پذیرفته شده)
ACTION=$3
# بررسی نوع اقدام و واکنش به آن
if [ "$ACTION" == "DENY" ]; then
# ثبت اطلاعات در فایل لاگ
echo "Connection attempt from $CLIENT_IP to $SERVICE was denied." \
>> /var/log/tcp_wrappers_denied.log
# ارسال ایمیل به مدیر
echo "Connection attempt from $CLIENT_IP to $SERVICE was denied." \
| mail -s "TCP Wrapper Deny Alert" admin@example.com
fi
2. پیکربندی TCP Wrappers برای فراخوانی اسکریپت
برای استفاده از این اسکریپت در ترکیب با TCP Wrappers، باید فایلهای پیکربندی /etc/hosts.allow و /etc/hosts.deny را طوری تنظیم کنید که هنگام وقوع یک درخواست مسدود شده، اسکریپت اجرا شود.
پیکربندی فایل /etc/hosts.allow برای اجازه دسترسی:
sshd: ALL : spawn (/usr/local/bin/handle_failed_access.sh %c %d %a)
پیکربندی فایل /etc/hosts.deny برای مسدود کردن دسترسی:
sshd: ALL : spawn (/usr/local/bin/handle_failed_access.sh %c %d %a)
3. توضیح پارامترها
در پیکربندی بالا، پارامترهای مختلفی به اسکریپت ارسال میشوند:
%c: آدرس IP یا نام میزبان مشتری.%d: سرویس هدف که درخواست دسترسی به آن انجام شده است (مثلاًsshd).%a: نوع اقدام که میتواندDENY(مسدود کردن) یاALLOW(اجازه) باشد.
این پارامترها بهطور خودکار توسط TCP Wrappers به اسکریپت ارسال میشوند تا بتوانید اقدامهای مناسب را انجام دهید.
4. تست پیکربندی و اسکریپتها
پس از پیکربندی TCP Wrappers و اسکریپتها، میتوانید با انجام یک تلاش ناموفق برای دسترسی به سرویسها، عملکرد اسکریپتها را تست کنید. برای مثال، اگر میخواهید اتصال SSH از یک آدرس IP مسدود شده را تست کنید، میتوانید دستور زیر را اجرا کنید:
ssh user@192.168.1.100
اگر پیکربندی بهدرستی انجام شده باشد، اسکریپت باید پیامی مشابه زیر را در فایل لاگ ثبت کند:
Connection attempt from 192.168.1.100 to sshd was denied.
5. نکات تکمیلی
- استفاده از اسکریپتهای سفارشی به شما این امکان را میدهد که بهطور دقیقتر واکنش نشان دهید و اقدامات امنیتی مختلفی انجام دهید.
- میتوانید اسکریپتها را برای شناسایی حملات Brute Force یا هر نوع تلاشهای غیرمجاز پیچیدهتر کنید و اقدامات بیشتری مانند بلوک کردن IPهای مهاجم را انجام دهید.
- برای بررسی صحت پیکربندیهای TCP Wrappers، از ابزار
tcpdchkاستفاده کنید تا مطمئن شوید که پیکربندی شما به درستی اعمال شده است.
جمعبندی
ترکیب TCP Wrappers با اسکریپتهای سفارشی این امکان را به شما میدهد که واکنشهای امنیتی خود را بهطور دینامیک و خودکار تنظیم کنید. با استفاده از این روش میتوانید برای هرگونه تلاش برای دسترسی غیرمجاز، اقدام مناسب انجام دهید و اقدامات امنیتی خود را بهطور مؤثری مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. ایجاد قوانین ترکیبی و شرطی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب استفاده از hosts.allow و hosts.deny برای مدیریت دسترسی پیچیده” subtitle=”توضیحات کامل”]در سیستمهای مبتنی بر لینوکس، TCP Wrappers از دو فایل پیکربندی اصلی به نامهای /etc/hosts.allow و /etc/hosts.deny استفاده میکند تا دسترسی به سرویسهای شبکهای مختلف را کنترل کند. این فایلها به مدیر سیستم این امکان را میدهند که بهصورت دقیقتر و پیچیدهتری دسترسیها را تنظیم کند. ترکیب این دو فایل برای مدیریت دسترسی بهویژه زمانی که نیاز به سیاستهای دسترسی پیچیدهتری دارید، بسیار مفید است.
در این بخش، به توضیح چگونگی ترکیب و استفاده از این دو فایل برای مدیریت دسترسی پیچیده میپردازیم.
1. مفهوم اصولی hosts.allow و hosts.deny
hosts.allow: این فایل برای تعیین و اجازه دسترسی به سیستم برای درخواستهای مشخص از آیپیها یا نامهای میزبان خاص استفاده میشود.hosts.deny: در این فایل، دسترسی برای درخواستهای مشخص از آیپیها یا نامهای میزبان خاص مسدود میشود.
در واقع، فایل hosts.allow باید اولویت بیشتری داشته باشد، زیرا اولین جایی است که بررسی میشود. اگر در این فایل اجازه دسترسی برای یک آدرس آیپی مشخص داده شده باشد، دسترسی برای آن آیپی در هر دو فایل hosts.deny و hosts.allow اجازه داده میشود.
2. نحوه استفاده ترکیبی از hosts.allow و hosts.deny
زمانی که میخواهید از هر دو فایل برای مدیریت دسترسی پیچیدهتر استفاده کنید، معمولاً از این روشها استفاده میشود:
- اولویتدهی به اجازه دسترسی در
hosts.allow: اگر قصد دارید دسترسی به یک سرویس خاص را به چندین آیپی خاص بدهید، این آیپیها را درhosts.allowقرار میدهید. - مسدود کردن دسترسیهای عمومی در
hosts.deny: بهطور پیشفرض میتوانید دسترسی به سرویسهای خود را برای تمامی آدرسها مسدود کنید و فقط به آدرسهای مشخص اجازه دسترسی بدهید.
مثال 1: اجازه دسترسی به IP خاص و مسدود کردن دیگر آدرسها
در این مثال، اجازه دسترسی به سرویس SSH تنها به آدرس IP خاص 192.168.1.100 داده میشود و تمامی دسترسیها از سایر آدرسها مسدود میشود.
در فایل /etc/hosts.allow:
sshd: 192.168.1.100
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در فایل
hosts.allow، فقط آدرس192.168.1.100اجازه دسترسی به سرویسsshdرا دارد. - در فایل
hosts.deny، تمامی آدرسها (ALL) دسترسی به سرویسsshdرا مسدود کردهاند.
مثال 2: اجازه دسترسی به آدرسهای خاص و مسدود کردن بقیه
در این مثال، دسترسی به سرویس SSH برای چندین آدرس آیپی مجاز است و تمامی سایر آدرسها مسدود میشوند.
در فایل /etc/hosts.allow:
sshd: 192.168.1.100, 192.168.1.101
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- آدرسهای
192.168.1.100و192.168.1.101میتوانند به سرویسsshdدسترسی داشته باشند. - تمام آدرسهای دیگر توسط
hosts.denyمسدود میشوند.
3. استفاده از Wildcards و Subnet Mask در ترکیب با hosts.allow و hosts.deny
برای تنظیمات پیچیدهتر، میتوان از Wildcardها و Subnet Mask استفاده کرد. این قابلیت به شما این امکان را میدهد که دسترسی را بهصورت گروهی مدیریت کنید، بهویژه زمانی که میخواهید دسترسی را به یک شبکه کامل یا محدودههای خاص از آدرسهای آیپی بدهید.
مثال 3: استفاده از Wildcard برای اجازه دسترسی به یک شبکه خاص
در این مثال، شما میخواهید دسترسی به سرویس SSH را تنها به شبکه 192.168.1.0/24 بدهید و دسترسی به سایر آدرسها را مسدود کنید.
در فایل /etc/hosts.allow:
sshd: 192.168.1.0/255.255.255.0
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- با استفاده از Subnet Mask (
192.168.1.0/255.255.255.0)، تمامی آدرسهای موجود در این شبکه مجاز به دسترسی به سرویسsshdخواهند بود. - تمام آدرسهای دیگر مسدود خواهند شد.
مثال 4: استفاده از Wildcard برای مسدود کردن دسترسی از یک دامنه خاص
اگر میخواهید دسترسی به سرویسها را از دامنه خاصی مسدود کنید، میتوانید از Wildcard استفاده کنید.
در فایل /etc/hosts.deny:
sshd: *.example.com
توضیح:
- در این مثال، تمامی درخواستهای دسترسی از دامنه
example.comمسدود میشود، بدون توجه به آدرس آیپی مشخص.
4. پیادهسازی امنیت چند لایه با ترکیب hosts.allow و hosts.deny
ترکیب این دو فایل میتواند بهطور مؤثری برای پیادهسازی امنیت چند لایه استفاده شود. بهعنوان مثال:
- در ابتدا تمامی دسترسیها را در
hosts.denyمسدود کنید. - سپس در
hosts.allowفقط اجازه دسترسی به آدرسهای خاص را بدهید. - با استفاده از Wildcardها، میتوانید دسترسی به گروهی از میزبانها یا شبکهها را بهصورت هدفمند تنظیم کنید.
مثال 5: امنیت چند لایه با دسترسی محدود به یک سرویس
در این مثال، تمامی دسترسیها به سرویس SSH برای تمام کاربران مسدود شدهاند، بهجز یک گروه خاص از آدرسهای آیپی.
در فایل /etc/hosts.deny:
sshd: ALL
در فایل /etc/hosts.allow:
sshd: 192.168.1.100, 192.168.2.0/255.255.255.0
توضیح:
- تمامی آدرسها در ابتدا مسدود میشوند.
- تنها آدرس
192.168.1.100و شبکه192.168.2.0/24اجازه دسترسی به سرویسsshdرا خواهند داشت.
جمعبندی
ترکیب استفاده از hosts.allow و hosts.deny یکی از روشهای مؤثر برای مدیریت دسترسیهای پیچیده در سیستمهای لینوکسی است. با استفاده از این ترکیب، میتوان بهراحتی سیاستهای دسترسی دقیقتری ایجاد کرد که هم امنیت شبکه را بهبود بخشد و هم کنترل بهتری بر روی دسترسیها فراهم آورد. همچنین استفاده از Wildcardها و Subnet Maskها میتواند قابلیتهای این ابزار را برای کنترل دسترسیهای گستردهتر و پیچیدهتر گسترش دهد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”اعمال دسترسیهای خاص بر اساس محدودههای IP” subtitle=”توضیحات کامل”]در بسیاری از مواقع، نیاز به اعمال دسترسیهای خاص به یک سرویس شبکهای تنها برای گروهی از آدرسهای آیپی یا یک محدوده خاص از آدرسها داریم. این عمل میتواند از طریق ابزارهایی همچون TCP Wrappers با استفاده از فایلهای پیکربندی hosts.allow و hosts.deny انجام گیرد. در این بخش، نحوه اعمال دسترسیهای خاص به سرویسها بر اساس محدودههای آیپی مختلف را توضیح خواهیم داد.
1. تعریف محدودههای IP با استفاده از Subnet Mask
برای اعمال دسترسیهای خاص بر اساس محدودههای آیپی، از Subnet Mask یا Wildcard در فایلهای hosts.allow و hosts.deny استفاده میشود. این روش به شما این امکان را میدهد که دسترسی را برای گروهی از آدرسها یا یک شبکه خاص محدود کنید.
مثال 1: اجازه دسترسی به یک شبکه خاص
فرض کنید میخواهید دسترسی به سرویس SSH را فقط برای شبکه 192.168.1.0/24 مجاز کنید و دسترسی به سایر آدرسها را مسدود نمایید.
در فایل /etc/hosts.allow:
sshd: 192.168.1.0/255.255.255.0
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این مثال، تنها دستگاههایی که آدرسهای آیپی آنها در محدوده
192.168.1.0/24قرار دارند، میتوانند به سرویس SSH دسترسی داشته باشند. - تمام سایر آدرسهای آیپی به طور پیشفرض توسط
hosts.denyمسدود میشوند.
مثال 2: مسدود کردن دسترسی به یک شبکه خاص
در این مثال، شما قصد دارید دسترسی به سرویس SSH را از یک شبکه خاص مسدود کنید، در حالی که اجازه دسترسی برای سایر شبکهها برقرار باشد.
در فایل /etc/hosts.deny:
sshd: 192.168.1.0/255.255.255.0
در فایل /etc/hosts.allow:
sshd: ALL
توضیح:
- با این تنظیمات، تمامی آدرسهای آیپی موجود در محدوده
192.168.1.0/24دسترسی به سرویس SSH را نخواهند داشت. - در حالی که سایر آدرسها دسترسی به این سرویس را خواهند داشت.
2. استفاده از Wildcard برای دسترسی به گروهی از آدرسها
گاهی اوقات نیاز به اعمال دسترسی به یک سری آدرسهای آیپی داریم که دارای الگوهای خاص هستند. در این حالت، میتوان از Wildcard برای محدود کردن دسترسی استفاده کرد.
مثال 3: استفاده از Wildcard برای اجازه دسترسی به دامنههای خاص
فرض کنید میخواهید دسترسی به سرویس SSH را برای تمامی آدرسهای آیپی که از دامنه example.com آمدهاند، مجاز کنید. در اینجا از Wildcard استفاده میکنید.
در فایل /etc/hosts.allow:
sshd: *.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی میزبانها از دامنه
example.comاجازه دسترسی به سرویسsshdرا میدهد. - تمامی سایر آدرسها از هر دامنه یا آیپی دیگری مسدود میشوند.
مثال 4: استفاده از Wildcard برای مسدود کردن دسترسی از دامنهها یا آدرسهای خاص
در این مثال، قصد دارید دسترسی به سرویس SSH را از تمامی آیپیها و دامنههای خاصی مسدود کنید.
در فایل /etc/hosts.deny:
sshd: *.example.com
توضیح:
- تمامی درخواستهای دسترسی به سرویس
sshdاز دامنهexample.comمسدود میشوند. - این کار میتواند در مواردی مفید باشد که بخواهید دسترسیها را از یک دامنه خاص محدود کنید.
3. ترکیب Subnet Mask و Wildcard برای تنظیمات پیچیدهتر
برای ایجاد سیاستهای دسترسی پیچیدهتر، میتوان از ترکیب Subnet Mask و Wildcard استفاده کرد تا دسترسی به گروههای خاص از آدرسها بهطور دقیقتری کنترل شود.
مثال 5: ترکیب Subnet Mask و Wildcard برای محدود کردن دسترسی به شبکههای خاص
فرض کنید میخواهید دسترسی به سرویس SSH را تنها برای شبکه 192.168.0.0/22 مجاز کنید و دسترسی را از سایر آدرسها مسدود نمایید. در اینجا از ترکیب Subnet Mask و Wildcard استفاده میکنید.
در فایل /etc/hosts.allow:
sshd: 192.168.0.0/255.255.252.0
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این مثال، تمامی دستگاههایی که آدرسهای آیپی آنها در محدوده
192.168.0.0/22قرار دارند، میتوانند به سرویس SSH دسترسی داشته باشند. - تمامی آدرسهای آیپی دیگر مسدود خواهند شد.
4. اجازه دسترسی به آدرسهای خاص و مسدود کردن سایر درخواستها
یکی از روشهای متداول در مدیریت دسترسیها، اجازه دسترسی به آدرسهای خاص و مسدود کردن سایر درخواستها است. این کار بهویژه زمانی مفید است که بخواهید به گروهی از آدرسها دسترسی دهید و بقیه را مسدود کنید.
مثال 6: اجازه دسترسی به آدرسهای خاص و مسدود کردن بقیه
در فایل /etc/hosts.allow:
sshd: 192.168.1.100, 192.168.2.0/255.255.255.0
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در اینجا، فقط آدرس
192.168.1.100و شبکه192.168.2.0/24اجازه دسترسی به سرویسsshdرا خواهند داشت. - تمامی آدرسهای دیگر مسدود خواهند شد.
جمعبندی
استفاده از Subnet Mask و Wildcard در فایلهای hosts.allow و hosts.deny امکان اعمال دسترسیهای خاص بر اساس محدودههای آیپی را فراهم میآورد. این روشها میتوانند به شما کمک کنند تا دسترسی به سرویسها را بهطور مؤثر و دقیق مدیریت کنید. علاوه بر این، ترکیب این دو ابزار میتواند به شما کمک کند تا امنیت شبکه را با جزئیات بیشتری پیادهسازی کنید و دسترسیها را بهصورت هدفمند محدود نمایید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیکربندی قوانین منعطف با استفاده از Wildcards” subtitle=”توضیحات کامل”]استفاده از Wildcard (الگوی تطبیق) یکی از قدرتمندترین ویژگیها در پیکربندی TCP Wrappers است که به شما این امکان را میدهد تا قوانین دسترسی پیچیدهتری را برای سرویسهای شبکهای ایجاد کنید. Wildcardها به شما این امکان را میدهند که الگوهای خاصی از آدرسهای IP یا دامنهها را تطبیق داده و دسترسی به سرویسها را بر اساس آنها تنظیم کنید.
در این بخش، به شرح چگونگی استفاده از Wildcardها در پیکربندی hosts.allow و hosts.deny میپردازیم.
1. مفهوم Wildcard در TCP Wrappers
Wildcard به کاربر این امکان را میدهد که بخشهای مختلف از آدرسهای آیپی یا دامنهها را با استفاده از کاراکترهای خاص مانند * یا ? تطبیق دهد. در اینجا برخی از مهمترین Wildcardها معرفی میشوند:
*: این کاراکتر به معنای هر چیزی است و میتواند برای تطبیق با هر بخش از یک آدرس آیپی یا دامنه استفاده شود.?: این کاراکتر فقط با یک حرف یا عدد تطبیق دارد.[ ]: برای تطبیق با یک مجموعه خاص از کاراکترها بهکار میرود.-: برای مشخص کردن یک رنج از کاراکترها استفاده میشود.
2. مثالهای استفاده از Wildcard
مثال 1: اجازه دسترسی به تمامی آدرسهای آیپی در دامنه خاص
فرض کنید میخواهید به تمامی دستگاههایی که از دامنه example.com آمدهاند، دسترسی بدهید. برای این کار از Wildcard بهصورت زیر استفاده میکنید:
در فایل /etc/hosts.allow:
sshd: *.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این تنظیمات، هر دستگاهی که از دامنه
example.comآمده باشد، مجاز به دسترسی به سرویسsshdخواهد بود. - تمامی آدرسهای دیگر مسدود خواهند شد.
مثال 2: مسدود کردن دسترسی از هر دامنه خاص
فرض کنید میخواهید دسترسی به سرویس SSH را از تمامی آدرسهای آیپی که از دامنه blocked.com آمدهاند، مسدود کنید.
در فایل /etc/hosts.deny:
sshd: *.blocked.com
توضیح:
- این تنظیم تمامی درخواستهای دسترسی از دامنه
blocked.comرا به سرویس SSH مسدود خواهد کرد. - این کار برای جلوگیری از دسترسی غیرمجاز از منابع خاص مفید است.
مثال 3: دسترسی به یک رنج خاص از آیپیها
فرض کنید میخواهید دسترسی به سرویس SSH را فقط به رنج خاصی از آدرسهای آیپی مانند 192.168.1.100 و 192.168.1.101 بدهید و سایر درخواستها را مسدود کنید.
در فایل /etc/hosts.allow:
sshd: 192.168.1.100, 192.168.1.101
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این تنظیمات، فقط آدرسهای
192.168.1.100و192.168.1.101مجاز به دسترسی به سرویس SSH خواهند بود. - تمامی آدرسهای آیپی دیگر مسدود خواهند شد.
مثال 4: استفاده از Wildcard برای تطبیق با یک رنج بزرگ از آیپیها
فرض کنید میخواهید دسترسی به سرویس SSH را برای تمامی دستگاههای شبکه 192.168.1.0/24 مجاز کنید و تمام دیگر دستگاهها را مسدود کنید.
در فایل /etc/hosts.allow:
sshd: 192.168.1.*
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این مثال، تمامی آدرسهای آیپی از شبکه
192.168.1.0/24میتوانند به سرویس SSH دسترسی داشته باشند. - دسترسی از سایر آدرسها مسدود خواهد شد.
مثال 5: استفاده از Wildcard برای محدود کردن دسترسی به یک آدرس آیپی خاص
فرض کنید شما قصد دارید تنها دسترسی به یک آیپی خاص (مثلاً 192.168.1.5) را برای سرویس sshd مجاز کنید و تمامی آیپیهای دیگر را مسدود کنید.
در فایل /etc/hosts.allow:
sshd: 192.168.1.5
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به صورت دقیق تنها اجازه دسترسی به سرویس
sshdرا برای آدرس192.168.1.5میدهد. - تمامی درخواستهای دیگر از سایر آدرسها مسدود خواهند شد.
3. ترکیب Wildcard با Subnet Mask
گاهی اوقات برای مدیریت دقیقتر دسترسیها، ترکیب Wildcard با Subnet Mask میتواند مفید باشد. این کار به شما این امکان را میدهد که دسترسی را برای شبکههای خاص یا رنجهای آیپی دقیقتری محدود کنید.
مثال 6: استفاده از Wildcard با Subnet Mask
فرض کنید میخواهید دسترسی به سرویس SSH را برای شبکه 192.168.0.0/22 مجاز کنید.
در فایل /etc/hosts.allow:
sshd: 192.168.0.0/255.255.252.0
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی آدرسهای آیپی که در محدوده شبکه
192.168.0.0/22قرار دارند، اجازه دسترسی به سرویس SSH را میدهد. - تمامی آدرسهای آیپی دیگر مسدود خواهند شد.
4. استفاده از Wildcard برای گروهبندی آدرسها
برای سادگی در پیکربندی، میتوانید از Wildcard برای گروهبندی آدرسهای آیپی مشابه استفاده کنید.
مثال 7: گروهبندی و دسترسی به رنجهای خاص
در فایل /etc/hosts.allow:
sshd: 192.168.1.*, 192.168.2.*
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم دسترسی به سرویس SSH را برای تمامی آدرسهای آیپی در شبکههای
192.168.1.xو192.168.2.xمجاز میکند. - تمامی سایر آدرسها مسدود خواهند شد.
جمعبندی
استفاده از Wildcard در فایلهای hosts.allow و hosts.deny این امکان را میدهد که قوانین پیچیدهای برای دسترسی به سرویسهای شبکهای پیادهسازی کنید. با استفاده از Wildcardها میتوانید دسترسیها را بر اساس الگوهای مختلف آدرسهای آیپی و دامنهها تنظیم کنید. این قابلیت باعث انعطافپذیری بالا در پیکربندی دسترسیها میشود و شما میتوانید شبکهها یا آدرسهای خاص را بهراحتی مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعیین دسترسیها برای کاربران خاص با استفاده از user@host” subtitle=”توضیحات کامل”]یکی از قابلیتهای مفید در پیکربندی TCP Wrappers، تعیین دسترسیها برای کاربران خاص با استفاده از ترکیب user@host است. این ویژگی به شما این امکان را میدهد که قوانین دسترسی را نهتنها بر اساس آدرسهای IP، بلکه بر اساس نام کاربر و آدرس میزبان (Host) نیز تنظیم کنید.
در این بخش، به چگونگی استفاده از ترکیب user@host برای تعیین دسترسی به سرویسهای مختلف شبکهای خواهیم پرداخت.
1. مفهوم user@host
در این ساختار:
userنام کاربری است که قصد دارید دسترسی او را کنترل کنید.hostمیتواند آدرس آیپی، دامنه یا Wildcard برای مشخص کردن آدرس میزبان باشد.
این ترکیب بهویژه در محیطهایی که تعداد زیادی کاربر و میزبان مختلف وجود دارد، بسیار مفید است چرا که میتوانید دسترسی هر کاربر را بر اساس میزبان یا دامنهای که از آن متصل میشود، کنترل کنید.
2. پیکربندی دسترسی برای یک کاربر خاص از یک میزبان خاص
فرض کنید میخواهید به کاربر alice که از میزبان 192.168.1.100 متصل میشود، دسترسی به سرویس SSH را بدهید.
در فایل /etc/hosts.allow:
sshd: alice@192.168.1.100
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم فقط به کاربر
aliceکه از آدرس آیپی192.168.1.100وارد میشود، اجازه دسترسی به سرویسsshdرا میدهد. - تمام کاربران و میزبانهای دیگر دسترسی به این سرویس را نخواهند داشت.
3. دسترسی به یک کاربر از هر میزبان مشخص
اگر بخواهید به کاربر خاصی از هر میزبان معینی دسترسی بدهید، میتوانید از Wildcard در بخش host استفاده کنید.
در فایل /etc/hosts.allow:
sshd: alice@*.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- در این تنظیم، به کاربر
aliceکه از هر میزبان با دامنهexample.comمتصل میشود، دسترسی به سرویس SSH داده میشود. - تمامی آدرسهای دیگر مسدود خواهند شد.
4. دسترسی به یک کاربر از هر آدرس IP خاص
اگر بخواهید به یک کاربر خاص از هر میزبان با آدرس آیپی خاص دسترسی دهید، میتوانید از Wildcard در آدرس آیپی استفاده کنید.
در فایل /etc/hosts.allow:
sshd: alice@192.168.1.*
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به کاربر
aliceکه از هر دستگاه در شبکه192.168.1.0/24وارد میشود، دسترسی به سرویس SSH میدهد. - تمامی آدرسهای آیپی دیگر مسدود خواهند شد.
5. دسترسی برای کاربر خاص از چندین میزبان
اگر بخواهید دسترسی یک کاربر را از چندین میزبان خاص کنترل کنید، میتوانید از کاما برای جدا کردن میزبانها استفاده کنید.
در فایل /etc/hosts.allow:
sshd: alice@192.168.1.100, alice@192.168.1.101
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به کاربر
aliceکه از میزبانهای192.168.1.100و192.168.1.101وارد میشود، دسترسی به سرویس SSH میدهد. - تمامی میزبانهای دیگر مسدود خواهند شد.
6. ترکیب دسترسی کاربران با آدرسهای مختلف
اگر بخواهید دسترسی یک کاربر خاص را به آدرسهای مختلف با استفاده از Wildcardها تنظیم کنید، میتوانید از ترکیب Wildcardها در user@host استفاده کنید.
در فایل /etc/hosts.allow:
sshd: alice@192.168.1.*, bob@*.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به کاربر
aliceکه از هر دستگاه در شبکه192.168.1.0/24وارد میشود، و به کاربرbobکه از هر میزبان با دامنهexample.comوارد میشود، دسترسی به سرویس SSH میدهد. - تمامی کاربران و میزبانهای دیگر دسترسی به سرویس SSH را نخواهند داشت.
7. استفاده از ترکیب user@host برای مسدود کردن دسترسیها
برعکس، اگر بخواهید دسترسی یک کاربر خاص را از یک میزبان خاص مسدود کنید، میتوانید از فایل hosts.deny استفاده کنید.
در فایل /etc/hosts.deny:
sshd: alice@192.168.1.100
در فایل /etc/hosts.allow:
sshd: ALL
توضیح:
- این تنظیم دسترسی کاربر
aliceکه از آدرس192.168.1.100وارد میشود را مسدود میکند. - به سایر کاربران و میزبانها اجازه دسترسی به سرویس SSH داده میشود.
8. استفاده از user@host برای محدود کردن دسترسیها به چند سرویس
اگر بخواهید محدودیت دسترسی برای یک کاربر خاص را به چندین سرویس اعمال کنید، میتوانید این کار را بهراحتی با ترکیب user@host و نام سرویسها انجام دهید.
در فایل /etc/hosts.allow:
sshd: alice@192.168.1.100
ftp: bob@192.168.1.100
در فایل /etc/hosts.deny:
ALL: ALL
توضیح:
- این تنظیم به کاربر
aliceکه از میزبان192.168.1.100وارد میشود، دسترسی به سرویس SSH و به کاربرbobکه از همان میزبان وارد میشود، دسترسی به سرویس FTP را میدهد. - تمامی آدرسها و کاربران دیگر دسترسی به سایر سرویسها را نخواهند داشت.
جمعبندی
استفاده از ترکیب user@host در پیکربندی TCP Wrappers یک روش قدرتمند برای تعیین دسترسیها بر اساس نام کاربر و آدرس میزبان است. این قابلیت بهویژه در محیطهای پیچیده و با تعداد زیاد کاربران و میزبانها مفید است، چرا که میتوانید دسترسیها را به دقت بیشتری کنترل کنید. ترکیب این روش با Wildcardها امکان پیکربندیهای بسیار منعطف و پیشرفته را برای مدیریت دسترسیها فراهم میآورد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. پیکربندی پیشرفته بر اساس نام میزبان و DNS”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”کنترل دسترسیها بر اساس hostname به جای IP” subtitle=”توضیحات کامل”]یکی از قابلیتهای TCP Wrappers این است که میتوانید دسترسی به سرویسهای مختلف را بر اساس نام میزبان (hostname) به جای آدرس IP محدود کنید. این ویژگی به شما این امکان را میدهد که بهجای استفاده از آدرسهای IP ثابت، از نام میزبانهایی که توسط DNS (سیستم نام دامنه) قابل شناسایی هستند، برای کنترل دسترسی استفاده کنید.
در این بخش، نحوه استفاده از hostname بهجای IP برای محدود کردن دسترسی به سرویسها در فایلهای hosts.allow و hosts.deny بررسی میشود.
1. مفهوم کنترل دسترسی بر اساس hostname
در این روش، بهجای استفاده از آدرس IP، از نام میزبان استفاده میشود. نام میزبان بهطور معمول توسط DNS تبدیل به آدرس IP میشود و در هنگام ارتباط، سیستم DNS از این تبدیل استفاده میکند تا مشخص کند که آیا دسترسی به سرویسها مجاز است یا خیر.
نکته: برای استفاده از نام میزبانها بهجای آدرسهای IP، سرور باید قادر به شناسایی نامهای میزبان باشد و از سیستم DNS برای تبدیل آنها به آدرسهای IP استفاده کند.
2. پیکربندی دسترسی بر اساس hostname
2.1. اجازه دسترسی به یک میزبان خاص
فرض کنید میخواهید به میزبان با نام host1.example.com دسترسی به سرویس sshd را بدهید.
در فایل /etc/hosts.allow:
sshd: host1.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به میزبان
host1.example.comاجازه دسترسی به سرویسsshdرا میدهد. - تمامی میزبانهای دیگر از دسترسی به سرویس
sshdمنع خواهند شد.
2.2. دسترسی به چند میزبان خاص
اگر بخواهید به چند میزبان خاص دسترسی بدهید، میتوانید از نامهای میزبان مختلف در یک خط استفاده کنید.
در فایل /etc/hosts.allow:
sshd: host1.example.com, host2.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- به میزبانهای
host1.example.comوhost2.example.comاجازه دسترسی به سرویسsshdداده میشود. - تمامی میزبانهای دیگر از دسترسی به این سرویس منع خواهند شد.
2.3. استفاده از Wildcard در نام میزبان
اگر بخواهید به تمامی میزبانها در یک دامنه خاص دسترسی دهید، میتوانید از Wildcard استفاده کنید.
در فایل /etc/hosts.allow:
sshd: *.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی میزبانهایی که نام دامنه آنها
example.comاست (مثلhost1.example.comوhost2.example.com) اجازه دسترسی به سرویسsshdرا میدهد. - تمامی میزبانهای دیگر از دسترسی به سرویس SSH منع خواهند شد.
2.4. استفاده از Wildcard برای دسترسی به دامنههای خاص
برای اجازه دسترسی به میزبانهایی که در هر دامنه خاص قرار دارند، میتوانید از Wildcard در دامنه استفاده کنید.
در فایل /etc/hosts.allow:
sshd: *@example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی میزبانها که از دامنه
example.comمتصل میشوند، دسترسی به سرویسsshdمیدهد. - تمامی میزبانها و دامنههای دیگر مسدود خواهند شد.
3. مسدود کردن دسترسی بر اساس hostname
اگر بخواهید دسترسی یک میزبان خاص را مسدود کنید، میتوانید از فایل hosts.deny استفاده کنید.
در فایل /etc/hosts.deny:
sshd: host1.example.com
در فایل /etc/hosts.allow:
sshd: ALL
توضیح:
- این تنظیم دسترسی به میزبان
host1.example.comرا به سرویسsshdمسدود میکند. - تمامی میزبانهای دیگر میتوانند به سرویس SSH دسترسی داشته باشند.
4. استفاده از نامهای میزبان با استفاده از فایل /etc/hosts
گاهی اوقات ممکن است نام میزبانهایی که میخواهید در تنظیمات hosts.allow یا hosts.deny استفاده کنید، در DNS قابل شناسایی نباشند. در این صورت، میتوانید نام میزبانها را بهصورت دستی در فایل /etc/hosts سیستم اضافه کنید.
در فایل /etc/hosts:
192.168.1.100 host1.example.com
192.168.1.101 host2.example.com
در فایل /etc/hosts.allow:
sshd: host1.example.com, host2.example.com
توضیح:
- در این تنظیم، نامهای میزبان
host1.example.comوhost2.example.comبه آدرسهای آیپی اختصاص داده میشوند. - سپس در فایل
hosts.allowدسترسی به این میزبانها داده میشود.
5. مسدود کردن دسترسی به تمامی میزبانها به جز میزبانهای خاص
اگر بخواهید دسترسی به سرویسها را به تمامی میزبانها مسدود کرده و فقط به چند میزبان خاص اجازه دهید، میتوانید از ترکیب فایلهای hosts.allow و hosts.deny بهصورت زیر استفاده کنید.
در فایل /etc/hosts.deny:
sshd: ALL
در فایل /etc/hosts.allow:
sshd: host1.example.com, host2.example.com
توضیح:
- این تنظیم دسترسی به سرویس
sshdرا برای تمامی میزبانها مسدود میکند، اما به میزبانهایhost1.example.comوhost2.example.comاجازه دسترسی میدهد.
جمعبندی
کنترل دسترسی بر اساس hostname یکی از روشهای مفید و انعطافپذیر برای محدود کردن دسترسی به سرویسها است. این قابلیت به شما این امکان را میدهد که دسترسیها را بر اساس نام میزبانهای مشخص، دامنهها یا Wildcardها تنظیم کنید. استفاده از hostname بهجای آدرسهای IP میتواند امنیت و مدیریت سیستم شما را سادهتر کند و بهویژه زمانی که از سیستم DNS برای ترجمه نامها به آدرسهای IP استفاده میکنید، بسیار مفید است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از domain-based rules برای محدود کردن کل دامنهها” subtitle=”توضیحات کامل”]یکی از ویژگیهای قدرتمند در مدیریت دسترسیها، استفاده از قوانین مبتنی بر دامنه (domain-based rules) است. این ویژگی به شما این امکان را میدهد که بهجای استفاده از آدرسهای IP، دسترسیها را بر اساس دامنههای مشخص محدود کنید. با استفاده از این قابلیت میتوان بهطور خاص دامنههای معین را مجاز یا مسدود کرد و از این طریق دسترسیهای پیچیدهتری را بهوجود آورد.
1. مفهوم domain-based rules
قوانین مبتنی بر دامنه به شما این امکان را میدهد که کنترل دسترسی به سرویسها و منابع شبکهای را بر اساس دامنهها و نامهای میزبانها اعمال کنید. این ویژگی با استفاده از سیستم نام دامنه (DNS) کار میکند که آدرسهای IP مربوط به دامنهها را ترجمه میکند. این امکان بهویژه در شبکههایی با دامنههای مختلف یا شرکتهایی که آدرسهای IP ثابت ندارند، بسیار کاربردی است.
2. نحوه استفاده از domain-based rules در فایلهای hosts.allow و hosts.deny
در این روش، شما میتوانید از نام دامنهها بهجای آدرسهای IP در فایلهای hosts.allow و hosts.deny استفاده کنید. در ادامه چند مثال کاربردی از نحوه اعمال این قوانین آورده شده است.
2.1. اجازه دسترسی به دامنه خاص
برای این که فقط دامنه خاصی به یک سرویس دسترسی داشته باشد، باید از نام دامنه بهجای آدرس IP در فایل hosts.allow استفاده کنید.
در فایل /etc/hosts.allow:
sshd: .example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی میزبانهایی که در دامنه
example.comقرار دارند، اجازه دسترسی به سرویسsshdرا میدهد. - تمامی میزبانهای دیگر (با هر دامنه یا آدرس IP) از دسترسی به این سرویس منع خواهند شد.
- استفاده از نقطه (
.) در ابتدای دامنه به این معناست که تمامی زیر دامنههایexample.comنیز اجازه دسترسی دارند.
2.2. مسدود کردن دسترسی از دامنه خاص
برای مسدود کردن دسترسی از یک دامنه خاص، میتوانید آن را در فایل hosts.deny مشخص کنید.
در فایل /etc/hosts.deny:
sshd: .example.com
در فایل /etc/hosts.allow:
sshd: ALL
توضیح:
- این تنظیم دسترسی به سرویس
sshdرا از تمامی میزبانهایی که در دامنهexample.comقرار دارند، مسدود میکند. - تمامی میزبانهای دیگر میتوانند به این سرویس دسترسی داشته باشند.
2.3. اجازه دسترسی به دامنه با استفاده از Wildcard
اگر بخواهید دسترسی به تمامی میزبانهایی که در دامنه خاص یا زیر دامنههای آن قرار دارند را مجاز کنید، میتوانید از Wildcard استفاده کنید.
در فایل /etc/hosts.allow:
sshd: *.example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- این تنظیم به تمامی میزبانهایی که در دامنه
example.comو زیر دامنههای آن قرار دارند (مثلhost1.example.comوsubdomain.example.com) دسترسی به سرویسsshdمیدهد. - تمامی میزبانهای دیگر از دسترسی به این سرویس منع خواهند شد.
2.4. مسدود کردن دسترسی به تمامی دامنهها به جز دامنههای خاص
اگر بخواهید دسترسی را فقط به دامنههای خاص محدود کنید و به سایر دامنهها اجازه دسترسی ندهید، باید ابتدا تمامی دامنهها را مسدود کرده و سپس دامنههای موردنظر را در hosts.allow مجاز کنید.
در فایل /etc/hosts.deny:
sshd: ALL
در فایل /etc/hosts.allow:
sshd: .example.com
توضیح:
- این تنظیم به تمامی میزبانهایی که در دامنه
example.comقرار دارند اجازه دسترسی به سرویسsshdمیدهد. - تمامی میزبانهای دیگر از دسترسی به این سرویس منع خواهند شد.
3. مزایای استفاده از قوانین مبتنی بر دامنه
- سادگی مدیریت: بهجای مدیریت لیستهای بلند بالا از آدرسهای IP مختلف، میتوانید دسترسی را با استفاده از دامنهها مدیریت کنید.
- انعطافپذیری بیشتر: در شرایطی که آدرسهای IP دائماً تغییر میکنند (مثلاً در محیطهای ابری)، استفاده از دامنهها برای کنترل دسترسی بسیار انعطافپذیرتر است.
- امنیت بیشتر: میتوانید دسترسی به سرویسها را بهصورت دقیقتری مدیریت کنید، بهویژه زمانی که بخواهید دسترسی را به یک دامنه خاص محدود کنید.
4. مشکلات احتمالی در استفاده از قوانین مبتنی بر دامنه
- پیشفرضهای DNS: برای اینکه این قوانین کار کنند، سیستم باید بتواند نام دامنهها را به آدرسهای IP تبدیل کند. بنابراین، در صورت بروز مشکلات در سیستم DNS، ممکن است دسترسیها به درستی کنترل نشوند.
- کش DNS: گاهی ممکن است که کش DNS قدیمی باعث شود که دسترسیها با تأخیر اعمال شوند. در این موارد، میتوانید کش DNS را از طریق دستورات مختلف پاک کنید.
5. استفاده از نام دامنهها در فایل /etc/hosts
اگر DNS در دسترس نباشد، میتوانید از فایل /etc/hosts برای نگاشت نامهای دامنه به آدرسهای IP استفاده کنید. این فایل به سیستم کمک میکند تا بدون نیاز به درخواست DNS، نامهای میزبان را شناسایی کند.
در فایل /etc/hosts:
192.168.1.100 host1.example.com
192.168.1.101 host2.example.com
در فایل /etc/hosts.allow:
sshd: host1.example.com, host2.example.com
توضیح:
- در این تنظیمات، نام دامنهها به آدرسهای IP مربوطه نگاشت میشوند، و سپس دسترسی به سرویس
sshdفقط برای میزبانهایhost1.example.comوhost2.example.comمجاز میشود.
جمعبندی
استفاده از قوانین مبتنی بر دامنه در TCP Wrappers به شما این امکان را میدهد که دسترسی به سرویسها را بهجای آدرسهای IP، بر اساس نام دامنهها کنترل کنید. این روش میتواند امنیت و انعطافپذیری بیشتری برای مدیریت دسترسیها فراهم کند. با این حال، لازم است که سیستم قادر به شناسایی و ترجمه نام دامنهها به آدرسهای IP باشد و مشکلات مربوط به DNS بهطور صحیح مدیریت شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بهینهسازی عملکرد TCP Wrappers با کاهش DNS lookups” subtitle=”توضیحات کامل”]در استفاده از TCP Wrappers برای کنترل دسترسی به سرویسها و منابع شبکهای، یکی از مشکلات اصلی که میتواند عملکرد را تحت تأثیر قرار دهد، DNS lookups است. هر زمان که یک درخواست از یک میزبان وارد میشود و میخواهید بررسی کنید که آیا این میزبان مجاز به دسترسی است یا نه، TCP Wrappers ابتدا باید نام دامنه میزبان را به آدرس IP تبدیل کند. این فرایند به عنوان DNS lookup شناخته میشود.
اگر تعداد زیادی از درخواستها به سیستم برسد، این فرایند میتواند باعث کاهش سرعت و عملکرد سیستم شود، چراکه DNS باید هر بار برای هر درخواست جدید به سرورهای DNS مراجعه کند. در این بخش به بررسی روشهای مختلف برای کاهش تعداد DNS lookups و بهینهسازی عملکرد TCP Wrappers پرداخته میشود.
1. مشکلات و چالشهای DNS lookups
- زمانبر بودن فرآیند: هر درخواست جدید که شامل یک DNS lookup است، ممکن است زمان زیادی را برای تبدیل نام دامنه به آدرس IP مصرف کند. این کار ممکن است بهویژه در شرایط بار سنگین شبکه و تعداد بالای درخواستها به مشکل تبدیل شود.
- وابستگی به DNS سرورها: سیستمهایی که به DNS سرورهای خارجی وابسته هستند، ممکن است در صورت بروز مشکلات در سرورهای DNS با کندی در پردازش درخواستها مواجه شوند.
- تحمیل بار اضافی بر سیستم DNS: اگر تعداد زیادی از درخواستها به سیستم شما برسد و نیاز به انجام DNS lookup برای هرکدام باشد، این امر میتواند به سرورهای DNS فشار زیادی وارد کند.
2. روشهای بهینهسازی عملکرد TCP Wrappers
برای کاهش DNS lookups و بهبود عملکرد TCP Wrappers، میتوانید از روشهای مختلفی استفاده کنید که به توضیح آنها خواهیم پرداخت.
2.1. استفاده از آدرسهای IP در فایلهای hosts.allow و hosts.deny
یکی از سادهترین روشها برای جلوگیری از انجام DNS lookups، استفاده از آدرسهای IP بهجای نام دامنه در فایلهای hosts.allow و hosts.deny است. در این صورت دیگر نیازی به تبدیل نام دامنه به آدرس IP نیست، و بررسیها سریعتر انجام میشوند.
در فایل /etc/hosts.allow:
sshd: 192.168.1.100
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- با این روش، شما دسترسی به سرویس
sshdرا فقط از آدرس IP خاصی که در فایلhosts.allowمشخص کردهاید، مجاز میکنید. - نیازی به انجام DNS lookup نیست، زیرا آدرس IP بهطور مستقیم وارد شده است.
2.2. استفاده از فایل /etc/hosts برای نگاشت دامنهها به آدرسهای IP
در صورتی که به دلایلی نیاز به استفاده از دامنهها دارید، میتوانید نام دامنهها را بهطور مستقیم در فایل /etc/hosts نگاشت کرده و از این طریق از انجام DNS lookup جلوگیری کنید.
در فایل /etc/hosts:
192.168.1.100 host1.example.com
192.168.1.101 host2.example.com
در فایل /etc/hosts.allow:
sshd: host1.example.com, host2.example.com
توضیح:
- با این روش، نام دامنهها به آدرسهای IP مرتبط میشوند و سیستم برای شناسایی آدرسها نیازی به انجام DNS lookup ندارد. بنابراین، درخواستها سریعتر پردازش میشوند.
- این راهکار برای شبکههای کوچک و محدود که تعداد دامنهها کم است بسیار مؤثر است.
2.3. استفاده از کش DNS محلی (DNS Caching)
در صورتی که مجبور به انجام DNS lookups هستید، میتوانید از کش DNS محلی برای ذخیره نتایج جستجو استفاده کنید. این کار باعث میشود که تنها برای اولین بار که نام دامنه بررسی میشود، DNS lookup انجام شود و سپس نتیجه کش شود. به این ترتیب، درخواستهای بعدی برای همان دامنه نیازی به انجام دوباره DNS lookup نخواهند داشت.
برای فعالسازی کش DNS در سیستمهای لینوکسی، میتوانید از ابزارهایی مانند dnsmasq یا systemd-resolved استفاده کنید.
برای نصب و پیکربندی dnsmasq بهعنوان کش DNS، از دستورات زیر استفاده کنید:
sudo apt-get install dnsmasq
سپس فایل پیکربندی /etc/dnsmasq.conf را ویرایش کنید:
# فعالسازی کش DNS
cache-size=1000
توضیح:
- با این کار، نتایج DNS برای 1000 دامنه در حافظه کش میشوند و به محض درخواست بعدی برای آن دامنه، بدون نیاز به درخواست جدید از DNS سرور، نتیجه بهسرعت بازگردانده میشود.
- این روش میتواند در زمانهای با ترافیک بالا بسیار مؤثر باشد.
2.4. استفاده از تنظیمات hosts.allow و hosts.deny برای محدود کردن دامنهها
اگر نیاز دارید که دسترسی به سرویسها را محدود کنید ولی نمیخواهید بار اضافی روی سیستم DNS ایجاد شود، میتوانید با استفاده از wildcard در فایلهای hosts.allow و hosts.deny بهطور مستقیم محدودیتهای دامنهای اعمال کنید، بدون اینکه نیاز به DNS lookup هر بار باشد.
در فایل /etc/hosts.allow:
sshd: .example.com
در فایل /etc/hosts.deny:
sshd: ALL
توضیح:
- استفاده از wildcard (
.) در اینجا بهجای انجام DNS lookup برای هر دامنه، به سیستم این امکان را میدهد که بهطور مستقیم دامنهها را بررسی کرده و از کش DNS محلی برای سرعت بخشیدن به پردازش استفاده کند.
2.5. پیکربندی فایل /etc/nsswitch.conf
یکی دیگر از روشها برای بهینهسازی عملکرد، تنظیم فایل /etc/nsswitch.conf برای محدود کردن استفاده از DNS در برابر سایر روشها است. این فایل نحوه جستجوی سرویسهای مختلف مانند DNS، NIS و یا /etc/hosts را تنظیم میکند.
در فایل /etc/nsswitch.conf:
hosts: files dns
توضیح:
- با این تنظیم، سیستم ابتدا بهدنبال اطلاعات میزبانها در فایل
/etc/hostsمیگردد و تنها در صورتی که در این فایل پیدا نشد، از DNS استفاده میکند. این میتواند در مواردی که بیشتر از فایل/etc/hostsاستفاده میکنید بهطور قابلتوجهی عملکرد را بهبود بخشد.
جمعبندی
کاهش DNS lookups در TCP Wrappers میتواند تأثیر زیادی در بهبود عملکرد و سرعت پردازش درخواستها داشته باشد. با استفاده از روشهایی مانند استفاده از آدرسهای IP بهجای نام دامنهها، استفاده از کش DNS محلی، و تنظیمات بهینه در فایلهای پیکربندی، میتوان بار سیستم را کاهش داده و از عملکرد بهتر سرویسها و منابع شبکهای اطمینان حاصل کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”جلوگیری از DNS Spoofing Attacks در پیکربندیها” subtitle=”توضیحات کامل”]DNS Spoofing یا DNS Cache Poisoning نوعی حمله است که در آن یک مهاجم تلاش میکند تا کش DNS سرور را با اطلاعات جعلی آلوده کند. این حملات میتوانند باعث شوند که درخواستهای DNS به مقصدهای نادرست هدایت شوند، که در نتیجه میتواند منجر به سرقت اطلاعات حساس، انجام حملات Man-in-the-Middle (MITM) یا دسترسی غیرمجاز به سیستمها شود.
برای مقابله با این تهدیدها، اقدامات مختلفی وجود دارد که میتوان آنها را در پیکربندیهای TCP Wrappers و سایر تنظیمات سیستم اعمال کرد تا از DNS Spoofing جلوگیری شود. در اینجا روشهای مختلف برای پیشگیری از این نوع حملات بررسی میشوند.
1. استفاده از DNSSEC (DNS Security Extensions)
DNSSEC یک استاندارد امنیتی برای DNS است که برای جلوگیری از حملات DNS Spoofing طراحی شده است. این پروتکل اطلاعات DNS را با استفاده از امضاهای دیجیتال تأمین میکند، به این معنی که سرورهای DNS میتوانند صحت اطلاعات دریافتشده را بررسی کنند.
- پیکربندی DNSSEC برای سرورهای DNS: اگر شما از یک سرور DNS داخلی استفاده میکنید، میتوانید DNSSEC را فعال کنید تا فقط دادههای معتبر را پذیرفته و از دادههای جعلی جلوگیری کنید.
برای نصب و پیکربندی DNSSEC بر روی یک سرور BIND، از دستورات زیر استفاده کنید:
- نصب DNSSEC بر روی BIND:
sudo apt-get install bind9-dnssec
- فعالسازی DNSSEC در فایل پیکربندی
/etc/bind/named.conf.options:
options {
dnssec-validation auto;
};
- بررسی صحت DNSSEC:
dig +dnssec example.com
توضیح:
- با فعالسازی DNSSEC، اطلاعات DNS بررسی شده و از حملات DNS Spoofing جلوگیری میشود.
- در صورتی که مهاجم سعی کند تا اطلاعات DNS را دستکاری کند، سیستم قادر به تشخیص این تغییرات خواهد بود.
2. استفاده از DNS over HTTPS (DoH) یا DNS over TLS (DoT)
استفاده از DNS over HTTPS (DoH) یا DNS over TLS (DoT) میتواند امنیت درخواستهای DNS را افزایش دهد. این پروتکلها به جای ارسال درخواستها بهصورت متنی در پروتکل DNS استاندارد (که میتواند توسط مهاجمین مشاهده شود)، درخواستها را از طریق HTTPS یا TLS ارسال میکنند.
برای پیکربندی DNS over HTTPS بر روی سرور، میتوانید از نرمافزارهایی مانند Cloudflare DNS یا Google DNS استفاده کنید.
برای پیکربندی DNS over TLS (DoT) در Unbound:
- نصب Unbound:
sudo apt-get install unbound
- پیکربندی DoT در فایل
/etc/unbound/unbound.conf:
server:
do-udp: no
do-tcp: yes
tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 1.1.1.1@853
توضیح:
- با استفاده از DoH یا DoT، درخواستهای DNS بهصورت رمزنگاریشده ارسال میشوند و از شنود و تغییرات غیرمجاز جلوگیری میشود.
- این روش میتواند به کاهش آسیبپذیریها و جلوگیری از حملات DNS Spoofing کمک کند.
3. استفاده از ResolvConf و محدود کردن منابع DNS
ResolvConf فایل پیکربندی سیستم است که سرورهای DNS را تعیین میکند. برای جلوگیری از DNS Spoofing، باید از سرورهای DNS قابل اعتماد استفاده کرده و از ارسال درخواست به سرورهای مخرب جلوگیری کنید.
- ویرایش فایل
/etc/resolv.conf:
nameserver 1.1.1.1 # Cloudflare DNS
nameserver 8.8.8.8 # Google DNS
- محدود کردن سیستم به استفاده از سرورهای DNS خاص با استفاده از فایروال:
sudo ufw allow from 1.1.1.1 to any port 53 proto udp
sudo ufw allow from 8.8.8.8 to any port 53 proto udp
توضیح:
- با محدود کردن سرورهای DNS به آدرسهای معتبر و شناختهشده، احتمال استفاده از سرورهای DNS مخرب کاهش مییابد.
- استفاده از فایروال برای محدود کردن دسترسی به سرورهای DNS خاص نیز میتواند امنیت سیستم را افزایش دهد.
4. پیکربندی فایروال برای جلوگیری از حملات DNS Spoofing
فایروالها میتوانند برای محدود کردن ترافیک ورودی و خروجی DNS پیکربندی شوند تا فقط درخواستهای معتبر از منابع قابل اعتماد عبور کنند. این کار میتواند از حملات DNS Spoofing جلوگیری کند.
برای محدود کردن دسترسی به پورت 53 (DNS) فقط به سرورهای DNS معتبر در فایروال iptables:
sudo iptables -A INPUT -p udp --dport 53 -s 1.1.1.1 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -s 8.8.8.8 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -j DROP
توضیح:
- این دستورات ترافیک ورودی به پورت 53 (پورت DNS) را تنها از آدرسهای IP معتبر مانند 1.1.1.1 و 8.8.8.8 مجاز میکنند.
- تمام درخواستهای DNS دیگر مسدود خواهند شد و از حملات DNS Spoofing جلوگیری میشود.
5. فعالسازی فیلتر DNS با استفاده از DNS Filtering
DNS Filtering یک روش پیشرفته برای مسدود کردن ترافیک مخرب DNS است که به شما امکان میدهد تا دامنههای مشکوک و یا نامناسب را شناسایی و مسدود کنید. برای پیکربندی DNS Filtering، میتوانید از ابزارهایی مانند Pi-hole یا Dnsmasq استفاده کنید.
برای نصب و پیکربندی Pi-hole برای فیلتر کردن دامنههای مخرب:
- نصب Pi-hole:
curl -sSL https://install.pi-hole.net | bash
- پیکربندی DNS Filtering:
pihole -a enable
توضیح:
- با استفاده از DNS Filtering میتوانید دامنههای مخرب یا مشکوک را مسدود کنید و از درخواست به سرورهای مخرب جلوگیری کنید.
- این روش همچنین میتواند جلوی حملات DNS Spoofing را بگیرد، چرا که سیستم به طور مداوم دامنههای مخرب را شناسایی کرده و مسدود میکند.
جمعبندی
برای جلوگیری از DNS Spoofing و تأمین امنیت سرویسهای DNS، چندین روش وجود دارد که میتوان آنها را در پیکربندیهای مختلف پیادهسازی کرد. از جمله مهمترین این روشها میتوان به استفاده از DNSSEC، DNS over HTTPS (DoH) یا DNS over TLS (DoT)، محدود کردن منابع DNS با استفاده از ResolvConf، پیکربندی فایروالها و استفاده از DNS Filtering اشاره کرد. با پیادهسازی این روشها میتوان به طرز مؤثری از حملات DNS Spoofing جلوگیری کرده و امنیت سیستمها و شبکههای خود را افزایش داد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. افزودن تأخیر و محدودیت در پاسخگویی به اتصالات”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از Delay برای ایجاد تأخیر در پاسخ به درخواستهای مشکوک” subtitle=”توضیحات کامل”]در بسیاری از حملات امنیتی مانند Brute Force، DDoS یا DNS Spoofing، مهاجمان سعی میکنند تا از طریق ارسال تعداد زیادی درخواست به سرور، به منابع سیستم فشار وارد کنند یا به صورت متوالی اقدام به حدس زدن رمز عبور کنند. یکی از تکنیکهایی که میتواند از این نوع حملات جلوگیری کند، استفاده از Delay (تأخیر) در پاسخ به درخواستهای مشکوک است.
ایجاد تأخیر در پاسخ به درخواستهای مشکوک باعث میشود که مهاجمان نتوانند به سرعت تعداد زیادی درخواست ارسال کنند و زمان بیشتری برای هر درخواست صرف شود، که در نتیجه حملات به کندی انجام میشود و میتواند باعث شناسایی سریعتر و محدود کردن آنها شود.
در اینجا به نحوه پیادهسازی این تأخیر در پیکربندیهای مختلف مانند TCP Wrappers و استفاده از اسکریپتهای سفارشی پرداخته خواهد شد.
1. استفاده از spawn برای تأخیر در پردازش درخواستها
یکی از روشهای استفاده از تأخیر در پاسخ به درخواستها، استفاده از فرمان spawn در TCP Wrappers است. این فرمان به شما این امکان را میدهد که هنگام پذیرش یا رد یک اتصال، اسکریپتهایی را اجرا کنید که میتوانند تأخیر ایجاد کنند.
به عنوان مثال، میتوانید از یک اسکریپت برای تأخیر در پاسخ به درخواستهای مشکوک استفاده کنید. در ادامه نحوه انجام این کار توضیح داده شده است:
- ایجاد اسکریپت با تأخیر
در ابتدا، یک اسکریپت ساده میسازیم که تأخیر در پاسخ را مدیریت کند. این اسکریپت میتواند با استفاده از دستور sleep که در بسیاری از سیستمهای لینوکسی موجود است، تأخیر را اعمال کند.
#!/bin/bash
# delay.sh
# این اسکریپت یک تأخیر 5 ثانیهای ایجاد میکند
sleep 5
# پس از تأخیر، اتصال پذیرفته یا رد میشود
این اسکریپت را در مسیر مناسب ذخیره کنید (مثلاً /usr/local/bin/delay.sh).
- پیکربندی TCP Wrappers برای استفاده از اسکریپت تأخیر
حالا باید TCP Wrappers را پیکربندی کنید تا هنگام برقراری ارتباط با سیستم، اسکریپت delay.sh اجرا شود. این کار را میتوان با استفاده از فایل hosts.allow یا hosts.deny انجام داد.
در فایل hosts.allow، بهعنوان مثال، میتوان از دستور spawn برای اجرای اسکریپت تأخیر استفاده کرد:
sshd : ALL : spawn /usr/local/bin/delay.sh
در اینجا، زمانی که یک درخواست SSH به سرور وارد میشود، اسکریپت delay.sh اجرا میشود که به مدت 5 ثانیه تأخیر در پاسخ به درخواست ایجاد میکند.
توضیح:
- این کار باعث میشود که مهاجمان نتوانند با سرعت بالا تلاشهای زیادی برای ورود به سیستم انجام دهند، زیرا پس از هر درخواست، سیستم 5 ثانیه منتظر میماند.
- این تأخیر میتواند به طرز مؤثری باعث کاهش فشار حملات Brute Force شود.
2. استفاده از iptables برای ایجاد تأخیر در شبکه
اگر قصد دارید تأخیر در سطح شبکه ایجاد کنید، میتوانید از iptables استفاده کنید. این روش به شما امکان میدهد تا تأخیر را در سطح بستههای شبکه ایجاد کنید.
برای مثال، برای اضافه کردن تأخیر در ارسال بستههای UDP میتوانید از دستور زیر استفاده کنید:
sudo iptables -A INPUT -p udp --dport 53 -m length --length 128:256 \
-j ACCEPT
در اینجا، با استفاده از ماژول length و افزودن محدودیت طول بستهها، میتوانید درخواستهای غیرطبیعی را شبیهسازی کرده و برای جلوگیری از حملات به سرور تأخیر ایجاد کنید.
توضیح:
- این روش بیشتر برای کاهش سرعت حملات DDoS یا درخواستهای متعدد به سرور کاربرد دارد.
- این دستور تأخیر را برای بستههای خاص با طول خاص اعمال میکند، که میتواند از حملات اسپم یا درخواستهای نامشروع جلوگیری کند.
3. استفاده از سیستمهای مانیتورینگ برای شناسایی و اعمال تأخیر
در صورتی که بخواهید فقط برای درخواستهای مشکوک تأخیر ایجاد کنید، میتوانید از ابزارهای مانیتورینگ مانند Fail2Ban یا DenyHosts استفاده کنید. این ابزارها به شما کمک میکنند تا پس از شناسایی آدرسهای IP مشکوک یا بیش از حد فعال، به طور خودکار تأخیر ایجاد کنید.
- پیکربندی Fail2Ban برای استفاده از تأخیر
Fail2Ban میتواند به طور خودکار درخواستهای مشکوک را شناسایی کرده و از طریق تغییر پیکربندیها، تأخیر ایجاد کند. برای این کار میتوانید یک فیلتر سفارشی بسازید که درخواستها را شناسایی و پس از شناسایی، به آنها تأخیر بدهد.
یک نمونه پیکربندی برای ایجاد تأخیر در فایل /etc/fail2ban/jail.local بهصورت زیر خواهد بود:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
توضیح:
- در اینجا، Fail2Ban به طور خودکار پس از سه تلاش ناموفق برای ورود به سیستم، آدرس IP مهاجم را مسدود میکند.
- به این ترتیب، مهاجمان برای ورود به سیستم زمان بیشتری را صرف خواهند کرد.
4. استفاده از delay در اسکریپتهای سفارشی
شما میتوانید اسکریپتهای سفارشی برای ایجاد تأخیر در عملکرد سیستم خود بنویسید. به عنوان مثال، میتوانید از اسکریپتهای Bash یا Python برای تحلیل درخواستهای وارد شده استفاده کرده و بر اساس معیارهایی مانند تعداد درخواستهای ورودی یا نوع درخواست، تصمیم بگیرید که به آنها تأخیر دهید.
یک اسکریپت Python که تأخیر را برای درخواستهای مشکوک ایجاد میکند:
import time
# بررسی نوع درخواست
def check_request(request):
# فرض کنید درخواستهای مشکوک بر اساس IP یا نوع آن شناسایی شوند
if "bad_ip" in request:
print("Request from bad IP detected. Delaying response.")
time.sleep(5) # ایجاد تأخیر 5 ثانیهای
else:
print("Request is okay. Processing normally.")
توضیح:
- با استفاده از چنین اسکریپتهایی میتوانید تأخیر را فقط در مواقع خاص (برای درخواستهای مشکوک) اعمال کنید.
- این روش انعطافپذیری بیشتری به شما میدهد و میتوانید آن را بر اساس نیازهای خاص سیستم خود تنظیم کنید.
جمعبندی
استفاده از تأخیر در پاسخ به درخواستهای مشکوک یک روش مؤثر برای جلوگیری از حملات مختلف مانند Brute Force یا DDoS است. با استفاده از ابزارهایی مانند TCP Wrappers، iptables، Fail2Ban و اسکریپتهای سفارشی، میتوانید به راحتی تأخیر در پاسخها را پیادهسازی کنید. این روشها کمک میکنند تا مهاجمان نتوانند به سرعت درخواستهای خود را ارسال کنند و باعث کاهش حملات به سیستم شما شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”محدود کردن تعداد تلاشهای ورود ناموفق” subtitle=”توضیحات کامل”]محدود کردن تعداد تلاشهای ورود ناموفق یکی از روشهای مؤثر برای جلوگیری از حملات Brute Force است که در آن مهاجم سعی میکند با آزمایش کلمات عبور مختلف به سیستم وارد شود. با محدود کردن تعداد تلاشهای ناموفق برای ورود به سیستم، میتوان به راحتی از این نوع حملات جلوگیری کرد.
در این بخش، به بررسی روشهای مختلف برای محدود کردن تعداد تلاشهای ورود ناموفق در سیستمهای لینوکسی پرداخته خواهد شد. این کار میتواند با استفاده از ابزارهای مختلفی مانند PAM، Fail2Ban، iptables، و پیکربندیهای ویژه در سرویسهای مختلف مانند sshd انجام شود.
1. استفاده از PAM (Pluggable Authentication Modules)
PAM ابزاری است که در بسیاری از سیستمهای لینوکسی برای مدیریت احراز هویت و سیاستهای امنیتی استفاده میشود. یکی از قابلیتهای PAM محدود کردن تعداد تلاشهای ناموفق برای ورود به سیستم است. برای این کار، از ماژول pam_tally2 یا pam_faillock میتوان استفاده کرد.
- پیکربندی pam_tally2
در ابتدا، باید ماژول pam_tally2 را برای محدود کردن تلاشهای ورود ناموفق تنظیم کنید. این ماژول تعداد تلاشهای ناموفق برای ورود به سیستم را شمارش میکند و در صورت رسیدن به حد تعیینشده، ورود به سیستم را مسدود میکند.
- ابتدا فایل پیکربندی PAM را ویرایش کنید:
sudo nano /etc/pam.d/sshd
- سپس در انتهای فایل، این خط را اضافه کنید:
auth required pam_tally2.so deny=5 onerr=fail unlock_time=900
توضیح:
deny=5به این معناست که پس از 5 تلاش ناموفق، ورود به سیستم مسدود میشود.unlock_time=900زمان قفل شدن حساب کاربری را به مدت 15 دقیقه (900 ثانیه) تعیین میکند.onerr=failباعث میشود که در صورت بروز خطا، درخواست ورود رد شود.
- پیکربندی pam_faillock
ماژول pam_faillock نیز مشابه pam_tally2 عمل میکند، اما امکانات پیشرفتهتری دارد و به شما این امکان را میدهد که پس از یک تعداد مشخص تلاش ناموفق، حساب کاربری را مسدود کرده و پس از مدت زمان مشخصی آن را باز کنید.
برای استفاده از این ماژول، فایل /etc/pam.d/sshd را ویرایش کرده و خط زیر را اضافه کنید:
auth required pam_faillock.so preauth audit deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
توضیح:
deny=5تعداد تلاشهای ناموفق مجاز را 5 تعیین میکند.unlock_time=900مدت زمانی که حساب قفل خواهد ماند را به مدت 15 دقیقه (900 ثانیه) تنظیم میکند.preauthوauthfailمشخص میکنند که شمارش تلاشهای ناموفق قبل از احراز هویت و پس از آن انجام شود.
2. استفاده از Fail2Ban
Fail2Ban یکی از محبوبترین ابزارهای مدیریت حملات Brute Force است که به طور خودکار تلاشهای ناموفق برای ورود به سیستم را شناسایی کرده و به آدرس IP مهاجم محدودیت اعمال میکند. این ابزار میتواند بهطور خودکار پس از تعداد مشخصی تلاش ناموفق، IP مهاجم را به مدت مشخصی مسدود کند.
برای پیکربندی Fail2Ban برای محدود کردن تعداد تلاشهای ورود ناموفق، مراحل زیر را دنبال کنید:
- نصب Fail2Ban:
در ابتدا باید Fail2Ban را نصب کنید:
sudo apt-get install fail2ban
- پیکربندی Fail2Ban برای SSH
فایل پیکربندی Fail2Ban برای SSH به نام sshd.conf است که میتوانید آن را در مسیر /etc/fail2ban/filter.d/ پیدا کنید.
برای ویرایش فایل پیکربندی اصلی، از فایل jail.local استفاده میکنیم:
sudo nano /etc/fail2ban/jail.local
در این فایل، باید بخش مربوط به SSH را فعال کنید و محدودیتهای مورد نظر را تعیین کنید:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
توضیح:
maxretry=3: به این معناست که بعد از 3 تلاش ناموفق، Fail2Ban IP مهاجم را مسدود میکند.bantime=600: مدت زمان مسدودسازی IP مهاجم را به مدت 10 دقیقه (600 ثانیه) تعیین میکند.findtime=600: مدت زمانی که تلاشهای ناموفق باید در آن زمان بازهای بررسی شوند، 10 دقیقه است.
بعد از اعمال تغییرات، سرویس Fail2Ban را ریستارت کنید:
sudo systemctl restart fail2ban
3. استفاده از iptables برای مسدودسازی IPها
اگر به دنبال یک روش سادهتر برای مسدودسازی IPهای مهاجم هستید، میتوانید از iptables برای مسدود کردن IPها پس از تعداد مشخصی تلاش ناموفق استفاده کنید.
- استفاده از iptables برای شمارش تلاشهای ورود ناموفق:
شما میتوانید با استفاده از iptables از ماژول recent برای مسدود کردن IPهای با تلاشهای ناموفق بیش از حد استفاده کنید. در ابتدا، شما باید قوانینی برای شمارش تلاشها و مسدودسازی اضافه کنید:
sudo iptables -A INPUT -p tcp --dport ssh -m recent --name ssh_attempt \
--rsource --set
این دستور تلاشهای ورودی به پورت SSH را شمارش میکند.
- مسدودسازی IPهای مهاجم پس از تلاشهای ناموفق:
سپس باید قوانینی اضافه کنید که IPهای مهاجم را مسدود کنند:
sudo iptables -A INPUT -p tcp --dport ssh -m recent --name ssh_attempt \
--rsource --hitcount 4 -j REJECT --reject-with tcp-reset
توضیح:
--hitcount 4: مشخص میکند که پس از 4 تلاش ناموفق، IP مسدود شود.--reject-with tcp-reset: به جای مسدودسازی کامل، یک TCP Reset ارسال میشود.
برای ذخیره این قوانین پس از ریبوت، از دستور زیر استفاده کنید:
sudo iptables-save > /etc/iptables/rules.v4
جمعبندی
محدود کردن تعداد تلاشهای ورود ناموفق یکی از بهترین روشها برای جلوگیری از حملات Brute Force است. با استفاده از ابزارهایی مانند PAM، Fail2Ban و iptables میتوانید به راحتی تعداد تلاشهای ناموفق را محدود کرده و از ورود غیرمجاز به سیستم جلوگیری کنید. این روشها به شما این امکان را میدهند که با تنظیمات مختلف، امنیت سیستم خود را تقویت کنید و حملات به آن را کاهش دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”اعمال Rate Limiting برای کاهش بار روی سرویسها” subtitle=”توضیحات کامل”]Rate limiting یک تکنیک مدیریتی است که برای محدود کردن تعداد درخواستهای ورودی به یک سرویس خاص در مدت زمان معین استفاده میشود. این تکنیک به کاهش بار روی سرویسها کمک کرده و از حملات Denial of Service (DoS) یا Distributed Denial of Service (DDoS) جلوگیری میکند. بهویژه در سرویسهایی که به تعداد زیادی درخواست نیاز دارند، اعمال rate limiting میتواند به طور قابلتوجهی عملکرد سیستم را بهبود بخشد.
در این بخش، نحوه اعمال rate limiting برای سرویسها در سیستمهای لینوکسی به کمک ابزارهای مختلف مانند iptables، Nginx و Apache شرح داده خواهد شد.
1. استفاده از iptables برای Rate Limiting
در اینجا قصد داریم محدودیت نرخ درخواستها را برای سرویس SSH و HTTP با استفاده از iptables پیادهسازی کنیم.
- Rate Limiting برای درخواستهای SSH
برای محدود کردن درخواستهای SSH به سرور از iptables استفاده میکنیم. این دستور به ما اجازه میدهد که تعداد درخواستها برای پورت SSH (پورت 22) را محدود کنیم.
sudo iptables -A INPUT -p tcp --dport 22 \
-m limit --limit 5/min --limit-burst 10 \
-j ACCEPT
توضیح:
-A INPUT: این گزینه به iptables میگوید که قوانین را به زنجیره ورودی (input chain) اضافه کند.-p tcp: این گزینه پروتکل TCP را مشخص میکند.--dport 22: به معنای پورت SSH است که معمولاً 22 است.-m limit: این گزینه ماژول limit را برای محدود کردن نرخ درخواستها بارگذاری میکند.--limit 5/min: به معنای این است که تنها 5 درخواست در هر دقیقه از یک آدرس IP پذیرفته خواهد شد.--limit-burst 10: به درخواستها اجازه میدهد که در ابتدا تا 10 درخواست بدون محدودیت وارد شوند.-j ACCEPT: درخواستهایی که محدودیت را رعایت میکنند، پذیرفته خواهند شد.
- Rate Limiting برای درخواستهای HTTP
حالا میخواهیم برای درخواستهای HTTP (پورت 80) محدودیت اعمال کنیم:
sudo iptables -A INPUT -p tcp --dport 80 \
-m limit --limit 100/sec --limit-burst 150 \
-j ACCEPT
توضیح:
--dport 80: این گزینه پورت 80 را مشخص میکند که برای HTTP استفاده میشود.--limit 100/sec: حداکثر 100 درخواست در هر ثانیه از یک آدرس IP پذیرفته خواهد شد.--limit-burst 150: اجازه میدهد که 150 درخواست بدون محدودیت وارد شوند.
2. استفاده از Nginx برای Rate Limiting
در اینجا میخواهیم برای درخواستهای HTTP در Nginx محدودیت نرخ اعمال کنیم.
- پیکربندی Rate Limiting در Nginx
برای اعمال rate limiting در Nginx، باید فایل پیکربندی Nginx را ویرایش کنیم (معمولاً در مسیر /etc/nginx/nginx.conf قرار دارد):
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
location / {
limit_req zone=mylimit burst=20 nodelay;
}
}
}
توضیح:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;: این خط یک zone به نامmylimitتعریف میکند که تعداد درخواستهای ورودی از هر آدرس IP را به 10 درخواست در ثانیه محدود میکند.limit_req zone=mylimit burst=20 nodelay;: این خط برای هر IP اجازه میدهد که حداکثر 20 درخواست بدون تأخیر وارد کند. burst به درخواستها اجازه میدهد که تا 20 درخواست در زمانهای پیک بدون محدودیت وارد شوند.
- ریستارت کردن Nginx
پس از اعمال تغییرات، باید Nginx را ریستارت کنیم تا تنظیمات جدید اعمال شوند:
sudo systemctl restart nginx
3. استفاده از Apache برای Rate Limiting
- فعالسازی mod_ratelimit در Apache
برای استفاده از mod_ratelimit در Apache، ابتدا باید این ماژول را فعال کنیم:
sudo a2enmod ratelimit
- پیکربندی Rate Limiting در Apache
برای اعمال محدودیت نرخ، فایل پیکربندی Apache (معمولاً در مسیر /etc/apache2/apache2.conf) را ویرایش کنید:
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400
</IfModule>
توضیح:
SetOutputFilter RATE_LIMIT: به Apache دستور میدهد که فیلتر rate limiting را برای پاسخها (responses) اعمال کند.SetEnv rate-limit 400: این گزینه میزان rate limit را به 400 کیلوبایت در ثانیه برای هر درخواست محدود میکند.
4. استفاده از fail2ban برای Rate Limiting
- پیکربندی fail2ban برای SSH
برای استفاده از fail2ban بهمنظور مسدود کردن IPهایی که بیش از حد تلاش برای ورود ناموفق دارند، فایل پیکربندی jail.local را ویرایش کنید:
sudo nano /etc/fail2ban/jail.local
سپس، بخش مربوط به SSH را فعال کنید:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
توضیح:
maxretry = 3: اگر یک IP بیش از 3 بار تلاش ناموفق برای ورود داشته باشد، به مدت 10 دقیقه (600 ثانیه) مسدود خواهد شد.bantime = 600: مدت زمان مسدود شدن IP را مشخص میکند (10 دقیقه).findtime = 600: بازه زمانی که تلاشهای ناموفق باید در آن زمان انجام شوند تا IP مسدود شود (10 دقیقه).
جمعبندی
در این بخش، نحوه اعمال rate limiting با استفاده از ابزارهای مختلف لینوکسی مانند iptables، Nginx، Apache و fail2ban بررسی شد. این تکنیکها برای کاهش بار روی سرویسها و جلوگیری از حملات DoS و DDoS بسیار مؤثر هستند. اعمال محدودیتهای مناسب به هر سرویس به کاهش مصرف منابع و حفاظت از سیستم کمک خواهد کرد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. بهینهسازی امنیتی و جلوگیری از دور زدن TCP Wrappers”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”اطمینان از عدم وجود تنظیمات ناسازگار بین iptables و TCP Wrappers” subtitle=”توضیحات کامل”]زمانی که از iptables و TCP Wrappers همزمان استفاده میکنید، مهم است که از هماهنگی و عدم وجود تضاد یا ناسازگاری بین تنظیمات این دو سیستم اطمینان حاصل کنید. زیرا هر دو سیستم بهطور جداگانه برای مدیریت دسترسی و محدودیتهای شبکه کار میکنند و ممکن است اگر به درستی تنظیم نشوند، تداخلاتی ایجاد کنند که عملکرد شبکه را تحت تاثیر قرار دهند. در ادامه، مراحل بررسی و جلوگیری از ناسازگاری بین این دو سیستم آورده شده است.
1. بررسی تنظیمات iptables
ابتدا باید اطمینان حاصل کنیم که تنظیمات iptables به درستی پیکربندی شدهاند. تنظیمات iptables میتوانند ترافیک شبکه را مسدود یا اجازه دهند، بنابراین باید قوانین ورودی (INPUT) و خروجی (OUTPUT) را بررسی کنید.
برای بررسی وضعیت iptables میتوانید از دستور زیر استفاده کنید:
sudo iptables -L -v -n
این دستور تمام قوانین فعلی iptables را با جزئیات بیشتر و به صورت عددی نمایش میدهد. در اینجا:
-L: لیست کردن تمام قوانین.-v: نمایش جزئیات بیشتر برای هر قانون.-n: استفاده از آدرسهای IP به جای نام میزبان (برای سرعت بیشتر).
نکته: برای اینکه اطمینان حاصل کنید که هیچ قانونی ترافیک مربوط به سرویسهای مهم شبکهای را مسدود نمیکند، باید این قوانین را با دقت بررسی کنید.
2. بررسی فایلهای hosts.allow و hosts.deny
برای اطمینان از اینکه تنظیمات TCP Wrappers با تنظیمات iptables تداخل ندارند، باید فایلهای hosts.allow و hosts.deny را نیز بررسی کنیم. این دو فایل مسئول مدیریت دسترسی به سرویسها و برنامههای شبکهای هستند.
برای بررسی فایل hosts.allow:
cat /etc/hosts.allow
برای بررسی فایل hosts.deny:
cat /etc/hosts.deny
در اینجا باید به این نکات توجه کنید:
- hosts.allow به سرویسهایی که اجازه دسترسی دارند اشاره میکند.
- hosts.deny به سرویسهایی که از آنها جلوگیری میشود اشاره میکند.
اگر همزمان با iptables از TCP Wrappers استفاده میکنید، توجه به اولویتبندی بسیار مهم است. در صورتی که iptables دسترسی را مسدود کند، حتی اگر در hosts.allow اجازه دسترسی داده شده باشد، ترافیک نمیتواند وارد شود.
3. هماهنگی قوانین iptables و TCP Wrappers
باید مطمئن شوید که iptables و TCP Wrappers مکمل یکدیگر هستند و نه متناقض با یکدیگر. برای انجام این کار، به چند نکته زیر توجه کنید:
- **اجتناب از مسدودسازی ترافیک توسط iptables پس از تایید توسط TCP Wrappers:
- اگر شما تنظیماتی در iptables دارید که ترافیک به یک پورت خاص را مسدود میکند، حتی اگر hosts.allow به این ترافیک اجازه دسترسی بدهد، این ترافیک در iptables مسدود خواهد شد.
- برای جلوگیری از این مشکل، ابتدا باید قوانین iptables را بهگونهای تنظیم کنید که از مسدودسازی ترافیکهای مجاز توسط TCP Wrappers جلوگیری کند.
- **تطابق پورتها در iptables و TCP Wrappers:
- اطمینان حاصل کنید که پورتهایی که در TCP Wrappers (در فایلهای hosts.allow و hosts.deny) تنظیم میشوند، در iptables نیز به درستی باز شدهاند.
- اگر iptables ترافیک به یک پورت خاص را مسدود کرده باشد، حتی اگر TCP Wrappers دسترسی را برای آن پورت باز کرده باشد، هیچ ترافیکی قادر به ورود نخواهد بود.
4. تست هماهنگی
برای تست هماهنگی بین iptables و TCP Wrappers، میتوانید از ابزاری مانند tcpdchk استفاده کنید تا مطمئن شوید که تنظیمات TCP Wrappers به درستی پیکربندی شدهاند.
برای بررسی تنظیمات TCP Wrappers:
sudo tcpdchk
این دستور تنظیمات TCP Wrappers را بررسی کرده و هشدارهایی در صورت وجود تنظیمات ناسازگار یا اشتباه نشان میدهد.
5. تست دسترسی به سرویسها
برای تست اینکه آیا دسترسی به سرویسها با تنظیمات iptables و TCP Wrappers به درستی هماهنگ است، میتوانید از دستورات زیر استفاده کنید:
- تست دسترسی به SSH (فرض کنید پورت 22 برای SSH باز است):
از یک سیستم دیگر که IP آن مجاز است، میتوانید به سرویس SSH متصل شوید:
ssh username@server_ipاگر اتصال موفق باشد، تنظیمات دسترسی در TCP Wrappers صحیح است و iptables ترافیک را مسدود نکرده است.
- تست دسترسی به HTTP (فرض کنید پورت 80 برای HTTP باز است):
با استفاده از curl از یک سیستم دیگر میتوانید دسترسی به سرویس HTTP را تست کنید:
curl http://server_ipاگر پاسخ صحیحی دریافت کردید، به این معنی است که ترافیک HTTP به درستی از طریق iptables و TCP Wrappers عبور کرده است.
جمعبندی
برای اطمینان از عدم وجود تنظیمات ناسازگار بین iptables و TCP Wrappers، باید قوانین iptables و پیکربندیهای TCP Wrappers را به دقت بررسی کنید. اطمینان حاصل کنید که iptables ترافیک مربوط به سرویسهای مجاز را مسدود نکند و پورتها در هر دو سیستم به درستی تنظیم شده باشند. علاوه بر این، تستهای مختلف برای بررسی عملکرد همزمان این دو ابزار به شما کمک خواهد کرد تا اطمینان حاصل کنید که تنظیمات بهدرستی پیکربندی شدهاند و هیچگونه تداخلی وجود ندارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”جلوگیری از Backdoor Access از طریق تنظیمات اشتباه” subtitle=”توضیحات کامل”]Backdoor access به معنای راههای مخفی برای دسترسی به یک سیستم است که معمولاً بدون اجازه و نظارت مدیر سیستم باز میشوند. این نوع دسترسیها معمولاً از طریق اشتباهات در تنظیمات شبکه، سرویسها، یا نرمافزارها بهوجود میآید و میتواند به تهدیدات امنیتی جدی تبدیل شود. برای جلوگیری از backdoor access، باید به چندین نکته کلیدی در پیکربندی سیستمها، سرویسها و تنظیمات امنیتی توجه داشته باشیم.
1. بررسی تنظیمات پیشفرض و تغییر آنها
پیکربندی پیشفرض بسیاری از سرویسها و برنامهها میتوانند backdoorهایی ایجاد کنند. برای جلوگیری از این خطر، باید همه تنظیمات پیشفرض را بازبینی و تغییر دهید. این تنظیمات معمولاً شامل موارد زیر میشوند:
- حسابهای کاربری پیشفرض: برخی برنامهها و سرویسها ممکن است حسابهای کاربری پیشفرض ایجاد کنند که برای دسترسی به سیستم از آنها استفاده میشود. این حسابها میتوانند در صورت نداشتن رمز عبور قوی، مورد سوءاستفاده قرار گیرند.
- پورتهای پیشفرض: بسیاری از سرویسها مانند SSH، FTP، MySQL و غیره از پورتهای پیشفرض استفاده میکنند که این پورتها ممکن است هدف حملات قرار گیرند.
برای اطمینان از عدم وجود backdoor از طریق پیکربندی پیشفرض، باید موارد زیر را بررسی کنید:
- تغییر پسوردهای پیشفرض برای همه حسابهای کاربری.
- غیرفعال کردن یا تغییر پورتهای پیشفرض سرویسها.
- غیرفعال کردن سرویسهایی که لازم نیستند.
2. استفاده از Firewall برای محدود کردن دسترسی
Firewall یا فایروال، یکی از ابزارهای مهم برای جلوگیری از دسترسیهای غیرمجاز است. با پیکربندی صحیح فایروال، میتوان دسترسی به سیستم را به منابع خاص محدود کرد. برای جلوگیری از backdoor access، باید قوانین فایروال بهگونهای تنظیم شوند که:
- تنها آدرسهای IP خاص (مانند سرورهای مدیریت) اجازه دسترسی به سرویسهای خاص مانند SSH یا RDP را داشته باشند.
- دسترسی به پورتهای غیرضروری بسته شود.
- تنها پروتکلهای امن مانند SSH (به جای Telnet) فعال باشند.
برای مثال، میتوان دسترسی به پورت SSH (پورت 22 پیشفرض) را فقط از یک آدرس IP خاص (مانند آدرس IP سرور مدیریت) مجاز کرد:
sudo iptables -A INPUT -p tcp -s <IP_مجاز> --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
در این دستور:
- دسترسی به پورت 22 از آدرس IP خاص مجاز است.
- سایر تلاشها برای دسترسی به پورت 22 مسدود میشود.
3. بررسی تنظیمات SSH و غیرفعالسازی دسترسیهای ناامن
SSH یکی از سرویسهایی است که ممکن است به عنوان backdoor استفاده شود، اگر بهطور نادرست پیکربندی شده باشد. برای جلوگیری از backdoor access از طریق SSH، باید تنظیمات زیر را انجام دهید:
- غیرفعالسازی ورود با رمز عبور: استفاده از کلیدهای SSH به جای رمز عبور، امنیت بیشتری فراهم میکند.
در فایل پیکربندی SSH (/etc/ssh/sshd_config) این تنظیمات را انجام دهید:
PasswordAuthentication no
PermitEmptyPasswords no
- اجبار برای استفاده از کلیدهای SSH: برای اطمینان از اینکه تنها کاربرانی که کلید خصوصی معتبر دارند میتوانند وارد سیستم شوند.
PubkeyAuthentication yes
- غیرفعالسازی ورود به عنوان root: برای جلوگیری از دسترسی مستقیم به حساب root از طریق SSH، این گزینه را فعال کنید:
PermitRootLogin no
4. نظارت بر لاگها
برای شناسایی سریع backdoor access یا تلاشهای غیرمجاز، باید همیشه لاگهای سیستم و سرویسها را نظارت کنید. بررسی لاگها میتواند به شناسایی ورودهای مشکوک یا فعالیتهای غیرعادی کمک کند.
برخی از لاگهای مهم که باید بررسی شوند:
- /var/log/auth.log: این لاگ شامل تمامی تلاشهای ورود به سیستم است و میتواند نشانههایی از تلاشهای ناامن یا تلاش برای دسترسی از طریق backdoor باشد.
- /var/log/secure: برای نظارت بر سرویسهایی مانند SSH.
برای مشاهده تلاشهای ورود غیرمجاز به سیستم:
grep "Failed password" /var/log/auth.log
برای نظارت بر تمامی تلاشهای ورود:
tail -f /var/log/auth.log
5. بررسی و جلوگیری از Backdoor Shellهای مخفی
گاهی اوقات حملهکنندگان ممکن است از طریق ابزارهایی مانند netcat یا bash دسترسیهای پنهانی ایجاد کنند. برای جلوگیری از backdoor shellهای مخفی:
- از نصب و اجرای برنامههای غیرضروری و ناشناخته جلوگیری کنید.
- محدودیتهایی برای اجرای اسکریپتهای غیرمجاز ایجاد کنید.
- مانیتورینگ سیستم را برای شناسایی فرآیندهای مشکوک فعال کنید.
برای شناسایی و متوقف کردن یک backdoor shell، میتوانید از دستوراتی مانند ps برای بررسی فرآیندهای فعال استفاده کنید:
ps aux | grep -i 'bash'
6. بروزرسانی و پچ کردن منظم سیستمها
پچکردن سیستمها و نرمافزارها به طور منظم، یکی از مهمترین روشها برای جلوگیری از backdoor access است. با نصب پچها و بهروزرسانیها، آسیبپذیریهای شناختهشده که ممکن است برای حملات backdoor مورد استفاده قرار گیرند، رفع میشود.
برای بروزرسانی سیستم در توزیعهای مبتنی بر Debian (مانند Ubuntu):
sudo apt update && sudo apt upgrade
برای توزیعهای مبتنی بر RedHat:
sudo yum update
7. استفاده از سیستمهای تشخیص نفوذ (IDS)
برای جلوگیری از backdoor access و شناسایی سریع آن، میتوان از سیستمهای تشخیص نفوذ (IDS) استفاده کرد. این سیستمها به صورت مداوم شبکه و سیستمها را نظارت میکنند و در صورت شناسایی فعالیتهای مشکوک، به مدیران سیستم هشدار میدهند.
نمونههایی از IDSها:
- Snort: برای نظارت و تحلیل ترافیک شبکه.
- Suricata: برای تشخیص نفوذ در سطح شبکه.
جمعبندی
برای جلوگیری از backdoor access، باید از ترکیب روشهای مختلف امنیتی استفاده کرد. این شامل تغییر تنظیمات پیشفرض، استفاده از فایروال برای محدود کردن دسترسیها، غیرفعالسازی دسترسیهای غیرضروری مانند ورود با رمز عبور در SSH، نظارت بر لاگها، و بروزرسانی منظم سیستمها است. همچنین استفاده از سیستمهای تشخیص نفوذ میتواند به شناسایی فعالیتهای مشکوک کمک کند و امنیت سیستم را به طور مؤثری تقویت نماید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست و نظارت بر قوانین امنیتی با استفاده از tcpdmatch و tcpdchk” subtitle=”توضیحات کامل”]برای حفظ امنیت شبکه و اطمینان از اینکه قوانین امنیتی به درستی در TCP Wrappers پیادهسازی شدهاند، میتوان از ابزارهای کمکی مانند tcpdchk و tcpdmatch استفاده کرد. این ابزارها به شما کمک میکنند تا مطمئن شوید قوانین بهدرستی اعمال شدهاند و هیچ مشکل امنیتی در پیکربندی شما وجود ندارد.
در این بخش، به شرح نحوه استفاده از این دو ابزار برای تست و نظارت بر قوانین امنیتی میپردازیم.
1. استفاده از tcpdchk برای بررسی پیکربندی
ابزار tcpdchk برای بررسی صحت پیکربندیها و لاگهای مربوط به TCP Wrappers استفاده میشود. این ابزار به شما کمک میکند تا اطمینان حاصل کنید که تنظیمات موجود در فایلهای hosts.allow و hosts.deny به درستی انجام شدهاند و هیچگونه تضاد یا خطایی در پیکربندیها وجود ندارد.
نحوه استفاده از tcpdchk:
برای استفاده از tcpdchk، تنها کافی است دستور زیر را اجرا کنید:
sudo tcpdchk
این دستور تمامی پیکربندیهای موجود در فایلهای hosts.allow و hosts.deny را بررسی میکند و به شما گزارش میدهد که آیا تنظیمات به درستی اعمال شدهاند یا خیر. در صورتی که مشکل یا اشتباهی وجود داشته باشد، tcpdchk آن را شناسایی کرده و پیامی برای رفع مشکل نشان خواهد داد.
نمونه خروجی:
tcpdchk: hosts.allow, line 15: invalid syntax.
در اینجا، tcpdchk به شما میگوید که در خط 15 فایل hosts.allow یک خطای نحوی وجود دارد. بنابراین، شما میتوانید به راحتی مشکل را شناسایی و آن را اصلاح کنید.
2. استفاده از tcpdmatch برای تست دسترسی
ابزار tcpdmatch برای تست اعمال قوانین امنیتی در فایلهای hosts.allow و hosts.deny استفاده میشود. با این ابزار میتوانید بررسی کنید که آیا یک آدرس IP خاص یا یک دامنه خاص مجاز به دسترسی به سرویسها است یا خیر.
نحوه استفاده از tcpdmatch:
برای تست دسترسی یک آدرس IP خاص به سرویسها با استفاده از پیکربندیهای TCP Wrappers، دستور زیر را اجرا کنید:
sudo tcpdmatch <برنامه> <آدرس_IP>
در این دستور:
<برنامه>باید نام برنامه یا سرویس موردنظر (مانندsshd,vsftpdو غیره) باشد.<آدرس_IP>باید آدرس IP موردنظر باشد که میخواهید دسترسی آن را بررسی کنید.
نمونه استفاده:
فرض کنید شما میخواهید دسترسی آدرس IP 192.168.1.100 به سرویس SSH را بررسی کنید. دستور زیر را وارد میکنید:
sudo tcpdmatch sshd 192.168.1.100
اگر دسترسی برای آدرس IP مجاز باشد، خروجی مشابه به این خواهد بود:
access granted
اگر دسترسی رد شده باشد، خروجی به صورت زیر خواهد بود:
access denied
این ابزار به شما کمک میکند تا به راحتی آزمایش کنید که آیا قوانین شما به درستی اعمال شدهاند و آیا آدرس IP مورد نظر اجازه دسترسی به سرویس خاص را دارد یا خیر.
3. نکات مهم در استفاده از tcpdchk و tcpdmatch
- بهروزرسانیهای منظم: همیشه پس از اعمال تغییرات در فایلهای
hosts.allowوhosts.deny، از ابزارهایtcpdchkوtcpdmatchبرای بررسی صحت پیکربندیها استفاده کنید. - یافتن مشکلات پیکربندی: اگر پیکربندیهای شما دچار اشتباهات نحوی یا تناقض باشند، این ابزارها به شما کمک میکنند تا بهسرعت مشکلات را شناسایی کنید.
- تست دسترسیها: با استفاده از
tcpdmatch، میتوانید از قبل بررسی کنید که آیا یک آدرس IP یا دامنه خاص دسترسی به سرویسها خواهد داشت یا خیر. این ابزار برای آزمایش دسترسیهای احتمالی بسیار مفید است.
جمعبندی
استفاده از ابزارهای tcpdchk و tcpdmatch برای بررسی و نظارت بر پیکربندیهای TCP Wrappers، یک روش ساده و مؤثر برای اطمینان از امنیت و صحت تنظیمات دسترسی در سیستمهای لینوکسی است. با این ابزارها میتوانید بهراحتی تنظیمات خود را آزمایش و بررسی کنید تا از بروز مشکلات امنیتی جلوگیری شود.[/cdb_course_lesson][/cdb_course_lessons]
[/cdb_course_lesson][/cdb_course_lessons]
خدمات شبکه فراز نتورک | پیشرو در ارائه خدمات دیتاسنتری و کلود

نقد و بررسی وجود ندارد.