ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
84ВзломКолонка СинцоваХАКЕР 04 /171/ 2013КОЛОНКААЛЕКСЕЯСИНЦОВАHARDENING —ПУТЬ САМУРАЯСегодня мы поговорим о такой важной составляющей ИБ,как укрепление сервера (hardening). Мы рассмотрим базовыйподход к укреплению классического Linux-сервера и разберем,насколько данный процесс важен и полезен.ВВЕДЕНИЕHardening — процесс усиления защищенностисистемы с целью снижения рисков от возможныхугроз. Данный процесс применяется ко всемкомпонентам системы, тем самым, в идеальномслучае, делая сервер неприступной крепостью.Судя по описанию, штука скучная и нехакерская,но, с другой стороны, именно это мы и называемпроцессами ИБ.Более того, харденинг — это базис всегоподхода к защите. Немудрено, что фактическиименно этот процесс лежит в основе требованийтакого стандарта, как PCI DSS. Во всех организациях,где ИБ — это не мерзкая обязанность из-затого, что какие-то «бумажные специалисты» этоготребуют, а реальная необходимость, именно харденинг— один из главных атрибутов любой выкатываемойв продакшн системы.МОЯ ПЛАТФОРМА — МОЯ КРЕПОСТЬДопустим, у нас есть система, построеннаяна Linux/Apache/MySQL/PHP. Мейнстрим, но мыпотерпим. Давай предположим, что у нас естьфронтенд, торчащий в интернет (Linux/Apache/PHP), и бэкенд (Linux/MySQL). Мы опустим бэкапы,балансировку и защиту от DDoS на уровнеархитектурных решений, ну и о MySQL, PHPи Apache мы поговорим, может быть, потом. Сегоднятолько ОС.Здесь и далее: все советы нужно применятьс умом, то есть надо понимать, на что влияетта или иная настройка, чтобы финальнаяконфигурация не убила функционал системы.В любом случае принцип подхода — отключи то,что не нужно, остальное настрой так, чтобы работалосогласно требованиям, а не по умолчанию.Это относится и к ядру. Все ненужные модулиможно смело отключить. Тот же принцип и для пакетов— все ненужные сервисы и пакеты можносмело отрубить/отключить.LINUX HARDENING«Сеть — это компьютер» (с), так что начнем нашпроцесс с настроек TCP/IP. В целом еще нет глобальнойподдержки IPv6, поэтому можно смелоотключать поддержку этого протокола на сетевыхинтерфейсах. IPv6 довольно молодой и дырявыйпротокол, лишних проблем с его настройками намне надо, как и лишних угроз.# Проверка ядра[ -f /proc/net/if_inet6 ] &&echo 'IPv6 ready system!'# Вывод интерфейсов с включенной# поддержкой IPv6ip -o -6 addrОстальные сетевые настройки: отключим поддержкуICMP-редиректов, форвардинг пакетов,ответы на широковещательный пинг — все этичеки можно легко автоматизировать на bash:# Проверяем IP Forwarding (не роутер же# у нас, а просто сервер…)if grep -q -P "^\s*net\.ipv4\.ip_forward\s*=\s*1\s*$" /etc/sysctl.conf; then echo "IP Forwardingenabled"; fi# Но одно дело — в конфиге, другое# дело — в памяти. Так даже будет# надежнее. В конфиге может быть ничего# не указано, а в памяти есть все# текущие настройки:if ! grep -q -P "^\s*0\s*$" /proc/sys/net/ipv4/ip_forward; then echo"IP Forwarding enabled"; fi# Проверяем поддержку маршрутизации# от источника (проверяем сразу для all# и default и сразу в памяти)if (! (grep -q -P "^\s*0\s*$"/proc/sys/net/ipv4/conf/all/accept_source_route && grep -q -P"^\s*0\s*$" /proc/sys/net/ipv4/conf/default/accept_source_route)); thenecho "Source routing enabled"; fiТаким же образом проверяем остальные сетевыенастройки:• net.ipv4.conf.(all|default).accept_redirects — ставим 0, игнорируем ICMPредиректы,так как не хотим, чтобы маршрутмог быть изменен.• net.ipv4.icmp_echo_ignore_broadcasts —ставим 1, кому нужны широковещательныепинги в двадцать первом веке?• net.ipv4.icmp_ignore_bogus_error_messages — зачем нам разбирать кривыеICMP-пакеты? Что там может быть хорошего,только логи засорять. В топку!• net.ipv4.tcp_syncookies — тут надо ставить1. Классическая защита от SYN flood атак, лишнейне будет :).