FuckAV - Форум о крипторах

Анонимный антивирусный сканер VPN-сервис
[Copi]Team DDoS Service

SEO статьи - блог от создателя FuckAV | KOROVKA.so | Качественный VPN Service MultiVPN - PPTP/OpenVPN/DoubleVPN

Реклама на форуме | Помощь форуму | Аварийный блог

Наш Jabber-сервер расположен по адресу fuckav.in. Добро пожаловать!!!

Вернуться  

Статьи Раздел с интересными статьями!

Для того, чтобы ответить в теме, необходимо зарегистрироваться.
 
Опции темы Опции просмотра
Старый 30-03-2014   #1
NoLimit

Windows v.2.03

Последняя активность:
03-04-2014
Регистрация: 24.11.2013
Сообщений: 16
Поблагодарили всего: 1
за это сообщение: 0
По умолчанию Безопасный web-сервер.

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 [Ссылки могут видеть только зарегистрированные пользователи.] 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 [Ссылки могут видеть только зарегистрированные пользователи.]
В аргументах к утилите мы указали:
- архитектуру будущей системы,
- дистрибьютив,
- непосредственно директорию, которая будет нам служить 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 [Ссылки могут видеть только зарегистрированные пользователи.] 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 > $mkdir -p -m 754 public_html/www
$mkdir -p -m 777 tmp
$chmod +t tmp
$chown -R rdot:rdot

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

3.1 Редактирование дефолтного виртуального хоста под нашего юзера
Цитата:
$nano /etc/apache2/sites-enabled/000-default
Содержимое:
Цитата:
<VirtualHost *:80>
DocumentRoot "public_html/www/"
ServerName "rdot"
ErrorLog error_log
CustomLog 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 = ""
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. Полезные ссылки
[Ссылки могут видеть только зарегистрированные пользователи.]
[Ссылки могут видеть только зарегистрированные пользователи.]
[Ссылки могут видеть только зарегистрированные пользователи.]
[Ссылки могут видеть только зарегистрированные пользователи.]
[Ссылки могут видеть только зарегистрированные пользователи.]


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

(c) rdot.org
NoLimit вне форума  
Для того, чтобы ответить в теме, необходимо зарегистрироваться.

Метки
chroot, conf, rdot, web-сервер, безопасный


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить сервер saltic Помощь 2 29-01-2014 18:28
Антиддос сервер Deymos Жизнь форума 32 08-10-2012 07:49
Игровой сервер(а) Vendor Комната ожидания 1 06-05-2011 18:29
Рат сервер dum_forever Помощь 1 08-02-2011 02:16
Терминальный сервер.... kristal Помощь 8 25-06-2010 22:34

Часовой пояс GMT +3, время: 14:12.



Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. Перевод: zCarot
Други: SEO блог Deymos'a| ProLogic.Su| DServers.ru| Форум веб-мастеров