چند پیشنهاد برای امن‌سازی سیستم‌عامل لینوکس

سه‌شنبه ۲۳ تیر ۱۳۹۴
sharif-cert, apa, امن‌سازی, سیستم‌عامل لینوکس
مرکز آپا شریف
SUT-APA-LOGO
چکیده:
سعی می‌کنیم چند راهکار برای امن‌سازی سیستم عامل لینوکس به صورت کلی معرفی کنیم. دستورالعمل‌های بیان شده بر روی هر سروری که سیستم عامل لینوکس بر روی آن نصب باشد و فارغ از برنامه‌های کاربردی نصب شده بر روی آن قابل اجرا است.

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

۱- حذف بعضی  نرم‌افزارها پس از نصب

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

در زیر لیستی از نرم‌افزارهایی که بهتر است بعد از نصب لینوکس از سیستم حذف شوند آمده است. لازم به ذکر است که با توجه به استفاده‌ای که از سیستم می‌شود ممکن است به بعضی از آنها نیاز باشد.


anacron – cron-like program for systems that don’t run 24 hours a day
apmd – advanced power management daemon for notebook batteries
at – job scheduler
dhcpcd – dhcp client daemon
dosfstools – DOS file system toolls
eject – eject removable media
hotplug – hot plug and play
ipchains – obsolete firewall
ksymoops – kernel oops decoder (removed in Red Hat 9 by default)
kudzu – auto config of new hardware
lokkit – utility to set up ipchains firewall
mailcap – metamail capabilities file
pciutils – utilities to inspect and set up devices connected to PCI bus
pump – dhcp or bootp client
raidtools – raid tools
redhat-logos – contains the Red Hat “shadow man” logo and the RPM logo
redhat-release - contains Red Hat Linux release files
setserial – set serial port utility
برای حذف نرم‌افزارهای غیر لازم، از دستور RPM به صورت زیر استفاده می‌شود:
rpm -e <softwarenames>

برخی از برنامه‌ها مانند anacron, apmd, at برنامه‌های کمکی هستند که به عنوان فرآیند در زمینه اجرا می‌شوند، بهتر است آنها را قبل از حذف به صورت زیر متوقف کنید:

/etc/rc.d/init.d/processname stop

به عنوان مثال:

/etc/rc.d/init.d/apmd stop
Shutting down APM daemon: [OK]

هنگامی‌که فرآیند متوقف شد، می‌توانید نرم‌افزار را با استفاده از دستور زیر حذف کنید:

rpm -e --nodeps software-name

به عنوان مثال:

rpm -e --nodeps anacron apmd at dhcpcd dosfstools ejec
۲- شناسایی پورت‌های شبکه در حال شنود</pre>

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

netstat -tulp          &
nbsp;    </p>

بستن پورت‌های شبکه و غیر فعال کردن

سرور xinetd تمامی پورت‌های مربوط به سرویس‌های شبکه‌ای که در /etc/xinetd.d پیکربندی شده‌اند را دیده‌بانی می‌کند، و این سرویس‌ها را در پاسخ به اتصال‌های ورودی فعال می‌نماید. برای بررسی فعال و در حال اجرا بودن xinetd.d از دستور زیر می‌توان استفاده کرد:

# chkconfig --list xinetd
xinetd     0:off  1:off  2:off  3:on  4:on&</pre>nbsp; 5:on  6:off</p>
# /etc/init.d/xinetd status
xinetd (pid 2619) is running...

۳- شناسایی خدماتی که در bootup آغاز می‌شوند

برای یافتن تمامی خدماتی که در زمان bootup سیستم آغاز می‌شوند از دستور زیر می‌توان استفاده کرد:

chkconfig --list |grep on

برای غیر فعال کردن دائمی یک سرویس (مثل nfs) می‌توان از دستور زیر استفاده کرد:

chkconfig nfs off

۴- غیر فعال کردن سرویس‌های غیر ضروری

فرض کنید سرویس telnet فعال و در حال اجراست. با اجرا کردن دستورات زیر می‌توان این سرویس را غیر فعال کرد:

# chkconfig --list telnet
telnet     on
# cat /etc/xinetd.d/telnet | grep disable
    disable = no
# chkconfig telnet off
# chkconfig --list telnet
telnet     off
# cat /etc/xinetd.d/telnet | grep disable
    disable = yes
#

البته با توجه به این‌که می‌توان از سرویس امن‌تر SSH به جای telnet استفاده کرد، می‌توان بسته telnet را به صورت کامل حذف نمود. این کار با اجرای دستور زیر انجام می‌گیرد:

# rpm -e telnet-server

۵- تنظیمات امنیتی کرنل سیستم

کرنل سیستم‌عامل لینوکس دارای تنظیماتی برای مقابله با برخی حملات رایج می‌باشد. این تنظیمات در فایل /etc/sysctl.conf قرار دارند، که پس از اولین راه‌اندازی مجدد فعال خواهند شد. برای اینکه این تنظیمات بلافاصله اعمال شوند، دستور زیر را اجرا می‌کنیم:

# sysctl -p

 در ادامه به برخی از این تنظیمات اشاره می‌کنیم:

  • فعال کردن حفاظت از TCP SYN با کوکی

حمله SYN نوعی حمله DOS است که تمامی منابع موجود در دستگاه را مصرف می‌کند. هر سروری که به یک شبکه متصل باشد به صورت بالقوه در معرض این حمله قرار دارد. برای فعال کردن حفاظت کوکی از TCP SYN فایل /etc/sysctl.conf را ویرایش و خط زیر را به آن اضافه کنید:

net.ipv4.tcp_syncookies = 1
  • غیر فعال کردن IP Source Routing

از Source Routing برای مشخص کردن یک مسیر از منبع به مقصد استفاده می‌شود. اگر یک مزاحم قادر به ارسال بسته‌های source routing باشد، می‌تواند در ارسال و دریافت اطلاعات اختلال ایجاد نماید. برای مقابله با این حملات خط زیر را به فایل /etc/sysctl.conf اضافه کنید:

net.ipv4.conf.all.accept_source_route = 0
  • غیر فعال کردن پذیرس تغییر مسیر ICMP

تغییر مسیر ICMP توسط روترها استفاده می‌شود و وجود یک مسیر بهتر نسبت به مسیر انتخاب شده توسط سرور را اعلام می‌کند. با این حال، یک خرابکار می‌تواند با ارسال بسته‌های ICMP redirect، جدول مسیریابی میزبانان را تغییر داده و در ارسال اطلاعات اختلال ایجاد کند. برای غیر فعال کردن پذیرش تغییر مسیر ICMP خط زیر را به فایل /etc/sysctl.conf اضافه کنید:

net.ipv4.conf.all.accept_redirects = 0
  • فعال کردن حفاظت از IP Spoofing

IP Spoofing تکنیکی است که در آن مهاجمان با دستکاری کردن آدرس منبع بسته‌ها، بسته‌هایی ارسال می‌کنند که فرستنده آنها جعلی است. IP Spoofing به طور گسترده در حملات DOS استفاده می‌شود. برای مقابله با این حملات خط زیر را به فایل  /etc/sysctl.conf اضافه کنید:

net.ipv4.conf.all.rp_filter = 1
  • نادیده گرفتن درخواست‌های ICMP

در صورتی که می‌خواهید لینوکس درخواست‌های ping را نادیده بگیرد، خط زیر را به فایل /etc/sysctl.conf اضافه کنید:

net.ipv4.icmp_echo_ignore_all = 1
  • فعال کردن پیغام خطای بد

برای هشدار در مورد پیغام‌های خطای بد در شبکه، خط زیر را به فایل /etc/sysctl.conf اضافه کنید:

net.ipv4.icmp_ignore_bogus_error_responses = 1
  • فعال کردن ثبت وجود بسته‌های جعلی

برای ثبت کردن وجود بسته‌های جعلی خط زیر را به /etc/sysctl.conf اضافه کنید:

net.ipv4.conf.all.log_martians = 1

۶- فایل‌های قابل نوشت جهانی

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

#find / -path /proc -prune -o -perm -2 ! -type l -ls

 ۷- مدیریت کاربران

      ۱- بدست آوردن فهرست تمامی کاربران

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

# egrep -v '.*:*|:!' /etc/shadow | awk -F: '{print $1}'

      ۲- حذف کردن تمامی کاربران پیش فرض

در سیستم عامل لینوکس تعدادی کاربر به صورت پیش فرض وجود دارد که حذف کردن آنها در صورت عدم نیاز کاملا ضروری است.

برای حذف کردن این کاربران دستور زیر را در خط فرمان اجرا کنید:

  • گام اول- حذف کاربران
# userdel adm
# userdel lp
# userdel sync
# userdel shutdown
# userdel halt
# userdel news
# userdel uucp
# userdel operator
# userdel games (delete this user if you don’t use X Window Server)
# userdel gopher
# userdel ftp (delete this user if you don’t use ftp anonymous server)
  • گام دوم- حذف گروهها

دستورات زیر را برای حذف گروه‌های غیر ضروری در خط فرمان اجرا کنید:

# groupdel lp
# groupdel news
# groupdel uucp
# groupdel games (delete this group if you don’t use X Window Server)
# groupdel dip
# groupdel pppusers
# groupdel popusers (delete this group if you don’t use pop server for email).
# groupdel slipusers

 ۸- سیستم کشف نفوذ LIDS

Lids توسعه‌ای است بر کرنل لینوکس که توسط Xie Huagang نوشته شده است و جنبه‌های امنیتی متعددی را پیاده‌سازی می‌کند که در کرنل لینوکس وجود ندارد. بعضی از آنها شامل کنترل دسترسی اجباری، کشف کننده پویش پورت، حفاظت فایل و حفاظت از فرآیندها است. Lids لیست‌های کنترل دسترسی را پیاده‌سازی می‌کند که حتی از دسترسی‌ها به حساب root دربرابر خرابی‌های انتقام‌جویانه نیز ممانعت می‌کند و علاوه بر حفاظت از فرآیندها اجازه حفاظت از فایل‌ها را نیز به lids می‌دهد. این برنامه را می‌توان از سایت www.lids.org دریافت نمود.