Безопасный и шустрый веб-сервер на Debian 7

Прежде всего, данный материал ориентирован на новичков и тех, кто держит на одном VPS сразу несколько сайтов, при этом хочет иметь как безопасный, так и шустрый веб-сервер.

В качестве веб-сервера у нас будет выступать связка:

Apache 2.2 + PHP 5.4.4 + MySQL 5.5 + NGINX 1.2.1 + eAccelerator + memcached + vsftpd 3.0.2 + exim.

Все это чудо будет крутиться на Debian 7.

Начнем.

 


Итак, прежде всего после установки ОС, выполняем:

Затем одной командой ставим весь необходимый софт:

В процессе установки система попросит вас придумать и ввести пароль для пользователя root БД MySQL, вводим.
После полной установки софта, приступаем к настройке. Все сайты у нас будут лежать в директории /home/директория_пользователя/директория_сайта, но вы можете разместить их в любой удобной для вас директории. В директории сайта у нас будут 3 поддиректории: tmp (для временных файлов и файлов сессий), logs (логи сайта), public_html (директория сайта).

Создаем пользователя dapf с одноименной группой, домашним каталогом и запретом на использование консоли:

Устанавливаем пароль пользователя dapf:

Создаем каталоги пользователя с выставлением прав и группы:

Запретим консоль пользователю www-data:

Теперь приступим к настройке Apache.
Включаем необходимые нам модули:

Правим конфиг портов в файле /etc/apache2/ports.conf:

Необходимо заменить 80 порт на 81 (т.к. на 80м у нас будет nginx):

Поскольку у нас VPS слабенький (256 мб ОЗУ), то нам необходимо настроить /etc/apache2/apache2.conf

Устанавливаем следующие значения:

Теперь создадим новый VirtualHost (сайт):

Благодаря apache2-mpm-itk мы имеем возможность использовать в конфигах виртуалхоста директиву AssignUserId www-data dapf, которая позволяет запретить web-шеллу, править файлы нашего проекта, кроме тех, на которых стоят права o+w. Т.е. apache сможет спокойно прочитать php-файл, выполнить его и отдать в браузер, но не сможет внести изменения в его содержимое, что создаст определенные проблемы для хэкеров. Если хотите разрешить апачу править файлы, то используйте вместо www-data dapf, значение dapf dapf. Директивы open_basedir, upload_tmp_dir, session.save_path исключают получение сессий с соседнего сайта и переходы выше пользовательской директории.

Включаем сайт:

И перезагружаем апач:

С апачем закончили, теперь настроим nginx.
Для начала настроим gzip сжатие, назначим пользователя www-data и установим 1 ядро процессора.

После создадим новый конфиг нашего виртуалхоста:

Теперь за всю динамику отвечает апач, а за статику nginx, при появлении ошибки 404, которая может возникнуть при использования mod_rewrite(ЧПУ), будет вызываться функция @fallback, которая перенаправит запрос на апач для проверки.

Перезагружаем nginx: service nginx restart

Для настройки FTP правим файл конфига vsftpd

Удаляем всё и вставляем следующие настройки:

Это позволит запретить вход анонимным пользователям, разрешить использование старых FTP клиентов, а также ограничить перемещение пользователей только их домашним каталогом.

Затем необходимо поправить файл /etc/pam.d/vsftpd, чтобы включить возможность авторизации FTP пользователям, не имеющим доступ к консоли.

Находим и комментируем строку: auth required pam_shells.so

Перезагружаем vsftpd и пробуем войти:

Если у вас возникла ошибка: 500 OOPS: vsftpd: refusing to run with writable root inside chroot(), не расстраиваемся — это баг vsftpd, и решается он простым обновлением, для этого выполняем:

Возможно, вам придется заново поправить конфиги vsftpd, но после перезапуска сервиса всё будет работать нормально.

Настраиваем MySQL.

Устанавливаем следующие значения директив:

Если вы не используете таблицы InnoDB, можно добавить директиву skip-innodb

Далее создадим пользователя и его БД, выполнив команду:

Значения база_данных, пароль_пользователя, пароль_рута_мускула указываем свои.

Основную часть работы мы закончили, теперь необходимо настроить PHP+ eAccelerator+ exim.

Начнем с настройки exim, выполняем:

Выбираем ОК, потом internet site; mail is sent and received directly using SMTP, указываете ваш System mail name (у меня это dapf.ru), IP-addresses to listen on for incoming SMTP connections можно оставить просто 127.0.0.1, далее по вкусу, пока не дойдете до Root and postmaster mail recipient, там указываем ваш email, на который будут возвращаться письма.

Выполняем для проверки:

Если письмо пришло, значит все отлично, если нет, то возвращаемся и перенастраиваем exim.
Теперь установим eAccelerator.

Качаем последнюю на данный момент версию и распаковываем:

Переходим в директорию с исходниками eaccelerator(у меня это eaccelerator-eaccelerator-42067ac) и устанавливаем:

Создадим директорию для кеша eAccelerator

Редактируем файл php.ini

Здесь нам необходимо добавить настройки eAccelerator, sendmail, в качестве которого у нас exim, настройки безопасности и т.д.
Добавляем перед [ PHP ] настройки для eAccelerator

Теперь раскомментируем sendmail_path и укажем путь до exim

Далее выставим следующие настройки:

Остальные настройки PHP делайте по вашему желанию, на эту тему в сети имеется куча мануалов.

Настройку SSH я рассматривать не буду, а остановлюсь на фаерволе, т.к. в Debian по умолчанию разрешены все подключения.

Создаем файл my.iptables.rules

Активируем и сохраняем правила:

Проверяем командой iptables –L

Прописываем загрузку в файле /etc/network/interfaces

После iface lo inet loopback добавляем

Сохраняем и перезагружаем VPS.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *