Iptables — настройка Firewall для Linux

Программирование Администрирование Iptables — настройка Firewall для Linux

Помечено: , ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 7 мес., 1 неделя назад.

  • Автор
    Сообщения
  • #5486
    @admin

    Разговор пойдет о консольной утилите iptables для Linux систем, которую смело можно обозвать полноценным сетевым экраном. Разобраться в ней «с наскока» не так просто, как хотелось бы, страница с маном кажется просто огромной простыней лишнего текста, не понятно для кого написанной.

    iptables является оболочкой над netfilter, которая повсеместно принята за стандарт. Часто под iptables понимают сам межсетевой экран netfilter, и мы не станем исключением. Хотя вообще весь набор программ — межсетевой экран + утилита для управления им так и называется: netfilter/iptables.

    Сетевой экран умеет блокировать, пропускать, перенаправлять пакеты, следуя определенными, очень гибким настраиваемым правилам. В том числе: фильтрация по протоколу передачи, по адресу источника, по адресу назначения, по номеру порта.

    Колдовать можно как угодно, но сейчас я приведу основные конструкции, на примере которых можно гибко настроить межсетевой экран для своего Linux`а.
    Основные команды Iptables

    Вообще вся работа с iptables должна выполняться исключительно от рута. В примерах я буду писать чистые команды, например, без sudo для Ubuntu, но имеем ввиду, что консоль открыта от имени рута.
    Самая важная команда: посмотреть текущую таблицу правил iptables

    iptables -L -n -v

    Ключ -L в прямом смысле слова означает List(список).
    Ключ -n говорит о том, что нужно выводить значения в цифровом виде(не localhost, а 127.0.0.1).
    Ключ -v выводит дополнительные данные, увеличивает информативность таблицы.

    Добавление / удаление записи

    iptables -A {INPUT|OUTPUT} -p {protocol} --dport {номер порта} -J {действие}

    Ключ -A говорит нам о том, что мы добавляем правило в таблицу INPUT(входящие) или OUTPUT(исходящие).
    Ключ -p позволяет указать протокол передачи, возможные значения: tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh.
    Ключ —dport (два минуса) позволяет задать номер порта.
    Самый главный ключ -j означает действие, которое нужно совершить с пакетом, попавшим под все остальные условия: ACCEPT(принять), DROP(отбросить), LOG(записать данные в лог).

    Удалить запись с текущими параметрами из таблицы INPUT или OUTPUT:
    iptables -D {INPUT|OUTPUT} -p {protocol} --dport {номер порта} -J {действие}

    Примеры настройки iptables

    Разрешить icmp пакеты из всех сетей кроме хоста 192.168.123.123.

    iptables -A INPUT -p icmp -s 192.168.123.123 -j DROP
    iptables -A INPUT -p icmp -j ACCEPT

    Разрешить доступ на 22 порт по протоколу tcp с хоста 192.168.123.123.

    iptables -A INPUT -p tcp --dport 22 -s 192.168.123.123 -j ACCEPT

    Разрешить доступ из всей подсети 12.34.0.0/16, на 80 порт по tcp.

    iptables -A INPUT -p tcp --dport 80 -s 12.34.0.0/16 -j ACCEPT

    Разрешить входящий udp трафик на порты 1000-20000

    iptables -A IPNPUT -p udp --dport 1000:20000 -j ACCEPT

    Запросы на 22 порт с любого хоста, кроме 192.168.123.123 должны обрабатываться.

    iptables -A INPUT -p tcp --dport 22 ! -s 192.168.123.123 -j DROP

    Логировать все пакеты, которые будут отброшены.

    iptables -A INPUT -j LOG
    iptables -A INPUT -j DROP

Для ответа в этой теме необходимо авторизоваться.