Настройка на сигурността на сайта на VPS
Закупили сте специален или виртуален сървър или сте направили свой собствен у дома. И сега е време да помислим за сигурността на сайтовете, тъй като пробив в един от тях може да застраши всички останали.
При хостинг хостингът сам решава тези проблеми, но на собствения си сървър това вече е задача на администратора. И дори ако имате предварително инсталиран хостинг, тогава вероятността той да има ограничени права за всеки потребител и сайт е малко вероятна. Най-вероятно вашият доставчик се е ограничил до инсталиране на стандартни приложения vsftpd, Apache, nginx, php, mysql и т.н. и т.н.
Предполагаме, че необходимият комплект е инсталиран на сайта и е време да се погрижим за сигурността. Ако не, тогава намираме подходяща инструкция за „конфигуриране на nginx като преден край на apache“ и се връщаме към въпроса за сигурността.
Ще изградим сигурност на следните принципи:
Първият е създаването на потребители с /bin/false shell, използвайки vsftpd и proftpd като пример. Това ще ограничи изпълнението на скрипта в неговата собствена директория.
Второто разделение на потребителите на сайта. Ние ще можем да управляваме нашите сайтове от името на различни потребители, като достъпът до един от тях по никакъв начин няма да застраши другия.
Нека започнем с настройката на proftpd. За да направите това, отворете конфигурационния файл на ProFTPd /etc/proftpd/proftpd.conf
Сега нека да разгледаме пример за vsftpd. vsftpd конфигурационен файл /etc/vsftpd.conf
Във файла /etc/shells добавете обвивка
Ще добавим потребител с /bin/false shell и ключа -m за създаване на домашна директория едновременно с добавянето на потребител и незабавно ще забраним писането в основната директория, тъй като имаме всички необходими директории и файлове, изброени по-горе в/etc/skel
Разделяне на потребителите и инсталиране на fast-cgi
Има поне 2 реализации за разделяне на потребителите: suexec и apache2-mpm-itk. За да работите през suexec, ще трябва да стартирате php приложението за всеки потребител поотделно, за разлика от apache2-mpm-itk, който се стартира чрез mod_php веднъж за всички процеси. Ще пропусна обаче настройката на apache2-mpm-itk, тъй като изпълнението на един процес не осигурява достатъчно гъвкавост и по-специално изпълнението на отделен php.ini, а загубата на производителност може да бъде компенсирана чрез използване на Fast-CGI. Разбира се, няма да е възможно да получите скоростта, която дава php_mod, но ще бъде възможно да спестите системни ресурси.
Първо, нека инсталираме необходимите модули. Предполага се, че вече сте инсталирали и конфигурирали сървъра.
На примера на Ubuntu
Ако Apache2 е инсталиран с PHP5 като Apache модул, деактивирайте го:
Активирайте следните модули, ако не са активирани
Скриптът за изпълнение на PHP се намира в основната директория на Suexec, която е /var/www по подразбиране, но следната команда ще помогне да проверите това
Ще създадем директорията fcgi в нея, където ще се съхраняват нашите скриптове и php настройки за всеки потребител и ще дефинираме подпапка директно за собственика
Вътрешно създайте php5 файл, където пишем скрипт за изпълнение на php
В /var/www/fcgi/login/php5 добавете запис
Редът PHPRC съдържа директорията, където се намира файлът php.ini (напр. /var/www/fcgi/login/ се превежда като /var/www/fcgi/login/php.ini). PHP_FCGI_MAX_REQUESTS отговаря за броя на заявките, които един процес ще обработи. PHP_FCGI_CHILDREN указва броя дъщерни процеси, които PHP започва да обработва входящи заявки. php5 трябва да е изпълним и той (и неговиятдиректории) трябва да са собственост на потребителя и групата на уебсайта.
Сега нека преместим файла php.ini по подразбиране от директорията /etc/php5/cgi/ по подразбиране в нашия /var/www/fcgi/login/php5 и да конфигурираме основните настройки. За всеки сайт те ще бъдат индивидуални, но трябва незабавно да обърнете внимание на основните.
За да коригирате пътищата в /etc/apache2/mods-available/fcgid.conf добавете
и задайте параметъра FcgidMaxRequestLen на максималния размер на заявката
Memcached и xcache също ще добавят скорост
Защита срещу всякакъв вид инжекции
За допълнителна сигурност инсталирайте разширението mod_security
Преименувайте конфигурационния файл
Сега нека го отворим и променим конфигурациите
Нека заредим основните правила, за които между IfModule security2_module> във файла /etc/apache2/mods-enabled/mod-security.conf добавете
Защита срещу DOS, DDOS и FLUD атаки, както и груба сила на парола
Инсталирайте mod-evasive за Apache
и променете конфигурациите във файла /etc/apache2/mods-available/mod-evasive.conf
За да се предпазите от груба сила на пароли, инсталирайте Fail2ban
Рестартирайте apache, nginx и memcached
Hardcore conf в C++. Каним само професионалисти.