Краткая памятка по Iptables

Iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) Netfilter для ядер Linux, начиная с версии 2.4. С её помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов. Для работы с семейством протоколов IPv6 существует отдельная версия утилиты — Ip6tables. Для использования утилиты Iptables требуются привилегии суперпользователя (root).

Ниже будет приведена краткая памятка по работе с данным инструментом.

Синтаксис iptables:

iptables [-t ТАБЛИЦА] -A ЦЕПОЧКА ПАРАМЕТРЫ -j ДЕЙСТВИЕ

Ключи для работы с цепочками:

  • -A — добавить новое правило;
  • -D — удалить правило;
  • -F — удалить все правила;
  • -R — замена правила;
  • -L — вывод списка всех правил.

В таблице filter(по умолчанию) существую следующие цепочки:

  • INPUT — входящий трафик;
  • OUTPUT — исходящий трафик;
  • FORWARD — пересылаемый(транзитный) трафик.

Параметры:

  • -p — протокол, можно использовать all, icmp, tcp, udp;
  • -s — ip адрес/хост источника;
  • -d — ip адрес/хост назначения;
  • -i — интерфейс на который пришел пакет;
  • -o — интерфейс с которого уйдет пакет;
  • —sport — порт источника;
  • —dport — порт назначения.

Действия:

  • ACCEPT — разрешить пакеты;
  • REJECT — блокировать пакеты с сообщением об отказе;
  • DROP — блокировать пакеты.

Примеры использования:

  1. Блокируем все входящие пакеты с IP 10.10.10.10:
    iptables -A INPUT -s 10.10.10.10 -j DROP

    Если использовать знак отрицания (!) можно сделать блокировку всех адресов, кроме заданного:

    iptables -A INPUT ! -s 111.111.111.111 -j DROP
  2. Снимаем блокировку с IP 10.10.10.10
    iptables -D INPUT -s 111.111.111.111 -j DROP
  3. Просматриваем список с правилами:
    iptables -L INPUT --line-numbers

    Мы сможем увидеть пронумерованные правила, которые можно удалить с помощью ключа -D. Например, удалим правило под номером 5:

    iptables -D INPUT 5
  4. Удаляем все правила:
    iptables -F
  5. Блокируем все пакеты для диапазона IP адресов с 10.10.20.10 по 10.10.20.20:
    iptables -I INPUT -m iprange --src-range 10.10.20.10-10.10.20.20 -j DROP
  6. Блокируем весь входящий трафик на порт 135 порт (DCOM):
    iptables -A INPUT -p tcp --sport 135 -j DROP
  7. Блокируем вх/исх трафик на домен facebook.com:
    iptables -A INPUT -s facebook.com -j DROP # блокируем входящие пакеты от домена facebook.com
    iptables -A OUTPUT -d facebook.com -j DROP # блокируем исходящие пакеты к домену facebook.com
  8. Блокируем диапазон 10.10.0.0/24:
    iptables -i eth1 -A INPUT -s 10.10.0.0/24 -j DROP
  9. Логируем и блокируем диапазон 10.10.0.0/16:
    iptables -A INPUT -s 10.10.0.0/16 -j LOG --log-prefix "IP DROP SPOOF A:"
    iptables -A INPUT -s 10.10.0.0/16 -j DROP

Для удобства можно прописать алиасы команд в .bashrc (или .bash_aliases) для удобства блокировки или разблокировки  IP адреса:

alias ban='iptables -I INPUT -j DROP -s'
alias unban='iptables -D INPUT -j DROP -s'

После чего блокировать и заблокировать адреса следующим способом:

ban 10.10.10.10
unban 10.10.10.10

Источник:

  • http://wolf-et.ru/linux/iptables-for-dummies/