• Партнер


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

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

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

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии