engeneer_19
19th September 2009, 04:46 PM
● مقدمه
کرنل، هستهی سیستم است، دسترسی به درایوهای سختافزاری، مکانیزمهای امنیتی، شبکه و خیلی چیزهای دیگر را نیز مدیریت میکند.
علاوه بر همهی اینها ما مشکلاتی مثل باگهای موجود در پنتیوم F۰۰F داریم، و اشکالات به پروتکل TCP-IP منتقل خواهند شد.
نگارشهای کرنل به صورت X.Y.Z نامگذاری میشوند. Z، شمارههای تجدیدنظرهای فرعی است، Y، نشان میدهد که آیا کرنل آزمایشی است (شماره فرد)، یا به مرحله تولید و محصول رسیده است (شماره زوج)، و X، تجدیدنظرهای اصلی را نشان میدهد.
اکیداً توصیه شده است که از کرنلهای ۲.۲.x و بالاتر استفاده شود. سری ۲.۲.x نسبت به ۲.۰.x پیشرفتها و بهبودهای قابل ملاحظهای پیدا کرده است.
استفاده از کرنل ۲.۲.x همچنین امکان دسترسی به ویژگیهای جدیدتر، مثل ipchains (به جای ipfwadm) و دیگر قابلیتهای امنیتی پیشرفته را میدهد.
سری ۲.۰.x از ژوئن ۱۹۹۹ متوقف شده است. برای دریافت آخرین اخبار و پیشرفتها در مورد کرنل، دستور زیر را اجرا کنید:
[seifried@mail kernel-patches]$ finger @linux.kernel.org
[linux.kernel.org]
The latest stable version of the Linux kernel is: ۲.۲.۱۳
The latest beta version of the Linux kernel is: ۲.۳.۲۹
The latest prepatch (alpha) version *appears* to be: ۲.۳.۳۰-۳
● ارتقاء کرنل و کامپایل آن
ارتقاء کرنل، عبارت است از: دریافت یک کرنل جدید به همراه ماژولها، ویرایش /etc/lilo.conf و اجرای مجدد LILO برای نوشتن یک MBR جدید. کرنل معمولاً در شاخه /boot و ماژولها نیز در /lib/modules/kernel.version.number/ جای خواهند گرفت.
دریافت کرنل جدید، و ماژولها به دو راه انجام میگیرد: با داونلود پکیج کرنل مربوطه و نصب آن، یا با داونلود کد منبع از آدرس ftp://ftp.kernel.org/ و کامپایل کردن آن.
● کامپایل کردن و نصب کرنل
cd /usr/src
یک symlink بنام “linux‿- که به دایرکتوری حاوی کرنل جاری اشاره میکند- در دایرکتوری فوق باید وجود داشته باشد، آن را حذف نمایید؛ اگر احیاناً نبود، مشکلی وجود ندارد.
ممکن است بخواهید با دستور “mv‿، دایرکتوری لینوکس را به /usr/src/linux-kernel.version.number منتقل کرده، لینکی اشارهکننده به /usr/src/linux در آن ایجاد نمایید.
کد منبع را با استفاده از Tar و gzip باز کنید، حال شما یک /usr/src/linux دارید که در حدود ۵۰ مگابایت کد منبع در آن وجود دارد. مرحله بعدی، ایجاد پیکربندی کرنل لینوکس میباشد. (/usr/src/linux.config)، این امر با استفاده از دستورات “make config‿، “make menuconfig‿ یا “make xconfig" انجام خواهد شد.
این مرحله به طور قابل ملاحظهای دشوار است و گزینههای زیادی برای انتخاب وجود دارد که به دو طبقه اصلی، تقسیم شدهاند: پشتیبانی سختافزار و پشتیبانی خدمات.
برای پشتیبانی سختافزار لیستی از سختافزارهایی که روی این کرنل اجرا خواهند شد را تهیه کنید
( به عنوان نمونه: P۱۶۶, Adaptec ۲۹۴۰ SCSI Controller, NE۲۰۰۰ Ethernet card, etc.) و گزینههای مورد نظر را فعال نمایید. برای پشتیبانی خدمات، باید سیستم فایلها را معین کنید (fat، ext۲، minix، و غیره).
حال که کار پیکربندی کرنل به اتمام رسید، یابد آنرا کامپایل کنید:
make dep #(makes dependencies)
make clean #(cleans out previous cruft)
make bzImage #(make zImage pukes if the kernel is to big, and ۲.۲.x kernels tend to be pretty big)
make modules #(creates all the modules you specified)
make modules_install #(installs the modules to /lib/modules/kernel.version.number/)
سپس باید /usr/src/linux/arch/i۳۸۶/boot/bzImage یا (zImage) را در /boot/vmlinuz-kernel.version.number کپی نمایید. آنگاه، /etc/lilo.conf را ویرایش نمایید
و یک ورودی جدید برای کرنل جدید به آن اضافه کرده، آنرا در ایمنترین حالت، پیشفرضimage، تنظیم کنید.
(با استفاده از دستور defult=X، در غیر این صورت، اولین کرنل موجود در لیست، بوت خواهد شد.
اگر با مشکل مواجه شد، میتوانید دوباره بوت کنید و به کرنل در حال کار قبلی برگردید.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=۵۰
default=linux
image=/boot/vmlinuz-۲.۲.۹
label=linux
root=/dev/hda۱
read-only
image=/boot/vmlinuz-۲.۲.۵
label=linuxold
root=/dev/hda۱
read-only
حال که ویرایش /etc/lilo.conf را تمام کردهاید، باید /sbin/lili را جهت بازنویسی MBR، اجرا کنید. هنگامیکه LILO اجرا میشود، خروجی زیر را دارید:
Added linux *
Added linuxold
کلیه image-هایی که در دادههای موجود در MBR لیست شدهاند را- با علامت * که نشاندهنده پیشفرض است- برمیگرداند.
● نگارشهای کرنل
در حال حاضر نگارشهای پایدار کرنل، سریهای ۲.۲.x، و نگارشهای در حال تولید، سریهای ۲.۳.x میباشند. سریهای ۲.۱.x، به دلیل اشکالات زیاد و ناپایداری، توصیه نمیشوند.
سری ۲.۰.x از کرنلها، خیلی قدیمی و فاقد برخی قابلیتها میباشد، متأسفانه، ارتقاء از ۲.۰.x به ۲.۲.x گام نسبتاً بزرگی است.
پکیجهای نرمافزاری زیادی باید بروز شوند، همچنین کتابخانهها، ماژولها و ... .
علاوه بر حفظ کرنل قدیمی در حال کار، باید یک ورودی به فایل lilo.conf، به عنوان “linuxold‿ یا چیزی مشابه این، اضافه شود.
انتظار نداشته باشید که سریهای ۲.۲.x عاری از اشکال و خطا باشد؛ ۲.۲.۹ شامل رخنههایی هست که آنرا منسوخ خواهد ساخت.
به هر حال،سطوح مختلفی از patch-های کرنل، موجود میباشد که امنیت سیستم لینوکس را بالا میبرد؛ برخی از آنها از موارد سرریز بافر جلوگیری میکنند و برخی دیگر، crypto-های قوی برای سیستم فراهم میکنند
▪ Patch-های کرنل
Patch-های کرنل متنوعی وجود دارد که رابطه مستقیمی با امنیت دارند.
▪ Patch کرنل لینوکس امن
این patch تعداد زیادی از مشکلات را حل میکند و سطح امنیتی دیگری برای سیستم فراهم میآورد. این patch برای سریهای کرنل ۲.۰ و ۲.۲ در دسترس میباشد.
▪ Patch کرنل بینالمللی
این patch (که اندازهی آن بیشتر از یک مگابایت است) حجم زیادی crypto-ی قوی و قدرتمند و آیتمهای مربوطه اضافه میکند. این patch چندین الگوریتم رمزگشایی دارد که AES کاندید آن بود.
▪ LIDS (Linux Intrusion Detection System Patch)
این patch برخی قابلیتهای جالب و آشکارکنندههایی برای کشف حملات دارد. میتوانید file mounts، firewall، و گزینههای متنوع و جالب دیگری را که موجودند، “lock‿ کنید.
▪ RSBAC
Rule Set Based Access Control یک مجموعه جامع و کامل از patch-ها و ابزارهایی برای کنترل جنبههای مختلف سیستم است.
▪ LoMAC
LOMAC (Low Water-Mark Mandatory Access Control for Linux) مجموعهای از patch-ها کرنل برای افزایش امنیت سیستم لینوکس میباشد.
▪ Audited
Audited به شما امکان استفاده از تسهیلات loging را میدهد. میتوانید پیغامهای mail، رخدادهای سیستم و آیتمهای نرمالی که syslog پوشش میدهد، را log کنید.
▪ Fork Bomb Defuser
یک ماژول کرنل قابل لود شدن که به شما امکان میدهد تا حداکثر تعداد فرایند به ازای هر کاربر و حداکثر تعداد fork-ها را کنترل کنید؛ این ماژول برای سرورهایی که کاربران غیر قابل اطمینان دارد بسیار مفید میباشد.
▪ اشکالزدایی کرنل لینوکس
ـ KDB v۰.۶ (اشکالزدای کرنل Built-in)
یک اشکال زدای کرنل SGI، در این اینجا موجود میباشد.
ـ KGDB (اشکالزدای کرنل راه دور)
SGI ابزاری نوشته است که امکان اشکالزدایی کرنل را، از راه دور، میدهد.
طرح ملی نرمافزارهای آزاد
@};-
کرنل، هستهی سیستم است، دسترسی به درایوهای سختافزاری، مکانیزمهای امنیتی، شبکه و خیلی چیزهای دیگر را نیز مدیریت میکند.
علاوه بر همهی اینها ما مشکلاتی مثل باگهای موجود در پنتیوم F۰۰F داریم، و اشکالات به پروتکل TCP-IP منتقل خواهند شد.
نگارشهای کرنل به صورت X.Y.Z نامگذاری میشوند. Z، شمارههای تجدیدنظرهای فرعی است، Y، نشان میدهد که آیا کرنل آزمایشی است (شماره فرد)، یا به مرحله تولید و محصول رسیده است (شماره زوج)، و X، تجدیدنظرهای اصلی را نشان میدهد.
اکیداً توصیه شده است که از کرنلهای ۲.۲.x و بالاتر استفاده شود. سری ۲.۲.x نسبت به ۲.۰.x پیشرفتها و بهبودهای قابل ملاحظهای پیدا کرده است.
استفاده از کرنل ۲.۲.x همچنین امکان دسترسی به ویژگیهای جدیدتر، مثل ipchains (به جای ipfwadm) و دیگر قابلیتهای امنیتی پیشرفته را میدهد.
سری ۲.۰.x از ژوئن ۱۹۹۹ متوقف شده است. برای دریافت آخرین اخبار و پیشرفتها در مورد کرنل، دستور زیر را اجرا کنید:
[seifried@mail kernel-patches]$ finger @linux.kernel.org
[linux.kernel.org]
The latest stable version of the Linux kernel is: ۲.۲.۱۳
The latest beta version of the Linux kernel is: ۲.۳.۲۹
The latest prepatch (alpha) version *appears* to be: ۲.۳.۳۰-۳
● ارتقاء کرنل و کامپایل آن
ارتقاء کرنل، عبارت است از: دریافت یک کرنل جدید به همراه ماژولها، ویرایش /etc/lilo.conf و اجرای مجدد LILO برای نوشتن یک MBR جدید. کرنل معمولاً در شاخه /boot و ماژولها نیز در /lib/modules/kernel.version.number/ جای خواهند گرفت.
دریافت کرنل جدید، و ماژولها به دو راه انجام میگیرد: با داونلود پکیج کرنل مربوطه و نصب آن، یا با داونلود کد منبع از آدرس ftp://ftp.kernel.org/ و کامپایل کردن آن.
● کامپایل کردن و نصب کرنل
cd /usr/src
یک symlink بنام “linux‿- که به دایرکتوری حاوی کرنل جاری اشاره میکند- در دایرکتوری فوق باید وجود داشته باشد، آن را حذف نمایید؛ اگر احیاناً نبود، مشکلی وجود ندارد.
ممکن است بخواهید با دستور “mv‿، دایرکتوری لینوکس را به /usr/src/linux-kernel.version.number منتقل کرده، لینکی اشارهکننده به /usr/src/linux در آن ایجاد نمایید.
کد منبع را با استفاده از Tar و gzip باز کنید، حال شما یک /usr/src/linux دارید که در حدود ۵۰ مگابایت کد منبع در آن وجود دارد. مرحله بعدی، ایجاد پیکربندی کرنل لینوکس میباشد. (/usr/src/linux.config)، این امر با استفاده از دستورات “make config‿، “make menuconfig‿ یا “make xconfig" انجام خواهد شد.
این مرحله به طور قابل ملاحظهای دشوار است و گزینههای زیادی برای انتخاب وجود دارد که به دو طبقه اصلی، تقسیم شدهاند: پشتیبانی سختافزار و پشتیبانی خدمات.
برای پشتیبانی سختافزار لیستی از سختافزارهایی که روی این کرنل اجرا خواهند شد را تهیه کنید
( به عنوان نمونه: P۱۶۶, Adaptec ۲۹۴۰ SCSI Controller, NE۲۰۰۰ Ethernet card, etc.) و گزینههای مورد نظر را فعال نمایید. برای پشتیبانی خدمات، باید سیستم فایلها را معین کنید (fat، ext۲، minix، و غیره).
حال که کار پیکربندی کرنل به اتمام رسید، یابد آنرا کامپایل کنید:
make dep #(makes dependencies)
make clean #(cleans out previous cruft)
make bzImage #(make zImage pukes if the kernel is to big, and ۲.۲.x kernels tend to be pretty big)
make modules #(creates all the modules you specified)
make modules_install #(installs the modules to /lib/modules/kernel.version.number/)
سپس باید /usr/src/linux/arch/i۳۸۶/boot/bzImage یا (zImage) را در /boot/vmlinuz-kernel.version.number کپی نمایید. آنگاه، /etc/lilo.conf را ویرایش نمایید
و یک ورودی جدید برای کرنل جدید به آن اضافه کرده، آنرا در ایمنترین حالت، پیشفرضimage، تنظیم کنید.
(با استفاده از دستور defult=X، در غیر این صورت، اولین کرنل موجود در لیست، بوت خواهد شد.
اگر با مشکل مواجه شد، میتوانید دوباره بوت کنید و به کرنل در حال کار قبلی برگردید.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=۵۰
default=linux
image=/boot/vmlinuz-۲.۲.۹
label=linux
root=/dev/hda۱
read-only
image=/boot/vmlinuz-۲.۲.۵
label=linuxold
root=/dev/hda۱
read-only
حال که ویرایش /etc/lilo.conf را تمام کردهاید، باید /sbin/lili را جهت بازنویسی MBR، اجرا کنید. هنگامیکه LILO اجرا میشود، خروجی زیر را دارید:
Added linux *
Added linuxold
کلیه image-هایی که در دادههای موجود در MBR لیست شدهاند را- با علامت * که نشاندهنده پیشفرض است- برمیگرداند.
● نگارشهای کرنل
در حال حاضر نگارشهای پایدار کرنل، سریهای ۲.۲.x، و نگارشهای در حال تولید، سریهای ۲.۳.x میباشند. سریهای ۲.۱.x، به دلیل اشکالات زیاد و ناپایداری، توصیه نمیشوند.
سری ۲.۰.x از کرنلها، خیلی قدیمی و فاقد برخی قابلیتها میباشد، متأسفانه، ارتقاء از ۲.۰.x به ۲.۲.x گام نسبتاً بزرگی است.
پکیجهای نرمافزاری زیادی باید بروز شوند، همچنین کتابخانهها، ماژولها و ... .
علاوه بر حفظ کرنل قدیمی در حال کار، باید یک ورودی به فایل lilo.conf، به عنوان “linuxold‿ یا چیزی مشابه این، اضافه شود.
انتظار نداشته باشید که سریهای ۲.۲.x عاری از اشکال و خطا باشد؛ ۲.۲.۹ شامل رخنههایی هست که آنرا منسوخ خواهد ساخت.
به هر حال،سطوح مختلفی از patch-های کرنل، موجود میباشد که امنیت سیستم لینوکس را بالا میبرد؛ برخی از آنها از موارد سرریز بافر جلوگیری میکنند و برخی دیگر، crypto-های قوی برای سیستم فراهم میکنند
▪ Patch-های کرنل
Patch-های کرنل متنوعی وجود دارد که رابطه مستقیمی با امنیت دارند.
▪ Patch کرنل لینوکس امن
این patch تعداد زیادی از مشکلات را حل میکند و سطح امنیتی دیگری برای سیستم فراهم میآورد. این patch برای سریهای کرنل ۲.۰ و ۲.۲ در دسترس میباشد.
▪ Patch کرنل بینالمللی
این patch (که اندازهی آن بیشتر از یک مگابایت است) حجم زیادی crypto-ی قوی و قدرتمند و آیتمهای مربوطه اضافه میکند. این patch چندین الگوریتم رمزگشایی دارد که AES کاندید آن بود.
▪ LIDS (Linux Intrusion Detection System Patch)
این patch برخی قابلیتهای جالب و آشکارکنندههایی برای کشف حملات دارد. میتوانید file mounts، firewall، و گزینههای متنوع و جالب دیگری را که موجودند، “lock‿ کنید.
▪ RSBAC
Rule Set Based Access Control یک مجموعه جامع و کامل از patch-ها و ابزارهایی برای کنترل جنبههای مختلف سیستم است.
▪ LoMAC
LOMAC (Low Water-Mark Mandatory Access Control for Linux) مجموعهای از patch-ها کرنل برای افزایش امنیت سیستم لینوکس میباشد.
▪ Audited
Audited به شما امکان استفاده از تسهیلات loging را میدهد. میتوانید پیغامهای mail، رخدادهای سیستم و آیتمهای نرمالی که syslog پوشش میدهد، را log کنید.
▪ Fork Bomb Defuser
یک ماژول کرنل قابل لود شدن که به شما امکان میدهد تا حداکثر تعداد فرایند به ازای هر کاربر و حداکثر تعداد fork-ها را کنترل کنید؛ این ماژول برای سرورهایی که کاربران غیر قابل اطمینان دارد بسیار مفید میباشد.
▪ اشکالزدایی کرنل لینوکس
ـ KDB v۰.۶ (اشکالزدای کرنل Built-in)
یک اشکال زدای کرنل SGI، در این اینجا موجود میباشد.
ـ KGDB (اشکالزدای کرنل راه دور)
SGI ابزاری نوشته است که امکان اشکالزدایی کرنل را، از راه دور، میدهد.
طرح ملی نرمافزارهای آزاد
@};-