Привет юные линуксоиды!

Сегодня я расскажу о самом необходимом минимуме при использовании сети internet — точнее о встроенном фаерволе
iptables.
Все началось с того, что я поставил себе ASPLinux 9.0
URAL.
Было все хорошо, но после месяца — двух использования я ради интереса выполнил nmap 127.0.0.1.

И что я вижу:

Interesting ports on localhost.localdomain (127.0.0.1):

(The 1592 ports scanned but not shown below are in state: closed)

Port State Service

27665/tcp open Trinoo_Master

31337/tcp open Elite

54320/tcp open bo2k

(список подредактирован)

Я очень удивился (обойдемся без крепких выражений) 🙂
Сам я их не ставил — это я мог себе гарантировать точно, так что кто-то постарался :)))
Почесав репу, я сел за настройку iptables. Походил по инету, только конфигурационных файлов для моей ситуации
я не нашел, все сервера да сервера… Пришлось писать самому. Ну так вот, выкладываю пример моего
конфигурационного файла с подробными пояснениями, который подойдёт любому модемщику.
Все пишется в /etc/sysconfig/iptables. Можно ручками, можно средствами webmin, может ещё как-то —
я не заморачивался.
Описание команд iptables я не привожу, кому интересно, можете сходить сюда:
http://www.opennet.ru/docs/RUS/iptables/index.html

Политики по умолчанию:

INPUT — DROP

FORWARD — ACCEPT

OUTPUT — DROP — это на случай если проморгаю :)))

cat /etc/sysconfig/iptables

-A INPUT -i lo -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

Разрешаем прохождение любого трафика по интерфейсу обратной петли.

-A INPUT -m state ! -i lo —state NEW -j DROP

Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.

-A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

— если интерфейс не lo, то нефиг ломиться в его адресов.

-A INPUT -s 10.0.0.0/8 -i ppp0 -j DROP

-A INPUT -d 10.0.0.0/8 -i ppp0 -j DROP

-A OUTPUT -s 10.0.0.0/8 -o ppp0 -j DROP

-A OUTPUT -d 10.0.0.0/8 -o ppp0 -j DROP

-A INPUT -i ppp0 -f -j DROP

-A INPUT -s 172.16.0.0/12 -i ppp0 -j DROP

-A INPUT -d 172.16.0.0/12 -i ppp0 -j DROP

-A OUTPUT -s 172.16.0.0/12 -o ppp0 -j DROP

-A OUTPUT -d 172.16.0.0/12 -o ppp0 -j DROP

-A INPUT -s 192.168.0.0/16 -i ppp0 -j DROP

-A INPUT -d 192.168.0.0/16 -i ppp0 -j DROP

-A OUTPUT -s 192.168.0.0/16 -o ppp0 -j DROP

-A OUTPUT -d 192.168.0.0/16 -o ppp0 -j DROP

-A INPUT -s 127.0.0.1/255.0.0.0 -i ppp0 -j DROP

-A OUTPUT -s 127.0.0.1/255.0.0.0 -o ppp0 -j DROP

-A INPUT -s 255.255.255.255 -i ppp0 -j DROP

-A INPUT -d 0.0.0.0 -i ppp0 -j DROP

-A OUTPUT -s 255.255.255.255 -o ppp0 -j DROP

-A OUTPUT -d 0.0.0.0 -o ppp0 -j DROP

-A INPUT -s 224.0.0.0/4 -i ppp0 -j DROP

-A INPUT -s 1.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 2.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 5.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 7.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 23.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 27.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 31.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 37.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 39.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 41.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 42.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 58.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 60.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 65.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 66.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 67.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 68.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 69.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 70.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 71.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 72.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 73.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 74.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 75.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 76.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 77.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 78.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 79.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 80.0.0.0/4 -i ppp0 -j DROP

-A INPUT -s 96.0.0.0/4 -i ppp0 -j DROP

-A INPUT -s 112.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 113.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 114.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 115.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 116.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 117.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 118.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 119.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 120.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 121.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 122.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 123.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 124.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 217.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 218.0.0.0/8 -i ppp0 -j DROP

-A INPUT -s 219.0.0.0/8 -i ppp0 -j DROP
-A INPUT -s 220.0.0.0/6 -i ppp0 -j DROP

В интернете есть группы адресов с которых не могут прийти правильные запросы,
значит кто-то шутит ) — дропаем.

-A INPUT -p icmp -m icmp -i ppp0 —icmp-type source-quench -j ACCEPT

-A OUTPUT -p icmp -m icmp -o ppp0 —icmp-type source-quench -j ACCEPT

Разрешаем icmp сообщение — подавление источника — используется для регулирования скорости обмена данными
между узлами.

-A INPUT -p icmp -m icmp -i ppp0 —icmp-type echo-reply -j ACCEPT

-A OUTPUT -p icmp -m icmp -o ppp0 —icmp-type echo-request -j ACCEPT

Разрешаем себе пинговать кого угодно — нас же не попингуешь — пакеты рубятся.

-A INPUT -p icmp -m icmp -i ppp0 —icmp-type parameter-problem -j ACCEPT

-A OUTPUT -p icmp -m icmp -o ppp0 —icmp-type parameter-problem -j ACCEPT

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

-A INPUT -p tcp -m tcp -i ppp0 —dport 6000:6063 -j DROP —syn

Иксов захотели? А ну в дроп!

-A INPUT -p tcp -m tcp -m multiport -i ppp0 -j DROP —dports прописываем порты, которые открыты
в системе, но которые не должны светиться наружу.

-A OUTPUT -p udp -m udp -o ppp0 —dport 53 —sport 1024:65535 -j ACCEPT

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 53 —sport 1024:65535 -j ACCEPT

-A INPUT -p udp -m udp -i ppp0 —dport 1024:65535 —sport 53 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65353 —sport 53 -j ACCEPT

ДНС — вещь нужная — разрешаем.

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 113 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 113 -j ACCEPT ! —syn

-A INPUT -p tcp -m tcp -i ppp0 —dport 113 -j DROP

Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер — запрещаем.

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 25 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 25 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 110 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 110 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 23 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 23 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 22 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 22 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 22 —sport 1020:1023 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1020:1023 —sport 22 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 21 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 21 -j ACCEPT ! —syn

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 20 -j ACCEPT

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 20 —sport 1024:65535 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 1024:65535 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 1024:65535 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -m multiport -o ppp0 —sport 1024:65535 -j ACCEPT —dports 80,443

-A INPUT -p tcp -m tcp -m multiport -i ppp0 —dport 1024:65535 -j ACCEPT —sports 80,443 ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 79 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 79 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 43 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 43 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 70 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 70 -j ACCEPT ! —syn

-A OUTPUT -p tcp -m tcp -o ppp0 —dport 210 —sport 1024:65535 -j ACCEPT

-A INPUT -p tcp -m tcp -i ppp0 —dport 1024:65535 —sport 210 -j ACCEPT ! —syn

-A OUTPUT -p udp -m udp -o ppp0 —dport 33434:33523 —sport 32769:65535 -j ACCEPT

Почтой, shh, ftp, web, finger, whois, gopher и wais — на всякий случай, traceroute — разрешаем себе,
к нам не проломятся — запрещено.
Telnet запретил, чтобы соблазна не было передавать пароли прямым текстом.

-A OUTPUT -p udp -m udp -o ppp0 —dport 67 —sport 68 -j ACCEPT

-A INPUT -p udp -m udp -i ppp0 —dport 68 —sport 67 -j ACCEPT

Ну а это правило просто необходимо, если ip_адрес у тебя динамический.

Запускаем iptables — у меня за это отвечает S08iptables в каталоге /etc/rc.d/rc5.d/ — ./S08iptables start.
Вот что выдал nmap, запущенный на удаленном хосте: 

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )

All 1542 scanned ports on мой_ip_адрес are: filtered

Nmap run completed — 1 IP address (1 host up) scanned in 2605 seconds

Вот в принципе и все — конечно не плохо было бы прикрутить службу логирования всех дропнутых пакетов, но это не
первостепенная задача. Если ты разобрался о чем тут речь, то и с этой задачей уже разберёшься.
Все вопросы, возникшие в процессе разборки моего конфа можешь слать по адресу
elfarda@yandex.ru, чем
смогу — помогу.

— Жизнь как рояль — клавиша белая, клавиша черная, белая, черная — крышка…

Оставить мнение

Check Also

Бронируем Windows. Комплексный аудит безопасности — от файрвола до Active Directory

В этой статье мы пройдемся по самым популярным и мощным утилитам для проверки уровня защищ…