Основы UFW: общие правила и команды фаервола

Published by 1 Comment

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

Примечание

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

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

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

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

sudo ufw status

или

sudo ufw status verbose

Блокировка IP-адреса

Чтобы заблокировать соединения, поступающие от определённого IP-адреса (к примеру, 12.12.12.21), запустите:

sudo ufw deny from 12.12.12.21

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

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

Чтобы заблокировать подключения от определённого IP (12.12.12.21) к сетевому интерфейсу (например, к eth0), используйте:

sudo ufw deny in on eth0 from 12.12.12.21

Эта команда почти полностью повторяет предыдущую команду, за исключением условия in on eth0, задающего интерфейс.

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

Сервис SSH

При работе с облачным сервером может возникнуть необходимость разрешить входящие соединения SSH (порт 22). Этот раздел охватывает различные правила фаервола для сервиса SSH.

Как открыть SSH

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

sudo ufw allow ssh

Альтернативный синтаксис (указать порт сервиса):

sudo ufw allow 22

Как открыть SSH для определённого IP-адреса или подсети

Чтобы разрешить фаерволу принимать SSH-подключения от конкретного IP-адреса или подсети, нужно указать источник трафика. К примеру, чтобы разрешить трафик от подсети 15.15.15.0/24, нужно ввести:

sudo ufw allow from 15.15.15.0/24  to any port 22

Доступ по rsync для определённого IP-адреса или подсети

Инструмент rsync, работающий через порт 873, может быть использован для обмена файлами.

Чтобы разрешить фаерволу принимать соединения rsync от конкретного IP-адреса или подсети, укажите исходный IP-адрес и целевой порт. К примеру, чтобы разрешить соединения rsync от подсети 15.15.15.0/24, нужно запустить:

sudo ufw allow from 15.15.15.0/24 to any port 873

Веб-сервер

Веб-серверы (например, Apache и Nginx), как правило, прослушивают порты 80 и 443 для соединений HTTP и HTTPS соответственно. Если политика входящего трафика по умолчанию настроена для отклонения или блокирования таких соединений, то, скорее всего, нужно будет изменить такое поведение.

Как разрешить входящий HTTP-трафик

Чтобы разрешить входящие HTTP-соединения (порт 80), введите команду:

sudo ufw allow http

Альтернативный синтаксис требует указать порт:

sudo ufw allow 80

Как разрешить входящий HTTPS-трафик

Чтобы разрешить входящие HTTPS-соединения (порт 443), введите:

sudo ufw allow https

Альтернативный синтаксис (укажите порт):

sudo ufw allow 443

Как разрешить входящие соединения HTTP и HTTPS

Чтобы разрешить входящие соединения HTTP и HTTPS, создайте правило, открывающее соответствующие порты. Используйте:

sudo ufw allow proto tcp from any to any port 80,443

Обратите внимание: задавая несколько портов, нужно указать протокол (proto tcp).

Сервис MySQL

MySQL прослушивает клиентские соединения на порте 3306. Если сервер MySQL используется клиентом или удалённым сервером, нужно разрешить брандмауэру принимать такой трафик.

Как открыть MySQL для определённого IP или подсети

Чтобы разрешить принимать подключения к MySQL от конкретного IP или подсети, нужно указать источник соединения. К примеру, чтобы разрешить соединения подсети 15.15.15.0/24, введите:

sudo ufw allow from 15.15.15.0/24 to any port 3306

Как открыть MySQL для определённого сетевого интерфейса

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

sudo ufw allow in on eth1 to any port 3306

Сервис PostgreSQL

PostgreSQL слушает клиентские подключения на порте 5432. Если сервер БД PostgreSQL используется клиентом или удалённым сервером, нужно разрешить брандмауэру принимать такие подключения.

Как открыть PostgreSQL для определённого IP-адреса или подсети

Чтобы разрешить принимать подключения к PostgreSQL от конкретного IP или подсети, нужно указать источник подключения. К примеру, чтобы разрешить соединения для подсети 15.15.15.0/24, введите:

sudo ufw allow from 15.15.15.0/24 to any port 5432

Команда, позволяющая исходящий трафик для установленных соединений PostgreSQL, необходима только в случае, если политика по умолчанию – не ACCEPT.

Как открыть PostgreSQL для определённого сетевого интерфейса

Чтобы разрешить брандмауэру принимать подключения к PostgreSQL на сетевой интерфейс (к примеру, eth1), введите:

sudo ufw allow in on eth1 to any port 5432

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

Почтовые сервисы

Почтовые сервисы (например, Sendmail или Postfix) слушают соединения на различных портах в зависимости от протоколов, используемых для доставки почты. Если вы запустили почтовый сервер, определите используемые протоколы и разрешите соответствующие типы трафика. Также в этом разделе показано, как создать правило для блокировки исходящей SMTP-почты.

Блокировка исходящей SMTP-почты

Если сервер не должен иметь возможность отправлять исходящую почту, можно заблокировать такой трафик. SMTP-почта использует порт 25. Чтобы заблокировать исходящую почту, выполните следующую команду:

sudo ufw deny 25

Это настроит фаервол для сброса всего исходящего трафика на порте 25.

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

Как разрешить входящие SMTP-соединения

Чтобы разрешить серверу отвечать на все входящие SMTP-соединения (порт 25), введите:

sudo ufw allow 25

Примечание: Для исходящей почты SMTP, как правило, использует порт 587.

Как разрешить входящие IMAP-соединения

Чтобы разрешить серверу принимать все входящие IMAP-соединения (порт 143), запустите:

sudo ufw allow 143

Как разрешить входящие IMAPS

Чтобы разрешить серверу принимать все входящие IMAPS-соединения (порт 993), используйте:

sudo ufw allow 993

Как разрешить входящие POP3-соединения

Чтобы разрешить все входящие POP3-соединения (порт 110), запустите:

sudo ufw allow 110

Как разрешить входящие POP3S-соединения

Чтобы разрешить все входящие POP3S-соединения (порт 995), запустите:

sudo ufw allow 995

Заключение

Данное руководство охватывает наиболее распространённые команды для настройки фаервола при помощи UFW.

UFW – очень гибкий инструмент, потому рекомендуется поэкспериментировать с ним самостоятельно, чтобы удовлетворить конкретные требования сервера, если они не рассматриваются в этой статье.

Tags: , , , , , , , , ,

1 комментарий

  • Александр:

    Спасибо за руководство! Установил, работает, но есть нюанс.
    После того, как установился заводиться не захотел.
    Выдавал ошибку и ругался на IPtables
    Пришлось в конфиге /etc/default/ufw выставить IPV6=no
    И вроде-бы все заработало, но вот проблема: очень туго (долго+504 ошибка) отправляются служебные письма сайта через smtp.

    Списался с техподдержкой VPS. Сказали, что это все это дело пытается отправиться через IPv6, но так как он запрещен файерволлом, то спустя время отправляет через IPv4.

    Скажите пожалуйста, сталкивались ли вы с подобной проблемой? Если что, могу выложить ошибки из консоли при попытке стартовать UFW при IPV6=yes

    Заранее благодарю!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>