وبلاگ دانیل
15 Jun/11 0

12 اقدامات لازم برای پی اچ پی LAMP در وب خروجی لینوکس آپاچی سرور ریشه امن


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

همه راهنمایی و Codesnips ها اشاره به یک جعبه دبیان فعلی.

اول دیوار آتش - را ممنوع کرده است هنگامی که همه چیز

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

 # / بن / دست پاچه نمودن

 # جداول موجود حذف
 از iptables-F

 # همه اتصالات ورودی ممنوع
 از iptables-P INPUT DROP
 از iptables-P FORWARD قطره

 # تمام خروجی اجازه
 از iptables-P OUTPUT پذیرفتن

 # SSH اجازه
 از iptables-A INPUT-j پذیرفتن-p TCP - dport 22 

 # HTTP اجازه
 از iptables-A INPUT-j پذیرفتن-p TCP - dport 80 

 # علاوه بر این سرویس (بی سیم) اجازه می دهد، برای مثال، سرور بازی
 از iptables-A INPUT-j پذیرفتن-p TCP - 4534 dport 

 # همه چیز را از localhost را اجازه دهید.  (برای اجازه دسترسی آزادانه به سرور خود، خدمات خود را،
 # به عنوان مثال، پی اچ پی بر روی پایگاه داده محلی
 از iptables-A INPUT-S 127.0.0.1-J پذیرفتن

 # در حال حاضر ارتباط ها برقرار خواهد شد در هر یک از پورت پذیرفته شده
 # (مورد نیاز برای برخی از ارواح)
 از iptables-A INPUT-M دولت - دولت برقرار شد، مربوط به J پذیرفتن

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

برای پیدا کردن که خدمات را به سرور خود را تنها در اطراف گوش، شما می توانید از دستور netstat استفاده از:

 # برای سوکت TCP:
 دستور netstat-lpn | grep استفاده TCP

 # به طور مشابه برای بی سیم:
 دستور netstat-lpn | grep استفاده بی سیم

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

 # TCP:
 اسکنر nmap-P1-65 535 meinserver.de

 # UDP:
 اسکنر nmap-SU-P1-65 535 meinserver.de

دوم SSH ممنوعیت ورود

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

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

 SSH-نرم افزار-T RSA

 # کلید تولید شده به سرور کپی کنید

 SSH-نسخه-ID-I ~ /. SSH / id_rsa.pub root@meinserver.de

 # sshd_config در حال حاضر بر روی سرور تنظیم / غیره / ssh /
 است.
 است.
 PasswordAuthentication ندارد
 است.
 است.

 # سپس دوباره شروع به RearBBpos
 / غیره / init.d / SSH راه اندازی مجدد

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

سوم SSH Bruteforcing جلوگیری از denyhosts

اگر توصیه این است که عملی نیست 2 و شما نمی دهد تا به راحتی از باری می خواهید مبتنی بر رمز عبور، به شما حداقل می تواند جلوگیری از نرخ کلمه عبور خودکار از حمله بر روی سرور. بسیاری از رباتها بر روی اینترنت در تمام طول روز به دنبال چیزی بیشتر از سرور SSH کنید و سعی کنید در کلمه های عبور مختلف خود را. با استفاده از رمز عبور منطقی امن یک مشکل بزرگ نیست، اما احساس بهتری وجود دارد، حتی اگر که این امکان وجود دارد. علاوه بر این، آن را نیز محافظت از کاربران خود، اگر بر روی حساب های سرور و کاربر وجود دارد. در اینجا، شما نمی توانید تکیه کاربران به استفاده از کلمات عبور امن. denyhosts دائما در حال بررسی و باری SSH بر روی کاربر قفل برای در حالی که رمز عبور خود را وارد به اشتباه تکرار شده است. آی پی کاربران به طور موقت به فایل / etc / hosts.deny، به طوری که آنها دیگر به اینترنت دسترسی دارند امکان پذیر است. این SSH Bruteforcing به یک کار بسیار طولانی و بسیار امیدوار کننده است.

 با apt-get denyhosts نصب

 Denyhosts # کار می کند بلافاصله پس از نصب است.  این می تواند
 # در فایل / etc / denyhosts.conf خوب لحن

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

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

5 آیا استفاده از FTP به کار بر روی سرور

FTP اثر بار زمانی که اینترنت یک روستای کوچک که هنوز هم قابل اعتماد بود. مدیران بسیاری از وب سایت ها هنوز هم استفاده از FTP برای انتقال فایل ها به سرور و یا کار بر روی وب سایت خود را. متاسفانه، این است که بسیار نامطمئن است، چون FTP انتقال تمام داده ها نا امن است. کلمات عبور و داده ها را می توان بدون هر گونه مشکلی را در هر هاپ بین سرورها و کلاینت ها را بخوانید. بسیار امن تر با sshfs. به شما اجازه می دهد تا استقرار (mount) یک دایرکتوری از طریق ssh در سیستم فایل محلی به سرور از راه دور. بعد از آن شما می توانید بر روی سرور کار می کنند به عنوان اگر او را بر روی کامپیوتر های محلی بود. همه دسترسی به فایل را به فایل ها بر روی سرور به صورت کاملا شفاف، بنابراین شما می توانید با برنامه های گرافیکی محلی برای باز کردن یک تصویر را بر روی سرور به طور مستقیم ویرایش کنید و سپس ذخیره. ایمنی، راحتی و بدون تلاش زیاد.

 # sshfs نصب
 با apt-get sshfs نصب

 # mountpoint در سیستم فایل محلی
 mkdir به / رسانه ها / myserver

 # سرور را به دستور mount فایل سیستم محلی
 sshfs www-data@mein-server.de ور :/ / WWW / رسانه ها / myserver

 # در حال حاضر در دایرکتوری / ور / .... بر روی سرور محلی تحت / رسانه ها / myserver در دسترس است

6 نصب به روز رسانی

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

 # این خط در / etc / crontab استفاده، به روز رسانی ساعت سیستم را هر روز در ساعت 6 صبح
 0 6 ریشه *** با apt-get-Y apt-get برای ارتقا && به روز رسانی

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

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

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

7 پی اچ پی با open_basedir زندانی

هک بسیاری از این واقعیت است که آسیب پذیری در کد پی اچ پی است استفاده می شود به دسترسی به فایل ها در دسترسی به فایل های سیستم است که می توانم به سایت تعلق نمی اساس، اما خود سیستم که چرا شما باید قفل PHP به طوری که آن را تنها در دایرکتوری ها به طور خاص تعیین شده خواندن و نوشتن مجاز می باشد. برای این کار، فایل php.ini open_basedir پیکربندی گزینه. پی اچ پی دارد گزینه ای را برای دسترسی فقط اجازه دادن به دایرکتوری ها وجود دارد. فایل های مانند / etc / passwd نمایش دور از دسترس است. میزبانی وب سایت های متعدد بر روی یک سرور تنظیم open_basedir در هر پیکربندی میزبان مجازی در هر طرف.

 فایل php.ini اجرا شده # جهانی از طریق:
 # / Etc/php5/apache2/php.ini
 open_basedir = / ور / WWW / TMP :/ /

 # برای هر سایت در پیکربندی VirtualHost در:
 php_value در open_basedir / ور / WWW / سایت / :/ tmp را دارد /

مهم است که به نظر بگیرید که آیا تمام سایت ها شده اند به اسکریپت ها معمولا نیاز به دسترسی دارند اضافه شده است، در غیر این صورت ممکن است که شما توابع معلول و مشروع از برنامه PHP است.

8 ایجاد وب سایت های خود را برای کاربران خروجی

استفاده از PHP-خروجی برنامه شما، شما باید به طور مطلق برای خروجی Apllikation کاربر خود را ایجاد و تحت هیچ شرایطی با استفاده از خروجی زیر ریشه درخواست کاربر. شما همچنین باید از حقوق کاربر را تا آنجا که عملیات واقعا فقط اجازه محدود کردن، که نیاز به اسکریپت پی اچ پی. ایجاد جدول و جدول DROP مشترک در تزریق SQL و مورد استفاده در اکثر برنامه های کاربردی PHP هرگز مورد نیاز است. میزبان وب سایت های متعدد را با پایگاه داده های متعدد بر روی یک سرور، شما باید پایگاه داده خود را برای همه کاربران ایجاد کنید. بنابراین، پس از یک حمله موفق، یک نفوذگر فقط به یکی از پایگاه های داده دسترسی دارد و نه به طور مستقیم در تمام. اگر شما نمی خواهید در خط فرمان به تلاش برای مدیریت حسابهای MySQL در کاربر، کاربر مدیریت عملکرد نیز بسیار آسان با phpMyAdmin به زیر زبانه "حقوق" است.

9 پیام های PHP خطا کردن

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

 فایل php.ini اجرا شده # جهانی از طریق:
 # / Etc/php5/apache2/php.ini
 display_errors = خاموش

 # برای هر سایت در پیکربندی VirtualHost در:
 php_flag display_errors خاموش

 # پیغام خطا آن را بخوانید به هر حال:
 گربه / var/log/apache2/error.log | grep استفاده پی اچ پی

10 هدف در حد تزریق SQL با ModSecurity است

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

اگر شما مطمئن نیستید در صورتی که کد تمیز است، می تواند دنبال mod_security بگردید برای آپاچی بخش کردن مقدار زیادی از این حملات، به هر حال. بررسی mod_security بگردید ثابت تمام درخواست به وب سرور و در پاسخ به پیش الگوی است که بسیاری از حملات تزریق SQL را می توان مسدود. متاسفانه، تنها کار می کند و با تلاش کتابچه راهنمای کاربر mod_security بگردید. اغلب پس از یک بلوک تازه نصب mod_security بگردید نیز مورد نیاز (عادی) عملکرد کد PHP خود را، به طوری که هیچ انتخاب دیگری، به عنوان نرم افزار کامل برای تست نصب و راه اندازی دوباره. فقط در آن پیدا می کند که آیا mod_security بگردید ممکن است حتی نمی خواهم به مسدود کردن توابع. اگر چنین است، سپس لیست فیلتر تنظیم می شود ناپدید می شوند به طوری که مثبت کاذب است.

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

11th ID چک - آپاچی نمی داند که او
این واقعا روش موثر در برابر هک، آن را می سازد اسکریپت های خودکار که به دنبال نسخه های سرور، اما کمی سنگین تر است. معمولا آپاچی به صفحات با پیغام خطا (به عنوان مثال 404 یافت نشد) امضا سرور خود را.

 Apache/2.2.16 (یونیکس) و سرور در www.daniel-ritter.de پورت 80

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

 # / Etc/apache2/conf.d/security
 ServerSignature خاموش

12th غیر فعال کردن ماژول آپاچی استفاده نکنید

به طور پیش فرض آپاچی لود شده تا به برخی از ماژول های که تقریبا هرگز مورد نیاز است. در دبیان شما می توانید ماژول های لود شده
به عنوان یک حلقه نرم در / etc/apache2/mods-enabled.

می تواند برداشته شود تقریبا همیشه:

mod_cgi

برای اجرای اسکریپتهای CGI مورد استفاده قرار می گیرد. این تکنیک قدمت آن به طلوع وب و جد از زبانهای اسکریپت امروزی اجازه می دهد تا برای وب سایت های پویا بود. mod_cgi غیر ضروری است برای 99 درصد از سایت های پی اچ پی و پیکربندی آپاچی معیوب است یک حفره امنیتی بالقوه

 a2dismod CGI

mod_status

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

 وضعیت a2dismod

mod_autoindex

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

 a2dismod autoindex
نظرات (0) بازتاب ها (1)

    دیدگاهتان را بنویسید

    * کپی کنید این رمز عبور:

    * نوع یا رب رمز عبور:

    537 نظرات اسپم که تا کنون با هرزنامه (اسپم) رایگان وردپرس مسدود شده

    لطفا کپی کردن رشته به حوزه زیر pl2Xhm: