Протокол TCP, в отличие от UDP, перед началом передачи данных требует установки соединения. Перед установкой соединения производится обмен специальными пакетами, а после этого передаются обычные пакеты, содержащие данные.
Бастион (firewall, брандмауэр) — это системный компонент (фильтр), обеспечивающий защиту сети от несанкционированного доступа. IPChains представляет собой пакетный фильтр. Пакетный фильтр просматривает заголовок каждого пакета, который проходит через него, а потом решает, что делать со всем пакетом. Фильтрация пакетов встроена в ядро ОС Linux.
Обычно IPChains используется на шлюзах, соединяющих две сети, например, локальную и Интернет. При этом вы имеете право разрешить передавать или принимать какие-либо пакеты. Это позволяет обеспечить должный уровень безопасности и экономии.
С помощью IPChains можно ограничить свою хорошо организованную сеть от хаоса Интернет. Применение IPChains может решить такие виды атак, как пинг смерти, атака на отказ, IP-спуфинг, фрагментация пакетов. В этой главе будут описаны способы защиты от перечисленных атак на ваш сервер, а также будут приведены рекомендации по выявлению источника атак.
Для поддержки IPChains вам необходимо перекомпилировать ядро. О том, как это сделать рассказано в гл. 18. При этом вам нужно включить опции ядра IP:firewalling и IP:firewall packet. Я также рекомендую включить опции IP: masquerading и IP: always defragment. Скорее всего, они также вам понадобятся. Также вам следует включить IP-Forwarding (если вы еще это не сделали) командой:
echo "1" > /proc/sys/net/ipv4/ip_forward
Если же вам нужна поддержка динамических IP-адресов (например, для DHCP — см. гл. 8), включите ее с помощью команды:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
14.2. Настройка IPChains
Настройку IPChains лучше всего рассматривать на практических примерах. Но прежде, чем это сделать попробуем разобраться, как ядро фильтрует пакеты.
Ядро стартует с тремя списками правил: input, forward, output. Эти правила называются firewall-цепочками или просто цепочками. Когда вы получаете новый пакет, ядро использует цепочку input (входная цепочка). Перед этим пакет проверяется: не был ли он поврежден при пересылке? Поврежденные пакеты отвергаются. Если с пакетом все в порядке, пакет проходит проверку целостности: не запутает ли пакет правила фильтрации? Если пакет не проходит проверку целостности, он отвергается.
Если фильтр пропускает пакет, то ядро решает, куда его направить дальше. Это называется маршрутизацией. Если пакет предназначен для другой машины, то пакет должен пройти через цепочку forward. Если пакет проходит через фильтр forward, то удаленная машина получит этот пакет. Что делать с этим пакетом дальше, будет решать уже получившая его машина и для нас это не представляет интереса.
Если пакет предназначен для нашей машины, пакетный фильтр определяет, на какой интерфейс его следует переслать. Пакет, предназначенный для интерфейса lо (обратная петля), сначала проходит выходную цепочку, а потом попадает во входную цепочку интерфейса lо. Если пакет создан локальным процессом, который запущен на бастионе, он попадает в цепочку перенаправления (forward). Цепочка перенаправления применяется ко всем пакетам, проходящим сквозь бастион на другие машины.
Прежде чем пакет выйдет из сетевого интерфейса, он должен пройти цепочку output.
Цепочка — это список правил. Каждое правило можно сформулировать примерно так: «если заголовок пакета удовлетворяет такому-то условию, то поступить с ним так-то». Если первое правило не применимо к этому пакету, то рассматривается следующее правило в цепочке. Если ни одно правило не применимо к пакету, пакет, скорее всего, будет отвергнут. Если какой-нибудь пакет отвергается, в журнале syslog появляется соответствующее сообщение.
Программу ipchains можно вызывать со множеством параметров. Одни параметры создают новые цепочки, другие добавляют правила в цепочки (см. табл. 14.1).
Параметры программы ipchains Таблица 14.1
Параметр | Описание |
---|---|
-N | Создать новую цепочку |
-X | Удалить пустую цепочку |
-P | Изменить стратегию для пустой цепочки |
-L | Вывести правила цепочки |
-F | Удалить все правила из цепочки |
-Z | Обнулить счетчики пакетов и байтов во всех правилах цепочки |
-А | Добавить новое правило к цепочке |
-I | Вставить новое правило в определенную позицию |
-R | Заменить правило |
-D | Удалить правило, удовлетворяющее какому-нибудь условию |
Один из примеров использования IPChains мы уже рассматривали в главе 8. Напомню, в той главе нужно было организовать маршрутизацию средствами IPChains. При этом использовались следующие команды:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии