ipguard(8) System Manager's Manual ipguard(8)

ipguard - ابزاری برای محافظت از فضای نشانی‌های IP در شبکه محلی اترنت با جعل ARP

ipguard [-h] [-ajgrxziovd] [-f ethers] [-l log] [-p pid] [-m mac] [-c filter] [-u seconds] [-k seconds] [-n fakes] [-t mseconds] [-b buf] [-s user] <iface>

ابزار ipguard شبکه را برای یافتن بسته‌های ARP شنود می‌کند. تمام جفت‌های مجاز MAC-IP در پرونده‌ی ethers فهرست شده‌اند. اگر بسته‌ای با جفت MAC-IP دریافت کند که در پرونده‌ی ethers وجود ندارد، یک پاسخ ARP جعلی با نشانی ساختگیِ پیکربندی‌شده ارسال خواهد کرد. این کار مانع از کارکرد صحیح میزبان غیرمجاز در سگمنت اترنت محلی می‌شود.

پرونده‌ی ethers. ساختار پرونده‌ی ethers در ethers.sample و ethers(5) توضیح داده شده است. مقدار پیش‌فرض: /etc/ethers.
پرونده‌ی لاگ (ثبت وقایع). مقدار پیش‌فرض: /var/log/ipguard_<iface>.log.
پرونده‌ی PID (شناسه فرایند). مقدار پیش‌فرض: /var/run/ipguard_<iface>.pid.
نشانی MAC جعلی. در پاسخ ARP به عنوان نشانی MAC رایانه‌ی خارج از فهرست فرستاده خواهد شد. مقدار پیش‌فرض: de:ad:xx:xx:xx:xx است که در آن x یک رقم هگزادسیمال تصادفی می‌باشد.
عبارت فیلتر PCAP. در حالت پیش‌فرض بدون فیلتر است.
بازه زمانی به‌روزرسانی پرونده‌ی ethers. مدت زمان بین بررسی‌های پرونده‌ی ethers جهت اعمال تغییرات و پویش مجدد آن. مقدار پیش‌فرض: 0 (بدون به‌روزرسانی خودکار).
تولید مجدد دوره‌ای نشانی MAC جعلی. پیش‌فرض: 0 (بدون تولید مجدد).
تعداد پاسخ‌های جعلی. مقدار پیش‌فرض: ۲ پاسخ.
فاصله زمانی بین پاسخ‌های جعلی بر حسب میلی‌ثانیه. مقدار پیش‌فرض: ۵۰ میلی‌ثانیه.
اندازه بافر MAC. تعداد آخرین جفت‌های نامعتبر MAC-IP که در بافر ذخیره می‌شوند. پیش‌فرض: 0 (بدون بافر).
کاهش دسترسی ریشه (root) به کاربر مشخص‌شده. مقدار پیش‌فرض: عدم کاهش دسترسی.
عدم جایگزینی نشانی (مانند 0.0.0.0 یا 00:00:00:00:00:00).
غیرفعال کردن تشخیص خودکار اولین جفت MAC-IP از رابط شبکه.
اعطای مجوز به طور پیش‌فرض (Default to grant). در صورتی که هر دو نشانی MAC و IP در فهرست نباشند، مسدود نمی‌شوند.
حالت فقط‌خواندنی. هیچ داده‌ای به شبکه ارسال نمی‌شود؛ تنها به شنود می‌پردازد.
حالت دوطرفه (Duplex). بسته‌های جعلی نه تنها برای متجاوز (pirate)، بلکه در پاسخ به درخواست‌ها برای نشانی متجاوز نیز ارسال می‌شوند.
ارسال برودکست who-has برای ترمیم جدول‌های ARP تمام کلاینت‌هایی که توسط متجاوز آسیب دیده‌اند.
حالت پنهان. بسته‌های ARP بلاعوض (Gratuitous ARP) را مسدود نمی‌کند.
حالت بی‌قیدوبند (Promiscuous mode). فعال‌سازی حالت پرومیسکوئوس در رابط شبکه (معمولاً کاربردی ندارد).
حالت پرگو (Verbose). نمایش پیام‌های توضیحی بیشتر.
عدم انشعاب (عدم رفتن به پس‌زمینه). در پس‌زمینه اجرا نمی‌شود و تمام رویدادها را در STDERR می‌نویسد.
اشکال‌زدایی (دیباگ).
اشکال‌زدایی بیشتر با جزئیات بالاتر.
راهنما. نمایش توضیحات مختصر درباره پارامترهای خط فرمان.

حالت عادی و توصیه‌شده، دوطرفه، ترمیم برودکست و به‌روزرسانی خودکار etc/ethers/ هر ۵ دقیقه یک‌بار:
ipguard -xz -u 300 fxp0
مشابه حالت قبل، اما همراه با فیلتر PCAP تنها برای شبکه 192.168.1.0/24:
ipguard -xz -u 300 -c 'net 192.168.0.0/24' fxp0
حالت فقط‌خواندنی و به‌خاطرسپاری ۱۰۰ مک‌آدرس آخری که در پرونده‌ی ethers وجود ندارند. مناسب برای جمع‌آوری اولیه جفت‌های MAC-IP:
ipguard -r -b 100 -f /dev/null rl0
اجرای ipguard برای مدتی کوتاه و سپس اجرای دستور killall -USR2 ipguard برای دریافت خروجی ۱۰۰ جفت اخیر MAC-IP.
عدم رفتن به پس‌زمینه و خروجی پرگوتر به همراه یک پرونده‌ی آزمایشی ethers:
ipguard -vd -f /tmp/ethers my1

اولین جفت MAC-IP در پرونده‌ی ethers همیشه باید نشانی‌های MAC/IP خود دستگاه باشد. به طور معمول این مقادیر به صورت خودکار از رابط شنودکننده گرفته می‌شوند؛ اما اگر گزینه‌ی -j مشخص شده باشد، باید مطمئن شوید که اولین جفت، همان MAC/IP مبدأ است.

اگر می‌خواهید برای افزونگی (Redundancy) بیش از یک ipguard را در یک سگمنت راه‌اندازی کنید، باید برای تمام آن‌ها یک نشانی MAC جعلی یکسان مشخص کرده و روشی برای همگام‌سازی پرونده‌های ethers بیابید.

پویش مجدد پرونده‌ی ethers و بازگشایی مجدد پرونده‌ی لاگ.
تخلیه (Dump) برخی جدول‌ها و آمارهای سیستم.
تخلیه جدول جدید MAC-IP در قالب ethers(5).

/etc/ethers
فهرست جفت‌های MAC-IP.
/var/log/ipguard_<iface>.log
پرونده‌ی ثبت وقایع (log).
/var/run/ipguard_<iface>.pid
پرونده‌ی شناسه فرایند (pid).

RFC 826, ethers(5), tcpdump(1), pcap(3), libnet

از نشانی عام 0.0.0.0 در پرونده‌ی ethers همراه با گزینه‌ی -x استفاده نکنید؛ در غیر این صورت کلاینت‌های مجاز مسدود خواهند شد (کشف‌شده توسط irix).

یک باگ عجیب در تابع ()libnet_get_hwaddr وجود دارد که در OpenBSD 4.0 کار نمی‌کند (کشف‌شده توسط irix). از گزینه‌ی -j استفاده کنید.

ابزار ipguard نمی‌تواند از تغییر همزمان نشانی MAC به همراه IP توسط متجاوز جلوگیری کند.

سیگنال‌های HUP، USR1 یا USR2 تنها زمانی عمل می‌کنند که یک بسته ARP جدید دریافت شود. این یک باگ نیست، بلکه یک ویژگی طراحی است.

هنگام استفاده از گزینه‌ی -s <user> ابزار ipguard امتیازات ریشه را پس از ایجاد پرونده‌های log و pid لغو می‌کند. بنابراین نمی‌تواند این پرونده‌ها را حذف کند یا مجدداً بازگشایی نماید.

احتمالاً گزینه‌های خط فرمان بیش از حد زیاد هستند! اگر یکی دو گزینه‌ی دیگر اضافه شود، همه‌ی آن‌ها را به صورت کامنت در etc/ethers/ قرار خواهم داد.

ابزار ipguard به عنوان یک ابزار کوچک و ساده نوشته شده است و هیچ برنامه‌ای برای پشتیبانی از پایگاه‌های داده خارجی مانند SQL/LDAP و غیره وجود ندارد. از اسکریپت‌ها استفاده کنید.

SeaD <sead at deep.perm.ru>