KnigaRead.com/

Михаил Флёнов - Linux глазами хакера

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Михаил Флёнов, "Linux глазами хакера" бесплатно, без регистрации.
Перейти на страницу:

Простейший способ обхода сетевого экрана — подделка IP-адреса. Например, мне приходилось работать в сети, где простым пользователям запрещалось использовать почтовые протоколы SMTP и POP3 (подключение на 25 и 110 порты соответственно). Я относился к этой категории и не мог получать или отправлять почту, но доступ был у моего начальника. Использование Web-интерфейса для работы с почтовыми сервисами также блокировалось на уровне прокси-сервера. Однажды мне очень срочно нужно было отправить письмо. Для этого я выполнил следующее:

□ дождался, когда начальник выйдет из кабинета;

□ выключил его компьютер;

□ сменил свой IP-адрес на установленный на его компьютере;

□ спокойно отправил почту и вернул свой старый IP-адрес.

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

Есть множество способов обхода сетевых экранов (не считая ошибок в программах), и все же, правильная конфигурация сможет обеспечить спокойный сон администратора и специалиста по безопасности.

В ОС Linux в качестве Firewall выступает программа, которая фильтрует информацию на основе определенных правил, в которых должно быть четко прописано, какие пакеты могут обрабатываться или отправляться в сеть, а какие нет. Благодаря этому большинство атак могут захлебнуться уже на входе в компьютер, потому что сетевой экран не позволит сервисам даже увидеть потенциально опасные пакеты.

Сетевой экран может быть установлен на каждом компьютере в отдельности (защищать его в зависимости от выполняемых задач) или на входе в сеть (см. рис. 4.2). Во втором случае Firewall реализует общие настройки безопасности для всех компьютеров в сети.

Рис. 4.2. Firewall для защиты сети

Если в вашей сети очень много компьютеров, то управлять ими и обновлять политику безопасности становится затруднительным. Установка единого сервера с Firewall позволяет упростить эти процедуры. Лучше всего, если компьютер с сетевым экраном выступает как шлюз или как анонимный прокси- сервер для доступа в Интернет остальных участников сети. В этом случае хакер изначально будет видеть только этот компьютер, а остальные как бы прячутся за занавеской. Чтобы проникнуть на любую машину в сети, злоумышленник должен будет сначала получить доступ к компьютеру с Firewall. Таким образом, защита целой сети упрощается. Подробней о прокси-серверах вы можете узнать в гл. 9.

Но во всех сетевых экранах есть одно слабое звено — они программные и используют ресурсы сервера. Современные маршрутизаторы тоже могут решить большинство проблем, которые возлагаются на сетевые экраны Linux, С другой стороны, Linux тоже очень часто используют в качестве маршрутизатора в целях удешевления системы за счет применения старого железа.

4.10.1. Фильтрация пакетов

Итак, основной, но не единственной задачей сетевого экрана является фильтрация пакетов. В Linux уже встроен Firewall, и вам его не надо устанавливать отдельно. Точнее сказать, их даже два: iptables и ipchains. Они позволяют контролировать трафик, который проходит сквозь компьютер по протоколам TCP (Transmission Control Protocol, протокол управления передачей), UDP (User Data Protocol, пользовательский протокол данных) и ICMP (Internet Control Message Protocol, протокол управляющих сообщений в сети Интернет). Так как TCP является транспортом для всех основных протоколов Интернета: FTP (File Transfer Protocol, протокол передачи файлов), HTTP (Hypertext Transfer Protocol, протокол передачи гипертекстовых файлов), POP3 (Post Office Protocol, почтовый протокол) и др., то фильтрация TCP позволяет защищать все эти сервисы.

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

□ без предупреждений (deny, запрет);

□ с посылкой на компьютер отправителя сообщения об ошибке (reject, отклонение).

Я бы не выбирал последний вариант, потому что незачем направлять хакеру лишние пакеты. Лучше оставить действие без внимания, и злоумышленник будет думать, что сервис просто недоступен. Но в этом случае легальные пользователи могут ощутить неудобства при наличии просчета в конфигурировании сетевого экрана. Допустим, что вы по ошибке заблокировали доступ к 80 порту. Если пользователь обратится к Web-серверу, то программа, не получив ответа о запрете, будет находиться в состоянии ожидания до истечения Timeout. Для некоторых программ это значение может быть бесконечным, и они зависнут. Исправив ошибку в сетевом экране, вы дадите возможность пользователям работать корректно.

К тому же, отправка сообщений с ошибками идет по протоколу ICMP и увеличивает трафик. Хакер может использовать эти особенности для реализации атаки "Отказ от обслуживания" и переполнить ваш канал ненужными ответами. Атака DoS может быть направлена не только на трафик. Хакеру достаточно в цикле запускать запросы на установку соединения с запрещенным портом, а ваш компьютер будет тратить ресурсы на проверку пакетов и отправку ICMP-ответов. Если пакеты будут идти слишком часто, то сервер может не справиться с нагрузкой и перестанет отвечать на запросы авторизованных пользователей.

При настройке правил можно использовать два варианта фильтра:

1. Разрешено все, что не запрещено.

2. Запрещено все, что не разрешено.

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

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

4.10.2. Параметры фильтрации

Основными параметрами пакета, по которым производится фильтрация, являются номер порта источника или приемника, адрес отправителя или назначения и протокол. Как мы уже знаем, сетевым экраном поддерживаются три базовых протокола (TCP, UDP и ICMP), на основе которых строятся все сервисы — FTP, HTTP, POP3.

Обращаю ваше внимание, что фильтровать можно пакеты, идущие в обе стороны. Проверка пакетов, приходящих извне, позволяет на самом раннем этапе отсеять любые попытки взломать систему или вывести ее из строя.

А зачем фильтровать то, что уходит из сети? На первый взгляд бессмысленно, но резон есть и достаточно большой. У исходящего трафика могут быть враги, я их перечислю:

□ троянские программы, которые могут отправлять в сеть конфиденциальную информацию или соединяться с хакером или с его сервером, чтобы брать команды с какого-нибудь файла;

□ специализированные программы для обхода правил. Допустим, что вы запретили доступ к определенному порту извне. Хакер может поместить на сервере программу, которая будет перенаправлять трафик с разрешенного порта на запрещенный, наподобие туннелирования OpenSSL (Open Secure Sockets Layer, открытый протокол защищенных сокетов). Профессионалу написать такую утилиту — дело пяти минут.

Возможных лазеек для проникновения очень много, и ваша задача закрыть максимальное их количество. Для этого под контролем должен быть трафик в обоих направлениях.

Протоколы

TCP используется как базовый для передачи данных таких протоколов, как HTTP, FTP и др. Запрещать его не имеет смысла, потому что это основа, без которой вы лишитесь всех удобств, предоставляемых нам всемирной сетью. Для передачи данных сначала TCP устанавливает соединение с удаленным хостом, и только потом происходит обмен информацией. Благодаря этому подделка IP-адреса любого участника соединения усложняется, а иногда становится и невозможной.

Протокол UDP находится на одном уровне с TCP, но передает данные без установки соединения. Это значит, что пакет просто посылается в сеть на определенный адрес, и нет гарантии, что он дошел до адресата. Здесь нет никакой защиты от подделки IP-адреса, поэтому в качестве отправителя злоумышленник может указать что угодно, и наш сервер не увидит подвоха. Если нет особой надобности, то я запрещаю прохождение таких пакетов в обе стороны.

Протокол ICMP используется для обмена управляющими сообщениями. Через него команда ping проверяет соединение с компьютером, а оборудование или программы сообщают друг другу об ошибках. Если этот протокол использовать только по назначению, то он очень удобен. Но в нашей жизни все далеко от идеала, и ICMP уже не раз становился объектом для DoS-атак. Найдите любые способы, чтобы запретить этот протокол. Если обмен управляющими сообщениями необходим в вашей работе, попробуйте найти другую программу, но избавьтесь от использования ICMP.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*