Наш Jabber-сервер расположен по адресу fuckav.in. Добро пожаловать!!! |
|
Статьи Раздел с интересными статьями! |
Для того, чтобы ответить в теме, необходимо зарегистрироваться. |
|
Опции темы | Опции просмотра |
30-03-2014 | #1 | |
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 |
|
Для того, чтобы ответить в теме, необходимо зарегистрироваться. |
Метки |
chroot, conf, rdot, web-сервер, безопасный |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как удалить сервер | 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 |