Настройка на сигурността на сайта на 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++. Каним само професионалисти.