# Настройка IPTables

<figure><img src="/files/7PQK91FMcaVFiVgwZMFl" alt=""><figcaption></figcaption></figure>

## Общая информация <a href="#obshaya-informaciya" id="obshaya-informaciya"></a>

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

## Debian / Ubuntu <a href="#debian-ubuntu" id="debian-ubuntu"></a>

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

{% hint style="info" %}
**Sudo** предназначена для использования на **ОС Ubuntu**. Для **Debian** используется обыкновенная команда.
{% endhint %}

## CentOS \[Fedora] <a href="#centos-fedora" id="centos-fedora"></a>

```
sudo yum install iptables
```

## Настройка <a href="#nastroika" id="nastroika"></a>

После установки утилиты перейдем к ее подробной настройке.

## Аргументы <a href="#argumenty" id="argumenty"></a>

{% hint style="info" %}
**-A** — добавить правило в раздел.

**-С** — проверить все правила.

**-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 %}

## Открытие порта(-ов) <a href="#otkrytie-porta-ov" id="otkrytie-porta-ov"></a>

Для начала давайте проверим список наших правил:

```
iptables -L
```

<figure><img src="/files/3gdPqTinXwyvtuvfM6oT" alt=""><figcaption><p>Как видим, все пусто</p></figcaption></figure>

Попробуем открыть один **TCP-порт** **80** для **входящих соединений**:

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

Проверим список еще раз...

<figure><img src="/files/78PUw9uExxvNufoHyp42" alt=""><figcaption><p>Как видим, все открыто.</p></figcaption></figure>

Теперь давайте попытаемся открыть диапазон **UDP-портов** **от** **25565** **до** **25570** для **исходящих подключений**:

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

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

<figure><img src="/files/UACxfBh66hoirqMqUUDz" alt=""><figcaption><p>Диапазон UDP-портов доступен.</p></figcaption></figure>

Хотите закрыть **все входящие подключения** для **TCP 250**? Не проблема.

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

<figure><img src="/files/tMtSAtN0l3dTnXyJNv5X" alt=""><figcaption><p>Готово</p></figcaption></figure>

## Удаление правил <a href="#udalenie-pravil" id="udalenie-pravil"></a>

Теперь попробуем удалить правило, которое разрешает **входящие соединения** для **TCP 80**:

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

<figure><img src="/files/tUAmaYscHTszd0pKT7s8" alt=""><figcaption><p>Правило удалено.</p></figcaption></figure>

## Удаление всех правил <a href="#udalenie-vsekh-pravil" id="udalenie-vsekh-pravil"></a>

Для этого используйте команду

```
iptables -F
```

<figure><img src="/files/4FEv1jdHPqZXHMCKXIUN" alt=""><figcaption><p>Все правила успешно очищены</p></figcaption></figure>

## Сохранение созданных правил <a href="#sokhranenie-sozdannykh-pravil" id="sokhranenie-sozdannykh-pravil"></a>

По умолчанию все созданные правила применяются до следующей перезагрузки и будут удалены во время ее выполнения. Чтобы избежать этого, давайте сохраним созданные нами правила **IPTables**. Для этого необходимо использовать соответствующую команду.

```
iptables-save
```

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

Получилось. Правила сохранены и будут активны даже после перезагрузки нашего сервера.


---

# Agent Instructions: 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:

```
GET https://wiki.qwins.co/nastroika-seti-i-bezopasnost/nastroika-iptables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
