Хакер №024. Спецвыпуск


024-062-5, ПОСТРОЙ СЕБЕ САМ: БЫСТРЫЙ СПОСОБ ПОЗНАКОМИТЬСЯ С IPTABLES



ПОСТРОЙ СЕБЕ САМ: БЫСТРЫЙ СПОСОБ ПОЗНАКОМИТЬСЯ С IPTABLES

ViTLS (vitls@beshtau.ru)

Спецвыпуск Xakep, номер #024, стр. 024-062-5

И наконец:

$IPT -A INPUT -i ppp0 -p udp -s 0/0 --sport 0:65535 -d 0/0 --dport 1:1024 -j DROP

Данная строка добавляет в цепочку INPUT фильтр по критериям: пакет должен прийти с интерфейса ppp0 (-i ppp0), пакет должен быть по протоколу udp (-p udp), прийти с любого адреса (-s 0/0), с любого из портов, указанных в диапазоне (--sport 0:65535), пакет должен быть адресован любому адресу (-d 0/0) и прийти на любой порт в указанном диапазоне (--dport 1:1024). Если пакет подходит под ВСЕ условия, он направляется в цепочку DROP (-j DROP). То есть уничтожается системой.

СОХРАНЯЕМ И ВОССТАНАВЛИВАЕМ ПРАВИЛА

Iptables хранит все таблицы и цепочки в оперативной памяти компьютера. Но авторы не были идиотами и сделали возможность сохранения настроек и их последующего восстановления. Для этого в природе существуют утилиты iptables-save и iptables-restore. Их использовать ну очень просто.

Для сохранения:

iptables-save > filename

(надо указать имя файла с сохраненными цепочками).

Для восстановления:

iptables-restore < filename

(надо указать имя файла с сохраненными цепочками).

Iptables-save cохранит все твои цепочки в специальном файле. А iptables-restore их потом так же хорошо восстановит.

Если ты намерен пользоваться iptables постоянно, лучше всего один раз написать и отладить набор нужных тебе правил. Затем дать сохранить при помощи iptables-save. Для восстановления же при включении компьютера нужно в конец одного из стартовых сценариев (рекомендуется /etc/rc.d/rc.local) добавить строку iptables-restore < filename, где filename - имя файла с правилами, сохраненными при помощи iptables-save.

ПОЛЕЗНЫЕ ПРИМЕРЫ

Как настроить пакетный фильтр для фильтрации по содержимому пакетов?

Следующие правила блокируют прохождение пакетов, данные в которых содержат подстроку virus.exe и ведут лог пакетов со строкой secret внутри:

#!/bin/sh

iptables -A INPUT -m string --string "secret" -j LOG --log-level info \ --log-prefix "SECRET"

iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --string "virus.exe"

# Block Code Red

iptables -I INPUT -j DROP -p tcp -m string --string "cmd.exe"

# Block Nimda

iptables -I INPUT -j DROP -p tcp -m string --string "root.exe"

iptables -I INPUT -j DROP -p tcp -m string --string "default.ida"

Другая ситуация: машина подключена к Инету напрямую, нужно сделать так, чтобы доступ с нее был только на ftp, а все остальные in и out пакеты блокировались.

iptables -F OUTPUT

iptables -P OUTPUT DROP

iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT # это если не хочешь по ip лазать

iptables -F INPUT

iptables -P INPUT DROP

iptables -A INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT

iptables -A INPUT -p udp --sport 53 -j ACCEPT # опять же для dns

ЧТО ЧИТАЕМ?

Читать тебе, перчик ты недозрелый, придется много, часто и густо. Ха! Не делай такое кислое лицо - это тебе не идет. Ты думаешь, что крутые перцы, о которых идет такая громкая слава, родились с такими мозгами? Ни хрена подобного! Они просиживают ночами, пытаясь вникнуть в документацию. Бери с них пример. И твои нервы станут мягкими и шелковистыми.

Назад на стр. 024-062-4  Содержание  Вперед на стр. 024-062-6


 



Начало  Назад  Вперед