post

نصب FreeRADIUS بر روی CentOS و Ubuntu

یک ماژول با کارایی بالا است که تحت مجوز عمومی GNU در نسخه دوم خود توسعه و توزیع شده است. این یک ابزار رایگان و متن باز است. مجموعه ی FreeRADIUS شامل : RADIUS Server , RADIUS Client library , PAM library و APACHE Module و امکانات اضافی دیگر است.

 

Read More

post

آموزش نصب سرور سامبا در لینوکس UBUNTU

 در این مقاله نحوه نصب و پیکربندی سرور سامبا ، روی سرور لینوکس اوبونتو ۱۴٫۱۰ آموزش داده خواهد شد. سامبا یک مجموع نرم افزار منبع باز و رایگان تحت مجوز  GNU General Public است که برای انتقال امن و سریع اطلاعات ، فایل ها و چاپگرها،  بین همه کلاینت هایی که از پروتکل SMB / CIFS استفاده میکنند نظیر تمام نسخه های DOS و ویندوز ، OS/2 ، لینوکس و … طراحی شده است .

Read More

post

آموزش مقدماتی iptables فایروال لینوکس + دستورات کاربردی

آموزش iptables فایروال لینوکس + دستورات کاربردی و تنظیمات : فایروال ها نقش مهمی در تامین امنیت سیستم ها و شبکه های لینوکسی ایفا می­کنند. آنها با کنترل و مدیریت ترافیک شبکه های ورودی و خروجی بر اساس مجموعه ای از قوانین مانند یک محافظ امنیتی بین شبکه داخلی و خارجی عمل می­کنند. مجموعه ای از قوانین فایروال تنها اجازه می دهد تا اتصالات و درخواست های مجاز از فایروال عبور کرده و آنهایی که تعریف نشده اند یا غیرمجاز تعریف شده اند مسدود می­ شوند . ده ها فایروال متن باز در دسترس مدیران شبکه­ ها و سیستم­ های لینوکسی قرار دارد که از آن جمله می توان به Iptables , IpCop Shorewall , UFW , Vuurmuur , pfSense , IPFire , SmoothWall , Endian و CSF اشاره کرد که در این مجال به بررسیiptables می ­پردازیم.

 Iptables  چیست؟

Iptables  یا Netfilter محبوب ترین و پر استفاده ترین فایروال لینوکسی مبتنی بر خط فرمان است. iptables  خط اول دفاعی سرورهای لینوکس است و بسیاری از مدیران سرورها از آن برای کانفیگ و ایجاد تنظیمات در سرورهای لینوکس استفاده می­کنند. iptables بسته ها را درون پشته شبکه در داخل هسته لینوکس فیلتر می­کند. iptables  معمولا header  هر بسته را بررسی می کند و به محتوای بسته اهمیتی نمی دهد بنابراین از سرعت بسیار زیادی برخوردار است و معمولا تاثیر چندانی در کاهش سرعت پاسخگویی سیستم ندارد، iptables همچنین قادر است یک رشته را درون بسته ها جستجو کند، البته این کار تاحدودی باعث کاهش سرعت سیستم خواهد شد.

iptables  امکانات زیادی در اختیار یک مدیر سرور می دهد ، بوسیله iptables می­توان پکت ها را بر اساس پروتکل مورد استفاده در ارتباط ، شماره ip  گیرنده و فرستنده ، شماره پورت مورد در ارتباط ، مک آدرس و آدرس فیزیکی سیستم ها ، دامنه ای از آدرس های ip ، زمان برقراری ارتباط ، بخش های مختلفی از بسته ها و تنظیمات IPSec ، طول بسته ها ، انتخاب تصادفی بسته ها ، انتخاب n امین بسته ، کاربر یا گروه ارسال کننده بسته ، پردازش ارسال کننده بسته ، بخش های TOS  و TTL  هدر ip   و تعداد ارتباطات در یک بازه زمانی را کنترل و فیلتر کرد.

توسط iptables شما می توانید با توجه به نیاز های خود به ایجاد،حذف یا ویرایش قوانین فیلتر کردن بسته ها بپردازید و حتی می­توانید مجموعه قوانین جاری را بصورت لیست مشاهده کنید . iptables  قابلیت انعطاف پذیری بالایی دارد و می­توان با استفاده از آن نتایج کار آن را بر اساس هر قانون مشاهده یا ویرایش کرد. iptables  همچنین از قابلیت پشتیبان گیری و بازیابی قوانین با استفاده از فایل ها برخوردار است و از Load balancing نیز پشتیبانی می کند.

قوانین iptable بسته به نوع کاربرد در جداول filter table ،  nat tableوmangling table و در زنجیر(chain)هایی از دستورات دسته بندی می شوند. وظیفه filter table سیاست گذاری و دادن مجوز برای ورود و خروج بسته های TCP/IP به سیستم است. این جدول شامل سه زنجیر INPUT برای ترافیک ورودی به سیستم ، OUTPUT برای ترافیک خروجی از سیستم و FORWARD برای ترافیک فوروارد شده از سیستم است.

آموزش iptables فایروال لینوکس

آموزش iptables فایروال لینوکس

وظیفه nat table سیاست گذاری و دادن مجوز عملیات routing است و قوانین مربوط به تغییر آدرس IP و یا پورت در جدول   nat قرار می گیرند.  این جدول شامل سه زنجیر PREROUTING برای شبکه مقصد در ترافیک ورودی به سیستم ، POSTROUTING  برای شبکه مبدا ترافیک خروجی از سیستم و OUTPUT است.

از جدول mangle  می توان برای مارک دار کردن بسته ها و عملیات بررسی بسته ها قبل از ورود به جداول بالاتر استفاده کرد . کلیه اعمال پیشرفته مربوط به دستکاری فیلدهای header در بسته های ارسالی در شبکه توسط قوانین موجود در این جدول صورت می گیرد.

سوئیچ ها و دستورات iptable

  • A- برای افزودن دستور به انتهای یک زنجیره از جدول قوانین استفاده می شود.

  • I- برای افزودن به مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • D- برای حذف دستور از مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • R- برای جایگزین کردن دستور جاری یا یک دستور در مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • p- برای مشخص کردن نوع پروتکل مورد استفاده قرار می­گیرد.

  • t- برای مشخص کردن جدول مورد استفاده قرار می­گیرد.

  • s- یا source– برای مشخص کردن شماره ip  مبدا مورد استفاده قرار می­گیرد.

  • d- یا destination– برای مشخص کردن شماره ip  مقصد مورد استفاده قرار می­گیرد.

  • i- یا in-interface– برای مشخص کردن کارت شبکه ورودی مورد استفاده قرار می­گیرد.

  • o- یا out-interface– برای مشخص کردن کارت شبکه خروجی مورد استفاده قرار می­گیرد.

  • sport– برای مشخص کردن شماره پورت مبدا مورد استفاده قرار می­گیرد.

  • dport– برای مشحص کردن شماره پورت مقصد مورد استفاده قرار می­گیرد.

  • L- برای لیست کردن قوانین موجود در یک زنجیر مورد استفاده قرار می­گیرد.

  • N- برای ایجاد زنجیر جدید مورد استفاده قرار می­گیرد.

  • X- برای حذف یک زنجیر مورد استفاده قرار می­گیرد.

  • F- برای پاک کردن قوانین مورد استفاده قرار می­گیرد.

  • j- مشخص کردن نحوه برخورد با بسته مورد استفاده قرار می­گیرد. این سویچ به معنی jump  بوده و به موارد DROP ، LOG ، ACCEPT  و REJECT اشاره می کند. در اینجا تفاوتی که بین DROP و REJECT وجود دارد و آ ن این است که در DROP برای فرستنده پیامی مبنی بر حذف بسته  ارسال نمی­کند ولی در REJECT به فرستنده یک بسته عدم پذیرش ترافیک ارسال خواهد شد.

  • iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات مورد استفاده قرار می­گیرد.

  • post-down iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات قبل از هر خاموش شدن سیستم مورد استفاده قرار می­گیرد.

  • iptables-restore < /etc/iptables.rules برای بازیابی تنظیمات مورد استفاده قرار می­گیرد.

  • m- برای مشخص کردن ماژول مورد استفاده قرار می گیرد.

  • m mac –mac-source- برای مشخص کردن مک آدرس مبدا مورد استفاده قرار می گیرد.

بطور مثال دستور زیر پورت ۲۲  را باز می کند:

 
۱
iptables A OUTPUT o eth0 p tcp sport ۲۲ m state state ESTABLISHED j ACCEPT

مهم ترین و پرکاربردترین دستورات و تنظیمات iptables

  • پاک کردن تمام تنظیمات جاری

 
۱
iptables F

ایجاد تنظیمات عمومی و مسدود کردن همه دسترسی ها

 
۱
۲
۳
۴
iptables P INPUT DROP
 
iptables P FORWARD DROP
iptables P OUTPUT DROP

  • مسدود کردن یک ip خاص

 
۱
iptables A INPUT s xxx.xxx.xxx.xxx j DROP

  • باز کردن پورت SSH برای تمامی ارتباطات ورودی

 
۱
۲
iptables A INPUT i eth0 p tcp dport ۲۲ m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport ۲۲ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت ssh برای یک ip  یا رنج ip خاص

 
۱
۲
۳
iptables A INPUT i eth0 p tcp s xxx.xxx.xxx.xxx/۲۴ dport ۲۲ m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp s xxx.xxx.xxx.xxx dport ۲۲ m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport ۲۲ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت http

 
۱
۲
iptables A INPUT i eth0 p tcp dport ۸۰ m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport ۸۰ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت https

 
۱
۲
iptables A INPUT i eth0 p tcp dport ۴۴۳ m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport ۴۴۳ m state state ESTABLISHED j ACCEPT

  • باز کردن چند پورت بصورت یکجا

 
۱
۲
iptables A INPUT i eth0 p tcp m multiport dports ۲۲,۸۰,۴۴۳ m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp m multiport sports ۲۲,۸۰,۴۴۳ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت برای ارتباط خروجی ssh

 
۱
۲
iptables A OUTPUT o eth0 p tcp dport ۲۲ m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport ۲۲ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت خروجی ssh تنها برای یک شبکه خاص

 
۱
۲
iptables A OUTPUT o eth0 p tcp d ۱۹۲.۱۶۸.۱۰۱.۰/۲۴ dport ۲۲ m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport ۲۲ m state state ESTABLISHED j ACCEPT

  • باز کردن پورت https برای ارتباطات خروجی

 
۱
۲
iptables A OUTPUT o eth0 p tcp dport ۴۴۳ m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport ۴۴۳ m state state ESTABLISHED j ACCEPT

  • ایجاد امکانping از داخل به خارج

 
۱
۲
iptables A OUTPUT p icmp icmptype echorequest j ACCEPT
iptables A INPUT p icmp icmptype echoreply j ACCEPT

  • ایجاد امکانping از خارج به داخل

 
۱
۲
iptables A INPUT p icmp icmptype echorequest j ACCEPT
iptables A OUTPUT p icmp icmptype echoreply j ACCEPT

  • ایجاد امکان دسترسی loopback

 
۱
۲
iptables A INPUT i lo j ACCEPT
iptables A OUTPUT o lo j ACCEPT
  • ایجاد امکان دسترسی به شبکه خارجیeth1 از شبکه داخلی eth0

 
۱
iptables A FORWARD i eth0 o eth1 j ACCEPT

  • باز کردن دسترسی خروجی پورت dns

 
۱
۲
iptables A OUTPUT p udp o eth0 dport ۵۳ j ACCEPT
iptables A INPUT p udp i eth0 sport ۵۳ j ACCEPT

  • ذخیره تغییرات iptables

 
۱
service iptables save

آموزش iptables فایروال لینوکس + دستورات کاربردی و تنظیمات

post

آموزش تامین امنیت برای ستون های حیاتی وب سرور آپاچی

پنهان سازی نمایش ورژن اپاچی و سیستم عامل
آپاچی بصورت پیش فرض اطلاعاتی نظیر شماره نسخه نصب شده و برخی ماژول های خود را به همراه نام سیستم عامل سرور بر روی صفحات خطای وب نمایش می دهد.

نمایش اطلاعات آپاچی نا امن

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

 
۱
۲
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache/apache2.conf (Debian/Ubuntu)

سپس سطری که با ServerSignature آغاز می شود را جستجو و پیدا کنید . این گزینه بصورت پیش فرش on (فعال) است که باید آن را به off تغییر دهید . همچنین در زیر آن در قسمت ServerTokens مقدارProd را قرار دهید تا کمترین اطلاعات از آپاچی در header پاسخ های سرور نمایش داده شود:

 
۱
۲
ServerSignature Off
ServerTokens Prod

پس از ذخیره فایل ویرایش شده سرویس آپاچی را restart کنید:

 
۱
۲
# service httpd restart (RHEL/CentOS/Fedora)
# service apache2 restart (Debian/Ubuntu)

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

عدم نمایش اطلاعات در آپاچی امن

غیر فعال کردن امکان لیست شدن فایل ها (Directory browsing)
بصورت پیش فرض آپاچی فایل های داخل پوشه ها را در صورت عدم وجود فایل index لیست می کند . این کار می تواند خیلی خطرناک باشد چرا که در این صورت فایل های مهم و حساس مانند فایل های پشتیبان یا فایل های آپلودر و … در معرض دید هکرها قرار می گیرند و ممکن است مورد سوء استفاده قرار گیرند. همچنین معمولا این فایل ها توسط موتورهای جستجو شناسایی شده و ممکن است اطلاعات حساس سایت شما در اختیار عموم قرار گیرد و فاجعه بزرگی رخ دهد !

لیست شدن فایل ها در آپاچی ناامن

لیست شدن فایل ها در آپاچی ناامن

برای جلوگیری از این پیش آمد کافیست فایل httpd.conf را در حالت ویرایش باز کرده و کد های زیر را در انتهای آن قرار دهید:

 
۱
۲
۳
<Directory /var/www/html>
    Options Indexes
</Directory>

توجه : بجای /var/www/html باید مسیر اصلی هاست های سرور را قرار دهید ،بطور مثال /home

پس از اضافه کردن کد بالا سرویس اپاچی را restart کنید . از این پس دیگر فایل های سرور لیست نخواهند شد و بجای آن پیغام خطای ۴۰۳ نمایش داده می شود.

عدم نمایش لیست فایل ها در آپاچی امن

عدم نمایش لیست فایل ها در آپاچی امن

بروزرسانی آپاچی
با دستورات زیر می توانید سرویس آپاچی خود را بروزرسانی کنید :

 
۱
۲
# yum update httpd
# apt-get install apache2

حذف ماژول های غیر ضروری
ماژول ها می توانند عامل هک شدن سرور باشند برای کاهش دادن احتمال آسیب پذیری سرور خود سعی کنید ماژول های غیر ضروری و بلا استفاده آپاچی را غیر فعال کنید . برای نمایش لیست ماژول های فعال سرویس آپاچی از دستور زیر استفاده کنید :

 
۱
# grep LoadModule /etc/httpd/conf/httpd.conf

ماژول هایی مانند mod_imap, mod_include, mod_info, mod_userdir,mod_autoindex معمولا بلااستفاده هستند و غیرفعال کردن آنها پیشنهاد می شود.
برای غیر فعال کردن یک ماژول کافیست یک علامت # در ایتدای خط آن ماژول قرار داده و سرویس آپاچی را restart کنید .

اجرای آپاچی با یوزر و گروه اختصاصی
بصورت پیشفرض سروریس اپاچی پردازش های خود را بوسیله کابرnobody انجام می دهد . این امر از لحاظ امنیتی بسیار خطرناک است چرا که در صورتی که کاربری بتواند به این سطح دسترسی دست یابد می تواند به همه سایت های روی سرور نفوذ کند .
برای ایجاد نام کاربری و گروه با کمترین سطح دسترسی برای آپاچی دستورات زیر را اجرا کنید:

 
۱
۲
# groupadd http-web
# useradd -d /var/www/ -g http-web -s /bin/nologin http-web

برای شناساندن نام کاربری http-web به آپاچی کافیست فایل httpd.vpng را در حالت ویرایش بازکرده user و group را جستجو کنید و نام کاربری فوق را در مقابل این دو قرار دهید :

 
۱
۲
User httpweb
Group httpweb

در آخر سرویس اپاچی را مجددا راه اندازی کنید .

جلوگیری از دسترسی کاربران به پوشه های حساس
برای جلوگیری از دسترسی کاربران به پوشه های حساس کد زیر را به فایل httpd.conf اضافه کنید :
بجای /web مسیر پوشه اصلی سایت ها را وارد کنید تا تنها این پوشه قابل رویت برای کاربران باشد.

 
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
<Directory />
  Order Deny,Allow
  Deny from all
  Options None
  AllowOverride None
</Directory>
 
<Directory /web>
  Order Allow,Deny
  Allow from all
</Directory>

توجه : با غیرفعال کردن AllowOverride و Options اجازه تغییر این تنظیمات را به هکرها توسط فایل های htaccess نمی دهد.

نصب ماژول های mod_security و mod_evasive برای امنیت آپاچی

نصب و پیکرندی این ماژول ها بصورت جداگانه آموزش داده شده است .

غیر فعال کردن آپشن های symlinks , mod_include و CGI و …
دنبال کردن symlink ها یک ریسک بزرگ برای سرور شما می باشد چرا که هکر ها با استفاده از این قابلیت می توانند به سرور نفوذ کنند و فایل های حساسی که مجوز دسترسی به آنها را ندارند بخوانند !
برای غیر فعال کردن این قابلیت کد زیر را به فایل کانفیگ آپاچی اضافه کرده و سرویس را restart کنید:

 
۱
Options FollowSymLinks

در صورتی که نیازی به mod_include و CGI ندارید بهتر است آنها را هم غیرفعال کنید :

 
۱
۲
Options Includes
Options ExecCGI

پرمیژن بندی فایل های آپاچی
مطمئن شوید تنها کاربر root به فایل های حساس آپاچی دسترسی دارد

 
۱
۲
# chown -R root:root /usr/local/apache
# chmod -R o-rwx /usr/local/apache

کاهش دادن زمان timeout جهت جلوگیری از عملیات DOS
فایل کانفیگ اپاچی را در حالت ویرایش باز کنید و مقدار timeout را ۴۵ ثانیه قرار دهید :

 
۱
Timeout ۴۵

post

۱۰ نکته جدایی ناپذیر برای امنیت وب سرور لینوکس

۱- از کلمات عبور پیچیده استفاده کنید
کلمات عبور ساده بزرگترین مشکل امینتی را برای سرور شما به وجود می آورند. داشتن کلمات عبور امن و پیچیده (چه برای خود سرور و چه برای کاربرانی که روی سرور قرار دارند) بسیار با اهمیت است.به عنوان مثال اگر کاربر شما ازکلمه ی عبور ی استفاده کند که به راحتی توسط هکر ها قابل حدث زدن باشد در وحله ی اول باعث deface شدن سایت خود شده و اعتبار شرکت شما رو زیر سوال می برد دوم ممکن است از طریق این سایت برای ارسال ویروس و هرزنامه استفاده بشه یا بویسله ی local exploit ها به بقیه سایت ها آسیب برسونه.
* شما می تونید با ویرایش تنظیمات مربوط به کلمات عبور در فایل /etc/login.defs بر اساس نوع کار شما با سرور و درجه ی امنیتی که برای خود در نظر می گیرید کاربران مجبور به داشتن کلمات عبور ایمن کنید.توضیحات کامل در مورد هر یک از پارامتر های فایل login.defs داخل خود فایل و در بالای هر کدام از پارامتر ها موجود می باشد.
معمولا کلمات عبور باید حداقل ۸ حرفی و شامل حرف – عدد و علائم باشند. هیچ وقت از کلمات معنی دار یا تاریخ های مهم استفاده نکنید. اگر می خواهید امن بودن کلمه عبور خود را بررسی کنید می تونید اون را با استفاده از این نرم افزار (http://www.openwall.com/john) تست کنید . اگر ظرف ? – ? ساعت کلمه عبور شما crack شد یعنی کلمه عبور شما امن نیست.
همین سایت یک ابزار دیگه برای بررسی طول کلمات عبور کاربران سرور ساخته است بوسیله ی (http://www.openwall.com/passwdqc) می توانید لیست کاربرانی که از کمات عبور نا امن استفاده میکنند را پیدا کنید و به آنها هشدار دهید .

?- پروتکل SSH شما Secure است؟
سعی کنید همیشه از برای ورود به سرور از public key authentication استفاده کنید وهیچ وقت دسترسی SSH را برای عموم باز نگذارید. اگر از puttyاستفاده می کنید می توانید نرم افزار putty agent را نصب کرده و key های SSH خود را مدیریت کنید.
همیشه پورت SSH را عوض کنید .معمولا طرف ابتدا به دنبال پورت ۲۲ می گرده و اگر اطلاعات کافی در مورد سرور شما نداشته باشه از دسترسی به ssh نا امید خواهد شد . لذا هیچ وقت ssh را روی پورت ۲۲ باز نگذارید. می توانید پورت ssh را از طریق ویرایش فایل etc/ssh/sshd_config به یک پورت باز دیگر مثلا ???? تغییر دهید. port 1654
از پروتکل ۲ استفاده کنید . اگر از putty استفاده می کنید این نرم افزار قابلیت پشتیبانی از هر دو پروتکل را دارست پس نگرانی وجود ندارد . در همین فایل etc/ssh/sshd_config می توانید خط Protocol 2. را تایپ کنید.

در اکثر سیستم های لینوکس میتوانید محدودیت هایی را روی دستری های shell اعمال کنید . با استفاده از تنظیماتی که در /etc/security/limits.conf وجود دارد می توانید محدودیت های بسیار جالب را برای تک تک کاربران shell ایجاد کنیدتا استفاده ی نابجای آنها با استفاده وارد آوردن فشار بیش از حد به سرور شما و down شدن آن نشود .

۳- وب سرور خود را secure کنید
مهمترین قسمتی که با عموم کاربران در ارتباط است و بیشتر مورد حمله و نفوذ قرار می گیرد همان webserver است .
یکی از بهترین ماژول هایی که برای جلوگیری از استفاده ی نابجا از وب سرور استفاده می شود mod_security است که در همین وب لاگ بار ها در موردش صحبت کردیم. البته خود اون فقط یک ابزاره و بقیش برمیگرده به هنر مدیر سرور در طراحی یک سری rule مناسب مخصوص اون سرور برای اطلاعات بیشتر به سایت هایhttp://www.modsecurity.org و http://www.gotroot.com سر بزنید.
توجه کنید که همیشه موقع compile کردن apache گزینه ی suexec حتما فعال باشد. فعال کردن این گزینه به معنی اجرا شدن اسکریپت های CGI تحت owner خود (مالک فایل) می باشد. این گزینه باعث جلوگیری از دسترسی فایل های CGI به فایل های سیستم میشه و همچنین برای جلوگیری از فایل هایی که باعث در سرور می شود بسیار مناسب است.
همچنین بعضی ها اعتقاد داند که باید PHPsuexec هم روی سرور فعال باشه این گزینه باعث میشه که فایل های php هم تحت کاربر خودشون اجرا بشن و با عث بالا بردن امنیت فایل های سیستمی و جلوگیری از استفاده نا بجا از این گونه اسکریپت ها میشه .
می تونید apache رو بوسیله ی دستور /scripts/easyapach که به شما محیط نیمه گرافیکی میده یا با استفاده از خود whm که محیط کاملا گرافیکی داره compile کنید.
با استفاد از فعال کردن گزینه ی open_basedir در قسمت Tweak Security در WHM دسترسی کاربران را از مشاهده ی فایل هایی که خارج پوشه ی مربوط به خودشون هست بگیرید.
اگر خیلی از امنیت سرور خود حراس دارید و نمی توانید تک تک دسترسی ها مسدود کنید می توانید به راحتی در فایل php.ini گزینه ی safe mode را فعال کنید . Safe_mode=on این گزینه هر لحظه چکمیکنه که آیا کسیکه داره این فایل رو اجرا میکنه مالک اون قسمتهست یا نه و خیلی دستورات را خود به خود مسدود میکنه . و راحت ترین راه برای بستن دسترسی های اضافی روی سروره . البته باید گم که با فعال کردن این گزینه حدود ۶۰ درصد از scriptها و کاربران به مشکل برمی خورند.

۴– پارتیشن tmp را secure کنید
بله . مخصوصا گفتم پارتیشن چون بعضی ها اصلا براش partision نمی سازند . البته اگر سرورتون را از یک دیتا سنتر درست حسابی گرفته باشید خودشون موقع نصب سیتم عامل این کار رو انجام میدن.
ولی بازهم کافی نیست در قسمت fstab سیستم باید tmp حتما با گزینه ی nosetuid بسازید یا به اصطلاح mount کنید. این گزینه باعث میشه که تک تک proccess ها با سطح دسترسی executor اجرا شوند .این سطوح دسترسی قبلا در کرنل لینوکس تعریف شده. همچنین بعد از نصب cpanel می توانید گزینه ی noexec رو هم فعال کنید. این گزینه باعث میشه که هیچ فایل اجرایی داخل tmp اجازه ی اجرا شدن نداشته باشه . بعد از اینکه این کار و انجام دادید بوسیله script از پیش آماده ی خود cpanel در آدرس /scripts/securetmp برای پارتیشن tmp خود یک symlink یا شبه لینک به /var/tmp بسازید این خودش برای حفظ امنیت tmp موثره .

۵- غیر فعال کردن compiler ها برای کاربران دیگر
۹۹ درصد کاربران نمی دونن compiler ها روی هاست به چه درد می خوه و اصلا استفاده ای از اونها ندارند پس چه بهتره برای همه ی کاربرانی که استفاده ندارند اون رو disable کنید . این کار رو می تونید در whm در قسمتCompilers Tweak انجام بدید . اکثر باگ های امینتی کشف شده نیار دارند تا همون موقع روی سرور compile بشن با غیر فعال کردن اون حال بسیاری از هکر ها رو میگیرید.

۶- از maildir به جای mailbox استفاده کنید
ما دونوع ذخیره سازی روی لینوکس داریم برای ایمیل ها . اولی به صورت mail box هست و دومی maildir که گزینه ی دوم بسیار از لحاظ امنیتی بهتره و باعث افزایش سرعت میل سرورتون هم میشه . البته در نسخه ی جدید cpanel به صورت پیش فرض maildir نصب میکنه ولی اگر سرورتون بیش از یک سال عمر داره و روش خاک نشسته بهتره همین حالا به maildir ارتقا بدید. قبلش از اطلاعاتتون backup بگیرید . بنده هیچ مسئولیتی در قبل از دست دادن اونها ندارم . می تونید از پشتیبانی دیتا سنترتون بخواید تا این کار رو انجام بده.

۷- سرویس های اضافی(services and daemons) را غیر فعال کنید
هر سرویس که روی سرور شما فعال باشه و به دیگران اجازه ی وصل شدن به اون وگرفتن اطلاعات به کاربران میده دارای باگ امینتی هست و اگر از اون استفاده نمی کنید باید اون رو ببندیدش . خود لینوکس هم یک سری سرویس های زائد(daemons) داره که برای یک سریس دهنده ی وب نیازی به اونها نیست .
سرویس های رو می تونید در /etc/xinetd.con ویرایش کنید .برای مثال سیستم اشتراک فایل (nfs/statd) یا سیستم مدیریت پرینت (cupsd) و خیلی daemonهای دیگه که توی آموزش مختصر مثل این نمی گنجه همش روبگم. از داخل whm در قسمت Service Manager می تونید سرویس هایی که نیار ندارید رو غیر فعال کنید . مثلا اگر از chat server خود cpanel استفاده نمی کنید اون رو غیر فعالش کنید چون خودش باعث مشکلاتی امنیتی خواهد شد .
این بخش از مهمترین کار هایی که باید یک مدیر سرور انجام بده .

۸- سرور خود را تحت کنترل داشته باشید یا مانیتور کنید

یک ادمین سرور باید به صورت ۲۴ ساعته کلیه قسمت های سرور (نرم افزار ها – فایل های کاربران و …)  را تحت کنترل داشته باشد
اینکه نرم افزار های مورد استفاده روی سرور بروز هستند یا خیر و خیلی مسائل دیگر بسیار مهم هستند که این امر فقط با بررسی مداوم و سرکشی به صورت روزانه روی سرور ها عملی است.
البته می توانید حداقل ۹۰ درصد این کار ها را با نوشتن script  های دلخواه انجام دهید و شما فقط لوگ های مربوطه را چک کنید و فقط در مواقع ضروری روی سرور لوگین کنید .  در این جا برخی از command های پر استفاده رو در این ضمینه ارائه می کنم:

netstat -anp : لیست کلیه connection های باز سرور را به شما می دهد تا به دنبال پورت ها یا نرم افزار های مشکوکی که روی سرور run هستند ولی شما اجاره اجرا شدن به انها نداده اید مشاهده کنید و در صورت لزوم بوسیله firewall دسترسی انها را مسدود کنید.

find / \( -perm -a+w \) ! -type l >> world_writable.txt : این دستور لیست کلیه فایل هایی را که permission 777 دارند و توسط کلیه کاربران روی سرور قابلیت ویرایش دارند را به شما نشان میدهد (داخل فایل txtذخیره می کند) اکثر مشکلات امینی داخل همین فولدر ها اتفاق می افتد.

ls /var/log/ : اکثر لوگ فایل ها داخل پوشه var هستند شما در صورت نیاز به لوگی از از هر سرویس خاصیمی توانید در این فولدر به آن مراجعه کنید (البته لوگ های apache در فولدر /usr/local/apache/logs هست)

در کنار تمامی موارد script های زیادی هستندکه به شما در این کار ها کمک می کنند . البته چیزی که بر حسب نیاز خودتون برای خودتون بنویسید مسلما یک چیز دیگس. یک سری برنامه ها اسمشون رو می نویسم که به درد می خورند .

*  Tripwire – این نرم افزاری هست که md5 کلیه فایل های مربوط به سیستم را چک می کنه و در صورتی که این فایل ها تغییر کند به شما هشدار می دهد.
http://tripwire.com or http://sourceforge.net/projects/tripwire
* Chrookit – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
http://www.chkrootkit.org
* Rkhunter – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
http://www.rootkit.nl/projects/rootkit_hunter.html
* Logwatch – نرم افزاری برای بررسی لوگ ها و فعالیت های سرور به صورت روزانه و تهیه گزارش کامل برای شما
http://logwatch.org

۹- حتما یک firewall نرم افزاری داشته باشید !!

اگر firewall سخت افزاری هم دارید باید یک فایروال جداگانه روی سرور داشته باشید .

با استفاده از firewall می تونید لیست پورت هایی که استفاده نمی شوند رو محدود کنید و با این کار حجم زیادی از نرم افزار های backdoor و … را از کار بیاندازید . همچنین با استفاده از firewall  می توانید ادرس های ip خاصی را block کنید و حتی در مقابل حملات ddos اسیب ناپذیر باشید.
در زیر لیست پورت های مورد نیاز cpanel امده است( اگر سرویس دیگری ندارید می توانید بقیه پورت ها را به غیر از این ها ببندید . چون نیازی به انها ندارید ) : http://faq.cpanel.net/show.cgi?qa=10468918040763
بهترین firewall از نظر من روی cpanel هم نصب میشه و خوب جواب میده همون APF هست که با rule های خود لینوکس iptables کار می کنه.
اگر شما هم با  این نرم افزار کار می کنید اینجا رو مطالعه کنید : http://faq.cpanel.net/show.cgi?qa=108499296901804

۱۰ – همیشه بروز باشید
۸۰ در صد مشکلات امینتی در روز های اول عمرشون براشون patch و update امنیتی میاد یعنی یک bug هرچقدر هم که underground باشد بالاخره براش patch نوشته می شود  پس سعی کنید که همیشه از آخرین نسخه های نرم افزار استفاده کنید . نسخه ی کرنل حداقل هر ۲ ماه یک بار باید بروز بشه بقیه نرم افزار ها باید هر هفته چک بشن و در صورت لزوم update بشوند. خود cpanel باید هر روز updateشود به دلیل اینکه هر روز شرکت سی پنل به روز می شود .

post

۱۰ نکته بسیار مهم که باید در تامین امنیت وب سایت ها در نظر گرفته شود

بر خلاف تصور عموم، هدف اکثر رخنه های امنیتی انجام شده نه سرقت اطلاعات شما و یا از دسترس خارج نمودن وب سایت بلکه سوء استفاده از وب سرور در جهت منافع هکر ها می باشد. در برخی از موارد هکر ها سعی دارند با استفاده از وب سرور شما یک سیستم Email Relay راه اندازی کرده و اقدام به ارسال ایمیل های انبوه تبلیغاتی نمایند و در برخی دیگر از مواقع نیز از سرور شما به عنوان یک منبع فایل سرور برای بارگذاری فایل های آلوده و غیر قانونی خود استفاده می کنند. چنین هک هایی معمولا به صورت اتوماتیک و توسط اسکریپت های از قبل آماده شده ای انجام می شوند. اسکریپت های مذکور تمامی اینترنت را برای یافتن سایت هایی با حفره های امنیتی تعریف شده، جستجو کرده تا هدف نهایی خود را پیدا کنند. در این مقاله به شرح ۱۰ نکته مفید برای حفظ امنیت وب سایت خواهیم پرداخت.

 

[تصویر:  hacker.jpg]

۱ – نرم افزارهای خود را همواره بروز نگه دارید !

این موضوع ممکن است به وضوح برای همگان آشکار باشد، اما تاکید آن نیز خالی از لطف نیست چرا  که به روز نگهداری تمامی نرم افزارهای مورد استفاده برای حفظ امنیت وب سایت کاملا حیاتی می باشد. این موضوع هم برای سیستم عامل سرور میزبان و هم برای نرم افزارهای مورد استفاده در وب سایت مانند CMS ها یا Forum ها صادق است. زمانی که حفره های امنیتی هرچند کوچک در یک نرم افزار پدید آیند، هکر ها به سرعت با سوء استفاده از آن ها به سرور یا سایت شما رخنه می کنند. لذا تمامی سازنده های نرم افزار در دنیا سعی می کنند تا حفره های امنیتی موجود در محصولات خود را با ارایه بسته های بروز رسانی به کاربران برطرف سازند و به مرور زمان نرم افزار خود را در مقابل نفوذهای امنیتی مقاوم تر کنند.

البته در صورتیکه از راهکارهای میزبانی مدیریت شده استفاده می کنید، نیازی به نگرانی برای بروز رسانی مداوم نرم افزارهای خود ندارید، زیرا شرکت ارایه دهنده میزبانی شما تمامی موارد امنیتی لازم را برای نگهداری از سرویس شما به کار می برد.

اگر از نرم افزارهای ثالث (Third Party) مانند CMS ها و Forum ها برای مدیریت وب سایت خود استفاده  می کنید، حتما از نصب آخرین بسته های بروز رسانی و Patch های امنیتی برای نرم افزارهای  خود اطمینان حاصل نمایید. اکثر تولید کنندگان نرم افزار دنیا دارای لیست ایمیل یا خبرنامه های RSS هستند که آخرین اخبار خود مبنی بر ارایه Patch های امنیتی را به این طریق منتشر کنند. اکثر CMS ها نیز مانند WordPress شما را از وجود نسخه های جدید در پیشخوان مدیریتی خود آگاه می سازد.

۲ – SQL Injection

حملات SQL Injection زمانی رخ می دهند که افراد هکر از پارامترهای URL با فرم تحت وب برای دسترسی به دیتابیس شما استفاده کنند. زمانی که شما از قالب استاندارد Transact SQL استفاده می کنید، افزودن کدهای مخرب و سارق در بین کدهای شما به سادگی توسط هکرها امکان پذیر خواهد بود. این افراد با افزودن چنین کدهایی می توانند جداول شما را تغییر دهند، اطلاعات دیتابیس شما را دریافت کنند و یا برخی اطلاعات حیاتی شما را حذف نمایند. اما شما به راحتی می توانید از بروز چنین اتفاقاتی با استفاده از کوئری های پارامتردار جلوگیری نمایید. اکثر زبان های برنامه نویسی وب از این قابلیت پشتیبانی نموده و انجام آن نیز به راحتی امکان پذیر می باشد.

کوئری زیر را در نظر بگیرید :

کد:
   ۱٫”SELECT *FROM table WHERE column = ‘” + parameter + “;”

اگر هکر بخواهد پارامتر URL شما را به نحوی تغییر دهد که عبارت ‘or’ ۱′=’۱ بازگدانی شود، آنگاه کوئری مذکور به شکل زیر تغییر شکل خواهد داد :

کد:
   ۱٫ “SELECT” *FROM table WHERE column = ” OR ’۱′=’۱; “

از آنجا که ’۱′ با مقدار ’۱′ برابر می باشد، آنگاه این تعریف به هکر اجازه می دهد تا کوئری اضافه ای را در انتهای عبارت SQL شما بیافزاید و آن را اجرا نماید.

۳ – XSS

عملیات Cross site scripting  به زمانی گفته می شود که فرد حمله کننده سعی کند تا با اضافه نمودن کدهای اسکریپت JavaScript به فرم وب، کدهای مخرب خود را برای بازدیدکنندهای وب سایت شما اجرا نماید. بنابراین در هنگام طراحی و ساخت فرمهای خود همیشه مطمئن شوید تا اطلاعات خود را به درستی کدگذاری کرده و ارسال نمایید و تا جای ممکن از ارسال کدهای ساده HTML جلوگیری نمایید.

۴- پیغام های خطا

همواره دقت کنید که پیغام های خطای وب سایت شما چه اطلاعاتی را به کاربران ارایه می دهند. برای مثال اگر در وب سایت خود از یک فرم لاگین برای ورود به قسمت مدیریت استفاده می کنید، توجه نمایید که در صورت اشتباه وارد کردن اطلاعات کاربری، پیغام های خطای ساده ای مانند “نام کاربری یا رمز عبور اشتباه است” به کاربر نمایش داده شود. هرگز در پیغام های خطای خود دقیقا مشخص نکنید که چه بخشی از اطلاعات نادرست است زیرا از آن طریق،  کار را برای هکرهایی که سعی در پیدا کردن این اطلاعات دارند، بسیار آسان تر خواهید نمود. برای مثال فرض کنید هکر سعی می کند تا انجام عملیات Bruteforce نام کاربری و پسورد مدیریت سایت شما را به دست آورد. پس از چندین بار تلاش، او می تواند از پیغام خطای نمایش داده شده، متوجه شود که نام کاربری را به درستی حدس زده و تنها رمز عبور را اشتباه وارد می کند، لذا از این پس می تواند تمام تمرکز خود را برای یافتن پسورد گذاشته و در مدت زمان کوتاه تری اطلاعات محرمانه شما را به سرقت ببرد.

 [تصویر:  Login-form-error-message.png]

پیغام های خطای خود را به صورت مبهم نمایش دهید

۵ – اعتبار سنجی سمت سرور و اعتبار سنجی فرم ها (Server side/Form Validation)

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

۶ – رمز های عبور

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

ممکن است کاربران عادی شما از اعمال چنین قوانین سخت گیرانه ای چندان خشنود نشوند اما اعمال قوانینی مانند الزام به انتخاب پسوردهایی با حداقل هشت کاراکتر و تشکیل شده از حروف بزرگ و کوچک انگلیسی، اعداد و نشانه ها می تواند کمک بسزایی در افزایش ضریب امنیتی حساب های کاربران نماید.

پسوردهای انتخاب شده برای تمامی حساب ها باید با مقادیر کدگذاری شده در پایگاه های داده نگهداری شوند. برای مثال می توانید پسوردهای خود را الگوریتم hashing مانند SHA ذخیره نمایید. با استفاده از این الگوریتم، در هر بار که کاربر پسورد خود را برای ورود به سیستم وارد می کند، در واقع تنها مقادیر کدشده بین کاربر و سرور جابجا می شوند و ردیابی آن ها به سادگی امکان پذیر نخواهد بود. همچنین می توان برای امنیت بیشتر سیستم احراز هویت از روش Salt نمودن پسوردها نیز استفاده کرد. روش Salt در هنگام ذخیره پسورد در پایگاه داده، مقدار رشته ای تصادفی را به آن اضافه خواهد کرد و در واقع رمز عبور کاربر را با کاراکترهای دیگر ترکیب کرده و سپس آن را ذخیره می کند. با استفاده از الگوریتم کدگذاری SHA و همچنین روش Salt به صورت ترکیبی می توان، از امنیت در ذخیره پسوردها اطمینان حاصل نمود. با این روش، حتی در صورتیکه هکرها به دیتابیس شما SQL Injection نیز نمایند، بازهم قادر به دستیابی به رمزهای عبور نیستند. همچنین برای حدس زدن و یافتن چنین پسوردهای حفاظت شده ای از طریق حملات Bruteforce نیز هکر ها به زمان بسیار زیاد و تجهیزات بسیار گران قیمتی نیازمندند.

خوشبختانه بسیاری از نرم افزارهای مدیریت محتوا با ارایه چنین راهکارهای امنیتی در هسته خود، امنیت لازم در بخش ورود کاربران به بخش مدیریت را فراهم نموده اند گرچه در برخی از آن ها نیز لازم است با استفاده از افزونه های موجود یا ماژول های امنیتی (مانند نرم افزار Drupal 7) مواردی مانند حداقل کاراکترهای لازم برای پسورد و عملیات Salt کردن پسوردها را به صورت دستی تنظیم نمود. همچنین در صورتی که از .Net برای طراحی وب سایت خود استفاده می کنید نیز می توانید با بهره گیری از Membership Provider ها موارد امنیتی بسیاری را تنظیم و امنیت برنامه خود را افزایش دهید.

۷ – آپلود فایل ها 

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

بنابراین در صورتیکه ناچارید تا در وب سایت خود از فرم آپلود فایل استفاده نمایید، آنگاه باید تمامی فایل های آپلود شده را به دقت زیرنظر گرفته و بازرسی کنید. در صورتیکه قصد دارید تا به کاربران تنها امکان آپلود تصویر برای پروفایل های خود را اعطا کنید، نمی توانید برای کنترل فایل ها تنها به محدودسازی فرمت فایل ها یا استفاده از MIME Type ها اکتفا کنید زیرا چنین مواردی به سادگی قابل جعل می باشند. حتی روش هایی مانند باز نمودن و خواند هدر فایل ها، یا استفاده از توابعی که سایز تصویر را بررسی می کنند نیز نمی توانند به صورت کامل قابل اعتماد باشند. اکثر فرمت های تصویری دارای قسمتی برای ذخیره نظریه (Comment) هستند که هکر ها می توانند با اضافه کردن کدهای PHP خود در این قسمت و آپلود تصویر مذکور، اسکریپت های مخرب خود را بر روی سرور شما به اجرا درآورند.

بنابراین شما باید به هر نحو ممکن کاربران را از اجرای هر فایلی بر روی سرور منع نمایید. البته وب سرورها معمولا فایل های دارای فرمت تصویری را اجرا نمی کنند اما در برخی از موارد دیده شده فایلی با نام  Image.jpg.php به عنوان تصویر شناخته شده و اجازه آپلود آن نیز صادر گشته است اما پس از آپلود شدن در سرور به اجرا درآمده و کدهای مخرب محتوای فایل نیز عملیات خود را آغاز نموده اند.

یکی از راه های بررسی موارد این چنینی، تغییر نام تمامی فایل ها برای اطمینان از فرمت آن هاست. همچنین در سیستم عامل لینوکس می توان با تغییر سطح دسترسی محل ذخیره سازی فایل های آپلود شده به ۰۶۶۶ از اجرای آن ها جلوگیری کرد. همچنین می توان با ساخت فایل .htaccess با محتوای زیر در سیستم عامل های لینوکس از اجرای فایل هایی که دو پسوند دارند (مانند مثال image.jpg.php) ممانعت به عمل آورد.

کد:
Deny from all

<files ~ “^w+.(gif|jpe?gpng)$”>

Order deny,allow

Allow from all

</files>

اما راه حل نهایی و قطعی که برای اطمینان از سلامت فایل های آپلود شده توصیه می شود، جلوگیری از دسترسی مستقیم به تمام فایل های آپلود شده توسط کاربر می باشد. با این روش تمامی  فایل های آپلود شده در پوشه ای خارج Webroot وب سایت یا در دیتابیس و به عنوان Blob ذخیره می گردند. در صورتیکه فایل های شما به صورت مستقیم قابل دسترس نباشند، آنگاه ناچارید تا با ایجاد اسکریپت هایی، آن ها را از پوشه ای خصوصی جمع آوری کرده (یا با استفاده از HTTP Handler در .Net) و سپس به مرورگر ، برای نمایش ارایه دهید. تگ های موجود در تصاویر از قابلیتی به نام Src پشتیبانی می کند که نیازی به اشاره مستقیم به یک URL برای یک تصویر ندارد. بنابراین می توانید در تگ Src، به جایURL مستقیم فایل عکس، آدرس اسکریپت خود که وظیفه پیدا نمودن تصاویر از پوشه خصوصی را دارد را وارد نمایید و سپس تنظیمات لازم را نیز در هدر HTTP انجام داده تا تصاویر به درستی  نمایش داده شوند.

برای مثال :

کد:
<img src=”/imageDelivery.php?id=1234″/>

<?php

//imageDelivery.php

// Fetch image filename from database based on $_Get[“id”]

….

// Deliver image to browser

Header(‘Content-type: image/gif’);

Readfile(‘images/’ .$filename);

?>

۸ – امنیت سرور

اکثرا شرکت های ارایه دهنده خدمات میزبانی وب، تمام موارد امنیتی لازم را برای محافظت از سرورهای خود و همچنین وب سایت شما انجام می دهند، اما در صورتیکه وب سایت خود را بر روی سرور اختصاصی شخصی خود راه اندازی نموده اید، باید به برخی از نکات توجه کنید.

حتما از فایروالی قدرتمند استفاده کنید و توسط آن تمامی پورت های غیر ضروری سرور را مسدود نمایید. در صورت امکان با استفاده از تنظیمات DMZ (Demilitarized Zone  ( تنها اجازه دسترسی به پورت های ۸۰ و ۴۴۳ را از دنیای خارج به سرور اعطا کنید. گرچه چنین تنظیمی تنها در صورتی امکان پذیر است که شما به سرور خود دسترسی لازم فیزیکی و یا از طریق شبکه LAN را داشته باشید، در غیر این صورت برای فراهم شدن امکان آپلود فایل و همچنین ریموت به سرور باید پورت های FTP، RDP یا SSH را نیز باز نگاه دارید.

همچنین در صورت امکان، دیتابیس خود را بر روی سروری مجزا از سرور وب نگه دارید، با اینکار اطلاعات دیتابیس شما به هیچ وجه از دنیای خارج قابل دستیابی نخواهد بود و تنها وب سرور است که می تواند به آنها دسترسی داشته باشد. با اینکار ریسک امنیتی دیتابیس به حداقل می رسد.

در پایان دسترسی فیزیکی به سرور خود را نیز برای تمامی افراد محدود سازید.

۹ – استفاده از SSL

SSL یک پروتکل امنیتی برای امن سازی فضای انتقال اطلاعات در اینترنت می باشد. بنابراین استفاده از این پروتکل در مواقعی که نیاز به انتقال اطلاعات شخصی و محرمانه کاربران بین وب سایت و وب سرور یا دیتابیس وجود دارد، می تواند موجب افزایش امنیت انتقال داده ها گردد. اهمیت استفاده از SSL از آنجاست که بسیاری از هکرها اطلاعات انتقال یافته بین سرور و وب سایت ها را ردیابی (Sniff) می کنند و در صورتیکه محیط این انتقال از امنیت کافی برخوردار نباشند، آنها می توانند به راحتی اطلاعات کاربری و شخصی هریک از کاربران را به سرقت ببرند.

[تصویر:  SSL.png]

نمونه ای از یک گواهینامه SSL که در سرویس ایمیل گوگل مورداستفاده قرار می گیرد.

۱۰ – استفاده از ابزارهای امنیتی

زمانی که تصور کردید تمامی راهکار های لازم و امکان پذیر را برای حفظ امنیت وب سایت خود به کار بسته اید، آنگاه زمان آن فرا می رسد تا امنیت وب سایت یا سرور خود را امتحان کنید. موثرترین روش انجام اینکار معمولا استفاده از ابزارهای امنیتی است که معمولا با نام آزمون نفود (Penetration Test) شناخته می شوند.

محصولات رایگان و همچنین تجاری بسیاری برای یاری به شما در این زمینه وجود دارند. این ابزار شبیه به اسکریپت های نوشته شده توسط هکر ها عمل می نمایند و تمامی احتمالات و ضعف های امنیتی وب سایت یا سرور شما را می سنجند تا در نهایت با یکی از متدهایی که قبلا توضیح داده شد، مانند SQL Injection به آن نفود نمایند.

برخی از محصولات رایگانی که به راحتی نیز قابل استفاده اند به شرح زیر می باشند :

–  Netsparker (که نسخه رایگان عمومی یا ۳۰ روزه آن در دسترسی می باشد) : مناسب برای امتحان کردن روش های حمله SQL Injection و XSS

–  OpenVAS  : این نرم افزار به عنوان یکی از پیشرفته ترین ابزارهای اسکنر امنیتی متن باز شناخته می شود.  مناسب برای اسکن بیش از ۲۵۰۰۰ نوع از آسیب پذیری های ممکن بوده اما راه اندازی آن می تواند برای افراد مبتدی تر کاری دشوار باشد و حتما به سرور OpenVAS نیازمند است که تنها در سیستم عامل لینوکس قابل نصب می باشد.

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

در صورتیکه مایلید تا یک قدم جلوتر بروید، آنگاه می توانید به صورت دستی نسبت به نفود به دیوار امنیتی خود با استفاده از تغییر مقادیر Post و Get اقدام نمایید. یک ابزار Debugging proxy می تواند با فراهم کردن امکان جداسازی این مقادیر در یک درخواست HTTP که بین مرورگر و سرور شما در حال انتقال است، به شما کمک کند. یکی از انواع رایگان  چنین ابزارهای محبوبی دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نام دارد.

ممکن است سوال کنید که چه مقادیری را در هر درخواست باید تغییر دهید ؟ برای مثال در صورتیکه سایت شما دارای صفحاتی است که تنها به کاربران احراز هویت شده نمایش داده می شود، آنگاه می توانید پارامترهای URL را با پارامتر دیگری مانند user id جابجا کنید و یا همچنین می توانید با تغییر مقادیر Cookie ها سعی در مشاهده جزئیات سایر کاربران نمایید. از دیگر محدوده هایی که ارزش امتحان کردن را دارند، فرم های وب سایت می باشند. با تغییر مقادیر POST می توان به ارسال کدهای لازم برای انجام عملیات XSS اقدام نمود و یا اسکریپت های مخرب Server Side را بر روی سرور آپلود کرد.

[تصویر:  security-tools-600x340.png]

استفاده از ابزار عیب یابی Proxy برای یافتن آسیب پذیری ها

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