> 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

Це підсистема для роботи з мережевими пакетами, яка пропускає через свій фільтр усі з'єднання на сервері. Давайте розглянемо налаштування 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>

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://spacecore.gitbook.io/wiki/ua/network-and-security-configuration/iptables-configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
