• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Настройка защищённого VPS (VDS) на Debian, часть первая: установка Apache, PHP, MySQL

Если вы не знаете, что такое VPS (VDS), то посмотрите здесь. Если вы знаете о VPS, но по какой-то причине у вас его ещё нет, то перейдите .

Настройка VPS (VDS) для тех, кто никогда этим не занимался — довольно непростая вещь. Для тех, кто знает, что вся установка осуществляется несколькими командами, это может показаться достаточно простой задачей. Тем не менее, эта простота иногда бывает обманчива. «Голый» Apache уязвим к DoS, «голый» SSH уязвим к брутфорсингу и т. д. Панели управления, phpMyAdmin уязвимы к сниффингу трафика, обычный FTP просто категорически не рекомендован.

На VPS хостингах предусмотрена «пакетная» установка (предустановка) сервера и компонентов — там устанавливаются такие же «голые» программы. Можно заказать услугу специалиста по настройке (примерно 700 рублей в час, покупать нужно минимум час, в стандартную цену входит те же самые Apache, PHP, MySQL и т. п. вещи, для всего другого нужно договариваться отдельно и отдельная цена…

Обеспечение безопасности сервера — это целая наука и профессия. Нельзя в инструкциях описать все необходимые действия и правила настройки. Тем не менее, для предотвращения «детских» атак, вполне возможно и самому настроить сервер правильно.

В данной серии инструкций в качестве операционной системы выбран Debian. Аналогичная серия готовится и для CentOS.

Приступим к настройке VPS

Везде далее я выполняю команды из-под рута, если вы залогинены как обычный пользователь, то перед командами добавляйте sudo.

Перед началом установки какого-либо программного обеспечения, убедитесь что в вашей свеже установленной системе Debian назначено корректное имя хоста, которое должно соответствовать FQDN (полностью определённым доменным именам) (например, debian.mydomain.com). Для смены имени хоста наберите следующую команду:
Код:
hostnamectl set-hostname debian.mydomain.com
После настройке FQDN для вашей системы, проверьте его следующей командой, которая должна вернуть FQDN:
Код:
hostnamectl

   Static hostname: ubuntuserver.mydomain.com
         Icon name: ubuntuserver
           Chassis: server
           Boot ID: b7f7601160e34c74a8e6c5cca3b1b3bb
  Operating System: Ubuntu 14.04 LTS
            Kernel: Linux 3.13.0-24-generic
      Architecture: x86_64
hostname -f
debian.mydomain.com
Опционально, обновите свою систему:

apt-get update
apt-get upgrade
Шаг 1: Установка Apache

Веб-сервер Apache сейчас является одним из самых часто используемых для веб-сайтов. У него открыт код, модульный дизайн, для него существует огромное количество расширений и он поддерживает множество языков программирования.

Для установки Apache на вашу систему наберите следующую команду:
Код:
apt-get install apache2
После того, как пакеты Apache установлены, наберите в вашем браузере http://<IP-адрес-вашего-сервера>/

Вас должны встретить дефолтная страница браузера:

28550


Шаг 2: Установка MySQL

Для любого маломальски сложно веб-приложения или сервиса нужна база данных. Чаще всего для этого используется MySQL. Последнее время, некоторые предпочитают MariaDB. При установке MariaDB все ваши сайты, которые работают на MySQL, будут работать точно также. Все команды и запросы к базе данных имеют один и тот же синтаксис. Установите любую (но только одну!) из этих систем управления базами данных.

Для установки MySQL
Код:
apt-get install mysql-server mysql-client
Для установки MariaDB
Код:
apt-get install mariadb-server mariadb-client
Во время установки у вас дважды спросят пароль для рута базы данных. Обязательно задайте достаточно сложный пароль.

28551


28552


Следующим шагом бы обезопасим сервер MySQL (MariaDB) отключив некоторые функции, такие как удалим анонимных пользователей, заблокируем удалённых вход рута, удалим тестовую базу данных. Всё это можно сделать запуском одного сркипта. Ответьте "Y" на все вопросы, кроме первого, когда спрашивают о смене пароля рута, он у нас уже есть.
Код:
mysql_secure_installation
28553


Чтобы проверить аккаунт рута сервера MySQL (MariaDB) наберите следующую команду. Проверьте, можете ли вы войти с вашим паролем рута.
Код:
mysql -u root -p
Для выхода используйте exit.

Шаг 3: Установка PHP

PHP — это скриптовый язык программирования, который запускается на серверной стороне, он крайне популярен и на нём работают множество веб-сайтов, он может взаимодействовать с базами данных, работать с информацией, генерировать веб страницы и очень многое другое.

Перед установкой PHP проверьте, какие библиотеки и модули доступны:
Код:
apt-cache search php5-
php5-cgi - server-side, HTML-embedded scripting language (CGI binary)
php5-cli - command-line interpreter for the php5 scripting language
php5-common - Common files for packages built from the php5 source
php5-curl - CURL module for php5
php5-dbg - Debug symbols for PHP5
php5-dev - Files for PHP5 module development
php5-gd - GD module for php5
php5-gmp - GMP module for php5
php5-json - JSON module for php5
php5-ldap - LDAP module for php5
php5-mysql - MySQL module for php5
php5-odbc - ODBC module for php5
.........
Чтобы посмотреть детальную информацию по конкретному PHP модулю используйте команду apt-cache.
Код:
apt-cache show php5-<имя_модуля>
Когда вы определились какой(какие) PHP модули будете устанавливать, установить их можно следующей командой:
Код:
apt-get install php5-<имя_модуля>
Далее приведена команда для установки обязательных PHP модулей, без которых наш сервер не будет нормально работать. php5-mysql нужен для взаимодействия с базой данных и php5-mcrypt обеспечивает функции шифрования в PHP. php5-gd нужен для использования в веб-панеле phpMyAdmin.
Код:
apt-get install php5 php5-mysql php5-mcrypt php5-gd
Шаг 4: Настройка PHP

Перед тестированием конфигурации PHP вам нужно настроить временную зону для PHP, поскольку в дефолтном файле php.ini не установлена временная зона для функции даты, используемой во многих веб-приложениях. Для настройки временной зоаны timezone, отредактируйте /etc/php5/apache2/php.ini и задайте значение date.timezone в соответствии с физической временной зоной вашего сервера.
Код:
date.timezone = Asia/Bangkok
или
Код:
date.timezone = Europe/Moscow
Узнать как правильно пишется Ваша временная зона можно так:
Код:
<?php
print_r( DateTimeZone::listIdentifiers( ) );
?>
После настройки в PHP правильной временной зоны, перезапустите веб-сервер Apache для перегрузки конфигурации PHP и PHP модулей.
Код:
service apache2 restart
Давайте создадим файл на сервере:
Код:
echo '<?php phpinfo(); ?>' > /var/www/html/info.php
Теперь откроем адрес http://<IP-адрес-вашего-сервера>/info.php для проверки настройки PHP.

Например, я открываю так
Код:
http://192.168.1.37/info.php
28554


28555


Шаг 5: Установка phpMyAdmin

phpMyAdmin — это инструмент для управления базами данных MySQL/MariaDB через веб интерфейс.

Для установки phpMyAdmin на вашем сервере Linux наберите следующую команду:
Код:
apt-get install phpmyadmin
Во время установки у вас спросят про настройку phpMyAdmin. Когда попросят выбрать веб сервер, выберете apache2, а когда попросят настроить базы данных через dbconfig-common, ответьте нет, поскольку мы уже настроили MySQL/MariaDB ранее.

28556


После установки пакета phpMyAdmin, перейдите в браузере http://<IP-адрес-вашего-сервера>/phpmyadmin.

Это основное программное обеспечение для сервера. Сервер уже полностью рабочий, после перезагрузки все необходимые службы будут запускаться сами, теперь вы можете разместить ваш сайт и любые системы управления сайтами (CMS) WordPress, Drupal, Joomla, Opencart, Prestashop.

Переходим ко следующей части: «Настройка защищённого VPS (VDS) на Debian. Часть вторая: Защита Apache от DoS».
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!