> For the complete documentation index, see [llms.txt](https://spacecore.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spacecore.gitbook.io/wiki/ua/network-and-security-configuration/iptables-configuration.md).

# Налаштування IPTables

{% hint style="danger" %}

### Дані застаріли

**База знань переїхала →** [**https://wiki.spacecore.pro/**](https://wiki.spacecore.pro/)

Ця вікі більше не оновлюється. Актуальні інструкції та статті — за новою адресою.
{% endhint %}

{% content-ref url="<https://wiki.spacecore.pro/>" %}
<https://wiki.spacecore.pro/>
{% endcontent-ref %}

***

Це підсистема для роботи з мережевими пакетами, яка пропускає через свій фільтр усі з'єднання на сервері. Давайте розглянемо налаштування IPTables детальніше.

## **Загальна інформація**

IPTables вже вбудований у основне ядро Linux за замовчуванням, але інструменти для роботи з ним у багатьох дистрибутивах не доступні за замовчуванням, тому використаємо команду для встановлення утиліти.

### Debian / Ubuntu

```
[sudo] apt install iptables
```

{% hint style="info" %}
Sudo призначений для використання в операційній системі Ubuntu. Для Debian використовується проста команда.
{% endhint %}

### CentOS \[Fedora]

```
sudo yum install iptables
```

## **Налаштування**

Після встановлення утиліти перейдемо до її детального налаштування.

## **Аргументи**

{% hint style="info" %}

* `-A` — додати правило до розділу.
* `-C` — перевірити всі правила.
* `-D` — видалити правило.
* `-I` — вставити правило з потрібним номером.
* `-L` — вивести всі правила в поточному розділі.
* `-S` — вивести всі правила.
* `-F` — очистити всі правила.
* `-N` — створити розділ.
* `-X` — видалити розділ.
* `-P` — встановити дію за замовчуванням.
* `-p` — встановити протокол.
* `-s` — вказати адресу відправника.
* `-d` — вказати адресу одержувача.
* `-i` — вхідний мережевий інтерфейс.
* `-o` — вихідний мережевий інтерфейс.
* `-j` — застосувати правило.
  {% endhint %}

{% hint style="info" %}

* `INPUT` — обробка вхідних пакетів і з'єднань.
* `FORWARD` — використовується для пересилання з'єднань. Тут обробляються відповідні пакети, які надходять на ваш сервер, але не визначають його як ціль доставки.
* `OUTPUT` — повністю протилежне першому. Використовується для вихідних пакетів і з'єднань.
  {% endhint %}

{% hint style="info" %}

* `ACCEPT` — пропустити пакет.
* `DROP` — видалити пакет.
* `REJECT` — відхилити пакет.
* `LOG` — зробити лог-файл відповідного пакета.
* `QUEUE` — надіслати пакет до користувацької програми.
  {% endhint %}

## **Відкриття портів**

Спочатку перевіримо наш список правил:

```
iptables -L
```

<figure><img src="/files/JFSpoSkXgSpWO7Rhbtjv" alt=""><figcaption></figcaption></figure>

Відкриємо TCP-порт 80 для вхідних з'єднань:

```
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
```

Перевіримо список знову...

<figure><img src="/files/bCWRqpdbq9kBsnRK7LFM" alt=""><figcaption></figcaption></figure>

Тепер відкриємо діапазон UDP-портів від 25565 до 25570 для вихідних з'єднань:

```
iptables -t filter -A OUTPUT -p udp --dport 25565:25570 -j ACCEPT
```

Перевіримо результат.

<figure><img src="/files/tHIxZL7gKUasjOAcgbDY" alt=""><figcaption></figcaption></figure>

Хочете закрити всі вхідні з'єднання для TCP 250? Без проблем:

```
iptables -t filter -A INPUT -p tcp --dport 250 -m state --state ESTABLISHED -j DROP
```

<figure><img src="/files/5Pem65rkDBh3xN1TF8cZ" alt=""><figcaption></figcaption></figure>

## **Видалення правил**

Спробуємо видалити правило, яке дозволяє вхідні з'єднання для TCP 80:

```
iptables -t filter -D INPUT -p tcp --dport 80 -j ACCEPT
```

<figure><img src="/files/gavPLH0dy0uCmx7MoHg0" alt=""><figcaption></figcaption></figure>

## **Видалення всіх правил**

Для цього використовуйте команду:

```
iptables -F
```

<figure><img src="/files/BDZAbiA4j2A17xJyxYEa" alt=""><figcaption></figcaption></figure>

## **Збереження встановлених правил**

За замовчуванням всі правила, які були створені, застосовуються до наступного перезавантаження і будуть видалені під час нього. Щоб цього уникнути, збережемо правила IPTables, які ми створили. Для цього використовуйте відповідну команду:

```
iptables-save
```

<figure><img src="/files/5ExbRecSinRn78xGSYaq" alt=""><figcaption></figcaption></figure>

Все працює. Правила збережені і будуть активні навіть після перезапуску нашого сервера!
