Поиск по сайту:

Как настроить брандмауэр с UFW на облачном сервере Ubuntu и Debian


Введение

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

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

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

Предпосылки

Чтобы следовать этому руководству, вам понадобится сервер под управлением Ubuntu или Debian. На вашем сервере должен быть пользователь без полномочий root с привилегиями sudo. Чтобы настроить это для Ubuntu, следуйте нашему руководству по начальной настройке сервера с Debian 11. Оба этих руководства по начальной настройке сервера гарантируют, что на вашем компьютере установлен UFW и что у вас есть безопасная среда, которую вы можете использовать для практики создания правил брандмауэра. .

Использование IPv6 с UFW

Если ваш виртуальный частный сервер (VPS) настроен для IPv6, убедитесь, что UFW настроен для поддержки IPv6, чтобы он настраивал правила брандмауэра для IPv4 и IPv6. Для этого откройте файл конфигурации UFW в предпочитаемом вами текстовом редакторе. Здесь мы будем использовать nano:

  1. sudo nano /etc/default/ufw

Убедитесь, что для параметра IPV6 установлено значение yes:

/etc/default/ufw
# /etc/default/ufw # # Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback # accepted). You will need to 'disable' and then 'enable' the firewall for # the changes to take affect. IPV6=yes

После внесения изменений сохраните и закройте файл. Если вы используете nano, нажмите CTRL + X, Y, а затем ENTER.

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

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Затем включите его снова:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Теперь ваш брандмауэр UFW настроен на настройку брандмауэра как для IPv4, так и для IPv6, когда это необходимо. Далее вы настроите правила по умолчанию для подключений к брандмауэру.

Настройка UFW по умолчанию

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

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

Далее обратимся к правилу исходящих соединений:

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

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

  1. sudo ufw default deny outgoing

Разрешение подключений к брандмауэру

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

  1. sudo ufw allow ssh

Если ваши изменения были успешными, вы получите следующий вывод:

Output
Rule added Rule added (v6)

UFW поставляется с некоторыми значениями по умолчанию, такими как команда ssh, используемая в предыдущем примере. Кроме того, вы можете разрешить входящие подключения к порту 22/tcp, который использует протокол управления передачей (TCP) для достижения той же цели:

  1. sudo ufw allow 22/tcp

Однако если вы попробовали это после того, как уже запустили allow ssh, вы получите следующее сообщение, поскольку правило уже существует:

Output
Skipping adding existing rule Skipping adding existing rule (v6)

Если ваш SSH-сервер работает на порту 2222, вы можете разрешить соединения с тем же синтаксисом, но замените его портом 2222. Обратите внимание, что если вы используете номер порта сам по себе, это также влияет на tcp и udp:

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

Защита веб-серверов

Чтобы защитить веб-сервер с доступом по протоколу передачи файлов (FTP), вам необходимо разрешить подключения для порта 80/tcp.

Разрешение подключений для порта 80 полезно для веб-серверов, таких как Apache и Nginx, которые прослушивают запросы HTTP-подключения. Для этого разрешите подключения к порту 80/tcp:

  1. sudo ufw allow 80/tcp

UFW обычно предоставляет профилям правила, необходимые для работы веб-сервера. В противном случае профили веб-сервера могут храниться как \WWW и открываться как ftp или tcp, как в следующих примерах:

  1. sudo ufw allow www

Вы также можете использовать ftp или порт 21, чтобы разрешить FTP-соединения:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

Для FTP-соединений также необходимо разрешить соединения для порта 20:

  1. sudo ufw allow 20/tcp

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

Указание диапазонов портов

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

Например, следующая команда разрешит TCP-доступ ко всем портам от 1000 до 2000 включительно:

  1. sudo ufw allow 1000:2000/tcp

Аналогично, следующая команда запретит UDP-подключения ко всем портам от 1234 до 4321:

  1. sudo ufw deny 1234:4321/udp

Указание IP-адресов

Вы можете разрешить подключения с определенного IP-адреса, как показано ниже. Обязательно замените IP-адрес своей информацией:

  1. sudo ufw allow from your_server_ip

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

Отказ в подключении

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

  1. sudo ufw deny 80/tcp

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

Если вы хотите удалить некоторые правила, которые вы администрировали, используйте delete и укажите правило, которое вы хотите удалить:

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

Если правила длинные и сложные, есть альтернативный двухэтапный подход. Во-первых, сгенерируйте пронумерованный список текущих правил:

  1. sudo ufw status numbered

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

  1. sudo ufw delete number
Output
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …

Например, если порт 80 имеет номер 4 в списке, вы должны использовать следующий синтаксис. Вам также может быть предложено задать вопрос, хотите ли вы продолжить операцию. Вы можете решить да y или нет n:

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

Включение UFW

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

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

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

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

Вы также можете использовать verbose для более полного вывода:

  1. sudo ufw status verbose

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

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Сброс настроек по умолчанию

Если по какой-то причине вам нужно сбросить правила вашего облачного сервера до значений по умолчанию, вы можете сделать это с помощью команды ufw reset. Обратите внимание, что вам будет предложено написать y или n перед сбросом всего, поскольку это может привести к нарушению существующих SSH-соединений:

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'

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

Заключение

В этом руководстве вы узнали, как установить и настроить облачный сервер, чтобы разрешить или ограничить доступ к подмножеству портов или IP-адресов. Кроме того, вы практиковались в удалении любых правил, которые вам больше не нужны, и подтверждении того, что эти изменения были учтены, путем отключения и последующего включения брандмауэра UFW. Наконец, вы узнали, как восстановить настройки брандмауэра UFW по умолчанию. Чтобы узнать больше о возможностях UFW, ознакомьтесь с нашим руководством по UFW Essentials: Common Firewall Rules and Commands.