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

Обновлено: 06.07.2024

В этой статье описывается, как настроить брандмауэр с UFW в Debian 10.

Подготовка

Только root или пользователь с привилегиями sudo может управлять системным брандмауэром.

Установка UFW

Введите следующую команду, чтобы установить пакет ufw :

Проверка статуса UFW

Установка не активирует брандмауэр автоматически, чтобы избежать блокировки сервера. Вы можете проверить статус UFW, набрав:

Результат будет выглядеть так:

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

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

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

Политики по умолчанию определены в /etc/default/ufw и могут быть изменены с помощью команды sudo ufw default <policy> <chain> .

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

Профили приложений

Большинство приложений поставляются с профилем приложения, который описывает службу и содержит настройки UFW. Профиль автоматически создается в каталоге /etc/ufw/applications.d во время установки пакета.

Чтобы вывести список всех профилей приложений, доступных в вашей системе, введите:

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

Чтобы найти дополнительную информацию о конкретном профиле и включенных правилах, используйте команду app info , после которой укажите имя профиля. Например, чтобы получить информацию о профиле OpenSSH, вы должны использовать:

Вывод включает имя профиля, заголовок, описание и правила брандмауэра.

Разрешить SSH-подключения

Перед включением брандмауэра UFW необходимо разрешить входящие соединения SSH.

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

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

Если SSH-сервер прослушивает порт, отличный от порта по умолчанию 22, вам нужно будет открыть этот порт.

Например, ваш ssh-сервер прослушивает порт 7722 , вы должны выполнить:

Включить UFW

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

Вы будете предупреждены, что включение брандмауэра может нарушить существующие соединения ssh. Введите «y» и нажмите «Enter».

Открытие портов

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

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

Вы также можете использовать номер порта 443 :

Открытый порт 8080

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

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

С помощью UFW вы также можете разрешить доступ к диапазонам портов. При открытии диапазона необходимо указать протокол порта.

Например, чтобы разрешить порты с 7100 по 7200 как на tcp и на udp , выполните следующую команду:

Разрешение определенных IP-адресов

Чтобы разрешить доступ ко всем портам с определенного IP-адреса, используйте команду ufw allow from за которой следует IP-адрес:

Разрешение определенных IP-адресов на определенном порту

Чтобы разрешить доступ к определенному порту, допустим, порт 22 с вашего рабочего компьютера с IP-адресом 64.63.62.61, используйте следующую команду:

Разрешение подсетей

Команда для разрешения подключения из подсети IP-адресов такая же, как и при использовании одного IP-адреса. Единственное отличие состоит в том, что вам нужно указать маску сети. Например, если вы хотите разрешить доступ для IP-адресов от 192.168.1.1 до 192.168.1.254 и до порта 3360 ( MySQL ), вы можете использовать эту команду:

Разрешить подключения к определенному сетевому интерфейсу

Чтобы разрешить доступ к определенному порту, скажем, порт 3360 только к определенному сетевому интерфейсу eth2 , используйте eth2 allow in on и имя сетевого интерфейса:

Запретить подключения

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

Допустим, вы открыли порты 80 и 443 , и ваш сервер подвергается атаке из сети 23.24.25.0/24 . Чтобы запретить все соединения с 23.24.25.0/24 , используйте следующую команду:

Если вы хотите запретить доступ только к портам 80 и 443 из 23.24.25.0/24 используйте:

Написание запрещающих правил аналогично написанию разрешающих правил. Вам нужно только заменить allow на deny .

Удалить правила UFW

Есть два разных способа удалить правила UFW. По номеру правила и указав фактическое правило.

Удаление правил UFW по номеру правила проще, особенно если вы новичок в UFW.

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

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

Отключить UFW

Если по какой-либо причине вы хотите остановить UFW и деактивировать все правила, выполните:

Позже, если вы захотите снова включить UTF и активировать все правила, просто введите:

Сбросить UFW

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

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

Выводы

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

Самой распространенной операцией при работе с межсетевым экраном, по моему мнению, является операция закрытия и открытия портов на сетевом интерфейсе. Порт открывается для того чтобы к нему можно было получить доступ из вне. Закрывают же порт чтобы запретить устанавливать соединение с программой на вашем устройстве, работающей по этому порту. В этой статье мы рассмотрим как открыть порт 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.


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

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

Правила для входящих соединений будут в большинстве случаев расположены в цепочках 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 DROP

В этом примере в таблицу 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

Connection closed by foreign host.

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

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


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

Выводы

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

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

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

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

Открываем порты в Linux

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

Шаг 1: Установка Iptables и просмотр правил

Утилита Iptables изначально не входит в состав операционной системы, из-за чего ее нужно самостоятельно инсталлировать из официального репозитория, а уже потом работать с правилами и всячески изменять их. Установка не занимает много времени и выполняется через стандартную консоль.

Запуск терминала через меню в операционной системе Linux

Команда для начала установки утилиты Iptables в Linux

Ввод пароля для начала установки утилиты Iptables в Linux через консоль

Проверить список правил после успешной установки Iptables в Linux

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

Шаг 2: Разрешение обмена данными

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

    Убедитесь, что в конфигурационном файле отсутствуют какие-либо правила. Лучше сразу же прописать команду для их удаления, а выглядит она так: sudo iptables -F .

Стереть присуствующие правила в конфигурации Iptables в Linux

Добавить первое пользовательское правило в Iptables в Linux

Добавить второе пользовательское правило Iptables в Linux

Добавить завершающее пользовательское правило в Iptables в Linux

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

Шаг 3: Открытие необходимых портов

Вы уже ознакомлены с тем, по какому принципу добавляются новые правила в конфигурацию Iptables. Существуют и несколько аргументов, позволяющих открыть определенные порты. Давайте разберем эту процедуру на примере популярных портов под номерами 22 и 80.

    Запустите консоль и введите туда две следующие команды поочередно:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT .

Команды для проброса портов в Iptables в Linux

Проверить успешность проброшенных портов в Iptables в Linux

Детальная информация о проброшенных портах Iptables в Linux

Применить изменения для функционирования портов в Iptables в Linux

Проверить открытось порта в начале цепи Iptables в Linux

Далее вы можете прописать все ту же строку sudo iptables -L и убедиться в том, что все настроено корректно.

Команда для проброса порта в начало

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

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

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

Чтобы разблокировать соединения 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: Поддержка других соединений

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

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

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

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 и т.п.).

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.

Чтобы заблокировать все соединения адреса 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

sudo ufw delete 2

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

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

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

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. Обязательно откройте все необходимые входящие соединения и заблокируйте порты, которые не используются.

OpenVPN на Ubuntu 16.04

В статье «OpenVPN на Ubuntu 16.04: установка» было рассказано о том, как установить OpenVPN и создать другие необходимые элементы на вашем сервере. В этой статье я расскажу о следующих шагах – правильной настройке OpenVPN на Ubuntu 16.04.

1. Настройка OpenVPN

Начните с копирования файлов в директорию OpenVPN. Скопировать нужно будет все файлы, которые позже понадобятся в конфигурационной директории /etc/openvpn.

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

/openvpn-ca/keys. Конкретные файлы, которые нужно будет переместить: сертификат и ключ центра сертификации, сертификат сервера и ключ, а также подпись HMAC и файл протокола Диффи — Хеллмана. Используйте команды ниже:

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

Переходим к настройке конфигурации OpenVPN. Для этого нужно открыть конфигурационный файл сервера:

Базовая конфигурация

Вам нужно найти директиву tls-auth для того, чтобы, в свою очередь, найти секцию HMAC. Удалите знак точки с запятой (;) для того, чтобы раскомментировать строку tls-auth. А ниже добавьте параметр key-direction со значением 0:

Ниже добавьте строку auth для того, чтобы указать алгоритм хеширования HMAC. SHA256 прекрасно подойдет, т.к. в этом случае допускается использование ключей любого размера, а длина хеш-последовательности будет составлять 256 бит.

Наконец, найдите настройки user и group и все так же удалите точку с запятой для того, чтобы раскомментировать их:

Как использовать VPN для всего трафика

Если вы хотите, чтобы для передачи всего трафика между двумя машинами по умолчанию использовался VPN, то вам нужно передать настройки DNS на клиентские компьютеры.

Надо раскомментировать несколько директив для того, чтобы клиентские машины по умолчанию перенаправляли весь трафик через VPN. Найдите секцию redirect-gateway и удалите знак точки с запятой:

Теперь найдите секцию dhcp-option и точно так же раскомментируйте обе строки:

Теперь клиенты смогут настроить DNS так, чтобы VPN использовался в качестве канала по умолчанию.

Как изменить порт и протокол

Это еще одна необязательная, но полезная настройка, которая может вам понадобиться. По умолчанию OpenVPN использует порт 1194 и UDP протокол для того, чтобы принимать клиентские соединения. Возможно, вам надо будет изменить порт, если вы столкнетесь с какими-нибудь ограничениями.

Сделать это можно в строке port в файле /etc/openvpn/server.conf. Например, вы можете изменить порт на 443, так как обычно он разрешен для использования большинством фаерволов.

Если протокол, который вы используете, имеет ограничения по номеру порта, то в строке proto вам нужно изменить UDP на TCP:

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

2. Сетевая конфигурация сервера

На этом этапе нужно заняться настройкой сетевой конфигурации сервера для того, чтобы OpenVPN правильно перенаправлял трафик.

Отправка IP

Сначала необходимо дать возможность серверу перенаправлять трафик. Это очень важный момент для корректного функционирования VPN сервера.

Изменения необходимо вносить в файл /etc/sysctl.conf, поэтому сначала нужно открыть его:

Теперь найдите строку с net.ipv4.ip_forward. Раскомментируйте ее, удалив знак решетки в начале:

Затем сохраните и закройте файл.

Для того, чтобы применить изменения к вашему сеансу, наберите:

Настройка UFW правил для сокрытия клиентских соединений

Наверняка у вас на сервере фаервол уже используется для того, чтобы блокировать нежелательный трафик. В случае работы с OpenVPN фаервол поможет работать с тем трафиком, который поступает на сервер. Вам будет необходимо изменить файл с правилами для того, чтобы включить маскарадинг (или по-английски masquerading, маскировка). Маскарадинг – это определенный тип трансляции сетевого адреса, при котором отправитель имеет адрес, подставляемый динамически. Перед тем, как перейти к настройке фаервола и включению маскарадинга, нужно найти публичный интерфейс сети используемой машины. Введите команду:

Название вашего публичного интерфейса будет иди сразу после слова “dev’. В примере ниже интерфейс называется wlp22s0:

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

Обратите внимание, что в строчке -A POSTROUTING нужно вставить то название интерфейса, которое вы выяснили ранее.

Внесенное изменение позволяет установить правила. которые по умолчанию будут применяться к цепочке POSTROUTING (именно эта цепочка отвечает за маскарадинг) в таблице nat, и весь трафик, который идет от VPN, будет скрыт.

После внесенного изменения сохраните и закройте файл.

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

И в нем найдите директиву DEFAULT_FORWARD_POLICY. Ее значение с DROP нужно изменить на ACCEPT.

Затем сохраните и закройте файл.

Открытие порта OpenVPN и применение изменений

Теперь перейдем к настройке фаервола, так как необходимо, чтобы он пропускал трафик в OpenVPN.

Если ранее вы не меняли номер порта и протокол в файле /etc/openvpn/server.conf, то вам нужно открыть трафик UDP для порта 1194. Соответственно, если вы используете другой порт и протокол, то в настройках вам нужно будет использовать ваши значения.

Также нужно будет добавить SSH-порт (если ранее вы этого не сделали):

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

Теперь сервер настроен правильно для того, чтобы работать с OpenVPN трафиком.

3. Запуск OpenVPN

Наконец все готово для того, чтобы запустить OpenVPN на вашем сервере. Для этого нужно использовать команду systemd.

Для запуска сервера OpenVPN нужно обязательно указать название конфигурационного файла в качестве образца переменной после названия файла systemd. Конфигурационный файл в данном случае имеет название /etc/openvpn/server.conf, а значит, в конце юнит-файла надо написать @server.

Команда будет выглядеть так:

Проверьте, что все запустилось корректно:

Если все нормально, то вы увидите на экране вывод, который будет выглядеть примерно так:

Проверьте также и доступность OpenVPN интерфейса tun0:

В выводе вы увидите конфигурацию интерфейса:

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

4. Клиентская инфраструктура

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

Создание структуры клиентской конфигурационной директории

Создайте структуру директорий внутри вашей домашней директории – это место будет использоваться для хранения файлов:

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

Создание базовой конфигурации

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

Откройте этот новый файл в текстовом редакторе, так как сейчас в него нужно будет внести несколько изменений:

Начните с директивы remote. Она указывает клиенту, какой IP-адрес имеет сервер OpenVPN. Этот адрес обязательно должен быть публичным. Если ранее вы изменили порт для сервера OpenVPN, то измените его в этом файле тоже:

И проверьте, что протокол в файле совпадает с тем, который указан в конфигурации сервера:

Раскомментируйте директивы user и group, удалив точку с запятой:

Найдите директивы, которые задают ca, cert и key, и закомментируйте их, так как сертификаты и ключи будут заданы внутри самого файла:

А настройки cipher и auth скопируйте из файла /etc/openvpn/server.conf:

И еще куда-нибудь в файл вам нужно добавить директиву key-direction, задав ей обязательно значение 1:

Наконец, добавьте и несколько закомментированных строк, которые будут использоваться только для клиентов Linux, использующих файл /etc/openvpn/update-resolv-conf.

Поэтому если клиент использует Linux, и у него есть файл /etc/openvpn/update-resolv-conf, нужно раскомментировать эти строки в сгенерированном клиентском конфигурационном файле OpenVPN.

После всех этих изменений сохраните файл.

5. Скрипт генерации конфигурационных файлов

Следующая задача – создать простой скрипт, который будет генерировать файлы путем наполнения базовой конфигурации актуальными сертификатами, ключами и файлами шифрования.

Сгенерированные конфигурации будут находиться в директории

Создайте и откройте файл под названием make_config.sh в директории

Скопируйте туда скрипт ниже:

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

Установите для скрипта права на исполнение:

6. Генерация клиентских конфигураций

Теперь вы можете легко генерировать клиентские конфигурационные файлы.

Если вы выполняли действия из статьи «OpenVPN на Ubuntu 16.04: установка», то у вас уже есть клиентский сертификат и ключ client1.и client1.key. Созданный выше скрипт можно использовать для того, чтобы создать конфигурацию для этих файлов (но перед этим нужно перейти в соответствующую директорию):

Если все было выполнено правильно, у вас должен появиться файл client1.ovpn в директории

Вывод на экране:

Передача конфигурации клиентским машинам

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

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

Например, если вы хотите использовать SFTP для передачи client1.ovpn с компьютера на Linux или Mac OS, то используйте такую команду:

Файл будет перемещен в домашнюю директорию.

7. Установка клиентской конфигурации

Теперь нужно поговорить о том, как установить клиентский VPN профиль на разных устройствах. В этой статье я расскажу о том, как это сделать на компьютерах на Windows и Linux.

Соединение OpenVPN имеет такое же название, как и файл .ovpn. Например, в данном случае мы работаем с файлом client1.ovpn, который был создан для первого клиента.

Windows

Установка

Клиентское приложение OpenVPN для Windows вы можете найти на странице загрузок OpenVPN.

Выбирайте в зависимости от вашей версии Windows. Обратите внимание, что для установки вы должны обладать административными правами.

После установки OpenVPN скопируйте файл .ovpn в следующую папку: C:\Program Files\OpenVPN\config
После запуска OpenVPN программа автоматически увидит профиль и сделает его доступным.

OpenVPN надо всегда запускать от имени администратора, даже в тех случаях, когда вы уже зашли под административным аккаунтом. Для этого надо нажать правой кнопкой мыши на значке программы и выбрать «Запуск от имени администратора». А значит, обычным пользователям для запуска OpenVPN придется вводить административный пароль.

Для того, чтобы OpenVPN всегда запускался от имени администратора, вам нужно щелкнуть правой кнопкой мыши на иконке и зайти в «Свойства». Во вкладке «Совместимость» нажмите кнопку «Изменить параметры для всех пользователей», а в следующем окне – «Запуск программы от имени администратора».

Соединение

При запуске OpenVPN Windows будет всегда спрашивать, можно ли программе вносить изменения в ваш компьютер, и вам нужно нажимать «Да». Запуск клиента OpenVPN не устанавливает соединение автоматически, а помещает программу в область уведомлений (системный трей) для того, чтобы вы могли включать и выключать использование VPN.

После того, как вы запустили OpenVPN, вам нужно установить соединение. Сделать это можно следующим образом: нажмите правой кнопкой на иконке OpenVPN в области уведомлений, в контекстном меню выберите client1 и нажмите «Соединиться» (Connect).

Пока будет работать соединение, вы будете видеть его лог в окне статуса.

Отсоединиться от VPN можно таким же способом: нажав правую кнопку мыши на иконке OpenVPN в трее, вам нужно выбрать клиентский профиль и нажать «Отсоединиться» (Disconnet).

Linux

Установка

Если вы используете Linux, то есть несколько возможных инструментов, которые вы можете использовать (в зависимости от конкретной системы, которую вы используете).

Если это Ubuntu или Debian, то для установки используйте такие команды:

Для CentOS надо сначала установить EPEL репозитории и затем установить OpenVPN

Настройка

Проверьте, есть ли в вашем дистрибутиве скрипт /etc/openvpn/update-resolv-conf:

Дальше откройте клиентский конфигурационный файл OpenVPN, который вы передали ранее:

Читайте также: