تبلیغات
آموزش هک - امنیت برتر در سرورهای Apache قسمت ۳

به نام خدا

آموزش هک
امروز   به وبلاگ  آموزش هک  خوش آمدید


¿امنیت برتر در سرورهای Apache قسمت ۳
یکشنبه 24 مهر 1384

اما مرحله بعد ...

قدم بعدی محدود نمودن دسترسی پروسه های آپاچی به فایل های سیتمی است. ما این كار را از طریق ایجاد یك دایركتوری روت جدید در دایركتوری   /chroot/httpd  انجام می هیم  :

مالك همه دایركتوری های بالا باید روت باشد و سطح دسترسی باید به 0755 تغییر یابد . بعد ما یك فایل دیوایس را ایجاد می كنیم :

ls -al /dev/null
  crw-rw-rw-   1  root wheel   2,  2 Mar 14 12:53 /dev/null
mknod /chroot/httpd/dev/null c 2 2
chown root:sys /chroot/httpd/dev/null
chmod 666 /chroot/httpd/dev/null

یك روش دیگر نیز باید استفاده شود تا /chroot/httpd/dev/log ایجاد شود كه هم چنین برای اینكه سرور به درستی كار كند . به دلیل اینكه سیستم FreeBSD است این لاین باید به /etc/rc.conf اضافه شود :

syslogd_flags="-l /chroot/httpd/dev/log"

ما برای اینكه تغییرات انجام بپذیرد باید سیستم را ری استارت نماییم . البته جهت ایجاد /chroot/httpd/dev/log در سیستم عامل های دیگر باید به راهنمای دیگر در مورد syslogd مراجعه كنیم .

قدم بعدی كپی httpd به یك دایركتوری جدید همراه با همه باینری ها و فایل لایبرری است  . جهت این كار باید لیستی از فایل های مورد نیاز را تهیه كنیم . ما می توانیم یك لیست را با چنین دستوراتی تهیه نماییم :

دستوراجرا در محیطشرح
lddهمهلیك كننده فایل های اجرایی و یا لایبرری های به اشتراك گذاشته شده
ktrace/ktruss/kdump*BSDفعال كردن مسیر یابی پروسه ها در كرنل و نشان دادن اطلاعات مسیب یابی كرنل
sotrussسولاریسمسیر یابی پروسه های لایبرری به اشتراك گذاشته شده
strace/ltraceلینوكسمسیر یابی فراخوان ها سیستمی و سیگنال ها
stringsهمهپیدا نمودن استرینگ های قابل پرینت در فایل های باینری
traceAIXضبط كننده وقایع انتخاب شده در سیستم
trace (freeware)HP-UX <10.20پرینت فراخوان های سیستمی و مسیر یابی كرنل در پروسه ها
trussFreeBSD, Solaris, AIX 5L, SCO Unixwareمسیر یابی فراخوان ها سیستمی و سیگنال ها

مثال هایی از استفاده از دستورهای ldd و strings و truss :

localhost# ldd /usr/local/apache/bin/httpd
/usr/local/apache/bin/httpd:
        libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x280bd000)
        libc.so.4 => /usr/lib/libc.so.4 (0x280d6000)

localhost# strings /usr/local/apache/bin/httpd | grep lib
/usr/libexec/ld-elf.so.1
libcrypt.so.2
libc.so.4

localhost# truss /usr/local/apache/bin/httpd | grep open
(...)
open("/var/run/ld-elf.so.hints",0,00)            = 3 (0x3)
open("/usr/lib/libcrypt.so.2",0,027757775370)    = 3 (0x3)
open("/usr/lib/libc.so.4",0,027757775370)        = 3 (0x3)
open("/etc/spwd.db",0,00)                        = 3 (0x3)
open("/etc/group",0,0666)                        = 3 (0x3)
open("/usr/local/apache/conf/httpd.conf",0,0666) = 3 (0x3)
(...)

دستورات بالا نه تنها جهت httpd باید اجرا شوند بلكه جهت همه باینری ها و لایبرری ها مورد احتیاج هستند . به دلیل اینكه سیستم عامل ما FreeBSD است باید چنین فایل هایی نیز كپی گردد :

cp /etc/hosts /chroot/httpd/etc/
cp /etc/host.conf /chroot/httpd/etc/
cp /etc/resolv.conf /chroot/httpd/etc/
cp /etc/group /chroot/httpd/etc/
cp /etc/master.passwd /chroot/httpd/etc/passwords
cp /usr/local/apache/conf/mime.types /chroot/httpd/usr/local/apache/conf/

دقت كنید كه در /chroot/httpd/etc/passwords ما باید همه لاین ها را به غیر از nobody و apache را حذف كنیم . در یك جای دیگر ما باید چنین عملی را نیز دوباره در /chroot/httpd/etc/group تكرار كنیم  . سپس ما باید بانك اطلاعاتی پسورد ها را این گونه بسازیم :

cd /chroot/httpd/etc
pwd_mkdb -d /chroot/httpd/etc passwords
rm -rf /chroot/httpd/etc/master.passwd

قدم بعدی این است كه تست كنیم كه آیا httpd به درستی كار می كند یا نه . جهت انجام این كار ما باید فایل تنظیمات آپاچی و index.html را كپی نماییم :

cp /usr/local/apache/conf/httpd.conf /chroot/httpd/usr/local/apache/co
nf/
cp /usr/local/apache/htdocs/index.html.en /chroot/httpd/www/index.html

بعد از كپی فایل های مورد احتیاج ما باید DocumentRoot رو همین طور كه در زیر نشان داده شده تغییر دهیم :

DocumentRoot "/www"

سپس سرور را اجرا كنیم :

chroot /chroot/httpd /usr/local/apache/bin/httpd

نوشته شده در یکشنبه 24 مهر 1384 و ساعت 07:10 ق.ظ توسط : حمید نجفی
ویرایش شده در - و ساعت -