Как открыть порт в debian

от admin

Как открыть порт iptables

Самой распространенной операцией при работе с межсетевым экраном, по моему мнению, является операция закрытия и открытия портов на сетевом интерфейсе. Порт открывается для того чтобы к нему можно было получить доступ из вне. Закрывают же порт чтобы запретить устанавливать соединение с программой на вашем устройстве, работающей по этому порту. В этой статье мы рассмотрим как открыть порт iptables на примере Debian Linux.

Порт — это, грубо говоря, номер квартиры в многоквартирном доме, за которым проживают известные (или не очень) жильцы. IP адрес — это номер многоквартирного дома, в котором множество квартир. Жилец — это программа, использующая данный номер порта. Этот пример работает в том случае, когда целью является открытие и закрытие доступа программам на том же самом компьютере, который подключен к сети Интернет.

Как открыть порт с помощью iptables

В iptables для создания нового правила или блока правил используется команда:

sudo iptables [ -t таблица ] -A [ цепочка ] спецификации_правила

sudo iptables -t filter -A INPUT -p tcp -s 8.8.8.8 —sport 53 -d 192.168.1.1 -j ACCEPT

Рассмотрим подробно случай открытия порта с помощью iptables. Следует заметить, что понятие порт используется в протоколах tcp и udp, поэтому для разных протоколов доступны одинаковые номера портов, но при этом эти номера, говоря на языке нашего примера, означают разные квартиры в разных домах в разных микрорайонах, где за микрорайон можно принять наименование протокола.

Примечание: Существуют таблицы общепринятых номеров портов для распространённых программ и типов программ по функциональному назначению. Остальные порты являются свободно используемыми. Рассмотрение таблиц портов выходит за рамки данной статьи. Вернемся к простой задаче закрыть один порт.

Примечание: Если вы собираетесь открыть порт, убедитесь, что политика iptables по умолчанию блокировать всё соединения к портам (DROP). Если же используется политика по умолчанию ACCEPT, то ничего открывать не надо, все порты уже открыты, а вам нужно только закрыть те, которые должны быть недоступны из вне. Подробнее в статье как пользоваться iptables.

1. Один порт

Чтобы открыть порт iptables debian используется следующая команда:

sudo iptables [ -t таблица ] -A [ цепочка ] -p протокол [ —sport порт_отправителя ] [ —dport порт_назначения ] -j [ действие ]

sudo iptables -t filter -A INPUT -p tcp —dport 8081 -j ACCEPT

В данном случае мы открыли в таблице filter в цепочке INPUT протокола tcp порт назначения 8081 с помощью действия ACCEPT (принять). Таким образом для всех внешних машин, пытающихся установить соединение по данному порту, данный порт будет теперь доступен. Если мы хотим открыть порт для конкретной машины следует использовать следующую команду:

sudo iptables -t filter -A INPUT -p tcp -s 10.0.0.1/32 —dport 8080 -j ACCEPT

Мы открыли порт 8080 на нашем компьютере для внешней машины с адресом 10.0.0.1.

2. Диапазон портов

Чтобы открыть диапазон портов iptables используется команда:

sudo iptables [ -t таблица ] -A [ цепочка ] -p протокол [ —sport начальный_порт_отправителя:конечный_порт_отправителя ] [ —dport начальный_порт_назначения:конечный_порт_назначения ] -j [ действие ]

sudo iptables -t filter -A INPUT -p tcp —dport 18070:18081 -j ACCEPT

Данной командой мы открыли порты 18070-18081 для входящих пакетов, адресованных именно этому компьютеру, передаваемых по протоколу TCP.

3. Входящее и исходящее соединения

Все пакеты можно разделить на два типа: пакеты, приходящие на данный узел и пакеты, отправляемые данным узлом. В самом распространенном случае и для исходящих, и для входящих пакетов будет использоваться один и тот же сетевой интерфейс (физическое или логическое устройство, отвечающее за преобразование пакетов в сигналы и передачу сигналов в сеть).

Так вот, входящие пакеты будут создавать входящие соединения по определенным правилам для конкретных программ, и исходящие пакеты будут создавать исходящие соединения по определенным правилам для конкретных программ. При этом для каждой программы, нуждающейся в установлении связи с через сеть, чаще всего будут функционировать два соединения: входящее и исходящее, так как программе одновременно требуется в течении работы получать и отправлять данные.

Правила для входящих соединений будут в большинстве случаев расположены в цепочках PREROUTING, INPUT. Правила для исходящих соединений будут в большинстве случаев расположены в цепочках POSTROUTING, OUTPUT.

Чтобы разрешить порт iptables для входящего соединения:

sudo iptables -t filter -A INPUT -p tcp —dport 8080 -j ACCEPT

Пример для исходящего соединения:

sudo iptables -t filter -A OUTPUT -p tcp —dport 8080 -j ACCEPT

Примечание: В данном случае правила выглядят очень похоже, но смысловое значение у них будет абсолютно противоположное. В первом случае мы имеем дело с пакетом ВХОДЯЩИМ, который должен поступить на порт назначения 8080 НАШЕГО компьютера. Во втором случае мы имеем дело с пакетом ИСХОДЯЩИМ, который должен поступить на порт назначения 8080 УДАЛЕННОГО компьютера. Следует также заметить, что программа не использует на нашем компьютере и удаленном компьютере одинаковый номер порта для одной программы. Порты будут различаться.

4. Состояние соединения

Существует возможность формировать правила фильтрации пакетов по совпадению с определенными шаблонами дополнительной спецификации правил Netfilter. За это отвечают параметры -m и -j. Мы рассмотрим использование параметра -m, который может использовать множество различных шаблонов, из которых мы рассмотрим один: —state состояние. Этот шаблон может принимать следующие значения:

  • NEW — пакет открыл новое соединение или иным образом связан с соединением, в рамках которого ещё не было пакетов в обоих направлениях (входящем и исходящем);
  • ESTABLISHED — пакет связан с соединением, которое видело пакеты в обоих направлениях;
  • RELATED — пакет открывает новое соединение, но связан с уже существующим соединением, например, передача данных FTP или ошибка протокола ICMP;
  • INVALID — пакет, связанный с неизвестным соединением.

Открытие портов iptables для новых соединений:

sudo iptables -t filter -A INPUT -p tcp -s 192.168.1.0/24 —dport 445 -m state —state NEW -j ACCEPT

В этом примере в таблицу filter в цепочку INPUT для протокола tcp, от компьютера из подсети 192.168.1.0/24, на порт назначения 445 (так как цепочка входящая, то порт назначения находится на данном компьютере) для пакетов, открывающих новое соединение, применить действие ACCEPT (принять пакет).

А такая команда позволяет добавить порт iptables для уже установленных соединений:

sudo iptables -t filter -A INPUT -p tcp -s 192.168.2.0/24 —dport 445 -m state —state ESTABLISHED -j ACCEPT

В данном случае в таблицу filter в цепочку INPUT для протокола tcp, от компьютера из подсети 192.168.2.0/24, на порт назначения 445 (так как цепочка входящая, то порт назначения находится на данном компьютере) для пакетов, поступающих в рамках уже открытого соединения, применить действие ACCEPT (принять пакет).

Как закрыть порт iptables

Если вы открыли порт с помощью описанных выше правил и политика брандмауэра по умолчанию DROP, то достаточно это правило удалить. Если же у вас стоит политика по умолчанию ACCEPT, то чтобы закрыть порт надо использовать действие DROP.

sudo iptables -t filter -A INPUT -p tcp -s 192.168.3.0/24 —dport 445 -m state —state ESTABLISHED -j DROP

Эта команда в таблицу filter в цепочку INPUT запишет правило для протокола TCP, от компьютера из подсети 192.168.3.0/24, на порт назначения 445 (так как цепочка входящая, то порт назначения находится на данном компьютере) для пакетов, поступающих в рамках уже открытого соединения, применять действие DROP (отбросить пакет).

Для правил, запрещающих прием пакета, применимо всё сказанное выше для закрытия порта (одиночный порт, диапазон портов, входящие и исходящие соединения, действия для установленных соединений и новых соединений). Про закрытие портов в iptables читайте более подробно в отдельной статье.

Проверка открыт ли порт

Когда мы настроили все правила, закрывающие и открывающие порты, нам необходимо проверить корректность примененных настроек. Для этого можно использовать приложение telnet. Telnet — приложение, позволяющее установить двунаправленное соединение между двумя компьютерами с помощью протокола telnet. В рамках нашей задачи попытка установления соединения между двумя машинами в сети используется как тест правил Netfilter. Выполняем команду следующего вида:

$ telnet ip-адрес порт

telnet 192.168.1.5 443

В данной команде будет проверен 443 порт у машины с ip-адресом 192.168.1.5. Если на порту 443 на удаленной машине разрешено входящее соединение и правила на локальной машине разрешают исходящее соединение на порту 443, то получим сообщение:

Connection closed by foreign host.

Или неожиданно можем получить приглашение доступа к данной машине, если на этом порте ожидает подключения серверная часть telnet.

Если же правила запрещают входящее соединение на удаленной машине, или исходящее соединение на нашей локальной машине на порту 443, то получим сообщение:

telnet: Unable to connect to remote host: Connection timed out

Примечание: Чтобы получить результаты необходимо подождать довольно продолжительное время, чтобы telnet получил результат попытки соединения по указанному порту.

Выводы

Итак, сегодня мы рассмотрели как открыть порт 80 iptables или любой другой на локальной машине. Теперь мы знаем, как открыть (или закрыть) конкретный порт, диапазон портов, в чем разница между входящими и исходящими соединениями, как работать с новыми и уже установленными соединениями.

Как открыть порт в debian

WARNING: nftables is the default firewall framework since Debian 10 Buster. This page is outdated.

  1. Introduction
  2. Basic firewall software
    1. Basic software for network traffic manipulation
      1. Using iptables for IPv4 traffic
      2. Using ip6tables for IPv6 traffic
      3. Using ebtables for ARP traffic
      4. Application firewalls

      Introduction

      A network firewall is a set of rules to allow or deny passage of network traffic, through one or more network devices. A network firewall may also perform more complex tasks, such as network address translation, bandwidth adjustment, provide encrypted tunnels and much more related to network traffic.

      Prior to version 5 (Lenny), a default Debian installation, did not have a default firewall enabled. But provides the needed tools to configure it manually.

      Basic firewall software

      Network traffic has different components, layers and protocols. For more references, check out the links section.

      The most known type of firewall, and the most initially implemented, are sets of rules based on netfilter software, based on a set of kernel modules and some user space tools.

      Basic software for network traffic manipulation

      The default Debian installation comes with the program iptables(8), configured to allow all traffic. This section briefly explains the different programs to handle network traffic manually, as well as two sample scripts.

      You need to be root, or use sudo, to launch these programs.

      You may find the iptables-persistent package useful.

      Using iptables for IPv4 traffic

      This is not an iptables manual, only a short introduction about the use of the program. For more extended explanations, see iptables(8)

      Basic invocation to define rules is:

      Tables and chains

      All rules, are stored on different tables.

      The default table is filter, which maintain the INPUT, OUTPUT and FORWARD chains, used for incoming, outgoing and redirected traffic respectively.

      Other present tables are mangle, nat and raw. You can also create and delete custom tables.

      Rules and program invocation may refer to a specific table using the -t table_name switch (or --table table_name).

      If no table is specified, the default table is used (the filter table).

      To list the ruleset of any table, the -L switch is used. For example:

      As you can see, the default policy in a default installation is to ACCEPT all traffic. There are no rules on any chain.

      Each of the default tables, contain different chains, to store rules for different points, in the kernel networking subsystem.

      You can list other tables using -t, for example, to see the nat (Network Address Translation) table:

      Matching and order

      When a packet is inspected through the rulesets, matches are searched from top to bottom of tables and chains.

      Into the rules, matches are searched from left to right, of the rule syntax used.

      When a packet does not match a rule, the search jumps to the next rule. If no rules matches, then the default policy is applied to the packet.

      If the packet matches any rule definition, then the target defined on the rule is applied (ACCEPT, REJECT, DROP, LOG, etc), and the following rules of the same chain are skipped.

      It is very important to keep this in mind when designing a ruleset, to reach the desired functionality and because of its impact on performance, in large rulesets.

      Policies and Targets

      Default policy is to ACCEPT all traffic, but the most common practice, is to change policies to DROP all traffic but the allowed.

      You have to be careful and sure that your rules are right, before put a policy to DROP, or you will lose connectivity.

      See the troubleshooting section for tips about this issue.

      Program switches

      There are other switches, to handle chains, tables, clear rules, counters and other elements. See iptables(8) man page.

      Modules

      The iptables program has an extensive collection of modules, to use different criteria to evaluate packets.

      There are modules for protocols, logging, states of the conection, etc. All compiled-in modules, are neatly explained in the man page.

      Modules may have parameters (-m module_name --parameter_name parameter_arguments).

      An example rule, using the state module, to drop incoming traffic with INVALID state (a parameter of the state module), defined in the headers of the packet, would be:

      Example scripts
      Installation

      You can put this scripts at any place that run at boot time or network initialization.

      Common places are:

      /etc/rc.local

      Before the exit 0. Will be launched at boot time.

      /etc/network/interfaces

      This is a more reasonable and standard place for networking related stuff.

      For example, if eth0 is your main or uniq interface, using DHCP:

      SystemD | firewall.service

      Most Debian distributions now include systemd. In order to bring up the iptable rules using systemd at start:

      Create a new file using any reasonable file text editor(I called mine firewall.service)

      Then add the following:

      Then enable the service:

      Example: Basic standalone machine firewall

      You can use this script in any stand-alone machine (for example a personal desktop) that does not need ports open to any place. Or see the final commented line, to open specific ports.

      A simple script like the one below, will provide your host with a reasonable amount of security. Be aware that the following script drops all packets which do not match an allow rule, so normal network error messages will not be seen. All allow rules have been commented out to protect the uninitiated.

      Example: Basic gateway machine firewall
      Using ip6tables for IPv6 traffic

      Because of growth, Internet is slowly switching to IPv6, that has a much larger address space than IPv4, and Debian is IPv6 capable.

      If you have IPv6 addresses, networks and conections in your firewall, you’ve to be careful and configure your rulesets for each protocol.

      To configure and manage IPv6 rulesets, you need to use ip6tables(8), which is provided by the default Debian install, in the package iptables.

      The usage and functionality, is very similar to iptables, but oriented to IPv6 traffic.

      For more references, see: ip6tables(8)

      Using ebtables for ARP traffic

      Ebtables (package ebtables) is used to set up, maintain, and inspect the tables of Ethernet frame rules in the Linux kernel. It is analogous to iptables, but operates at the MAC (ARP) layer, rather than the IP layer.

      If you need to filter or translate ARP traffic (at link layer), your firewall has bridged interfaces (for example a transparent bridge between a OpenVPN tunneled VLAN and a local VLAN, or bridged interfaces for virtualization), ebtables(8) is your friend.

      The design is very similar to netfilter’s iptables.

      It manages rulesets in tables with chains and targets, using user space tools, but this time it’s not in the default Debian installation, and you need to add it:

      For a more detailed explanation of its usage, look at the inevitable man page, and visit the official website (see links section).

      There are documents that explain howto integrate ebtables and iptables, using the iptables module physdev.

      Application firewalls

      To go more up, and manipulate the Layer 7 of the OSI model, and be able to define rules at application level, you need other tools.

      For example. you open the port 80 to your users, but you don’t want them to be able to download .exe files from internet. You need an application firewall or proxy.

      The default kernel in Debian does not have layer 7 patches, but you can install user space proxys to manage this kind of filters.

      See also the links section for the l7-filter project.

      Troubleshooting software and tips

      It’s very easy to lose connectivity when initially configuring a firewall. And it’s easier the more complex the firewall is.

      A basic skill for troubleshoot a firewall problem, is to know the points where the traffic passes, is turned, routed, can be rejected, etc. And to know how to monitor that points, and what is happening.

      The most effective is to analyze the traffic from end to end, from the initial request, the DNS, the interfaces by which must pass, the translations that have to do, the rejected traffic logs, the routing rules, etc.

      A common hack when doing ruleset designing, is to put a cron task, that flush rules every few minutes, in case you will make a mistake (working in remote).

      Graphic applications and frontends

      There are some tools, to configure firewalls using frontends and helpers.

      There are also command line "high level" tools, to avoid the "low level" syntax, or to simplify certain tasks. Anyway, the real power is in the large number of modules and options for basic command line programs, that often is not covered by frontends.

      Настройка брандмауэра с UFW в Debian 9

      Настройка брандмауэра с UFW в Debian 9

      UFW (Uncomplicated Firewall или «простой брандмауэр») представляет собой интерфейс iptables , предназначенный для упрощения процесса настройки брандмауэра. Хотя iptables — надежный и гибкий инструмент, начинающим бывает сложно научиться использовать его для правильной настройки брандмауэра. Если вы ищете способ защитить вашу сеть и не знаете, какой инструмент для этого использовать, UFW может отлично вам подойти.

      В этом обучающем модуле вы научитесь настраивать брандмауэр с помощью UFW в Debian 9.

      Предварительные требования

      Для выполнения этого обучающего модуля вам потребуется один сервер Debian с пользователем sudo без привилегий root. Настройку этого сервера можно выполнить в соответствии с указаниями обучающего модуля Начальная настройка сервера Debian 9.

      Шаг 1 – Установка UFW

      По умолчанию Debian не устанавливает UFW. Если вы выполнили весь обучающий модуль Начальная настройка сервера, вы уже установили и активировали UFW. Если нет, выполните установку с помощью apt :

      На следующих шагах мы выполним настройку и активацию UFW.

      Шаг 2 — Использование IPv6 с UFW (опционально)

      Этот обучающий модуль предусматривает использование протокола IPv4, но подходит и для IPv6, если вы активировали этот протокол. Если на вашем сервере Debian активирован протокол IPv6, настройте UFW для поддержки IPv6, чтобы UFW управлял правилами брандмауэра и для IPv6, и для IPv4. Для этого откройте конфигурацию UFW с помощью nano или своего предпочитаемого редактора.

      Убедитесь, что параметр IPV6 имеет значение yes . Конфигурация должна выглядеть следующим образом:

      Сохраните и закройте файл. После активации UFW будет настроен для записи правил брандмауэра для IPv4 и для IPv6. Однако перед включением UFW нужно убедиться, что ваш брандмауэр настроен для подключения через SSH. Для начала настроим политики по умолчанию.

      Шаг 3 — Настройка политик по умолчанию

      Если вы только начинаете работать с брандмауэром, прежде всего нужно настроить политики по умолчанию. Эти правила определяют обработку трафика, который явно не соответствует каким-либо другим правилам. По умолчанию UFW настроен так, чтобы запрещать все входящие соединения и разрешать все исходящие соединения. Это означает, что любые попытки связаться с вашим сервером будут заблокированы, но любые приложения на вашем сервере будут иметь связь с внешним миром.

      Восстановим правила UFW по умолчанию, чтобы продолжить выполнение этого обучающего модуля. Для восстановления настроек по умолчанию для UFW необходимо использовать следующие команды:

      Эти команды задают значения по умолчанию, запрещая входящие соединения и разрешая исходящие. Такие параметры брандмауэра по умолчанию достаточны для персонального компьютера, но серверам обычно нужно отвечать на поступающие запросы внешних пользователей. Мы рассмотрим это чуть позже.

      Шаг 4 — Разрешение подключений SSH

      Если мы сейчас активируем брандмауэр UFW, все входящие соединения будут запрещены. Это означает, что нам нужно создать правила, прямо разрешающие легитимные входящие соединения (например, SSH или HTTP), если мы хотим, чтобы сервер отвечал на такие запросы. Если вы используете облачный сервер, вы наверное хотите разрешить входящие соединения SSH, чтобы можно было подключаться к серверу и управлять им.

      Чтобы разрешить на сервере входящие соединения SSH, вы можете использовать следующую команду:

      Эта команда создаст правила брандмауэра, которые разрешат все соединения на порту 22 , который демон SSH прослушивает по умолчанию. UFW знает, какой порт имеет в виду команда allow ssh , потому что он указан как услуга в файле /etc/services .

      Однако мы можем записать эквивалентное правило, указав номер порта вместо имени службы. Например, эта команда работает так же, как показанная выше:

      Если вы настроили демон SSH для использования другого порта, вам нужно будет указать соответствующий порт. Например, если ваш сервер SSH прослушивает порт 2222 , вы можете использовать эту команду, чтобы разрешить соединения с этим портом:

      Теперь ваш брандмауэр настроен, чтобы разрешать входящие соединения SSH, и мы можем его активировать.

      Шаг 5 — Активизация UFW

      Чтобы активировать UFW, используйте следующую команду:

      Вы получите предупреждение о том, что команда может нарушить существующие соединения SSH. Мы уже установили правило брандмауэра, разрешающее соединения SSH, и теперь мы можем продолжить. Введите y в диалоговом окне и нажмите ENTER .

      Теперь брандмауэр включен. Запустите команду sudo ufw status verbose , чтобы посмотреть заданные правила. В остальной части этого обучающего модуля более подробно рассказывается об использовании UFW, например, о запрете различных видов соединений.

      Шаг 6 — Разрешение других соединений

      К этому моменту вы должны были разрешить все другие соединения, необходимые вашему серверу. Состав разрешаемых соединений должен соответствовать вашим конкретным потребностям. К счастью, вы уже знаете, как писать правила, разрешающие соединения по имени службы или номеру порта, поскольку мы уже делали это для SSH на порту 22 . Также вы можете использовать это для следующих соединений:

      • соединения HTTP на порту 80, которые используются веб-серверами без шифрования, с помощью команды sudo ufw allow http или sudo ufw allow 80
      • соединения HTTPS на порту 443, которые используются веб-серверами с шифрованием, с помощью команды sudo ufw allow https или sudo ufw allow 443

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

      Определенные диапазоны портов

      С помощью UFW вы можете указывать диапазоны портов. Некоторые приложения используют для соединений не один порт, а несколько.

      Например, чтобы разрешить соединения X11, которые используют порты 6000 — 6007 , нужно использовать следующие команды:

      Когда вы указываете диапазоны портов с помощью UFW, вы должны указать протокол ( tcp или udp ), к которому должны применяться эти правила. Мы не упоминали этого ранее, поскольку если протокол не указать, оба протокола будут разрешены, что подходит для большинства случаев.

      Конкретные IP-адреса

      При работе с UFW вы также можете указывать конкретные IP-адреса. Например, если вы хотите разрешить соединения с определенного IP-адреса, например с рабочего или домашнего адреса 203.0.113.4 , вам нужно использовать опцию from , а затем указать IP-адрес:

      Также вы можете указать определенный порт, к которому IP-адресу разрешено подключаться. Для этого нужно добавить опцию to any port , а затем указать номер порта. Например, если вы хотите разрешить IP-адресу 203.0.113.4 подключаться к порту 22 (SSH), нужно использовать следующую команду:

      Подсети

      Если вы хотите разрешить подсеть IP-адресов, вы можете указать маску сети с помощью нотации CIDR. Например, если вы хотите разрешить все IP-адреса в диапазоне от 203.0.113.1 до 203.0.113.254 , вы можете использовать следующую команду:

      Также вы можете указывать порт назначения, к которому разрешено подключаться подсети 203.0.113.0/24 . В качестве примера мы используем порт 22 (SSH):

      Подключения к определенному сетевому интерфейсу

      Если вы хотите создать правило брандмауэра, применимое только к определенному сетевому интерфейсу, вы можете использовать для этого опцию «allow in on», а затем указать имя сетевого интерфейса.

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

      В выделенной части результатов показаны имена сетевых интерфейсов. Обычно они носят имена вида eth0 или enp3s2 .

      Если на вашем сервере имеется публичный сетевой интерфейс под названием eth0, вы можете разрешить трафик HTTP (порт 80 ) для этого интерфейса с помощью следующей команды:

      Это позволит вашему серверу принимать запросы HTTP из публичной части интернета.

      Если вы хотите использовать сервер базы данных MySQL (порт 3306 ) для прослушивания соединений на интерфейсе частной сети (например, eth1 ), вы можете использовать следующую команду:

      Это позволит другим серверам в вашей частной сети подключаться к вашей базе данных MySQL.

      Шаг 7 — Запрет соединений

      Если вы не изменяли политику по умолчанию для входящих соединений, UFW настроен на запрет всех входящих соединений. Это упрощает процесс создания защищенной политики брандмауэра, поскольку вам нужно создавать правила, прямо разрешающие соединения через конкретные порты и IP-адреса.

      Однако в некоторых случаях вам может понадобиться запретить определенные соединения по IP-адресу источника или подсети, например, в случае атаки с этого адреса. Если вы захотите изменить политику по умолчанию для входящих соединений на allow (что не рекомендуется), вам нужно будет создать правила deny для любых служб или IP-адресов, которым вы не хотите разрешать подключение.

      Для записи правил deny можно использовать описанные выше команды, заменяя allow на deny.

      Например, чтобы запретить соединения по протоколу HTTP, вы можете использовать следующую команду:

      Если вы захотите запретить все подключения с IP-адреса 203.0.113.4 , вы можете использовать следующую команду:

      Теперь посмотрим, как можно удалять правила.

      Шаг 8 — Удаление правил

      Знать процедуру удаления правил брандмауэра так же важно, как и знать процедуру их создания. Существует два разных способа указывать правила для удаления: по номеру правила или по фактическому правилу (так же, как правила задавались при их создании). Начнем с метода удаления по номеру правила, поскольку этот метод проще.

      По номеру правила

      Если вы используете номер правила для удаления правил брандмауэра, прежде всего нужно получить список правил брандмауэра. Команда UFW status имеет опцию отображение номеров рядом с каждым правилом, как показано здесь:

      Если мы решим удалить правило 2, разрешающее соединения через порт 80 (HTTP), мы можем указать его в команде UFW delete, как показано здесь:

      После этого откроется диалогового окна подтверждения удаления правила 2, разрешающего соединения HTTP. Если вы включили поддержку IPv6, вы можете также удалить соответствующее правило для IPv6.

      По фактическому имени правила

      Вместо номеров правил можно указывать фактические имена удаляемых правил. Например, если вы хотите удалить правило allow http , вы можете использовать следующую команду:

      Также вы можете указать это правило как allow 80 , а не указывать имя службы:

      Этот метод удалит правила IPv4 и IPv6, если они существуют.

      Шаг 9 — Проверка состояния и правил UFW

      Вы можете проверить состояние UFW в любое время с помощью следующей команды:

      Если UFW отключен (по умолчанию), вы увидите примерно следующее:

      Если UFW активен (т. е. вы выполнили шаг 3), в результатах будет показано, что он активен, и будет выведен список заданных правил. Например, если настройки брандмауэра разрешают соединения SSH (порт 22 ) из любого источника, результат может выглядеть примерно так:

      Используйте команду status , если хотите проверить настройку брандмауэра UFW.

      Шаг 10 — Отключение или сброс UFW (необязательно)

      Если вы решите прекратить использовать UFW, вы можете отключить его с помощью следующей команды:

      Любые правила, созданные с помощью UFW, больше не будут активными. Если впоследствии вы захотите активировать UWF, вы всегда сможете использовать команду sudo ufw enable .

      Если вы уже настроили правила UFW, но решите начать заново, вы можете использовать команду reset:

      Эта команда отключит UFW и удалит все ранее заданные правила. Помните, что если вы изменяли политики по умолчанию, их первоначальные настройки не восстановятся. Это позволит заново начать настройку UFW.

      Заключение

      Теперь ваш брандмауэр настроен так, чтобы разрешать (как минимум) соединения SSH. Обязательно разрешите другие входящие соединения для вашего сервера, но при этом ограничьте все ненужные соединения, чтобы сделать свой сервер функциональным и безопасным.

      Чтобы узнать о других распространенных конфигурациях UFW, ознакомьтесь с обучающим модулем Основы UFW: распространенные правила и команды брандмауэра.

      Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

      Настройка брандмауэра UFW на сервере Debian 10

      UFW (Uncomplicated Firewall) – это удобный интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Инструмент iptables надёжный и гибкий, но новичкам непросто настроить его самостоятельно.

      Данный мануал поможет вам настроить брандмауэр с помощью UFW на виртуальном сервере Debian 10.

      Требования

      Для работы вам нужен сервер Debian 10, настроенный по этому мануалу (разделы 1-3).

      1: Установка UFW

      В Debian инструмент UFW не установлен по умолчанию. Если вы выполнили мануал по начальной настройке, значит, вы уже установили его. Если нет, введите команду:

      sudo apt install ufw

      2: Использование IPv6 (опционально)

      Данный мануал предназначен для IPv4, но он подойдёт и для IPv6.

      Если на вашем сервере Debian включен протокол IPv6, убедитесь, что UFW поддерживает его. Откройте конфигурации UFW:

      sudo nano /etc/default/ufw

      Убедитесь, что в настройках есть строка:

      Сохраните и закройте файл.

      После включения UFW будет поддерживать правила для протоколов IPv4 и IPv6.

      Прежде чем приступить к работе над правилами, нужно убедиться, что брандмауэр поддерживает соединения SSH. Для этого ознакомьтесь с политикой UFW по умолчанию.

      3: Политика по умолчанию

      Начиная настройку брандмауэра, вы должны продумать и определить его политику по умолчанию. Эти правила управляют обработкой трафика, который не отвечает другим правилам. По умолчанию UFW сбрасывает все входящие и разрешает все исходящие соединения. Это значит, что другие пользователи не смогут получить доступ к вашему облачному серверу, но все установленные на сервере приложения могут взаимодействовать с внешними приложениями.

      Чтобы вернуться к исходным правилам, введите команды:

      sudo ufw default deny incoming
      sudo ufw default allow outgoing

      Если вы настроили пользовательский набор правил, эти команды сбросят его и восстановят исходный набор. Теперь брандмауэр будет сбрасывать все входящие и поддерживать исходящие соединения.

      Стандартные правила брандмауэра подходят для персональных компьютеров; серверам обычно необходимо принимать входящий трафик.

      4: Настройка соединений SSH

      Если включить UFW сейчас, он заблокирует все входящие соединения. Потому нужно создать правила, которые разрешат входящий трафик заведомо доверенных сервисов (например, SSH и HTTP). Обязательно нужно разрешить трафик SSH на облачном сервере, так как этот протокол позволяет вам подключаться к серверу.

      Чтобы разблокировать соединения SSH, введите:

      sudo ufw allow ssh

      Это правило разрешит входящие соединения по порту 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH), которые перечислены в файле /etc/services.

      Вместо названия сервиса в правиле можно указать порт. Например:

      sudo ufw allow 22

      Если вы используете нестандартный порт для SSH, укажите его в команде. К примеру, если SSH прослушивает порт 2222, нужно ввести:

      sudo ufw allow 2222

      5: Включение UFW

      Чтобы включить брандмауэр UFW, введите:

      sudo ufw enable

      Вы получите предупреждение:

      command may disrupt existing ssh connections

      Это означает, что команда может сбросить все текущие ssh-соединения. Поскольку только что вы разблокировали трафик ssh, этого не произойдёт. Можно нажать y и Enter, чтобы продолжить.

      Теперь брандмауэр включен. Чтобы просмотреть текущий набор правил, введите:

      sudo ufw status verbose

      6: Поддержка других соединений

      Теперь разблокируйте другие соединения, которые нужны для работы вашего сервера. Список необходимых сервисов индивидуален для каждого сервера.

      Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.

      Незашифрованные соединения HTTP можно разблокировать с помощью команды allow, указав протокол или порт:

      sudo ufw allow http
      sudo ufw allow 80

      Зашифрованные соединения HTTPS можно разрешить при помощи команд:

      sudo ufw allow https
      sudo ufw allow 443

      Настройка диапазонов портов

      UFW позволяет разблокировать необходимый диапазон портов. Некоторые приложения используют сразу несколько портов.

      К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:

      sudo ufw allow 6000:6007/tcp
      sudo ufw allow 6000:6007/udp

      Указывая диапазон портов, вы должны указать протокол (tcp или udp). Если вы не сделаете этого, UFW будет использовать оба протокола (в большинстве случаев это нормально).

      Настройка IP-адресов

      Также UFW может поддерживать трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 203.0.113.4, нужно ввести from и сам адрес:

      sudo ufw allow from 203.0.113.4

      Вы можете ограничить доступ для определенного IP-адреса конкретным портом с помощью опции to any port. Например, чтобы разрешить IP-адресу 203.0.113.4 SSH-доступ, используйте:

      sudo ufw allow from 203.0.113.4 to any port 22

      Настройка подсетей

      Чтобы разблокировать в брандмауэре подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 203.0.113.1-203.0.113.254 , нужно ввести:

      sudo ufw allow from 203.0.113.0/24

      Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:

      sudo ufw allow from 203.0.113.0/24 to any port 22

      Настройка сетевых интерфейсов

      Правила брандмауэра могут применяться к конкретному интерфейсу. Для этого нужно ввести allow in on, а затем указать имя этого интерфейса.

      Прежде чем продолжить, просмотрите свои сетевые интерфейсы.

      ip addr
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
      . . .
      3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
      . . .

      Имена интерфейсов выделены красным (обычно они называются eth0, enp3s2 и т.п.).

      Чтобы разблокировать трафик HTTP для интерфейса eth0, введите:

      sudo ufw allow in on eth0 to any port 80

      Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:

      sudo ufw allow in on eth1 to any port 3306

      7: Блокирование соединений

      По умолчанию UFW блокирует все входящие соединения. В целом это очень надежная политика.

      Однако иногда вам может потребоваться заблокировать определенные подключения на основе IP-адреса или подсети (например, если вы знаете, что ваш сервер регулярно подвергается атакам оттуда).

      Если вы хотите изменить политику брандмауэра по умолчанию на allow, вам нужно уметь блокировать трафик определённых вредоносных IP-адресов или подсетей.

      Правила, блокирующие трафик, пишутся точно так же, только вместо allow используется deny.

      К примеру, чтобы заблокировать HTTP, нужно ввести:

      sudo ufw deny http

      Чтобы заблокировать все соединения адреса 203.0.113.4, введите команду:

      sudo ufw deny from 203.0.113.4

      8: Удаление правил

      Существует два способа удалить правило: указать номер правила или само правило.

      Удаление правила по его номеру

      Для начала просмотрите список существующих правил. Для этого запросите состояние брандмауэра с опцией numbered.

      sudo ufw status numbered
      Status: active
      To Action From
      — —— —-
      [ 1] 22 ALLOW IN 15.15.15.0/24
      [ 2] 80 ALLOW IN Anywhere

      К примеру, чтобы удалить правило 2 (открывающее трафик HTTP по порту 80), нужно ввести команду:

      sudo ufw delete 2

      Брандмауэр запросит подтверждение.

      Примечание: Если сервер поддерживает IPv6, нужно удалить соответствующее правило и для этого протокола.

      Удаление самого правила

      Также можно указать в команде то самое правило, которое нужно удалить. К примеру, чтобы удалить allow http, нужно запустить:

      sudo ufw delete allow http

      sudo ufw delete allow 80

      Этот метод работает и для IPv4, и для IPv6.

      9: Проверка состояния и правил UFW

      Чтобы проверить состояние UFW, введите:

      sudo ufw status verbose

      По умолчанию брандмауэр UFW отключен:

      Если брандмауэр включен, на экране появится его состояние и список правил. К примеру, если он поддерживает соединения SSH (порт 22), вывод будет выглядеть так:

      Status: active
      Logging: on (low)
      Default: deny (incoming), allow (outgoing), disabled (routed)
      New profiles: skip
      To Action From
      — —— —-
      22/tcp ALLOW IN Anywhere

      10: Отключение или сброс правил UFW (опционально)

      Если вы хотите отключить брандмауэр UFW, введите команду:

      sudo ufw disable

      Все правила будут отключены.

      Если вы хотите сбросить текущий набор правил UFW, запустите:

      Эта команда сбросит все текущие правила. Имейте в виду: при этом политика брандмауэра по умолчанию не будет восстановлена.

      После этого вы можете добавить новые правила.

      Заключение

      Теперь ваш брандмауэр поддерживает SSH-соединения. Также вы знаете основные команды для управления UFW. Обязательно откройте все необходимые входящие соединения и заблокируйте порты, которые не используются.

      Читать:
      Csm asus как включить

Похожие статьи