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

Сегодня я расскажу о самом необходимом минимуме при использовании сети 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

Компания Sophos открывает исходные коды утилиты Sandboxie

Утилита для Windows Sandboxie, позволяющая запускать любые приложения в защищенной песочни…

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