Чтение онлайн

на главную - закладки

Жанры

Спецвыпуск журнала «Хакер» 47, октябрь 2004 г.
Шрифт:

Раз уж мы заговорили об ограничениях, расскажу, как предостеречь свою машину от DoS-атаки. Нужно воспользоваться модулем limit.so, позволяющим ограничивать пропускную способность. Если ты видишь, что твой FTPD зажирает процессор и захлебывается в данных, сделай ограничение в 5 пакетов за одну секунду.

iptables –A INPUT –p tcp –dport 21 –m limit –limit 5/sec –j REJECT

Вероятно, у тебя уже кружится голова от наворотов POM. Но самое вкусное я оставил напоследок :). Теперь ты способен контролировать одновременное число подключений не только с одного IP-адреса, а даже с целой подсети! Это возможно, даже если сам сервис не поддерживает такую функцию. Модуль connlimit.so создан специально для подобной работы. Библиотека способна ограничить подключения к определенному сервису,

например, к демону sshd. Просто добавь рулес в цепь INPUT:

iptables –A INPUT –p tcp -syn -dport 22 -m connlimit -connlimit-above 3 -j REJECT.

И в заключение…

Думаю, этого материала тебе хватит не только для освоения азов iptables, но и для грамотной защиты своего сервера. Благо брандмауэр это позволяет :). Синтаксис iptables прост как три копейки, думаю, ты все понял уже после первого правила. Теперь все зависит только от тебя, я же могу пожелать немного терпения и изобретательности. Остальное прибавится после установки Patch-o-Matic :).

Ликбез по iptables

Вот несколько команд, которые ты можешь использовать при работе с iptables.

Листинг

iptables –N цепь – создание новой цепочки

iptables –F цепь – очистка произвольной цепи

iptables –X цепь – удаление цепи

iptables –D цепь номер_правила – удалить правило из определенной цепи

iptables –P цепь политика – изменение политики цепи

iptables –line-numbers –nvL цепь – просмотр всех правил в определенной цепи в verbose-режиме, без преобразования адресов с нумерацией каждого правила (быстрый и подробный просмотр)

service iptables save/restore – сохранение (восстановление) всех правил в отдельный конфиг

service iptables start/stop – запуск (останов) фаервола

Мнение эксперта

Андрей «Andrushock» Матвеев, редактор рубрики «UNIXoid» журнала «Хакер»:

«Число пользователей интернета с каждым днем неуклонно растет, а прогресс и информационные технологии не желают стоять на месте. В связи с этим провайдерам приходится выделять физическим лицам и организациям IP-адреса для маршрутизаторов и серверов, рабочих станций и WAP-терминалов, беспроводных устройств и даже бытовой техники. Так как число доступных адресов в реализации IPv4 составляет примерно 2 в 32-й степени, то мы невольно становимся свидетелями кризиса IP-адресов. По независимым статистическим исследованиям последний свободный адрес будет занят уже в 2008 году. Для решения проблемы были предложены, а затем внедрены три „лекарства“: протокол CIDR (бесклассовая доменная маршрутизация), качественно новый протокол IPv6 (адресное пространство составляет 2 в 128-й степени) и система NAT (трансляция сетевых адресов). Как раз за счет системы NAT пограничный шлюз может выполнять следующие процедуры: перехват всех клиентских запросов из доверенной подсети, подмена исходного порта и адреса источника своим непривилегированным портом и адресом своего внешнего сетевого интерфейса, ведение специальной таблицы соответствия установленных соединений, чтобы, получив от удаленного хоста ответный пакет, корректно перенаправить его клиенту, инициировавшему запрос. Благодаря такому подходу достаточно иметь всего один реальный IP-адрес, всем клиентским машинам назначаются специально зарезервированные IP-адреса, немаршрутизируемые во внешних сетях (RFC 1918). Поскольку все исходящие соединения устанавливаются от имени шлюза, полностью скрывается топология внутренней сети – это огромный плюс с точки зрения безопасности. Однако из-за трансляции адресов могут возникнуть проблемы при работе с FTP, IRC и некоторыми другими сложными протоколами (решается установкой специальных прокси). Нужно четко понимать, что брандмауэр с фильтрацией пакетов, такой, как iptables, ipfw, ipfilter, pf, – это не панацея от всех напастей глобальной сети. Это всего лишь, как ясно из названия, фильтр пакетов. Да, он может помешать выяснению доступности хоста (ping sweep), пресечь попытки сканирования портов, отсеять пакеты с недопустимыми комбинациями флагов (SYN+FIN, FIN+URG+PUSH), предотвратить DoS-атаку, разграничить доступ к службам на основе IP-адреса источника, перенаправить валидный трафик, защитить демилитаризованную зону и скрыть доверенную подсеть. Однако такой брандмауэр бессилен против червей, троянов, бэкдоров, эксплоитов, снифинга и, конечно же, против braindamaged пользователей, так как он работает, к сожалению, только на сетевом и транспортном уровнях. Поэтому многочасовая оптимизация правил непроницаемого брандмауэра – это зря потерянное время, если в системе крутится непропатченный Sendmail или инсекьюрный Wu-ftpd. К защите как сервера, так и клиентского хоста необходим комплексный подход.

Сохранить или восстановить правила помогут бинарники /sbin/iptables-save и /sbin/iptables-restore.

Поброди по каталогам POM и ознакомься с документацией по каждому модулю. Правда, сведений там не очень много.

Помимо главных патчей, POM содержит фиксы для содружества iptables с eggdrop, warcraft и quake3 :).

Чтобы узнать какие параметры понимает тот или иной модуль, выполни команду iptables -help –m имя_модуля.

Я не проверял работу POM с ядром 2.6.х. Разработчики о совместимости также умалчивают. Поэтому я не гарантирую стабильность работы с подобными кернелами.

Помимо DNAT существует и SNAT, когда заменяется адрес отправителя. Это бывает необходимым в некоторых случаях.

Существует специальный модуль netmap, который позволяет более удобно производить NAT. В ядре создается цель NETMAP, после чего можно сделать статическую привязку вида 1:1 к любой сети.

С документацией по iptables ты можешь ознакомиться на известном портале www.opennet.ru.

Хитрый тюнинг и грамотная защита / Приемы настройки сервера

Toxa (toxa@cterra.ru)

Ты поставил и настроил сервер. У тебя все работает, пользователи довольны, и теперь настало время добавить в систему ту самую изюминку, о которую, возможно, сломает зуб не один взломщик.

Тюнингуем систему

Первый шаг – обезопасить себя встроенными средствами. Общение с ядром будем проводить через sysctl – удобный интерфейс для тюнинга сетевой подсистемы. Расскажу на примере FreeBSD. В этой системе нужно обратить внимание, как минимум, на следующие переменные:

Листинг

net.inet.tcp.blackhole=2

net.inet.udp.blackhole=1

По стандарту, если на закрытый порт сервера приходит SYN-пакет, машина должна ответить RST-пакетом. Это упрощает сканирование портов, а также дает достаточное количество информации (в виде ответов от сканируемого сервера) для определения версии ОС. «Черные дыры» заставляют FreeBSD быть предельно лаконичной, не отсылая ничего в ответ на запросы к закрытым портам. Идем дальше.

Маршрутизацию от источника можно смело отключить:

Листинг

net.inet.ip.sourceroute=0

net.inet.ip.accept_sourceroute=0

Чтобы сервер не стал жертвой DoS-атаки, можно включить механизм syncookies, который служит для защиты сервера от SYN-флуда.

При серьезной атаке может не менее серьезно выручить. Выстави следующую переменную:

Листинг

net.inet.tcp.syncookies=1

Чтобы затруднить определение версии твоей ОС анализом приходящих от нее пакетов, изменим значение Time To Live:

Листинг

net.inet.ip.ttl=64

Современная система не должна отвечать на широковещательные пинги, но и по сей день существуют сети, которые могут стать источником DoS-атаки. Чтобы не попасть в их список, выставляем:

Листинг

net.inet.icmp.bmcastecho=0

Если ты хочешь отслеживать коннекты на закрытые порты твой машины, используй следующую переменную:

Листинг

net.inet.tcp.log_in_vain=1

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

Если не нужна поддержка смешного протокола T/TCP (TCP for Transactions), то пакеты с флагами SYN+FIN можно смело отбрасывать как неликвидные :). Протокол редко где используется, а потому это имеет смысл.

Поделиться:
Популярные книги

Особое назначение

Тесленок Кирилл Геннадьевич
2. Гарем вне закона
Фантастика:
фэнтези
6.89
рейтинг книги
Особое назначение

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Императорский отбор

Свободина Виктория
Фантастика:
фэнтези
8.56
рейтинг книги
Императорский отбор

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Огненный князь 3

Машуков Тимур
3. Багряный восход
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Огненный князь 3

Восход. Солнцев. Книга VI

Скабер Артемий
6. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга VI

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Волк 5: Лихие 90-е

Киров Никита
5. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 5: Лихие 90-е

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18