امن نمودن HTTP به وسیله SSL
پورت ۴۴۳ چیست ؟
پورت ۴۴۳ برای امن نمودن HTTP استفاده میشود و تمام درخواست های https:// به پورت ۴۴۳ فرستاده میشوند و connection link نیز رمزنگاری خواهد شد. برای نصب https شما به گواهینامه SSL نیاز دارید (نصب OpenSSL) که پس از انجام این کارها میتوانید با تایپ آدرس های https://yoursite.com یا https://ipaddress/ به سایت ایمن خود متصل شوید.
گواهینامه ssl توسط CA امضا شود. (certificate authority) سایت شما به شکل یک قفل که نمایان گر امن بودن سایت شما است نمایش داده میشود.
---------- Post added at 05:57 PM ---------- Previous post was at 05:56 PM ----------
برای این کار ابتدا وارد SSH شده و فایل پیکربندی آن را با یکی از ویرایشگر ها مانند nano باز کنید:
nano /etc/ssh/sshd_config
۱- پورت SSH را تغییر دهید:
خط زیر را پیدا کرده:
# را از ابتدای آن برداشته و بجای ۲۲ یک عددی را به عنوان پورت SSH وارد کنید: به طور مثال
دقت داشته باشید که پورت جدید را در tcp_out و tcp_in فایروال خود قرار دهید.
۲- SSH از protocol2 استفاده کند:
خط زیر را پیدا کرده :
به خط زیر تغییردهید:
---------- Post added at 06:02 PM ---------- Previous post was at 05:57 PM ----------
راه های مقابله با حملات DOS/DDoS
شاید به جراًت بتوان گفت که مهم ترین دغدغه ی یک مدیر سرور مقابله با حملات DDOS/DOS است. در این پست قصد داریم چندین روش برای مقابله با این نوع حملات به شما ارائه دهیم. البته ناگفته نماند که هیچگاه نمیتوان به طور ۱۰۰% جلوی اینگونه از حملات را گرفت.
تمام عملیات های این پست به صورت نرم افزاری است.
۱- نصب و راه اندازی Dos_Deflate
این ابزار این قابلیت را به شما میدهد که بوسیله آن بتوانید یک سری اطلاعات از IP هایی که به سرور متصل هستند بدست بیاورید. که هر IP چند Connection دارد و این که هر IP چندتا Connectrion بتواند داشته باشد. همینطور شما میتوانید در تنظیمات این ابزار تعیین کنید که گزارش را به ایمیل شما ارسال کند.
دانلود کنید:
کد PHP:
[LEFT]wget http://www.inetbase.com/scripts/ddos/install.sh[/LEFT]
عملیات نصب را آغاز میکنیم:
کد PHP:
[LEFT]sh install.sh[/LEFT]
برای اجرا دستور زیر استفاده میکنیم:
کد PHP:
[LEFT]sh /usr/local/ddos/ddos.sh[/LEFT]
تنظیم DOS_Deflate :
فایل پیکربندی را با یک ویرایشگر باز میکنیم:
کد PHP:
nano /usr/local/ddos/ddos.conf
مقدار زیر را قرار پیدا و به صورت زیر ویرایش کرده:
کد PHP:
[LEFT]EMAIL_TO=”your_email@domain.com”[/LEFT]
بجای your_email@domain.com ایمیل خود را بنویسید، در این موقع، هر IP که Banned بشود به شما اخطار میدهد.
هر IP چه مقداردر دقیقه کانکشن داشته باشد:
کد PHP:
[LEFT]FREQ=5[/LEFT]
3 تا ۵ بهترین مقدار برای این پارامتر هست.
بیشترین connection که هر IP میتواند داشته باشد را مشخص کنید:
کد PHP:
[LEFT]NO_OF_CONNECTIONS=100[/LEFT]
مقدار بین ۱۰۰ تا ۲۰۰ میتواند بهترین مقدار باشد.
در Dos_Deflate توسط APF بن کنید:
اگر فایروال APF نصب دارید میتوانید این مقدار را برابر با یک قرار دهید. اگر نه توسط CSF یا … عملیات Ban کردن را انجام میدهید برابر با صفر قرار دهید.
کد PHP:
[LEFT]APF_BAN=0[/LEFT]
اگر میخواهید IP مورد نظر توسط DOS_Deflate بن شود مقدار زیر را برابر با یک قرار دهید در غیر این صورت صفر بگذارید
کد PHP:
[LEFT]KILL=1[/LEFT]
IP Address های متخلف چه مقدار در حالت معلق باقی بمانند؟
بهترین مقدار ۳۰۰ تا ۱۱۰۰ است.
۲- بهینه سازی وب سرور Apache :
البته پیشنهاد ما این است که شما از وب سرور های قدرتمند دیگری همچون Litespeed یا nginx استفاده کنید.
ابتدا با دستور زیر فایل پیکربندی آپاچی وب سرور را پیدا کنید:
کد PHP:
locate httpd.conf
مقدار Timeout را کمتر کنید:
توضیحات تمام این پارامتر ها در مقاله آموزش وب سرور فارسی (نوشته پیمان قربانی) داده شده است. اما در این پست به طور خلاصه توضیح میدهیم.
کد PHP:
[LEFT]Timeout 200[/LEFT]
مقدار KeepAliveTime را کمتر کنید:
KeepAliveTime به معنای حداکثر انتظار وب سرور برای پاسخ به کاربر میباشد.
قابلیت KeepAlive را خاموش کنید:
KeepAlive Off اگریک Connection بیشتر از یک درخواست دارد به طور مدام به آن اجازه ندهد. در واقع KeepAlive وظیفه اش زنده نگه داشتن Connection است.
مقدار MaxClients را کمتر کنید:
MaxClients به معنای : بیشترین تعداد پروسس هایی که هر Client میتواند داشته باشد.
کد PHP:
[LEFT]MaxClients 50[/LEFT]
نصب و پیکربندی mod_evasive
یکی از راه های مقابله با حملات Dos استفاده از mod_evasive است. این ابزار یک ماژول تحت Apache و برای سرورهای لینوکس است که درخواست ها را کنترل می کند و از جاری شدن سیل عظیم آن (Flood) جلوگیری می کند. این کار بر اساس تعداد درخواست های مجاز تعیین شده در بخش تنظیمات صورت می گیرد. این ماژول آدرس IP که بیش از حد مجاز درخواست می فرستد را بصورت پیش فرض برای ۱۰ دقیقه مسدود (Block) می کند که این مقدار نیز قابل تغییر است.
mod_evasive نسخه به روز شده همان ماژول mod_dosevasive است که در تاریخ Feb 1 2005 بصورت استفاده عمومی ارائه شده است.
نکته: این ماژول مشکلاتی را با Frontpage Server Extensions دارد و احتمال از کار انداختن آن را ایجاد می کند.
در ضمن پیشنهاد میشود Frontpage بر روی سرور خود پاک و یا غیر فعال کنید.
کد PHP:
[LEFT]cd /usr/local/src
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
apxs -cia mod_evasive20.c[/LEFT]
در فایل پیرکبرندی وب سرور آپاچی httpd.conf مقادیر زیر را قرار دهید:
اگر نسخه آپاچی شما ۲٫۰٫x هست :
کد PHP:
[LEFT]<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IfModule>[/LEFT]
اگر نسخه آپاچی وب سرور شما ۱٫۰x هست:
کد PHP:
[LEFT]<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>[/LEFT]
سپس وب سرور خود را restart دهید.
کد PHP:
service httpd restart
3- دیواره آتشین نصب کنید.
اگر از CSF استفاده میکنید ، میتوانید تنظیمات زیر را اعمال نمایید:
وارد تنظیمات فایروال شوید،
کد PHP:
[LEFT]CT_LIMIT =[/LEFT]
تعداد کانکشن هایی که هر کلاینت با هر IP میتواند داشته باشد را تعیین میکند.
کد PHP:
[LEFT]CT_INTERVAL =[/LEFT]
هر چه مدت، چه مدت دیواره آتشین شما کانکشن ها و وضعیت را بررسی کند.
کد PHP:
[LEFT]CT_EMAIL_ALERT[/LEFT]
هر IP که بن میشود یا .. به شما گزارش بدهد یا خیر (از طریق ایمیل)
کد PHP:
[LEFT]CT_PERMANENT[/LEFT]
این مقدار را اگ برابر با صفر قراردهید هر IP نمیتواند به طور همیشه بن باشد. اگر یک قرار دهید . هر IP که بن میشود واسه همیشه بن خواهد شد.
IP که بن میشود چه مدت معلق بماند؟! مقدار ۱۸۰۰ یا ۵۰۰ مقداری خوبی است.
کد PHP:
CT_SKIP_TIME_WAIT
برابر با صفر باشد.
آمار از سرور به شما ارائه میدهد. اینکه هر IP چند کانکشن دارد و …
پورت ها را با , از هم جدا کنید. مثلا: ۸۰,۴۴۳,۲۵
۴- یافتن حملات و درخواست هایی از نوع sync
کد PHP:
netstat -an|grep :80
با دستور فوق تمام کانکشن هایی که به پورت ۸۰ وصل هستند را نمایش میدهد ، سپس دستور زیر را وارد میکنیم تا ببنیم کجا با SYN_RECV شروع شده است
کد PHP:
netstat -an|grep SYN_RECV
تعداد کانکشن های آپاجی و تعداد کانکشن های SYN_RECV :
کد PHP:
netstat -an|grep :80|wc -l
کد PHP:
netstat -an|grep SYN_RECV|wc -l
---------- Post added at 06:03 PM ---------- Previous post was at 06:02 PM ----------
راه های مقابله با حملات DOS/DDoS
شاید به جراًت بتوان گفت که مهم ترین دغدغه ی یک مدیر سرور مقابله با حملات DDOS/DOS است. در این پست قصد داریم چندین روش برای مقابله با این نوع حملات به شما ارائه دهیم. البته ناگفته نماند که هیچگاه نمیتوان به طور ۱۰۰% جلوی اینگونه از حملات را گرفت.
تمام عملیات های این پست به صورت نرم افزاری است.
۱- نصب و راه اندازی Dos_Deflate
این ابزار این قابلیت را به شما میدهد که بوسیله آن بتوانید یک سری اطلاعات از IP هایی که به سرور متصل هستند بدست بیاورید. که هر IP چند Connection دارد و این که هر IP چندتا Connectrion بتواند داشته باشد. همینطور شما میتوانید در تنظیمات این ابزار تعیین کنید که گزارش را به ایمیل شما ارسال کند.
دانلود کنید:
کد PHP:
[LEFT]wget http://www.inetbase.com/scripts/ddos/install.sh[/LEFT]
عملیات نصب را آغاز میکنیم:
کد PHP:
[LEFT]sh install.sh[/LEFT]
برای اجرا دستور زیر استفاده میکنیم:
کد PHP:
[LEFT]sh /usr/local/ddos/ddos.sh[/LEFT]
تنظیم DOS_Deflate :
فایل پیکربندی را با یک ویرایشگر باز میکنیم:
کد PHP:
nano /usr/local/ddos/ddos.conf
مقدار زیر را قرار پیدا و به صورت زیر ویرایش کرده:
کد PHP:
[LEFT]EMAIL_TO=”your_email@domain.com”[/LEFT]
بجای your_email@domain.com ایمیل خود را بنویسید، در این موقع، هر IP که Banned بشود به شما اخطار میدهد.
هر IP چه مقداردر دقیقه کانکشن داشته باشد:
کد PHP:
[LEFT]FREQ=5[/LEFT]
3 تا ۵ بهترین مقدار برای این پارامتر هست.
بیشترین connection که هر IP میتواند داشته باشد را مشخص کنید:
کد PHP:
[LEFT]NO_OF_CONNECTIONS=100[/LEFT]
مقدار بین ۱۰۰ تا ۲۰۰ میتواند بهترین مقدار باشد.
در Dos_Deflate توسط APF بن کنید:
اگر فایروال APF نصب دارید میتوانید این مقدار را برابر با یک قرار دهید. اگر نه توسط CSF یا … عملیات Ban کردن را انجام میدهید برابر با صفر قرار دهید.
کد PHP:
[LEFT]APF_BAN=0[/LEFT]
اگر میخواهید IP مورد نظر توسط DOS_Deflate بن شود مقدار زیر را برابر با یک قرار دهید در غیر این صورت صفر بگذارید
کد PHP:
[LEFT]KILL=1[/LEFT]
IP Address های متخلف چه مقدار در حالت معلق باقی بمانند؟
بهترین مقدار ۳۰۰ تا ۱۱۰۰ است.
۲- بهینه سازی وب سرور Apache :
البته پیشنهاد ما این است که شما از وب سرور های قدرتمند دیگری همچون Litespeed یا nginx استفاده کنید.
ابتدا با دستور زیر فایل پیکربندی آپاچی وب سرور را پیدا کنید:
کد PHP:
locate httpd.conf
مقدار Timeout را کمتر کنید:
توضیحات تمام این پارامتر ها در مقاله آموزش وب سرور فارسی (نوشته پیمان قربانی) داده شده است. اما در این پست به طور خلاصه توضیح میدهیم.
کد PHP:
[LEFT]Timeout 200[/LEFT]
مقدار KeepAliveTime را کمتر کنید:
KeepAliveTime به معنای حداکثر انتظار وب سرور برای پاسخ به کاربر میباشد.
قابلیت KeepAlive را خاموش کنید:
KeepAlive Off اگریک Connection بیشتر از یک درخواست دارد به طور مدام به آن اجازه ندهد. در واقع KeepAlive وظیفه اش زنده نگه داشتن Connection است.
مقدار MaxClients را کمتر کنید:
MaxClients به معنای : بیشترین تعداد پروسس هایی که هر Client میتواند داشته باشد.
کد PHP:
[LEFT]MaxClients 50[/LEFT]
نصب و پیکربندی mod_evasive
یکی از راه های مقابله با حملات Dos استفاده از mod_evasive است. این ابزار یک ماژول تحت Apache و برای سرورهای لینوکس است که درخواست ها را کنترل می کند و از جاری شدن سیل عظیم آن (Flood) جلوگیری می کند. این کار بر اساس تعداد درخواست های مجاز تعیین شده در بخش تنظیمات صورت می گیرد. این ماژول آدرس IP که بیش از حد مجاز درخواست می فرستد را بصورت پیش فرض برای ۱۰ دقیقه مسدود (Block) می کند که این مقدار نیز قابل تغییر است.
mod_evasive نسخه به روز شده همان ماژول mod_dosevasive است که در تاریخ Feb 1 2005 بصورت استفاده عمومی ارائه شده است.
نکته: این ماژول مشکلاتی را با Frontpage Server Extensions دارد و احتمال از کار انداختن آن را ایجاد می کند.
در ضمن پیشنهاد میشود Frontpage بر روی سرور خود پاک و یا غیر فعال کنید.
کد PHP:
[LEFT]cd /usr/local/src
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
apxs -cia mod_evasive20.c[/LEFT]
در فایل پیرکبرندی وب سرور آپاچی httpd.conf مقادیر زیر را قرار دهید:
اگر نسخه آپاچی شما ۲٫۰٫x هست :
کد PHP:
[LEFT]<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IfModule>[/LEFT]
اگر نسخه آپاچی وب سرور شما ۱٫۰x هست:
کد PHP:
[LEFT]<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>[/LEFT]
سپس وب سرور خود را restart دهید.
کد PHP:
service httpd restart
3- دیواره آتشین نصب کنید.
اگر از CSF استفاده میکنید ، میتوانید تنظیمات زیر را اعمال نمایید:
وارد تنظیمات فایروال شوید،
کد PHP:
[LEFT]CT_LIMIT =[/LEFT]
تعداد کانکشن هایی که هر کلاینت با هر IP میتواند داشته باشد را تعیین میکند.
کد PHP:
[LEFT]CT_INTERVAL =[/LEFT]
هر چه مدت، چه مدت دیواره آتشین شما کانکشن ها و وضعیت را بررسی کند.
کد PHP:
[LEFT]CT_EMAIL_ALERT[/LEFT]
هر IP که بن میشود یا .. به شما گزارش بدهد یا خیر (از طریق ایمیل)
کد PHP:
[LEFT]CT_PERMANENT[/LEFT]
این مقدار را اگ برابر با صفر قراردهید هر IP نمیتواند به طور همیشه بن باشد. اگر یک قرار دهید . هر IP که بن میشود واسه همیشه بن خواهد شد.
IP که بن میشود چه مدت معلق بماند؟! مقدار ۱۸۰۰ یا ۵۰۰ مقداری خوبی است.
کد PHP:
CT_SKIP_TIME_WAIT
برابر با صفر باشد.
آمار از سرور به شما ارائه میدهد. اینکه هر IP چند کانکشن دارد و …
پورت ها را با , از هم جدا کنید. مثلا: ۸۰,۴۴۳,۲۵
۴- یافتن حملات و درخواست هایی از نوع sync
کد PHP:
netstat -an|grep :80
با دستور فوق تمام کانکشن هایی که به پورت ۸۰ وصل هستند را نمایش میدهد ، سپس دستور زیر را وارد میکنیم تا ببنیم کجا با SYN_RECV شروع شده است
کد PHP:
netstat -an|grep SYN_RECV
تعداد کانکشن های آپاجی و تعداد کانکشن های SYN_RECV :
کد PHP:
netstat -an|grep :80|wc -l
کد PHP:
netstat -an|grep SYN_RECV|wc -l
---------- Post added at 06:08 PM ---------- Previous post was at 06:03 PM ----------
مدیریت Connection در لینوکس
در هنگام حملات به سرور شما می توانید از دستور زیر در SSH سرور خود برای نمایش تعداد Connection هایی که هر IP به خود اختصاصی داده است استفاده کنید .
netstat -anp |grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
و پس از آن IP هایی که بیشتر از ۳۰۰ Connection را به خود اختصاص داده اند را از سرور بیرون به اندازید که دستور زیر این امر را انجام می دهد .
iptables -I INPUT -s 83.135.33.116 -j DROP
83.135.33.116 همان IP مورد نظر شماست که Connection بالایی را به خود اختصاص داده است و به جای آن IP مربوطه را تایپ می کنید .