# Как открыть порт на Ubuntu/Debian

Управление сетевыми портами в Linux - ключевое понятие безопасности. Минимизация числа открытых портов сокращает поверхность атаки и скрывает запущенные сервисы от внешнего сканирования, предотвращая сбор данных о системе и прочей информации. В данной инструкции мы рассмотрим такие фаерволлы как: *iptables*, *ufw* и *firewalld*.

## iptables

Это самый простой и мощный инструмент. *ufw* и *firewalld* по сути являются надстройками над ним. Использовать его напрямую сложнее, но полезно для понимания работы сети.

{% hint style="danger" %}
**Важно!** Правила iptables сбрасываются после каждой перезагрузки сервера, если не установить сторонние утилиты.
{% endhint %}

**Как открыть порт в iptables:**

```
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
```

{% hint style="info" %}
-A INPUT: добавить в конец списка входящих правил.

-p tcp: протокол TCP.

\--dport 80: порт.

-j ACCEPT: *разрешить.*
{% endhint %}

**Как закрыть порт в iptables:**

```
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
```

{% hint style="info" %}
-A INPUT: добавить в конец списка входящих правил.

-p tcp: протокол TCP.

\--dport 80: порт.

-j DROP: *запретить.*
{% endhint %}

**Сохранение правил после перезагрузки:**

Чтобы правила сохранились, потребуется установить утилиту *persistent.*

```
sudo apt install iptables-persistent
```

Сохраняем текущие правила:

```
sudo netfilter-persistent save
```

## ufw

Это базовый инструмент для Ubuntu. Он создан, чтобы упростить настройку iptables. Мы рекомендуем данный способ для новичков.

**Проверим статус ufw:**

```
sudo ufw status
```

{% hint style="info" %}
inactive - выключен (для включения `sudo ufw enable`).

active - включен (`для выключения sudo ufw disable`).
{% endhint %}

{% hint style="danger" %}
Если вы впервые включаете ufw, не забудьте разрешить подключение по 22 порту, иначе после включения доступ по SSH будет недоступен. (`sudo ufw allow 22`)
{% endhint %}

**Как открыть порт в ufw:**

```
sudo ufw allow 443
```

{% hint style="info" %}
allow - разрешить подключение.

443 - место для порта.
{% endhint %}

**Как закрыть порт в ufw:**

```
sudo ufw deny 80
```

{% hint style="info" %}
deny - запретить подключение.

80 - место для порта.
{% endhint %}

## firewalld

Чаще всего встречается в CentOS/Fedora, но его можно установить и на Ubuntu/Debian. Он удобен тем, что позволяет менять правила без сброса текущих соединений.

**Установим firewalld на Ubuntu/Debian:**

```
sudo apt install firewalld
```

**Проверим статус:**

```
sudo firewall-cmd --state
```

{% hint style="info" %}
active - Работает.

inactive - Выключен.

failed - Ошибка при запуске.
{% endhint %}

{% hint style="danger" %}
Если вы впервые включаете firewalld, не забудьте разрешить подключение по 22 порту, иначе после включения доступ по SSH будет недоступен. (`sudo firewall-cmd --permanent --add-port=22/tcp`)
{% endhint %}

**Как открыть порт в firewalld:**

В самом firewalld существует 2 режима открытия, а именно текущий (работает до перезагрузки) и постоянный *--permanent*. Мы настоятельно рекомендуем использовать постоянный.

```
sudo firewall-cmd --permanent --add-port=80/tcp
```

{% hint style="info" %}
\--permanent - постоянный режим работы.

\--add-port= - порт который нужно открыть.

./tcp - протокол
{% endhint %}

{% hint style="danger" %}
**Важно!** После использования флага *--permanent* обязательно нужно перезагрузить правила:

```
sudo firewall-cmd --reload
```

{% endhint %}

**Как закрыть порт в firewalld:**

По умолчанию все порты в firewalld закрыты, чтобы узнать список открытых портов:

```
sudo firewall-cmd --list-all
```

Ищем строку *services* или *ports* и удаляем нужную:

```
sudo firewall-cmd --permanent --remove-port=80/tcp
```

{% hint style="info" %}
\--permanent - постоянный режим работы.

\--remove-port= порт который нужно удалить.

./tcp - протокол
{% endhint %}

{% hint style="success" %}
На этом все. Надеюсь мы смогли вам помочь!
{% endhint %}

## Мы:

**Наш сайт:** [https://zonavps.ru](https://zonavps.ru/)

**Telegram-канал:** <https://t.me/zona_vps>


---

# 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.zonavps.ru/instrukcii/kak-otkryt-port-na-ubuntu-debian.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.
