Нажмите CTRL-D чтобы добавить нас в закладки
Внимание! Вы находитесь в незащищенном режиме (HTTP). Для перехода в защищенный режим SSL, нажмите здесь
HackZone.RU - Безопасный web-сервер. Актуальные базы 2GIS в форматах CSV,Excel,SQL
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

Безопасный web-сервер.

23.08.2011

1. Теория
1.0. Постановка задачи
Нам требуется построить максимально безопасный web-сервер на основе минимального дистрибьютива Ubuntu, а именно:
1. Создать chroot "песочницу" с помощью debootstrap
2. Установить в песочнице apache2, php5, mysql
3. Установить и настроить mod-security2, а также отредактировать необходимые директивы конфигурационных файлов apache и php.

1.1. Теоретическая подготовка
Цитата:
chroot — операция изменения корневого каталога в Unix-подобных операционных системах. Программа, запущенная с изменённым корневым каталогом, будет иметь доступ только к файлам, содержащимся в данном каталоге. (c)Wikipedia
Т.е. проще говоря - это каталог-песочница, в который мы установим web-сервер и даже при проникновении в систему злоумышленник имея web-шелл будет иметь доступ к директориям и файлам внутри этого каталога, а к корню системы доступа не будет.

Цитата:
debootstrap is a tool which will install a Debian base system into a subdirectory of another, already installed system. It doesn't require an installation CD, just access to a Debian repository.
Вольный перевод -
Цитата:
Это инструмент, который устанавливает базовый дистрибьютив Debian в другой каталог уже существующей системы. Не требует наличия инсталяционного CD, файлы берутся из репозитория.
Именно с помощью debootstrap мы создадим chroot песочницу с эмуляцией полноценной системы.

Цитата:
mod-security2 - это модуль для веб-сервера Apache2, который позволяет управлять запросами к веб-серверу, в соответствии с определенными правилами. (Многие уже знакомы с этим модулем, похожие возможности есть на многих хостингах, например sweb, который отвергает потенциально опасные запросы)
2. Создание chroot песочницы. Настройка системы.
Заметки:
- Данная статья писалась пошагово, после выполнения соответствующих действий на сервере. В качестве ОС использовалась Ubuntu 10.04 (Linux 2.6.18-238.5.1.el5.028stab085.3ent #1 SMP Mon Mar 21 21:16:32 MSK 2011 i686 GNU/Linux).
- В статье будут использоваться команды для основного терминала и для терминала chroot песочницы.
Команды основного терминала будет иметь подсветку:
$uname -a
А команды терминала chroot:
$uname -a


2.0 Подготовка репозиториев.
Добавляем новый репозиторий в sources.list, и обновляем пакеты. (вместо данного репозитория может выбрано другое зеркало, данное было выбрано случайно, в виду наличия пакета libapache2-mod-security (: )
Цитата:
$echo 'deb http://ubuntu.mirror.cambrium.nl/ubuntu/ lucid main universe' >> /etc/apt/sources.list
$apt-get update
$apt-get upgrade
2.1 Установка debootstrap и создание вложенной ОС - chroot песочницы.
Цитата:
$apt-get install debootstrap
если установка прошла успешно - запустим утилиту
Цитата:
$debootstrap --variant=buildd --arch i386 lucid /home/chroot http://archive.ubuntu.com/ubuntu/
В аргументах к утилите мы указали:
- архитектуру будущей системы,
- дистрибьютив,
- непосредственно директорию, которая будет нам служить chroot песочницей
- репозиторий из которого утилита должна скачать дистрибьютив.

2.2 Настройка chroot
Для начала нужно настроить резолвер и список репозиториев для chroot. Выполним команды
Цитата:
$cp /etc/resolv.conf /home/chroot/etc/resolv.conf
$cp /etc/apt/sources.list /home/chroot/etc/apt/sources.list
Пробрасываем в chroot окружение системные файловые системы
Цитата:
$nano /etc/fstab
и записываем туда следующее:
Цитата:
/proc /home/chroot/proc none rbind 0 0
/dev /home/chroot/dev none rbind 0 0
/sys /home/chroot/sys none rbind 0 0
Сохраняем, закрываем файл. Монтируем командой:
Цитата:
mount -a
На этом работа в основной ОС закончена. Выполним последнюю команду в основном терминале, чтобы перейти в ОС chroot-песочницы.
Цитата:
chroot /home/chroot
2.3 Настройка ОС внутри chroot
выполняем уже знакомые команды:
Цитата:
$echo 'deb http://ubuntu.mirror.cambrium.nl/ubuntu/ lucid main universe' >> /etc/apt/sources.list
$apt-get update
$apt-get upgrade
2.4 Установка apache2 и php внутри chroot
Установка ничем не отличается от обыденной установки, поэтому подробно останавливаться на этом не буду, каждый выберет сам для себя необходимые модули. (модуль libapache2-mod-security2 обязателен к установке)
Цитата:
$apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-security2
Цитата:
$apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
2.5 Установка mysql
Я не зря вынес установку мускула в отдельный пункт.
Все дело в том, что мускул отказывается корректно работать в песочнице. После прочтения манов я был огорчен той муторностью настройки нормальной работы (копирование файлов, создание ссылок из основной ОС в песочницу и т.п.), что решил сделать проще.
Устанавливаем mysql в основную ОС
Цитата:
$apt-get install mysql-server mysql-client
Затем редактируем конфиг:
Цитата:
$nano /etc/mysql/my.cnf
и заменяем строчку
Цитата:
bind-address = 127.0.0.1
на
Цитата:
bind-address = 0.0.0.0
После этих действий mysql будет доступен внутри песочницы, однако в качестве хоста mysql нужно указывать не localhost, а 127.0.0.1

ВНИМАНИЕ!!!
Данный способ установки mysql значительно легче, однако может скомпрометировать систему.
Дело в том, что при наличии привелегии file_priv злоумышленник может получить доступ к файловой системе вне песочницы, даже если скрипт запускается внутри нее.
Т.е. для использования в песочнице mysql необходимо создавать пользователей без привелегии file_priv.


3. Заключительный этап. Конфигурация apache2, php, libapache2-mod-security2
3.0 Создание пользователя apache и пользовательского каталога
Цитата:
$cd /; mkdir -m 755 web
$useradd rdot -b /web -m -U -s /bin/false
$chmod 754 /web/rdot
$mkdir -p -m 754 /web/rdot/public_html/www
$mkdir -p -m 777 /web/rdot/tmp
$chmod +t /web/rdot/tmp
$chown -R rdot:rdot /web/rdot/
Итак, мы создали пользователя, отключили ему шелл, создали домашнюю директорию, создали веб директорию, создали персональную временную директорию и рекурсивно сменили хозяина директорий.

3.1 Редактирование дефолтного виртуального хоста под нашего юзера
Цитата:
$nano /etc/apache2/sites-enabled/000-default
Содержимое:
Цитата:
<VirtualHost *:80>
DocumentRoot "/web/rdot/public_html/www/"
ServerName "rdot"
ErrorLog /web/rdot/error_log
CustomLog /web/rdot/access_log combined
</VirtualHost>
3.2 Редактирование конфигурационного файла apache2
Цитата:
$nano /etc/apache2/apache2.conf
Меняем дефолтного пользователя и группу, от которого будет работать apache
Цитата:
User www-data
Group rdot
Добавляем несколько директив в конец файла:
Цитата:
# Отключаем подпись внизу служебных страниц apache (страница 404 ошибки и т.п.)
ServerSignature Off
# Ответ сервера в заголовке (значение Prod выведет только название софта - Apache)
ServerTokens Prod
#отключаем запуск CGI-скриптов, запрещаем следовать по символьным ссылкам, запрещаем просмотр каталогов, запрещаем SSI
Options -ExecCGI -FollowSymLinks -Indexes -Includes
3.3 Редактирование конфигурационного файла php.ini
Цитата:
$nano /etc/php5/apache2/php.ini
Изменяем значение следующих директив:
Цитата:
expose_php = Off
magic_quotes_gpc = On
register_globals = Off
disable_functions = popen,exec,system,passthru,proc_open,shell_exec,in i_restore,dl,symlink,chgrp,ini_set,putenv,extensio n_loaded,getmyuid, posix_setuid,posix_setsid,posix_setpgid,posix_kill ,apache_child_terminate,chmod,chdir,phpinfo
safe_mode = On
safe_mode_gid = On
open_basedir = "/web/rdot/"
3.4 Настраиваем mod-security2
для начала создадим необходимые каталоги и файлы:

Цитата:
$mkdir /etc/apache2/conf.d/modsec
$mkdir /var/log/apache2/modsec
$touch /etc/apache2/conf.d/modsec/modsecurity_crs_10_config.conf
$touch /etc/apache2/conf.d/modsec/modsecurity_crs_15_customrules.conf
Далее отредактируем созданные файлы:
modsecurity_crs_10_config.conf - файл с основными настройками модуля
modsecurity_crs_15_customrules.conf - файл с правилами для модуля
Цитата:
$nano /etc/apache2/conf.d/modsec/modsecurity_crs_10_config.conf
Содержимое:
Цитата:
# Включить движок фильтра
SecRuleEngine On

# Вести лог только для подозрительных запросов
SecAuditEngine RelevantOnly


# Имя файла лога
SecAuditLog /var/log/apache2/modsec/audit_log

# Вывод отладочной информации
SecDebugLog /var/log/apache2/modsec/debug_log
SecDebugLogLevel 1

# Для подозрительных запросов по умолчанию писать в лог
# и возвращать HTTP ответ с кодом 403
SecDefaultAction log,auditlog,deny,status:403,phase:2
Цитата:
$nano /etc/apache2/conf.d/modsec/modsecurity_crs_15_customrules.conf
Содержимое:
Цитата:
# Защита от LFI\read file
SecRule ARGS "\.\./"
SecRule ARGS "/etc.+passwd" "t:lowercase"
SecRule ARGS "/proc/.+" "t:lowercase"

# Защита от SQL-injections
SecRule ARGS "delete.+from" "t:lowercase"
SecRule ARGS "insert.+into" "t:lowercase"
SecRule ARGS "select.+from" "t:lowercase"
SecRule ARGS "union.+select" "t:lowercase"
SecRule ARGS "group_concat" "t:lowercase"
SecRule ARGS "information_schema" "t:lowercase"
SecRule ARGS "benchmark" "t:lowercase"

# Изменяем ответ сервера, софт теперь у нас не apache
SecServerSignature "IIS"
Вышеуказанные правила для модуля рабочие, хотя и требуют доработки, приведены для примера.
За более подробной инструкцией по настройке модуля следует обратиться к официальной документации.



4. Выводы
В данной статье мы рассмотрели создание chroot-окружения внутри системы, установку веб-сервера в песочницу, и увеличили безопасность web-сервера.

5. Полезные ссылки
http://www.modsecurity.org/
http://ru.wikipedia.org/wiki/Chroot
http://wiki.debian.org/Debootstrap
http://agapoff.name/mod_security-dlya-apache.html
http://www.securitylab.ru/analytics/243752.php


P.S. Все шаги выполнялись одновременно на рабочем сервере, после множественных экспериментов и продолжительного и мучительного тестирования все получилось.
P.P.S. На сервер с данной конфигурацией в качестве теста был установлен Wordpress, полет нормальный! ;)

(c)Twost
27.07.2011 г.
__________________

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Безопасность
Опубликовал: Maxim2009
Просмотров: 12991
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Оригинал статьи тут - RDOT.ORG
 
В дальнейшем прошу согласовывать перепечатку материалов статьи с автором.
 
С уважением, Twost.
07.09.2011 / Twost
Чему возмущайтесь уважаемый Twost? Разве я не поставил копирайты?!............ Разве я не указал ссылку на источник?!........... Тогда к чему весь разговор?............. Ах, да. Я не попросил разрешение на перепечатку инфо.  Какой То непонятный выпендреж с этим "просить разрешение" вам не кажетса? Я думаю так, раз инфа попала в сеть значит она для всех. Если вы изначально хотели  чтоб она не было общедоступно, тогда не надо было ее публиковать.
11.09.2011 / Maxim2009
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • Самозащита от вируса Petya
  • Google Pixel взломали за 60 секунд
  • В CMS Joomla обнаружена критическая 0-day уязвимость
  • ФБР не смогло взломать протокол шифрования переписки террористов ...
  • Полиция обыскала дом предполагаемого создателя платежной системы ...
  • Google: квантовый ПК будет в 100 млн раз быстрее стандартных чипо...
  • "Лаборатория Касперского" констатирует усиление атак кибергруппир...
  • Microsoft Edge откроет исходные коды ChakraCore
  • Anonymous объявили 11 декабря «днём троллинга» ИГИЛ
  • Миллионы телевизоров, смартфонов и маршрутизаторов оказались уязв...

    Все новости... Все статьи... Прислать новость RSS
  • Взлом и безопасность / Разное » есть кто реально взламывает вотсап? достали разводилы!
  • Взлом и безопасность / Новичкам » Re: Услуги взлома ВКонтакте,Вотсап,Вайбер,Взлом ПОЧТЫ [ГАРАН...
  • Взлом и безопасность / Новичкам » Re: Услуги взлома ВКонтакте,Вотсап,Вайбер,Взлом ПОЧТЫ [ГАРАН...
  • Взлом и безопасность / Новичкам » Re: УСЛУГИ ВЗЛОМА МЕССЕНДЖЕРОВ, СОЦ СЕТЕЙ, ПОЧТЫ, САЙТОВ И Т...
  • Взлом и безопасность / Новичкам » Услуги легального взлома ВКонтакте,Вайбер,Вотсапп!Анонимно!
  • Взлом и безопасность / Новичкам » Re: УСЛУГИ ВЗЛОМА МЕССЕНДЖЕРОВ, СОЦ СЕТЕЙ, ПОЧТЫ, САЙТОВ И Т...
  • Взлом и безопасность / Новичкам » Re: Профессиональные услуги по взлому
  • Взлом и безопасность / Новичкам » Услуги легального взлома ВКонтакте,Вайбер,Вотсапп!Анонимно!
  • Взлом и безопасность / Новичкам » Re: Взлом Whatsapp.Viber.Instagram. facebook.Узнаем взломаем...
  • Сети / Общее » Услуги взлома ,переписка whats app/viber

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 2007-2012. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    Ya-Cyt службы мониторинга серверов

    #{title}

    #{text}

    x

    #{title}

    #{text}