Введение
Настройка работающего брандмауэра является важным аспектом обеспечения безопасности вашего облачного сервера. Ранее настройка брандмауэра выполнялась с помощью сложных или устаревших утилит. Многие из этих утилит (например, iptables
) обладают множеством функций, но требуют дополнительных усилий со стороны пользователя для их изучения и понимания.
Другой вариант – это UFW, или Простой брандмауэр. UFW является интерфейсом для iptables
, который нацелен на обеспечение более удобного пользовательского интерфейса по сравнению с другими утилитами управления брандмауэром. UFW хорошо поддерживается в сообществе Linux и обычно устанавливается по умолчанию на многих дистрибутивах.
В этом руководстве вы научитесь настраивать брандмауэр с помощью UFW для обеспечения безопасности облачного сервера Ubuntu или Debian. Вы также узнаете, как настроить правила по умолчанию в UFW для разрешения или блокировки соединений для портов и IP-адресов, удалять созданные вами правила, отключать и включать UFW, а также сбрасывать все настройки на значения по умолчанию, если вы предпочитаете.
Предварительные требования
Для следования этому руководству вам понадобится сервер, который работает под управлением Ubuntu или Debian. На вашем сервере должен быть создан пользователь с правами sudo, но не root. Чтобы настроить это для Ubuntu, следуйте нашему руководству по Начальная настройка сервера с Ubuntu 20.04. Чтобы настроить это для Debian, следуйте нашему руководству по Начальная настройка сервера с Debian 11. Оба этих руководства по начальной настройке сервера гарантируют, что на вашем компьютере установлен UFW и что у вас есть безопасная среда, которую вы можете использовать для практики создания правил брандмауэра.
Использование IPv6 с UFW
Если ваш виртуальный частный сервер (VPS) настроен для использования IPv6, убедитесь, что UFW настроен для поддержки IPv6, чтобы он настраивал как правила брандмауэра IPv4, так и IPv6. Для этого откройте файл конфигурации UFW в выбранном вами текстовом редакторе. Здесь мы будем использовать nano
:
Подтвердите, что IPV6
установлен в yes
:
/etc/default/ufw# /etc/default/ufw
#
# Установите значение yes, чтобы применить правила для поддержки IPv6 (no означает только IPv6 на локальном интерфейсе
# принимается). Вам нужно будет 'отключить' а затем 'включить' брандмауэр для
# вступления изменений в силу.
IPV6=yes
…
После внесения изменений сохраните и закройте файл. Если вы используете nano
, нажмите CTRL + X
, затем Y
, а затем ENTER
.
Теперь перезапустите свой брандмауэр, сначала отключив его:
OutputFirewall stopped and disabled on system startup
Затем снова включите его:
OutputFirewall is active and enabled on system startup
Ваш брандмауэр UFW теперь настроен на настройку брандмауэра как для IPv4, так и для IPv6 при необходимости. Далее вы настроите стандартные правила для подключений к вашему брандмауэру.
Настройка стандартных правил UFW
Вы можете улучшить эффективность вашего брандмауэра, определив стандартные правила для разрешения и блокирования подключений. По умолчанию UFW блокирует все входящие подключения и разрешает все исходящие подключения. Это означает, что любой пытающийся подключиться к вашему серверу не сможет это сделать, в то время как любое приложение внутри сервера может подключаться к внешним ресурсам. Чтобы обновить стандартные правила, установленные UFW, сначала укажите правило для входящих подключений:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Затем укажите правило для исходящих подключений:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Примечание: Если вы хотите быть более строгими, вы можете отклонить все исходящие запросы. Этот вариант основан на личных предпочтениях. Например, если у вас есть облачный сервер, доступный из интернета, это может помочь предотвратить любые удаленные оболочки. Однако это делает ваш брандмауэр более сложным в управлении, потому что вам придется настраивать правила для всех исходящих подключений. Вы можете установить это в качестве стандартного с помощью следующей команды:
Разрешение подключений к брандмауэру
Разрешение подключений требует изменения правил брандмауэра, которые можно выполнить, выполнив команды в терминале. Если вы включите брандмауэр сейчас, например, он будет отклонять все входящие подключения. Это может стать проблемой, если вы подключены по SSH к своему серверу, потому что вы не сможете получить доступ к серверу. Предотвратите это, разрешив подключения по SSH к серверу:
Если ваши изменения были успешными, вы получите следующий вывод:
OutputRule added
Rule added (v6)
UFW поставляется с некоторыми значениями по умолчанию, такими как команда ssh
, использованная в предыдущем примере. В качестве альтернативы вы можете разрешить входящие подключения к порту 22/tcp
, который использует протокол управления передачей (TCP) для выполнения того же самого:
Однако, если вы попытаетесь это сделать после того, как уже выполнили allow ssh
, вы получите следующее сообщение, поскольку правило уже существует:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
Если ваш сервер SSH работает на порту 2222
, вы можете разрешить подключения с тем же синтаксисом, но заменить его на порт 2222
. Обратите внимание, что если вы используете только номер порта, это влияет также на tcp
и udp
:
OutputRule added
Rule added (v6)
Защита веб-серверов
Для защиты веб-сервера с доступом по протоколу передачи файлов (FTP) вам потребуется разрешить подключения для порта 80/tcp
.
Разрешение подключений к порту 80
полезно для веб-серверов, таких как Apache и Nginx, которые прослушивают запросы на подключение по HTTP. Для этого разрешите подключения к порту 80/tcp
:
Обычно UFW предоставляет профили с необходимыми правилами для функционирования веб-сервера. Если нет, профили веб-сервера могут быть сохранены как “WWW” и открыты как ftp
или tcp
, как в следующих примерах:
Также вы можете использовать ftp
или порт 21
, чтобы разрешить подключения по FTP:
Для подключений FTP вам также необходимо разрешить подключения для порта 20
:
Ваши настройки будут зависеть от того, какие порты и службы вам нужно открыть, и, возможно, потребуется тестирование. Не забудьте также оставить разрешенное подключение к SSH.
Указание диапазонов портов
Вы также можете указать диапазоны портов для разрешения или запрета с помощью UFW. Для этого сначала необходимо указать порт в нижнем диапазоне, за которым следует двоеточие (:
), а затем верхний конец диапазона. Наконец, вы должны указать протокол (tcp
или udp
), к которому должны применяться правила.
Например, следующая команда разрешит доступ TCP ко всем портам от 1000
до 2000
, включительно:
Точно так же следующая команда запретит подключения UDP ко всем портам от 1234
до 4321
:
Указание IP-адресов
Вы можете разрешить подключения с определенного IP-адреса, например, следующим образом. Обязательно замените IP-адрес своей собственной информацией:
Как показывают эти примеры, у вас есть много гибкости при настройке правил брандмауэра путем селективного разрешения определенных портов и подключений к IP-адресам. Посмотрите наше руководство, чтобы узнать больше о разрешении входящих подключений с конкретного IP-адреса или подсети.
Запрещение подключений
Если вы хотите открыть все порты на своем сервере – что не рекомендуется – вы можете разрешить все подключения, а затем запретить доступ к портам, к которым вы не хотите предоставлять доступ. В следующем примере показано, как запретить доступ к порту 80
:
Удаление правил
Если вы хотите удалить некоторые из правил, которые вы наложили, используйте delete
и укажите правило, которое вы хотите убрать:
OutputRule deleted
Rule deleted (v6)
Если правила длинные и сложные, есть альтернативный двухэтапный подход. Сначала сгенерируйте пронумерованный список текущих правил:
Затем, с помощью этого пронумерованного списка, оцените, какие правила в данный момент разрешены, и удалите правило, обращаясь к его номеру:
OutputStatus: 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
:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
Включение UFW
Как только вы определили все правила, которые хотите применить к своему брандмауэру, вы можете включить UFW, чтобы он начал их применять. Если вы подключаетесь через SSH, убедитесь, что установлен ваш SSH-порт, обычно порт 22
, чтобы разрешить принимать подключения. В противном случае вы можете заблокировать себя на сервере:
OutputFirewall is active and enabled on system startup
Чтобы подтвердить, что ваши изменения прошли успешно, проверьте статус, чтобы просмотреть список правил:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
Вы также можете использовать verbose
для более подробного вывода:
Чтобы отключить UFW, выполните следующее:
OutputFirewall stopped and disabled on system startup
Сброс настроек по умолчанию
Если по какой-то причине вам нужно сбросить правила облачного сервера на значения по умолчанию, вы можете сделать это с помощью команды ufw reset
. Обратите внимание, что перед сбросом всего вам будет предложено написать y
или n
, так как это может нарушить существующие соединения SSH:
OutputResetting 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: Общие правила и команды брандмауэра.