Как защитить свой сервер Linux с помощью брандмауэра UFW
UFW, сокращение от «простой брандмауэр», представляет собой интерфейс для более сложной утилиты iptables
. Он разработан, чтобы сделать управление брандмауэром таким же простым, как настройка открытых и закрытых портов и регулирование разрешенного трафика.
Настройка УФВ
UFW установлен по умолчанию в Ubuntu, но если это не так, вы можете установить его из apt
:
sudo apt-get install ufw
Если вы используете другой дистрибутив, вам придется использовать менеджер пакетов этого дистрибутива, но UFW широко доступен. Вы можете проверить состояние брандмауэра с помощью:
sudo ufw status
Что должно сказать «Неактивно», если вы не настроили его раньше.
Хороший способ начать работу с любым брандмауэром — закрыть весь входящий трафик и разрешить исходящий. Не волнуйтесь, это не приведет к немедленному отключению вашего SSH-соединения, так как брандмауэр еще не включен.
sudo ufw default deny incoming sudo ufw default allow outgoing
Это дает нам чистый лист для работы и добавления правил поверх него.
Открытие портов с помощью UFW
Чтобы открыть порты, используйте команду ufw allow
. Например, вам нужно открыть порт 22, так что вперед и запустите:
sudo ufw allow 22
Вы также можете оставить заметку для себя в будущем при добавлении любого правила:
sudo ufw allow 8080/tcp comment 'Open port for Express API'
Многие приложения устанавливают профили для UFW, одним из которых является SSH. Таким образом, вы также можете разрешить определенным приложениям открывать нужные им порты, указав имя:
sudo ufw allow ssh
Вы можете просмотреть список доступных приложений с помощью списка приложений ufw
и просмотреть сведения о приложении с помощью информации о приложении ufw [имя]
.
Вы также можете разрешить целый диапазон портов, используя двоеточие в качестве разделителя, и вы можете указать протокол. Например, чтобы разрешить только TCP-трафик на портах с 3000 по 3100, вы можете запустить:
sudo ufw allow 3000:3100/tcp
Поскольку по умолчанию установлен запрет на входящие, вам не придется вручную закрывать какие-либо порты. Если вы хотите закрыть исходящий порт, вам нужно будет указать направление вместе с ufw reject
:
sudo ufw reject out 3001
Внесение в белый список и ограничение скорости с помощью UFW
Вы можете разрешить определенным IP-адресам иметь разные разрешения. Например, чтобы разрешить весь трафик с вашего IP-адреса, вы можете запустить:
sudo ufw allow 192.168.1.1
Чтобы внести в белый список определенные порты, вам придется использовать более полный синтаксис:
sudo ufw allow proto tcp from 192.168.1.1 to any port 22
Скорее всего, вы не захотите заносить в белый список доступ по SSH таким образом, если у вас нет резервного соединения или какой-либо настройки перехвата портов, поскольку IP-адреса меняются довольно часто. Один из вариантов, если вы хотите ограничить доступ по SSH только вам, — настроить сервер OpenVPN в том же частном облаке и внести в белый список доступ к этому серверу.
Если вы хотите внести в белый список целый блок IP-адресов, как в случае, когда вы запускаете свои серверы через поставщика виртуального частного облака, вы можете использовать стандартную нотацию подсети CIDR:
sudo ufw allow 192.168.0.0/24
Подсети довольно сложны, поэтому вы можете прочитать наше руководство по работе с ними, чтобы узнать больше.
Ограничение скорости — еще одна полезная функция брандмауэров, которая может блокировать соединения, которые явно неправомерны. Это используется для защиты от злоумышленника, пытающегося взломать открытый порт SSH. Очевидно, вы можете добавить порт в белый список, чтобы защитить его полностью, но ограничение скорости в любом случае полезно. По умолчанию скорость UFW ограничивает 6 подключений за 30 секунд и предназначена для использования с SSH:
sudo ufw limit ssh
Включите UFW
После того, как вы закончите настройку правил, вы можете включить UFW. Убедитесь, что SSH на порту 22 открыт, иначе вы заблокируете себя. Если вы хотите, вы можете отключить запуск UFW при загрузке, чтобы сброс устранил любые потенциальные проблемы:
sudo systemctl disable ufw
Затем вы можете включить UFW с помощью:
sudo ufw enable
Если все в порядке, вы можете запустить ufw status
, чтобы просмотреть текущее состояние брандмауэра. Если вы не заблокированы и брандмауэр работает, настройте его на запуск при загрузке с помощью:
sudo systemctl enable ufw
Каждый раз, когда вы вносите изменения, вам нужно будет перезагрузить брандмауэр с помощью:
sudo ufw reload
Вы также можете включить ведение журнала, чтобы регистрировать подключения к /var/log/
:
sudo ufw logging on
Управление и удаление правил
Если вы хотите удалить правило, вам нужно будет получить его номер с помощью:
sudo ufw status numbered
Обратите внимание, что номера начинаются с 1, а не с 0. Вы можете удалить правило по номеру:
sudo ufw delete [number]
Опять же, убедитесь, что вы не удалили правило, оставив порт 22 открытым. Вы можете использовать параметр --dry-run
, чтобы UFW запрашивал у вас подтверждение:
Если вы внесете какие-либо изменения, вам нужно будет снова перезагрузить брандмауэр.