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

به نام خدا

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


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

اگر با مشكلی برخورد نمودید من پیشنهاد می كنم فایل ضبط كننده وقایع (chroot/httpd/usr/local/apache/logs) را آنالیز كنید . از راه دیگر چنین فرمانی نیز می تواند به كار برده شود :

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

این فرمان می تواند دلیل مشكل ایجاد شده را نشان دهد . بعد از رفع مشكل همه خطاها ما می توانیم سرور را تنظیم نماییم .

تنظیم نمودن سرور

قدم اول حذف فایل /chroot/httpd/usr/local/apache/conf/httpd.conf است و جایگزین یك فایل جدید به جای آن است . محتوای فایل باید :

# =================================================
# Basic settings
# =================================================
ServerType standalone
ServerRoot "/usr/local/apache"
PidFile /usr/local/apache/logs/httpd.pid
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
ResourceConfig /dev/null
AccessConfig /dev/null

# =================================================
# Performance settings
# =================================================
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0

# =================================================
# Apache's modules
# =================================================
ClearModuleList
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_access.c
AddModule mod_auth.c

# =================================================
# General settings
# =================================================
Port 80
User apache
Group apache
ServerAdmin Webmaster@www.ebank.lab
UseCanonicalName Off
ServerSignature Off
HostnameLookups Off
ServerTokens Prod
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>
DocumentRoot "/www/vhosts"

# =================================================
# Access control
# =================================================
<Directory />
    Options None
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory "/www/vhosts/www.ebank.lab">
    Order allow,deny
    Allow from all
</Directory>
<Directory "/www/vhosts/www.test.lab">
    Order allow,deny
    Allow from all
</Directory>

# =================================================
# MIME encoding
# =================================================
<IfModule mod_mime.c>
    TypesConfig /usr/local/apache/conf/mime.types
</IfModule>
DefaultType text/plain
<IfModule mod_mime.c>
    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz
    AddType application/x-tar .tgz
</IfModule>

# =================================================
# Logs
# =================================================
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog /usr/local/apache/logs/error_log
CustomLog /usr/local/apache/logs/access_log combined

# =================================================
# Virtual hosts
# =================================================
NameVirtualHost *
<VirtualHost *>
DocumentRoot "/www/vhosts/www.ebank.lab"
ServerName "www.ebank.lab"
ServerAlias "www.e-bank.lab"
ErrorLog logs/www.ebank.lab/error_log
CustomLog logs/www.ebank.lab/access_log combined
</VirtualHost>
<VirtualHost *>
DocumentRoot "/www/vhosts/www.test.lab"
ServerName "www.test.lab"
ErrorLog logs/www.test.lab/error_log
CustomLog logs/www.test.lab/access_log combined
</VirtualHost>

تنظیمات ارائه شده در بالا شامل فرمان هایی می گردد كه جهت فعالیت سرور و امنیت آن مورد احتیاج است . دو هاست مجازی وجود دارند كه توسط سرور پشتیبانی شده اند :

- www.ebank.lab (www.e-bank.lab)
- www.test.lab

محتوای وب سایت های بالا به طور فیزیكی در این دایركتوری ها وجود دارد :

- /chroot/httpd/www/vhosts/www.ebank.lab
- /chroot/httpd/www/vhosts/www.test.lab
 

و هر وب سایت لاگ فایل مخصوص به خود را دارد كه در این دایركتوری هستند‌:

- /chroot/httpd/usr/local/apache/logs/www.ebank.lab
- /chroot/httpd/usr/local/apache/logs/www.test.lab
 

این دایركتوری ها قبل از اینكه سرور آپاچی برای اولین بار اجرا می شود باید ایجاد شوند . مالك این دایركتوری ها باید به root:sys ست شود و سطح دسترسی به 0755 تغییر یابد .

حال اگر فایل تنظیمات آپاچی را به با نسخه ای كه در اینجا ارائه شد مقایسه كنیم چنین تغییراتی را می بینیم كه به چندی از آن ها اشاره می كنم :

  • تعدادی از ماژول های فعال آپاچی كاهش یافت

  • آپاچی اطلاعاتی بیشتری را در مورد درخواست ها لاگ خواهد نمود

  • آپاچی فقط دسترسی به فایل و دایركتوری ها را امكان پذیر میسازد كه در فایل تنظیمات مشخص شده است

 و ...

قدم بعدی ایجاد یك استارت آپ اسكرپت "apache.sh" است كه محتوای آن باید :

#!/bin/sh

CHROOT=/chroot/httpd/
HTTPD=/usr/local/apache/bin/httpd
PIDFILE=/usr/local/apache/logs/httpd.pid

echo -n " apache"

case "$1" in
start)
	/usr/sbin/chroot $CHROOT $HTTPD
	;;
stop)
	kill `cat ${CHROOT}/${PIDFILE}`
	;;
*)
	echo ""
	echo "Usage: `basename $0` {start|stop}" >&2
	exit 64
	;;
esac

exit 0

كه این اسكرسپت باید به دایركتوری مربوطه كپی شود كه بستگی به نوع سیستم عامل دارد . مثلا در FreeBSD دایركتوری مربوطه /usr/local/etc/rc.d می باشد

حال این مقاله می تواند در بالا بردن امنیت سرورهای آپاچی بسیار مفید باشد ...

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