Wednesday, December 07, 2005

امنیت و لینوکس

هدف این مرجع سریع، فراهم آوردن زمینه‌هایی برای بهبود امنیت سیستم شما می‌باشد.


مقدمه

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

در دنیای همواره در تغییر ارتباطات، اتصالات اینترنتی کم‌هزینه و تولید پرسرعت نرم‌افزار، مقوله امنیت بیش از پیش، اهمیت پیدا نموده است و در حال حاضر، یکی از نیازهای اساسی است، زیرا محاسبات عمومی، ذاتاً از امنیت بالایی برخوردار نیستند. هنگامی‌که داده‌های شما در اینترنت از نقطه A به نقطه B، می‌رود، در بین راه ممکن است از چندین نقطه دیگر عبور کند که این عمل به دیگر کاربران امکان قطع کردن مسیر و حتی تغییر داده‌های شما می‌دهد. حتی کاربران دیگری نیز ممکن است از روی بدخواهی و عناد، داده‌های سیستمتان را علیرغم میل شما، بدون اطلاعتان، تغییر دهند. همچنین دسترسی بدون اجازه به سیستم شما، ممکن است توسط مهاجمان، که آنها را با نام ‘cracker’-ها می‌شناسیم، صورت گیرد. این افراد با استفاده از اطلاعات بعدی، جعل هویت نموده، اطلاعات شما را دزدیده و حتی ممکن است به شما امکان دسترسی به اطلاعات سیستم خودتان را ندهند.

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

کنترل دسترسی به فایلها و ویژگیهای آنها

نظارت بر دسترسی به فایلهای سیستم برای نگهداری تمامیت گروه‌ها و دسته‌ها مشکل است.

· سیستمتان را جهت شناسایی و تشخیص استفاده‌های غیر ضروری و بدون اجازه و امکانات دستورات setuid یا setgid بررسی کنید. برنامه‌های “Set-user-ID” به عنوان کاربر ریشه، بدون توجه به اینکه چه کسی آنها را اجرا می‌کند، اجرا می‌شوند و یکی از عوامل عمده سرریزهای بافر هستند. بسیاری از برنامه‌ها از نوع setuid و setgid هستند تا یک کاربر معمولی قادر به انجام عملیات باشد؛ در غیر این صورت به کاربر ریشه نیاز خواهد بود و اگر کاربرانتان نیازی به داشتن این دسترسیها نداشته باشند، این برنامه‌ها ممکن است حذف شوند. همه برنامه‌های setuid و getuid را روی سیستم میزبان پیدا نموده و همه دسترسیهای این برنامه‌ها را با دستور chmod تغییر داده یا حذف کنید:

root# find / -type f –perm +6000 –ls

59520 30 -rwsr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage

59560 16 -r-sr-sr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq

dave$ sudo /usr/sbin/lpc

root# chmod -s /usr/bin/chage /usr/bin/lpq

root# ls -l /usr/bin/lpq /usr/bin/chage

-rwxr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage

-r-xr-xr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq

· فایلهای قابل نوشتنی عمومی، به راحتی تغییر داده شده یا حذف می‌شوند. همه این فایلها را در سیستم خود پیدا کنید:

root# find / -perm -2 ! -type l -ls

در حالت معمول، فایلهای زیادی، شامل فایلهای شاخه /dev و /tmp، می‌توانند به طور عمومی قابل نوشتن باشند. کلیه فایلهایی که مالکی ندارند و به گروهی متعلق نیستند را پیدا نموده و شناسایی کنید. این فایلها می‌توانند نشانه دسترسی مهاجمی به سیستم شما باشند.

root# find / -nouser -o -nogroup

· با استفاده از دستورات lsattr و chattr، راهبران سیستم، می‌توانند ویژگیهای فایلها و شاخه‌ها را، شامل امکان کنترل حذف و دستکاری، تغییر دهند. این دو دستور، چیزی فراتر از آنچه که chmod دارد، فراهم می‌کنند. استفاده از ویژگی “append-only” و “immutable” می‌تواند در ممانعت از حذف فایلهای log، یا جای‌گیری اسبهای تروجان در بالای فایلهای باینری مؤثر باشد. دستور chattr برای اضافه و حذف ویژگیها به کار می‌‌رود و دستور lsattr برای فهرست کردن آنها.

در فایلهای log، تنها بوسیله پیوست کردن به آنها است که می‌توان از آنها محافظت نمود. یکبار که داده‌ای در آن نوشته شود، دیگر پاک نمی‌شود. بنابراین در حالیکه نیاز به تغییراتی برای اسکریپتهای متغیر log شما خواهد بود، این قابلیت محافظهای اضافی دیگری در برابر کراکرهایی که می‌خواهند آنرا پاک کنند، بوجود می‌آورد. هر بار که تغییر کند، آنها باید به حالت تغییرناپذیر (immutable) تغییر وضعیت دهند. فایلهای مناسب برای این اعمال تغییرات /bin/login، /bin/rpm، /etc/shadow می‌باشد و سایرین نیز نباید به طور مداوم آنها را تغییر دهند.

# chattr +i /bin/login

# chattr +a /var/log/messages

# lsattr /bin/login /var/log/messages

----i--- /bin/login

-----a-- /var/log/messages

· دلیلی وجود ندارد که کاربران بتوانند برنامه‌های setuid را از فهرست خانگی خود اجرا نمایند. از گزینه nosuid در /etc/fstab برای قسمتهایی که برای افرادی غیر از کاربر ریشه، قابل نوشتن می‌‌باشند، استفاده نمایید. همچنین ممکن است بخواهید از nodev و noexec در پارتیشن home کاربر و var، استفاده کنید، که از اجرای برنامه‌ها و ایجاد دستگاه‌های بلوکی یا کاراکتری، جلوگیری به عمل می‌آورد.

فرهنگ لغات فنی امنیت

· Buffer Overflow: این شرایط هنگامی رخ می‌دهد که کاربر یا پردازه‌ای بخواهد داده‌های بیشتری در بافر ذخیره یک برنامه، در حافظه، جای دهد و سپس بخواهد داده‌های واقعی برنامه را با دستورالعملهایی- که معمولاً توسط کاربر ریشه، پوسته‌ای روی سرور فراهم می‌آورد- بازنویسی نماید.

· Cryptography: علمی وابسته به ریاضیات که با تبدیل داده‌ها و انتقال آن- به گونه‌ای که مفهوم آن پیچیده و مبهم شود- سر و کار دارد. این داده‌های انتقال یافته از تغییرات و تبدیلات ناشناخته و یا استفاده غیر مجاز، مصون می‌مانند.

· Denial of Service: هنگامی رخ می‌دهد که یک فایل یا منبع توسط مهاجمانی مورد هدف قرار گیرد و مانع استفاده آن منبع توسط کاربران مجاز و قانونی‌اش شود. آنها تهدید می‌کنند که داده‌ها را در دسترس عموم قرار خواهند داد.

· IP Spoofing: حمله‌ای که در آن یک host را به host دیگری مبدل می‌کنند. از این حمله به این منظور استفاده می‌شود که مقصد داده‌ها را از یک میزبان به میزبان دیگر، ردیابی نمایند. از اینرو مهاجمان مانع رسیدن داده به مقصد واقعی‌اش می‌شوند. این حملات از نوع one-way است.

· Port Scanning: فرآیندی است که طی آن، پورتهای فعال روی یک سیستم، تعیین می‌گردند. این امکان، عموماً، یکی از عوامل آگاه‌کننده از وجود یک حمله می‌باشد.

· Packet Filtering: یکی از روشهای کم کردن ترافیک شبکه است که بین واسطهای فایروال، در سطح شبکه، حرکت می‌کند. سپس داده‌های شبکه طبق اطلاعات موجود در بسته داده‌ها تحلیل می‌شوند و طبق خط مشی امنیتی فایروال، دسترسی داده شده یا سلب می‌‌گردد.

· Proxy Gateway: به اینها مدخلها (دروازه‌ها)ی برنامه‌های کاربردی نیز اطلاق می‌‌شود که از طرف برنامه‌ای دیگر عمل می‌کنند. یک host با یک کارگزار پراکسی نصب شده، هم یک کارخواه (client) است و هم یک کارگزار و به عنوان یک دریچه بین مقصد نهایی و کارخواه عمل می‌کند. کارگزارهای پراکسی، عموماً، کوچک هستند، برنامه‌های نوشته‌شده‌ی تک-منظوره دقیقی‌اند که فقط خدمات مشخصی را از آن عبور می‌دهند. این قابلیت، معمولاً، با packet filter-ها ترکیب می‌شود.

· Set User-ID (setuid)/Set Group-ID (setgid): فایلهایی که هر کسی، خواه مالک آنها، خواه گروه‌های مربوطه، می‌تواند آنها را اجرا نماید. اینها فایلهایی هستند که غالبا توسط مهاجمین، مورد حمله قرار می‌گیرند. زیرا از این طریق می‌توانند به امتیازات کاربر ریشه دسترسی پیدا کنند.

· Trojan Horse: برنامه‌ای که خود را به جای یک برنامه بی‌خطر، جا می‌زند؛ در حالیکه واقعاً اینطور نیست. یک برنامه ممکن است توسط یک برنامه‌نویس بداندیش که ظاهراً، قصد انجام کار مفیدی دارد، با توابع مخفی آسیب‌رسان آلوده شود و از امتیازات کاربری برای اجرای آن بهره‌برداری کند.

· Vulnerebility: شرایطی که قابلیت به مخاطره انداختن امنیت سیستم را دارد. این شرایط مستقل از کامپیوتر، سطح ارتباط شبکه و سرعت پردازش رخ می‌دهد.

امنیت هسته

گزینه‌های زیادی برای پیکربندی هسته، به منظور بهبود امنیت سیستم، بوسیله شبه فایل سیستم /proc موجود می‌باشد. معدود فایلهایی در /proc/sys وجود دارند که به طور مستقیم با امنیت سیستم در ارتباطند. اگر شامل a 1 باشد، فعال و اگر a 0، غیر فعال خواهد بود. بسیاری از گزینه‌ها در /proc/sys/net/ipv4 در دسترس می‌باشند.

· icmp_echo_ignore_all: تمامی درخواستهای ICMP ECHO را نادیده می‌گیرد. فعال کردن این گزینه، مانع از پاسخگویی host، به درخواستهای ping خواهد شد.

· icmp_echo_ignore_broadcasts: درخواستهای ICMP echo را بوسیله یک آدرس مقصد broadcast/multicast نادیده می‌گیرد. شبکه شما ممکن است به عنوان وسیله‌ای برای ممانعت از حملات فراوان بسته‌های سرویس به دیگر میزبانها استفاده شود.

· ip_forward: این گزینه، IP بسته‌های ارسالی را بین واسطها، فعال یا غیر فعال می‌نماید. مقدار پیش‌فرض، به این بستگی دارد که یا کرنل یا host یا router، پیکربندی شوند.

· ip_masq_debug: اشکال‌زدایی تغییر و جعل شدن IP را فعال یا غیر فعال می‌کند.

· tcp_syncookies: از حملات SYN جلوگیری می‌کند. هنگامی که صف پس‌افت (backlog) SYN از سرریزهای یک سوکت رخ می‌دهد، syncookie-ها را می‌فرستد.

· rp_filter: تعیین می‌کند که آیا تایید آدرس منبع فعال است یا خیر. این گزینه را برای همه مسیریابها فعال کنید تا از حملات IP spoofing، علیه شبکه داخلی، جلوگیری شود.

· secure_redirects: این گزینه ICMP را جهت هدایت پیغامهایی که فقط برای مدخلهای فهرست شده در فهرست مدخل پیش‌فرض وجود دارد، بپذیرید.

· log_martians: بسته‌های با آدرسهای غیرممکن را به log هسته، گزارش می‌دهد.

· accept_source_route: تعیین می‌کند که آیا بسته‌های مسیر منبع ،پذیرفته یا رد شده‌اند. این ویژگی باید غیر فعال باشد، مگر اینکه دلایل خاصی فعال‌سازی آنرا ایجاب کند.

فایل /etc/sysctl.conf در لینوکس ردهت، به طور پیشفرض، شامل تنظیمات کمی می‌باشد و هنگام راه‌اندازی و آغاز به کار سیستم، پردازش می‌شود. برنامه /sbin/sysctl می‌تواند برای کنترل این پارامترها به کار رود. همچنین می‌توان مقادیر آنها را با استفاده از /bin/echo پیکربندی نمود. به عنوان مثال، برای غیرفعال کردن IP ارسالی، به عنوان کاربر ریشه، دستور زیر را اجرا نمایید:

echo “0” > /proc/sys/net/ipv4/ip_forward

این دستور، باید در فایل راه‌انداز سیستم یا /etc/sysct1.conf در ردهت، نوشته شود تا بعد از هر راه‌اندازی، رخ دهد. اطلاعات بیشتر در فایل proc.txt در شاخه Documentation هسته موجود می‌باشد.

نکات امنیتی عمومی:

· از AutoRPM در ردهت و apt-get در دبیان می‌توان به منظور دانلود و نصب بسته‌های دیگر روی سیستم استفاده نمود. هنگامی‌که از سرورهای تولید به‌روزرسانی استفاده می‌کنید، دقتهای لازمه را به عمل آورید.

· تغییر و تبدیلIP، یک جعبه لینوکسی، با چندین واسط را قادر می‌سازد تا به عنوان یک مدخل (دروازه) در شبکه‌های راه دور، برای host-های متصل به جعبه لینوکسی روی واسط شبکه داخلی، عمل نماید.

· بسته nmap را برای تعیین پتانسیل کانالهای ارتباطی، نصب کنید. nmap می‌تواند نگارش سیستم‌عامل راه دور را مشخص کند، پویشهای نهانی را با دستکاری ICMP، TCP و UDP انجام دهد و حتی قابلیت تعیین نام کاربری راه دوری را که در حال اجرای سرویسی می‌باشد، دارد. با دستوری مشابه زیر، آغاز کنید:

# nmap 192.168.1.1

· محافظ رمز عبور LILO برای کارگزارهای محیطهای عمومی می‌باشد تا هنگامیکه LILO، پارامترهای هسته خط فرمان را در زمان بالا آمدن سیستم، ارسال می‌کند، اجازه نیاز باشد. آرگومانهای password و restricted را به /etc/lilo.conf، اضافه نموده، سپس با اطمینان، /sbin/lilo را مجدداً اجرا کنید:

image = /boot/vmlinuz-2.2.17

label = Linux

read-only

restricted

password = your-password

· وصله هسته OpenWall، مجموعه کاربردی و مفیدی از بهبودهای امنیتی هسته است که کمک می‌کند تا از سرریزهای بافر جلوگیری به عمل آید، اطلاعات موجود در /proc را برای یک کاربر معمولی، محدود می‌کند و سایر تغییرات. برای این کار نیاز به کامپایل کرنل دارید.

· از درستی ساعت سیستم، اطمینان حاصل کنید. زمانهای نوشته شده در فایلهای log، باید درست باشد تا رخدادهای امنیتی، بتوانند با سیستمهای راه دور، مرتبط شوند. ضبط و بایگانیهای نادرست، باعث می‌شود که ساختن یک خط زمانی (خط عمر) غیر ممکن شود. در ایستگاه‌های کاری، کافی است که یک گزینه ورودی corntab، اضافه کنیم:

0-59/30 * * * * root /usr/sbin/ntpdate -su time.timehost.com

· ابزار سخت کردن لینوکس Bastille را نصب و اجرا کنید. Bastille یک دنباله از اسکریپتهای پوسته است که بسیاری از آسیبهایی را که در عملیات نصب لینوکس به طور پیش‌فرض، معمول و متداول هستند، حذف می‌کند. قابلیتها و ویژگیهای آن، شامل فیلتر کردن بسته‌های اولیه، غیرفعال کردن سرویسهای غیرضروری شبکه‌ای، نظارت بر دسترسی به فایلها و غیره می‌باشد.

· دستور sudo را به گونه‌ای پیکربندی نمایید که به جای استفاده از su، دستورهای مجاز و متداول از طرف یک کاربر معمولی نیز اجرا شوند. راهبر رمز عبور خود را برای اجرای دستورات خاص، دارد. فایل /etc/sudoers کاربرانی را کنترل می‌کند که برنامه‌هایی را اجرا می‌نمایند. برای اینکه به Dave، امکان دستکاری در چاپگر را روی magneto بدهیم باید:

Cmnd_Alias LPCMDS = /usr/sbin/lpc, /usr/bin/lprm dave magneto = LPCMDS

Dave دستور sudo را با فرمان تاییدشده، اجرا نموده و رمز عبور خود را با اعلانی که می‌گیرد، وارد می‌کند:

dave$ sudo /usr/sbin/lpc

Password:

lpc>

· رمز عبور مناسبی برای خود انتخاب کنید. شناسه‌های بلااستفاده را نیز، با استفاده از /usr/bin/passwd -l غیر فعال کنید. اگر توزیع شما این امکان را می‌دهد، در حین نصب، از رمز عبور MD5 استفاده کنید.

· فیلتر کردن بسته‌ها صرفاً، منحصر به firewall نیست. با استفاده از ipchains، می‌توانید محافظتهای زیادی از هر سیستم لینوکسی، در برابر تهدیدهای بیرونی (خارجی)، فراهم آورید. برای بلوکه کردن دسترسی به سرویس خاصی، حین برقراری ارتباطات بیرونی به شبکه محلی شما، می‌توانید دستور زیر را امتحان کنید:

# ipchains -I input -p TCP -s 192.168.1.11 telnet -j DENY -l

اگر قرار باشد ارتباطی خارجی به 192.168.1.11 برقرار شود، این دستور، مانع دسترسی به پورت telnet، روی سیستم شما می‌‌شود.

شناسایی حملات شبکه‌ای

دستگاه‌ها و ابزارهای شناسایی حملات در هر شبکه‌ای ضروری و مهم می‌باشند. اینترنت به طور دائم، در حال توسعه یافتن است ؛ از اینرو آسیب‌پذیریهای و بهره‌برداریهای جدید، نیز هر روزه پیدا می‌شوند. این ابزارها زمینه شناسایی و حضور یک مهاجم را فراهم آورده و آمادگی مقابله در برابر این حملات را به کاربران می‌دهد.

یکی از ابزار شناسایی حملات شبکه‌ای، با نام snort، تحلیلهای ترافیک بلادرنگ (real-time) را انجام داده و به دنبال رخدادهای تغییرشکل دهنده که قابلیت حملات شبکه‌ای را دارند، می‌باشد.

بر مبنای محتویات ترافیک شبکه، چه در سطح IP و چه در برنامه‌های کاربردی، اعلانی (اخطاری) تولید خواهد شد. به راحتی پیکربندی شده و از روشهای مرسوم، برای قواعد تولید و توسعه استفاده می‌کند، و زمان کمی نیز صرف نصب آن می‌شود. Snort، در حال حاضر قابلیت این را دارد که حدود 1100 نمونه از آسیب‌پذیریهای بالقوه را شناسایی کند. ویژگیهایی که این ابزار دارد به شرح زیر می‌باشد:

o شناسایی و اعلان بر مبنای الگوهای تطبیق کننده برای تهدیدهای شامل سرریز بافر، پویشهای مخفی پورت، حملات CGI، رسیدگیهای SMB و پرس و جوهای NetBIOS، NMAP و دیگر پویشگرهای پورت، آسیب‌پذیریهای سیستمی نهانی و معروف، DDoS Client-ها و غیره.

o می‌‌تواند در یک ایستگاه کاری موجود، برای نظارت روی یک ارتباط DSL خانگی، و یا روی یک سرور اختصاصی برای نظارت روی یک وب‌سایت حقوقی، به کار گرفته شود.

منابع و مآخذ امنیتی لینوکس

· فهرست آپاچی و محافظ رمز:

http://www.apacheweek.com/features/userauth

· Bastille Linuxپروژه :

http://www.bastille-linux.org/

· ساختن فایروالهای اینترنتی، ویرایش دوم-O’Reiily & Assoc, ISBN 1565928717
· پیمانه‌های بهبود امنیتCERT :

http://www.cert.org/security-improvement/

· مقدمه‌ای بر امنیت در لینوکس:

http://www.linux-mag.com/1999-10/security_01.html

· منابع شناسایی تهاجم لینوکس:

http://www.linuxsecurity.com/intrusion-detection

· John the Ripper Password Cracker:

http://www.openwall.com/john/

· مشاوره در زمینه امنیت متن‌باز و لینوکس:

http://www.linuxsecurity.com/advisories

· منابع مرجع در زمینه امنیت لینوکس:

http://www.linuxsecurity.com/docs

· فهرستهای بحث و بررسی امنیتی لینوکس:

http://www.linuxsecurity.com/mailing-lists.html

· نکته روز لینوکس:

http://www.linuxsecurity.com/tips

· هفته‌نامه امنیت:

http://www.linuxsecurity.com/newsletter.html

· ابزار دسترسی راه دور امن OpenSSH:

http://www.openssh.com/

· پروژه امنیتیOpenWall :

http://www.openwall.com/

· اطلاعاتNetwork Time Protocol :

http://www.ntp.org/

· پویشگر پورتnmap :

http://www.insecure.org/nmap/

· امنیت اینترنت و یونیکس کاربردی، ویرایش دوم.O’Reilly & Assoc, ISBN 1565921488
· ابزار انتقال فایل افزایشیrsync :

http://rsync.samba.org/

· FAQ در مورد SSH:

http://www.employees.org/~satch/ssh/faq/

· سایت کتاب راهنمای امنیت:

http://www.linuxsecurity.com/docs/rfcs/rfc2196.txt

· ابزار کنترل دسترسیsudo root :

http://www.gratisoft.us/sudo/

· سیستم شناسایی حملات شبکه Snort :

http://www.snort.org/

· ابزار جامعیت فایل Tripwire :

http://www.tripwiresecurity.com/

· کار با Snort:

http://www.linuxsecurity.com/using-snort.html

غیر فعال ساختن سرویسهای غیرضروری

غیرفعال کردن برنامه‌ها و سرویسهای host شما، اغلب مؤثرترین راه محدود کردن تهدیدهای ناشی از یک host راه دور می‌باشد. از ابزار مدیریت بسته‌های توزیعهایتان برای پویش فهرستی از بسته‌های نصب شده استفاده کنید و آنها را که غیر ضروریند، حذف نمایید.

· بسیاری از سرویسهای اجرایی inetd، برنامه‌های پرکاربردی نیستند و به ندرت لازم می‌آیند. فایل /etc/inetd.conf به این منظور استفاده می‌شود که تعیین کند کدام سرویسها، پیشنهاد می‌شوند. برای غیر فعال کردن همه سرویسها، می‌توانید از علامت #، در ابتدای خط، به عنوان نشانی برای یک خط توضیحی، استفاده کنید.

· فهرستهای /etc/rc*.d یا /etc/rc.d/rc* شامل اسکریپتهای پوسته هستند که اجرای سرویسهای سیستم و شبکه را در طول سطوح اجرایی، کنترل می‌کنند. آن دسته از سرویسهایی را که لازم ندارید، تغییر نام داده، یا غیر فعال نموده و یا کلیه بسته نرم‌افزاری آن را حذف نمایید. کاربران ردهت می‌توانند از /sbin/chkconfig –list به منظور گرفتن لیستی از سرویسهایی که در سطوح اجرایی، اجرا می‌شوند، استفاده کرد، و /sbin/chkconfig –del را نیز به منظور غیر فعال ساختن یک سرویس، بکار برد.

اگر عملکرد سرویسی را نمی‌دانید، تا فهمیدن کار آن، می‌توانید سرویس مورد نظر را غیرفعال نمایید. از netstat و ps برای تایید سرویسهایی که پس از راه‌اندازی مجدد سیستم، آغاز به کار نکرده‌اند، استفاده می‌شود. bin/netstat –a –p –inet/، برای تعیین اینکه کدام یک از سرویسها فعالند و همچنین شناسه آن فرآیند، به کار می‌رود. از یک پویشگر پورت نیز باید به منظور دیدن نمایی از-hostهای راه دور، استفاده کرد.


چک کردن درستی بسته‌های نرم‌افزاری

دستور md5sum برای محاسبه یک finger-print، 128 بیتی استفاده می‌شود که شدیداً به محتویات فایلی که به کار گرفته شده، بستگی دارد. این دستور همچنین برای مقایسه در برابر مجموع از قبل تولیدشده‌ای به کار می‌رود تا تعیین کند که آیا فایل تغییری نموده یا خیر. معمولاً برای اطمینان از تمامیت و درستی بسته‌های به‌روز شده، نیز که توسط یه فروشنده خاص، توزیع می‌گردد، استفاده می‌شود.

# md5sum package-name

995d4f40cda13eacd2beaf35c1c4d5c2 package-name

رشته اعداد، برای مقایسه در مقابل MD5 checksum، منتشر شده توسط تولیدکننده بسته، می‌تواند به کار رود. این رشته تمامیت بسته نرم‌افزاری را قبل از نصب آن، با بلاتغییر نمودن آن، تضمین می‌کند.

نصب و پیکربندی OpenSSH

OpenSSH جایگزینی برای سرویسهای telnet و ftp است که استراق سمع و ربودن ارتباط را نیز حذف می‌نماید و همه ارتباطات بین میزبانها را رمزگذاری می‌کند.

· بسته نرم‌افزاریOpenSSH و OpenSSL را نصب کنید:

openssh-.rpm

openssh-.rpm

openssh-.rpm

openssh-.rpm

· زوج کلیدهای خصوصی و عمومی را تولید کنید:

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

orion$ ssh-keygen

Generating RSA keys: ...ooooooO....ooooooO

Key generation complete.

Enter file in which to save the key (/home/dave/.ssh/identity):

Created directory '/home/dave/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/dave/.ssh/identity.

Your public key has been saved in /home/dave/.ssh/identity.pub.

The key fingerprint is:

ac:42:11:c8:0d:b6:7e:b4:06:6a:a3:a7:e8:2c:b0:12 dave@orion

· کلید عمومی را برای میزبان راه دور کپی نمایید:

host2$ mkdir -m 700 ~dave/.ssh

host2$ cp /mnt/floppy/identity.pub ~dave/.ssh/authorized_keys

· به سیستم میزبان راه دور وارد شوید:

کلاینت SSH (/usr/bin/ssh)، جایگزین drop-in-ی برای rlogin و rsh می‌باشد و می‌توان از آن برای ورود ایمن به یک میزبان راه دور، استفاده نمود:

orion$ ssh host2

Enter passphrase for RSA key 'dave@orion':

Last login: Sat Aug 15 17:13:01 2000 from orion

No mail.

host2$

· فایلها را در میزبان راه دور، کپی کنید:

بسته نرم‌افزاری OpenSSH، همچنین شامل scp، است که جایگزینی امن و بهبود یافته برای rcp می‌باشد. این قابلیت به شما امکان کپی ایمن فایلها را در سرتاسر شبکه، می‌دهد.

orion$ scp /tmp/file.tar.gz host2:/tmp

Enter passphrase for RSA key 'dave@orion:

file.tar.gz 100% |***************************| 98304 00:00

همچنین با SSH، امکان کپسوله کردن پروتکلهای ناامن پیش‌پا‌افتاده مثل IMAP و POP، برای ممانعت از انتقال رمزهای عبور به سرور ایمیل شما، وجود دارد. به علاوه، ابزار کمکی انتقال فایل rsync، می‌تواند از SSH، به منظور همزمان کردن ایمن (سنکرون) دو میزبان یا پشتیبان گرفتن از داده‌ها در یک log-سرور استفاده کند. SSH، حتی می‌تواند برای ارتباط امن دو زیرشبکه در اینترنت، با ایجاد یک VPN، به کار رود.

امنیت آپاچی

· آپاچی را به منظور پیروی کردن از فقط واسط محلی، محدود کرده و فایل etc/httpd/conf/httpd.conf /را برای خواندن پیکربندی نمایید:

Listen 127.0.0.1:80

· دستورهای زیر را برای غیرفعال کردن دسترسی پیش‌فرض به کلیه فایل سیستم، انجام دهید، مگر اینکه به طور صریح، اختیاری به فردی داده شده باشد. در صورتیکه فایل index.html وجود نداشته باشد و شامل server-side نباشد، این دستور، انتشار ایندکسها را غیر فعال می‌کند. غیرفعال کردن symlink-ها ممکن است روی کارایی سایتهای بزرگ تاثیراتی بگذارد.

Options None

AllowOverride None

Order deny,allow

Deny from all

· دستورات زیر را برای کنترل دسترسی به سرور، از آدرسهای محدود در /etc/httpd/conf/access.conf به منظور خواندن، دنبال کنید:

# Deny all accesses by default

Order deny,allow

# Allow access to local machine

Allow from 127.0.0.1

# Allow access to entire local network

Allow from 192.168.1.

# Allow access to single remote host

Allow from 192.168.5.3

# Deny from everyone else

Deny from all

· دستورات زیر را دنبال کنید تا داشتن اختیارات رمز عبور را به هنگام دسترسی به فهرست معینی در /etc/httpd/conf/access.conf برای افراد، مستلزم کنید:

Order Deny,Allow

Deny from All

Allow from 192.168.1.11

AuthName “Private Information”

AuthType Basic

AuthUserFile /etc/httpd/conf/private-users

AuthGroupFile /etc/httpd/conf/private-groups

require group

فایل private-groups را با داشتن قالب زیر ایجاد کنید:

group-name: user1 user2 user...

مدخل رمز عبور را برای کاربران موجود در لیست فوق ایجاد نمایید:

# htpasswd -cm /etc/httpd/conf/private-users user1

New password:

Re-type new password:

Adding password for user user1

حال با اطمینان، آپاچی را دوباره راه‌اندازی نموده و آنرا امتحان کنید. گزینه –c را از htpasswd، بعد از اضافه شدن اولین کاربر، حذف کنید. مطمئن شوید که فایل رمز عبوری که ایجاد کرده‌اید، برای پیشگیری از دانلود فایل، در DocumentRoot واقع نشده است.

پیکربندی TCP Wrapper-ها

به طور مکرر، از سرویسهایی که در /etc/inetd.conf لیست شده‌اند، برای کنترل دسترسیها و نظارت بر آنها استفاده کنید. سرویس in.ftpd، ممکن است با دستور زیر، غیرفعال شده باشد:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

قبل از اینکه دائمون in.telnetd فعال شود، ابتدا، tcpd، تعیین می‌کند که آیا سورس، یک میزبان مجاز می‌باشد یا خیر؟ هر گونه تلاشی برای برقراری ارتباط، به syslogd فرستاده می‌شود. همه سرویسها باید طبق پیش‌فرض که در /etc/hosts.deny است، با دستور زیر، غیر فعال شوند:

ALL: ALL

برای ارسال یک ایمیل به راهبر و اعلان عدم برقراری ارتباط دستور زیر باید اجرا شود:

ALL: ALL: /bin/mail \

-s “%s connection attempt from %c” admin@mydom.com

سرویسهای تعیین شده در /etc/hosts.allow را با استفاده از نام آنها فعال کنید:

sshd: magneto.mydom.com, juggernaut.mydom.com

in.ftpd: 192.168.1.

انتهای دوره، نشان می‌دهد که به سرتاسر شبکه باید اختیارات مورد نیاز را داد. از tcpdchk برای تغییر فایلهای دسترسی‌تان استفاده کنید. یک مدخل syslog برای تلاشهای ناموفق ایجاد خواهد شد. کنترل دسترسی به ترتیب زیر، انجام می‌شود:

· دسترسی هنگامی داده می‌شود که یک جفت دائمون/کلاینت با یک مدخل در فایل /etc/hosts/allow مطابقت داشته باشد.

· در صورتی که شرط فوق برقرار نباشد، هنگامی که یک جفت دائمون/کلاینت با مدخلی در فایل /etc/hosts.deny تطبیق داشته باشد، دسترسی غیرمجاز اعلام خواهد شد.

· در هر حالت دیگری، دسترسی مجاز اعلام خواهد شد.

با یک کنترل دسترسی که موجود نیست، همچون یک فایل خالی برخورد می‌شود. بنابراین، اگر هیچ فایل کنترلی حاضر نباشد، این کنترل غیرفعال خواهد شد.

استفاده از RPM و dpkg

برنامه /bin/rpm در ردهت و مشابه آن، و نیز /usr/bin/dpkg در دبیان و سایر مشتقاتش، برای کنترل مدیریت بسته‌های نرم‌افزاری استفاده می‌شوند.

حذف یک بسته نرم‌افزاری:

# rpm -e

# dpkg -r

فهرست کردن کلیه محتویات یک بسته نرم‌افزاری:

# rpm -qvl

# dpkg -c

فهرست کردن بسته‌های نرم‌افزاری حاوی هر اطلاعی:

# rpm -qvia

# dpkg -l

فهرست کردن محتویات یک بسته:

# rpm -qvpl

# dpkg -c

چاپ اطلاعات در مورد یک بسته:

# rpm -qpi

# dpkg -I

تغییر ویژگیها و مشخصات یک بسته نرم‌افزاری (چک کردن تمامیت اولیه):

# rpm -Va

# debsums -a

تعیین اینکه یک فایل به کدام بسته تعلق دارد:

# rpm -qf

# dpkg -S

نصب بسته نرم‌افزاری جدید:

# rpm -Uvh

# dpkg -i

پیکربندی Syslog

سرویس syslogd مسوولیت ارائه گزارش در مورد اطلاعات تولید شده توسط فرایند‌های سیستم می‌باشد. اطلاعات تولید شده توسط کرنل نیز توسط سرویس klogd گزارش می‌شوند. گزارشهای سیستمی، نشانه‌های اولیه از مشکلات پنهانی و بالقوه سیستم را فراهم می‌آورند.

· تنظیمات پیش‌فرض /etc/syslog.conf را برای ارسال اطلاعات گزارشی برای فایلهای معین، به منظور تحلیل ساده‌تر، را انجام دهید.

# Monitor authentication attempts

auth.*;authpriv.* /var/log/authlog

# Monitor all kernel messages

kern.* /var/log/kernlog

# Monitor all warning and error messages

*.warn;*.err /var/log/syslog

# Send a copy to remote loghost. Configure syslogd init

# script to run with -r -s domain.com options o­n log

# server. Ensure a high level of security o­n the log

# server!

*.info @loghost

auth.*;authpriv.* @loghost

· دسترسی به دایرکتوری log و فایلهای syslog را برای کاربران معمولی، با دستورات زیر، محدود نمایید:

# chmod 751 /var/log /etc/logrotate.d

# chmod 640 /etc/syslog.conf /etc/logrotate.conf

Your public key has been saved in /home/dave/.ssh/identity.pub.

# chmod 640 /var/log/*log

امنیت DNS

· انتقالهای دامنه‌ای صرفاً باید توسط سرورهای master-name مجوز بگیرند تا اطلاعات دامنه‌ای را در سرورهای slave به‌‌روز نمایند. کوتاهی در انجام عملیات، ممکن است منجر به این شود که شماری از IP-ها و نام میزبانها، برای کاربران غیرمجاز آشکار شود. پرس و جوها را فقط به دامنه‌های عمومی محدود کنید.

// Allow transfer o­nly to our slave name server. Allow queries

// o­nly by hosts in the 192.168.1.0 network.

zone “mydomain.com” {

type master; file “master/allow-query { 192.168.1.0/24; };

db.mydomain.com”;

allow-transfer { 192.168.1.6; };

};

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

// Disable the ability to determine the version of BIND running

zone “bind” chaos {

type master;

file “master/bind”;

allow-query { localhost; };

};

بعد از آن فایل ./master/binf باید شامل:

$TTL 1d

@ CHAOS SOA localhost. root.localhost. (

1 ; serial

3H ; refresh

15M ; retry

1W ; expire

1D ) ; minimum

NS localhost.

· واسطهایی که namedاجرا می‌کند، می‌توانند افشای اطلاعات را صرفاً به شبکه‌های ضروری محدود بنمایند.

listen-on { 192.168.1.1; };

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

acl “internal” {

{ 192.168.1.0/24; 192.168.2.11; };

};

این دستور، می‌تواند در عبارات “zone” یا عبارات “options” اصلی، به کار رود:

zone “inside.mynet.com” {

type master;

file “master/inside.mynet.com”;

allow-query { “internal”; };

};

· BIND را برای اجرا، از جانب یک کاربر معمولی، پیکربندی نمایید. به محض اینکه BIND، آغاز به کار کند، امکان واگذاری امتیازاتش را دارد و به عنوان یک کاربر با تواناییهای محدود، به جای کاربر ریشه اجرا می‌شود.

# useradd -M -r -d /var/named -s /bin/false named

# groupadd -r named

این شناسه، نباید به هیچ منظوری مگر اجرای name server به کار رود. مطمئن شوید که فایلهای zone، توسط کاربر named قابل خواندن هستند. بعد از آن، لازم است که پیش‌فرض اسکریپت named init را، که معمولاً در /etc/rc.d/init.d/named در ردهت یا /etc/init.d/named در دبیان پیدا می‌شود، تغییر دهید.

/usr/sbin/named -u named -g named


1 Comments:

At 10:08 AM, Anonymous Anonymous said...

Kidorable Winter season [URL=http://www.northfacetriclimate.org/#990]north face outlet[/URL] can be found in an awesome array of graphics and colour. These are greatest for protection from your rain and ideal with keeping children warm.The opposite incredible type of children's wintertime [URL=http://www.northfacetriclimate.org/#990]north face outlet[/URL] is the North Cope with Ethan Pond Jacket.

 

Post a Comment

<< Home

Web Counter
Hit Counter
web counter