Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


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

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

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

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

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

Приступим

Везде далее я выполняю команды из-под рута, если вы залогинены как обычный пользователь, то перед командами добавляйте 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-адрес-вашего-сервера>/

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

21

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

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

Для установки MySQL

apt-get install mysql-server mysql-client

Для установки MariaDB

apt-get install mariadb-server mariadb-client

Во время установки у вас дважды спросят пароль для рута базы данных. Обязательно задайте достаточно сложный пароль.

01

02

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


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


mysql_secure_installation

04

Чтобы проверить аккаунт рута сервера 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

22

23

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

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

Для установки phpMyAdmin на вашем сервере Linux наберите следующую команду:

apt-get install phpmyadmin

Во время установки у вас спросят про настройку phpMyAdmin. Когда попросят выбрать веб сервер, выберете apache2, а когда попросят настроить базы данных через dbconfig-common, ответьте нет, поскольку мы уже настроили MySQL/MariaDB ранее.

06

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

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

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


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices