Знание должно быть доступно!

Путь /ОС/Linux/iptables

Что такое iptables?

iptables — это утилита для настройки правил фильтрации и маршрутизации пакетов в Linux. Она позволяет управлять тем, какой трафик проходит через систему, и какие действия выполнять с пакетами.

Основные понятия

  1. Таблицы (Tables):

    • filter: Основная таблица для фильтрации пакетов. Правила в этой таблице решают, разрешать или блокировать пакеты.

    • nat: Таблица для Network Address Translation. Используется для изменения IP-адресов пакетов (например, перенаправление портов).

    • mangle: Таблица для изменения пакетов (например, изменение полей заголовков).

    • raw: Таблица для управления обработкой пакетов до того, как они будут обработаны другими таблицами.

    • 
      
  2. Цепочки (Chains):

    • INPUT: Пакеты, приходящие в систему.
    • FORWARD: Пакеты, которые пересылаются через систему (между интерфейсами).
    • OUTPUT: Пакеты, исходящие из системы.
    • PREROUTING: Пакеты, которые поступают в систему до маршрутизации.
    • POSTROUTING: Пакеты, которые проходят маршрутизацию перед выходом из системы.

  3. Правила (Rules): Каждое правило в iptables определяет:

    • Условие (например, входящий интерфейс, исходящий интерфейс, источник или назначение IP-адреса).
    • Действие (например, ACCEPT, DROP, REJECT, DNAT).
### Как это работает?

Когда пакет поступает в систему, он проверяется по следующим этапам:

1. **PREROUTING**: Пакет обрабатывается таблицей `nat` для перенаправления и маскарадинга.
2. **INPUT**: Если пакет предназначен для локальной системы, он обрабатывается таблицей `filter` в цепочке `INPUT`.
3. **FORWARD**: Если пакет нужно передать на другой интерфейс, он проверяется в цепочке `FORWARD`.
4. **OUTPUT**: Если пакет создается локально, он проверяется в цепочке `OUTPUT`.
5. **POSTROUTING**: Пакет обрабатывается таблицей `nat` для изменения адресов перед отправкой.
6.   
    

### Примеры команд

**Разрешение всего трафика**:
  1.  sudo iptables -A INPUT -j ACCEPT
     sudo iptables -A FORWARD -j ACCEPT
     sudo iptables -A OUTPUT -j ACCEPT
    

Блокировка трафика с определенного IP:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Управление и сохранение

Просмотр правил:

sudo iptables -L -v -nУдаление:

Примечания:

Посмотреть все порты активные:
ss -ntlp