نحوه نصب و راه اندازي فايروال APF
در اين مقاله با نحوه نصب، راه اندازي و تنظيمات اوليه فايروال Advanced Policy Firewall كه با نام APF شناخته مي شود آشنا خواهيد شد.
فايروال APF يك ديواره آتشي مبتني بر iptables است كه براي رشته سيستم عامل هاي لينوكس طراحي شده است. APF يكي از قدرتمندترين فايروال هاي سيستم عامل لينوكس شناخته مي شود و استفاده از اين نرم افزار كاملاً رايگان است.
APF توسط شبكه R-fx توسعه داده شده و نگهداري مي شود.
اين مقاله آموزشي نحوه نصب و تنظيمات APF را براي شما توضيح مي دهد. پيشنهاد مي شود قبل از هرگونه اقدامي، اطلاعاتي را در رابطه با فايروال هاي لينوكسي كسب كنيد.
موارد مورد نياز:
- دسترسي با يوزر Root بصورت SSH به سرور مورد نظر
قبل از شروع:
- از طريق SSH بوسيله بر نامه اي مانند PuttY به سرور مورد نظر وصل شده و دسترسي خود بصورت Root بودن را با دستور su تست و در صورت نياز ارتقاء دهيد.
مراحل نصب و پيكربندي APF:
1- با استفاده از دستور cd به شاخه اي كه مي خواهيد فايل هاي برنامه را در آن قرار دهيد وارد شويد.
2- با استفاده از دستور Wget آخرين نسخه برنامه را در شاخه مورد نظر دانلود كنيد:
کد:
کد PHP:
wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
3- با استفاده از دستور مقابل فايل دانلود شده را از حالت فشرده خارج كنيد:
کد:
کد PHP:
tar -xvzf apf-current.tar.gz
4- با استفاده از دستور cd به شاخه unzip شده وارد شويد.
5- عمل نصب را با استفاده از دستور زير شروع كنيد:
کد:
پس از وارد كردن دستور بالا پيام هاي زير نمايش داده مي شود:
کد:
کد PHP:
Installing APF 0.9.7-1: Completed.
Installation Details:
Install path: /etc/apf/
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf
AntiDos install path: /etc/apf/ad/
AntiDos config path: /etc/apf/ad/conf.antidos
DShield Client Parser: /etc/apf/extras/dshield/
6- با استفاده از دستور زير سراغ Config و پيكربندي فايروال APF مي رويم:
کد:
کد PHP:
pico /etc/apf/conf.apf
کد PHP:
nano /etc/apf/conf.apf
نكته: تنظيماتي كه در اينجا آموزش داده مي شود كامل نيستند و براي اطلاعات بيشتر مي توانيد به فايل Read Me خود برنامه مراجعه كنيد.
7- پايگاه اينترنتي DShield.org مرجع مناسبي براي شناسائي شبكه هاي خرابكار و بستن دسترسي آنها به سرور شما است. براي اينكه فايروال APF از ديتابيس اين سايت براي جلوگيري از دسترسي خرابكاران شناسائي شده و معروف به سرور شما استفاده كند، كافي است تنظيمات بخش USE_DS=0 را از 0 به 1 تغيير دهيد.
8- تعريف پورت هاي مجاز براي CPanel:
کد:
کد PHP:
Common ingress (inbound) ports
# Common ingress (inbound) TCP ports -3000_3500 = passive port range for Pure FTPD
IG_TCP_CPORTS="21,22,25,53,80,110,143,443,2082,208 3, 2086,2087, 2095, 2096,3000_3500"
#
# Common ingress (inbound) UDP ports
IG_UDP_CPORTS="53"
Common egress (outbound) ports
# Egress filtering [0 = Disabled / 1 = Enabled]
EGF="1"
# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,25,80,443,43,2089"
#
# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53"
نكته: پورت هاي ذكر شده بسته به نياز شما قابل حذف، افزايش و تغيير است.
9- از محيط ويرايش خارج شده و براي شروع به كار فايروال APF از دستور زير در خط فرمان استفاده مي كنيم:
کد:
کد PHP:
/usr/local/sbin/apf -s
نكته: براي آشنائي به ديگر Command هاي فايروال APF مي توانيد در خط فرمان از دستور زير استفاده كنيد:
کد:
کد PHP:
/usr/local/sbin/apf -h
10- فايروال APF پس از نصب يك زمانبندي براي شما مي سازد كه بعد از 5 دقيقه Restart مي شود. شما مي توانيد براي كارائي بهتر فايروال اين زمان را به صفر تغيير دهيد. براي اين منظور كافي است با استفاده از دستور pico /etc/apf/conf.apf به تنظيمات APF رفته و گزينه DEVM=1 را از 1 به صفر تغيير دهيد.
11- تنظيمات آنتي داس (Anti Dos) براي فايروال APF:
در فايروال APF به منظور جلوگيري از حملات موسوم به DDos بخشي با عنوان AntiDos در مسير /etc/apf/ad قرار داده شده است براي ورود به پيكربندي آن از دستور زير مي توانيد استفاده كنيد:
کد:
کد PHP:
pico /etc/apf/ad/conf.antidos
کد PHP:
nano /etc/apf/ad/conf.antidos
* در قسمت CONAME=Your Company به جاي Your Company مي توانيد نام شركت خود را قرار دهيد.
* براي اينكه هنگام حمله اطلاعات آن براي شما ارسال شود در قسمت USR_ALERT=0 عدد صفر را به يك تغيير دهيد.
* آدرس ايميلي كه قرار است اطلاعات حمله به آن ارسال شود را در قسمت USR=your@email.com و بجاي your@email.com قرار دهيد.
نكته: پس از تغييرات، ذخيره و خروج از بخش تنظيمات AntiDos، حتماً يكبار فايروال APF را با استفاده از دستور زير Restart كنيد:
کد:
کد PHP:
/usr/local/sbin/apf -r
12- براي بررسي Log هاي فايروال مي توانيد از tail -f /var/log/apf_log استفاده كنيد.
13- براي اينكه APF در هر بار Reboot شدن سيستم بصورت خودكار اجراء شود، دستور زير را در خط فرمان بنويسيد:
کد:
کد PHP:
chkconfig --level 2345 apf on
14- براي بستن و Block كردن يك آدرس IP در فايروال APF از دستور زير استفاده كنيد:
کد:
کد PHP:
/etc/apf/apf -d IPHERE
نكته: ليست IP هاي مسدود شده در مسير /etc/apf/deny_hosts.rules قرار دارد.
15- براي باز كردن يك آدرس IP مسدود شده در فايروال APF از دستور زير استفاده كنيد:
کد:
کد PHP:
/etc/apf/apf -u IPHERE
منبع : {آموزش} نحوه نصب و راه اندازي فايروال apf - PersianAdmins
---------- Post added at 01:54 PM ---------- Previous post was at 01:50 PM ----------
همانطوری که میدانید مقابل حملاتی از قبیل dos,ddos را به طور ۱۰۰% نمیتوان گرفت، هیچ سروری در مقابل این گونه حملات پایدارو امن نیست . این اسکریپت پورت ۸۰ سرور را از نظر تعداد اتصالاتی که به آن وصل شده است چک و بررسی میکند که باعث میشود ادمین(مدیر) سرور سریعتر به حل مشکل بپردازد.
برای نصب مراحل زیر را دنبال میکنیم…
۱- ابتدا وارد SSH به وسیله کاربر ریشه rootشوید.
۲- اسکریپت را دریافت میکنیم:
کد PHP:
wget http://www.inetbase.com/scripts/ddos/install.sh
3- نصب را آغاز میکنیم:
یا
نصب به اتمام رسید،
برای اجرای این اسکریپت دستورات زیر را به ترتیب وارد میکنیم:
کد PHP:
cd /usr/local/ddos/
برای ویرایش فایل پیکربندی اسکریپت :
کد PHP:
nano /usr/local/ddos/ddos.conf
---------- Post added at 01:56 PM ---------- Previous post was at 01:54 PM ----------
دستورات زیر را دنبال کنید
ابتدا فایل را دانلود میکنیم
کد PHP:
wget http://www.configserver.com/free/csf.tgz
فشردگی خارج میکنیم
وارد دایرکتوری این برنامه میشویم:
نصب را آغاز میکنیم:
برای غیر فعال کردن APF+BFD از دستور زیر استفاده نمایید:
کد PHP:
sh disable_apf_bfd.sh
آدرس پیکربندی فایروال:
برخی از تنظیمات این فایروال، مختص عزیزانی که از کنترل پنل هاستینگ همچون Cpanel,directadmin استفاده میکنند:
روی دکمه Firewall Configuration کلیک نمایید
سپس تغییرات زیر را اعمال نمایید:
که اگر سرور مجازی هستید بجای مقدار بالا venet0 رو قرار دهید
TCP_IN/TCP_OUT/UDP_IN/UDP_OUT= این مربوط به پورت هاتون میشه
فیلد های زیر هم دارای این مقادیر باشند
کد PHP:
[LEFT]MONOLITHIC_KERNEL= 1
LF_DSHIELD= 86400
LF_SCRIPT_ALERT= 1
LF_SCRIPT_LIMIT= 250[/LEFT]
[LEFT]TESTING = 0[/LEFT]
دکمه Changes کلیک نمایید و سپس برای ریستارت کردن فایروال روی دکمه Restarting csf+lfd کلیک نمایید.
---------- Post added at 01:58 PM ---------- Previous post was at 01:56 PM ----------
چگونه میتوانیم در IPtables ای پی بن کنیم!؟
برای بن کردن ای پی دستور زیر را وارد نمایید:
کد PHP:
iptables -A INPUT -p all -s IPHERE/32 -j DROP
برای خارج کردن از بن :
کد PHP:
iptables -D INPUT -p all -s IPHERE/32 -j DROP
چه ای پی هایی به سرور متصل هستن؟
با دستور زیر ۵ ای پی اخر رو میتونین ببینین:
کد PHP:
netstat -atnp -A inet | grep “:80″ | awk -F ” ” ‘{print $5} ‘ | awk -F “:” ‘{print $1}’ | sort | uniq -c | sort -nr | head -5
برای گرفتن لیست تمام ای پی ها دستور های زیر را بزنین :
کد PHP:
netstat -nap | grep ESTABLISHED | wc -l
کد PHP:
netstat -nap | grep SYN | wc -l
کد PHP:
netstat -nap | grep TIME_WAIT | wc -l
توضیحات :
بجای IPHERE ای پی مورد نظر را وارد نمایید ….
---------- Post added at 02:07 PM ---------- Previous post was at 01:58 PM ----------
ده نکته برای امنیت بیشتر در سرورهای لینوکس
۱- از کلمات عبور پیچیده استفاده کنید
کلمات عبور ساده بزرگترین مشکل امینتی را برای سرور شما به وجود می آورند. داشتن کلمات عبور امن و پیچیده (چه برای خود سرور و چه برای کاربرانی که روی سرور قرار دارند) بسیار با اهمیت است.به عنوان مثال اگر کاربر شما ازکلمه ی عبور ی استفاده کند که به راحتی توسط هکر ها قابل حدث زدن باشد در وحله ی اول باعث deface شدن سایت خود شده و اعتبار شرکت شما رو زیر سوال می برد دوم ممکن است از طریق این سایت برای ارسال ویروس و هرزنامه استفاده بشه یا بویسله ی local exploit ها به بقیه سایت ها آسیب برسونه.
* شما می تونید با ویرایش تنظیمات مربوط به کلمات عبور در فایل /etc/login.defs بر اساس نوع کار شما با سرور و درجه ی امنیتی که برای خود در نظر می گیرید کاربران مجبور به داشتن کلمات عبور ایمن کنید.توضیحات کامل در مورد هر یک از پارامتر های فایل login.defs داخل خود فایل و در بالای هر کدام از پارامتر ها موجود می باشد.
معمولا کلمات عبور باید حداقل ۸ حرفی و شامل حرف – عدد و علائم باشند. هیچ وقت از کلمات معنی دار یا تاریخ های مهم استفاده نکنید. اگر می خواهید امن بودن کلمه عبور خود را بررسی کنید می تونید اون را با استفاده از این نرم افزار (John the Ripper password cracker) تست کنید . اگر ظرف ? – ? ساعت کلمه عبور شما crack شد یعنی کلمه عبور شما امن نیست.
همین سایت یک ابزار دیگه برای بررسی طول کلمات عبور کاربران سرور ساخته است بوسیله ی (passwdqc - password/passphrase strength checking and policy enforcement toolset for your servers and software) می توانید لیست کاربرانی که از کمات عبور نا امن استفاده میکنند را پیدا کنید و به آنها هشدار دهید .
?- پروتکل 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 موثره .
---------- Post added at 02:07 PM ---------- Previous post was at 02:07 PM ----------
ده نکته برای امنیت بیشتر در سرورهای لینوکس
۱- از کلمات عبور پیچیده استفاده کنید
کلمات عبور ساده بزرگترین مشکل امینتی را برای سرور شما به وجود می آورند. داشتن کلمات عبور امن و پیچیده (چه برای خود سرور و چه برای کاربرانی که روی سرور قرار دارند) بسیار با اهمیت است.به عنوان مثال اگر کاربر شما ازکلمه ی عبور ی استفاده کند که به راحتی توسط هکر ها قابل حدث زدن باشد در وحله ی اول باعث deface شدن سایت خود شده و اعتبار شرکت شما رو زیر سوال می برد دوم ممکن است از طریق این سایت برای ارسال ویروس و هرزنامه استفاده بشه یا بویسله ی local exploit ها به بقیه سایت ها آسیب برسونه.
* شما می تونید با ویرایش تنظیمات مربوط به کلمات عبور در فایل /etc/login.defs بر اساس نوع کار شما با سرور و درجه ی امنیتی که برای خود در نظر می گیرید کاربران مجبور به داشتن کلمات عبور ایمن کنید.توضیحات کامل در مورد هر یک از پارامتر های فایل login.defs داخل خود فایل و در بالای هر کدام از پارامتر ها موجود می باشد.
معمولا کلمات عبور باید حداقل ۸ حرفی و شامل حرف – عدد و علائم باشند. هیچ وقت از کلمات معنی دار یا تاریخ های مهم استفاده نکنید. اگر می خواهید امن بودن کلمه عبور خود را بررسی کنید می تونید اون را با استفاده از این نرم افزار (John the Ripper password cracker) تست کنید . اگر ظرف ? – ? ساعت کلمه عبور شما crack شد یعنی کلمه عبور شما امن نیست.
همین سایت یک ابزار دیگه برای بررسی طول کلمات عبور کاربران سرور ساخته است بوسیله ی (passwdqc - password/passphrase strength checking and policy enforcement toolset for your servers and software) می توانید لیست کاربرانی که از کمات عبور نا امن استفاده میکنند را پیدا کنید و به آنها هشدار دهید .
?- پروتکل 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 موثره .
---------- Post added at 02:10 PM ---------- Previous post was at 02:07 PM ----------
۵- غیر فعال کردن 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 کلیه فایل های مربوط به سیستم را چک می کنه و در صورتی که این فایل ها تغییر کند به شما هشدار می دهد.
Tripwire, Inc - Take Control of IT Security and Compliance or Open Source Tripwire
* Chrookit – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
chkrootkit -- locally checks for signs of a rootkit
* Rkhunter – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
Rootkit Hunter
* Logwatch – نرم افزاری برای بررسی لوگ ها و فعالیت های سرور به صورت روزانه و تهیه گزارش کامل برای شما
kaybee.org
9- حتما یک firewall نرم افزاری داشته باشید !!
اگر firewall سخت افزاری هم دارید باید یک فایروال جداگانه روی سرور داشته باشید .
با استفاده از firewall می تونید لیست پورت هایی که استفاده نمی شوند رو محدود کنید و با این کار حجم زیادی از نرم افزار های backdoor و … را از کار بیاندازید . همچنین با استفاده از firewall می توانید ادرس های ip خاصی را block کنید و حتی در مقابل حملات ddos اسیب ناپذیر باشید.
در زیر لیست پورت های مورد نیاز cpanel امده است( اگر سرویس دیگری ندارید می توانید بقیه پورت ها را به غیر از این ها ببندید . چون نیازی به انها ندارید ) : cPanel & WHM FAQ
بهترین firewall از نظر من روی cpanel هم نصب میشه و خوب جواب میده همون APF هست که با rule های خود لینوکس iptables کار می کنه.
اگر شما هم با این نرم افزار کار می کنید اینجا رو مطالعه کنید : cPanel & WHM FAQ
10 - همیشه بروز باشید
۸۰ در صد مشکلات امینتی در روز های اول عمرشون براشون patch و update امنیتی میاد یعنی یک bug هرچقدر هم که underground باشد بالاخره براش patch نوشته می شود پس سعی کنید که همیشه از آخرین نسخه های نرم افزار استفاده کنید . نسخه ی کرنل حداقل هر ۲ ماه یک بار باید بروز بشه بقیه نرم افزار ها باید هر هفته چک بشن و در صورت لزوم update بشوند. خود cpanel باید هر روز updateشود به دلیل اینکه هر روز شرکت سی پنل به روز می شود .
---------- Post added at 02:10 PM ---------- Previous post was at 02:10 PM ----------
۵- غیر فعال کردن 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 کلیه فایل های مربوط به سیستم را چک می کنه و در صورتی که این فایل ها تغییر کند به شما هشدار می دهد.
Tripwire, Inc - Take Control of IT Security and Compliance or Open Source Tripwire
* Chrookit – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
chkrootkit -- locally checks for signs of a rootkit
* Rkhunter – نرم افزاری برای پیدا کردن trojan – backdoor و غیره بر روی سرور.
Rootkit Hunter
* Logwatch – نرم افزاری برای بررسی لوگ ها و فعالیت های سرور به صورت روزانه و تهیه گزارش کامل برای شما
kaybee.org
9- حتما یک firewall نرم افزاری داشته باشید !!
اگر firewall سخت افزاری هم دارید باید یک فایروال جداگانه روی سرور داشته باشید .
با استفاده از firewall می تونید لیست پورت هایی که استفاده نمی شوند رو محدود کنید و با این کار حجم زیادی از نرم افزار های backdoor و … را از کار بیاندازید . همچنین با استفاده از firewall می توانید ادرس های ip خاصی را block کنید و حتی در مقابل حملات ddos اسیب ناپذیر باشید.
در زیر لیست پورت های مورد نیاز cpanel امده است( اگر سرویس دیگری ندارید می توانید بقیه پورت ها را به غیر از این ها ببندید . چون نیازی به انها ندارید ) : cPanel & WHM FAQ
بهترین firewall از نظر من روی cpanel هم نصب میشه و خوب جواب میده همون APF هست که با rule های خود لینوکس iptables کار می کنه.
اگر شما هم با این نرم افزار کار می کنید اینجا رو مطالعه کنید : cPanel & WHM FAQ
10 - همیشه بروز باشید
۸۰ در صد مشکلات امینتی در روز های اول عمرشون براشون patch و update امنیتی میاد یعنی یک bug هرچقدر هم که underground باشد بالاخره براش patch نوشته می شود پس سعی کنید که همیشه از آخرین نسخه های نرم افزار استفاده کنید . نسخه ی کرنل حداقل هر ۲ ماه یک بار باید بروز بشه بقیه نرم افزار ها باید هر هفته چک بشن و در صورت لزوم update بشوند. خود cpanel باید هر روز updateشود به دلیل اینکه هر روز شرکت سی پنل به روز می شود .
---------- Post added at 02:15 PM ---------- Previous post was at 02:10 PM ----------
افزایش امنیت سرور با RkHunter
این ابزار برای چک کردن سرور در مقابل trojan , rootkits و سایر مشکلات امنیتی استفاده میشود.. در این پست قصد آموزش نصب این ابزار به همراه تنظیمات اولیه (همچون ارائه خبر به صورت روزانه) را داریم… با ما همراه باشید
آموزش نصب
۱- وارد ssh شوید
۲- دستور زیر را برای دریافت این ابزار استفاده میکنیم
کد PHP:
wget http://sourceforge.net/projects/rkhunter
3- فشردگی در میاوریم
کد PHP:
tar -zxvf rkhunter-1.3.6.tar.gz
4- نصب را آغاز میکنیم
کد PHP:
./installer.sh –install
نصب به اتمام رسید
برای تست این ابزار
کد PHP:
/usr/local/bin/rkhunter -c
rkhunter به شما گزارش دهد:
کد PHP:
nano /etc/cron.daily/rkhunter.sh
سپس ایمیل خود را به جای email@domain.com قرار بدهید
کد PHP:
(/usr/local/bin/rkhunter -c –cronjob 2>&1 | mail -s “Daily Rkhunter Scan Report” email@domain.com)
یا میتوانید اسکریپت زیر را کپی کنید:
کد PHP:
#!/bin/sh
(
/usr/local/bin/rkhunter –versioncheck
/usr/local/bin/rkhunter –update
/usr/local/bin/rkhunter –cronjob \
–report-warnings-only
) | /bin/mail -s “rkhunter output” email@domain.com
تنظیم مجوز
کد PHP:
chmod +x /etc/cron.daily/rkhunter.sh
آپگرید rkhunter
---------- Post added at 02:18 PM ---------- Previous post was at 02:15 PM ----------
ایجاد برخی از محدودیت ها (افزایش امنیت)
وارد SSH با کاربر ریشه شده و دستورات زیر را به ترتیب وارد نمایید:
۱- دسترسی به perl قطع شود و فقط کاربر ریشه به آن دسترسی داشته باشد
کد PHP:
[LEFT]cd /usr/bin[/LEFT]
chmod 700 perl
chown root:root perl
2- امن نمودن ln و ارائه دسترسی فقط به کاربر ریشه
کد PHP:
[LEFT]cd /bin[/LEFT]
chmod 000 ln
chown root:root ln
3- قطع نمودن برخی از سرویس ها برای کاربران
کد PHP:
[LEFT]chmod 700 /usr/bin/gcc
chmod 700 /usr/bin/chattr
chmod 700 /usr/bin/w
chmod 700 /usr/bin/who
chmod 700 /usr/bin/last
chmod 700 /usr/bin/lastb
chmod 700 /usr/bin/lastlog
chmod 700 /bin/rpm
chmod 700 /bin/dmesg
chmod 700 /sbin/ipchains
chmod 700 /sbin/iptables
chmod 700 /sbin/sysctl
chmod 700 /sbin/shutdown
chmod 700 /sbin/reboot
chmod 700 /sbin/halt
chmod 700 /sbin/poweroff[/LEFT]
chattr +i /bin/login
chattr +i /bin/rpm
chattr +i /bin/ps
chattr +i /bin/ls
4- log های سرور را فقط کاربر ریشه بتواند مشاهده کند:
کد PHP:
[LEFT]chmod 700 /var/log
chmod 600 /var/log/messages
chmod 600 /var/log/dmesg
chmod 600 /var/log/boot.log
chmod 600 /var/log/lastlog
chmod 600 /var/log/rpmpkgs[/LEFT]
---------- Post added at 02:21 PM ---------- Previous post was at 02:18 PM ----------
1- وارد SSH شده ۲- ویرایشگر ساده و کاربردی nano در صورت نصب نبودن با دستور زیر نصب میکنیم
3-فایل تنظیمات آپاچی وب سرور را با ویرایشگر خود باز میکنیم
کد PHP:
nano /etc/httpd/conf/httpd.conf
4- در این فایل مقادیر زیر را جستجو میکنیم (برای جستجو Ctrl+w )
کد PHP:
LoadModule rewrite_module modules/mod_rewrite.so
اگر در اول این مقدار # بود، آن را پاک میکنیم! (تا فعال-خوانده شود)
کد PHP:
AllowOverride none
را به مقدار زیر تفییر میدهیم
کد PHP:
AllowOverride All
5- کار به اتمام رسید، حال وب سرور آپاچی را مجددا” راه اندازی میکنیم :
کد PHP:
service httpd restart
چگونه این مد را برای یک یوزر اکانت فعال کنیم؟
فایل .htaccess را باز کنید و مقادیر زیر را در آن قرار دهید
Options +FollowSymLinks
RewriteEngine On
کار به اتمام رسید.
---------- Post added at 02:23 PM ---------- Previous post was at 02:21 PM ----------
برای بن کردن یک ادرس آی پی ، از یکی از دستورات زیر استفاده میکنیم:
کد PHP:
iptables -D OUTPUT -p all -s IP.ADDRESS.HERE -j DROP
کد PHP:
iptables -D INPUT -p all -s IP.ADDRESS.HERE -j DROP
از بن ، خارج کردن:
کد PHP:
iptables -D INPUT -p all -s IP.ADDRESS.HERE -j DROP
IP.ADDRESS.HERE آی پی مورد نظر شماست
سرویس مورد نظر را بازسازی میکنیم
کد PHP:
service iptables save
کد PHP:
service iptables restart
---------- Post added at 02:24 PM ---------- Previous post was at 02:23 PM ----------
برای بن کردن یک ادرس آی پی ، از یکی از دستورات زیر استفاده میکنیم:
کد PHP:
iptables -D OUTPUT -p all -s IP.ADDRESS.HERE -j DROP
کد PHP:
iptables -D INPUT -p all -s IP.ADDRESS.HERE -j DROP
از بن ، خارج کردن:
کد PHP:
iptables -D INPUT -p all -s IP.ADDRESS.HERE -j DROP
IP.ADDRESS.HERE آی پی مورد نظر شماست
سرویس مورد نظر را بازسازی میکنیم
کد PHP:
service iptables save
کد PHP:
service iptables restart
---------- Post added at 02:29 PM ---------- Previous post was at 02:24 PM ----------
سوال: چگونه میتوانم option های پیشرفته ای مرتبط با پشته tcp/ip و virtual memory تغییر و set کنم که علاوه بر بالا بردن کارایی سیستم امنیت را هم افزایش دهد؟
پاسخ این سوال را در ادامه مطلب مشاهده کنید، در این پست قصد داریم تغییراتی را در /etc/sysctl.conf اعمال کنیم.
sysctl یک اینترفیسی است که به ما اجازه میدهد تغییراتی را در اجرای کرنل لینوکس اعمال کنیم.
با /etc/sysctl.conf میتوانید تغییرات مختلفی را در شبکه لینوکس و تنظیمات لینوکس اعمال کرد، به طور مثال:
- محدود کردن تنظیمات network-transmitted برای IPv4
- محدود کردن تنظیمات network-transmitted برای IPv6
- روشن کردن حفاظت execshield
- روشن کردن اطلاعات IP address تایید شده
- جلوگیری در برابر syn flood attack’
- جلوگیری از یک کرکر جهت spoofing attack در برابر IP address سرور
- انواع لاگ های بسته های مشکوک ، به طور مثال: spoofed packets, source-routed packets, and redirects.
دستور sysctl
این دستور برای ایجاد تغییرات در برخی از پارامتر های کرنل لینوکس در هر لحظه استفاده میشود. /etc/sysctl.conf که فایل با فرمت متنی است که حاوی مقادیر sysctl است.
برای نمایش این مقادیر دستورات زیر استفاده میکنیم:
sysctl -a
sysctl -A
sysctl mib
sysctl net.ipv4.conf.all.rp_filter
برای اجرای تغییرات دستور زیر استفاده میکنیم:
یک نمونه از فایل /etc/sysctl.conf
این مقادیر برای FTP server, webserver های اختصاصی است.
Dedicated *
در مقادیر زیر ۰ به معنای غیر فعال/no / false است
در مقادیر زیر هر عددی جز صفر به معنای فعال /yes / true است
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
#net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
########## IPv4 networking start ##############
# Send redirects, if router, but this is just server
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Accept packets with SRR option? No
net.ipv4.conf.all.accept_source_route = 0
# Accept Redirects? No, this is not router
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
# Log packets with impossible addresses to kernel log? yes
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Prevent against the common ‘syn flood attack’
net.ipv4.tcp_syncookies = 1
# Enable source validation by reversed path, as specified in RFC1812
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
########## IPv6 networking start ##############
# Number of Router Solicitations to send until assuming no routers are present.
# This is host and not router
net.ipv6.conf.default.router_solicitations = 0
# Accept Router Preference in RA?
net.ipv6.conf.default.accept_ra_rtr_pref = 0
# Learn Prefix Information in Router Advertisement
net.ipv6.conf.default.accept_ra_pinfo = 0
# Setting controls whether the system will accept Hop Limit settings from a router advertisement
net.ipv6.conf.default.accept_ra_defrtr = 0
#router advertisements can cause the system to assign a global unicast address to an interface
net.ipv6.conf.default.autoconf = 0
#how many neighbor solicitations to send out per address?
net.ipv6.conf.default.dad_transmits = 0
# How many global unicast IPv6 addresses can be assigned to each interface?
net.ipv6.conf.default.max_addresses = 1
########## IPv6 networking ends ##############
#Enable ExecShield protection
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# TCP and memory optimization
# increase TCP max buffer size setable using setsockopt()
#net.ipv4.tcp_rmem = 4096 87380 8388608
#net.ipv4.tcp_wmem = 4096 87380 8388608
# increase Linux auto tuning TCP buffer limits
#net.core.rmem_max = 8388608
#net.core.wmem_max = 8388608
#net.core.netdev_max_backlog = 5000
#net.ipv4.tcp_window_scaling = 1
# increase system file descriptor limit
fs.file-max = 65535
#Allow for more PIDs
kernel.pid_max = 65536
#Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000
---------- Post added at 02:29 PM ---------- Previous post was at 02:29 PM ----------
سوال: چگونه میتوانم option های پیشرفته ای مرتبط با پشته tcp/ip و virtual memory تغییر و set کنم که علاوه بر بالا بردن کارایی سیستم امنیت را هم افزایش دهد؟
پاسخ این سوال را در ادامه مطلب مشاهده کنید، در این پست قصد داریم تغییراتی را در /etc/sysctl.conf اعمال کنیم.
sysctl یک اینترفیسی است که به ما اجازه میدهد تغییراتی را در اجرای کرنل لینوکس اعمال کنیم.
با /etc/sysctl.conf میتوانید تغییرات مختلفی را در شبکه لینوکس و تنظیمات لینوکس اعمال کرد، به طور مثال:
- محدود کردن تنظیمات network-transmitted برای IPv4
- محدود کردن تنظیمات network-transmitted برای IPv6
- روشن کردن حفاظت execshield
- روشن کردن اطلاعات IP address تایید شده
- جلوگیری در برابر syn flood attack’
- جلوگیری از یک کرکر جهت spoofing attack در برابر IP address سرور
- انواع لاگ های بسته های مشکوک ، به طور مثال: spoofed packets, source-routed packets, and redirects.
دستور sysctl
این دستور برای ایجاد تغییرات در برخی از پارامتر های کرنل لینوکس در هر لحظه استفاده میشود. /etc/sysctl.conf که فایل با فرمت متنی است که حاوی مقادیر sysctl است.
برای نمایش این مقادیر دستورات زیر استفاده میکنیم:
sysctl -a
sysctl -A
sysctl mib
sysctl net.ipv4.conf.all.rp_filter
برای اجرای تغییرات دستور زیر استفاده میکنیم:
یک نمونه از فایل /etc/sysctl.conf
این مقادیر برای FTP server, webserver های اختصاصی است.
Dedicated *
در مقادیر زیر ۰ به معنای غیر فعال/no / false است
در مقادیر زیر هر عددی جز صفر به معنای فعال /yes / true است
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
#net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
########## IPv4 networking start ##############
# Send redirects, if router, but this is just server
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Accept packets with SRR option? No
net.ipv4.conf.all.accept_source_route = 0
# Accept Redirects? No, this is not router
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
# Log packets with impossible addresses to kernel log? yes
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Prevent against the common ‘syn flood attack’
net.ipv4.tcp_syncookies = 1
# Enable source validation by reversed path, as specified in RFC1812
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
########## IPv6 networking start ##############
# Number of Router Solicitations to send until assuming no routers are present.
# This is host and not router
net.ipv6.conf.default.router_solicitations = 0
# Accept Router Preference in RA?
net.ipv6.conf.default.accept_ra_rtr_pref = 0
# Learn Prefix Information in Router Advertisement
net.ipv6.conf.default.accept_ra_pinfo = 0
# Setting controls whether the system will accept Hop Limit settings from a router advertisement
net.ipv6.conf.default.accept_ra_defrtr = 0
#router advertisements can cause the system to assign a global unicast address to an interface
net.ipv6.conf.default.autoconf = 0
#how many neighbor solicitations to send out per address?
net.ipv6.conf.default.dad_transmits = 0
# How many global unicast IPv6 addresses can be assigned to each interface?
net.ipv6.conf.default.max_addresses = 1
########## IPv6 networking ends ##############
#Enable ExecShield protection
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# TCP and memory optimization
# increase TCP max buffer size setable using setsockopt()
#net.ipv4.tcp_rmem = 4096 87380 8388608
#net.ipv4.tcp_wmem = 4096 87380 8388608
# increase Linux auto tuning TCP buffer limits
#net.core.rmem_max = 8388608
#net.core.wmem_max = 8388608
#net.core.netdev_max_backlog = 5000
#net.ipv4.tcp_window_scaling = 1
# increase system file descriptor limit
fs.file-max = 65535
#Allow for more PIDs
kernel.pid_max = 65536
#Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000