11.07.2015 Views

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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 атак, лишнейне будет :).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!