Знакомство с брандмауэром (файервол)
UFW облегчает настройку предустановленного по умолчанию файрвола iptables. Создан для более легкой и понятной, для новичков, защиты своего сервера. Все предельно просто. Изначально, после установки сервера, все соединения и порты открыты, для всех. Это не есть хорошо, нужно прикрыть такое безобразие. Для начала убеждаемся, что действительно все разрешено. Вводим команду
sudo iptables -S
Получаем в ответ:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Все открыто и доступно.
Установка UFW
Перед началом установки обновляем пакеты, это дело святое, делать нужно перед любой установкой чего либо. Так же, как пользоваться командой sudo.
sudo apt update
sudo apt upgrade -y
sudo apt install ufw -y
Проверка статуса UFW
После установки файрвол еще не активен. Проверим это командой:
sudo ufw status
В ответ получим лаконичное сообщение, что брандмауэр еще не работает.
Status: inactive
Пакеты правил UFW
Эти записи помогают объединить несколько действий одной командой. Есть уже предустановленные, никто не мешает написать свои под необходимые действия удобочитаемые для вас. Посмотрим какие пакеты правил уже есть, перейдя в каталог, где они живут:
cd /etc/ufw/applications.d
ls
На выходе получим список с именами файлов, которые довольно осмысленно говорят какими портами они занимаются. В зависимости от версии программы эти пакеты могут различаться.
openssh-server
ufw-chat
ufw-dnsserver
ufw-loginserver
ufw-printserver
ufw-webserver
ufw-bittorent
ufw-directoryserver
ufw-fileserver
ufw-mailserver
ufw-proxyserver
Открытие портов UFW
Применение правил
Первым делом откроем связь с сервером по SSH иначе потеряем связь с сервером после запуска защиты, никто же не хочет приобрести лишние проблемы с ненужными телодвижениями в последствии. Выполнить команду воспользовавшись одним из пакетов:
sudo ufw allow OpenSSH
Вывод будет следующим - правило применено, причем для двух протоколов v4 и v6
Rules updated
Rules updated (v6)
Можно по другому в одном из пакетов это ufw-loginserver есть уже запись для 22 порта
sudo ufw allow SSH
Применим своеобразную защиту от посягательств да же, если сервер находится за NATом и SSH порт не светит в интернет. Разрешим доступ к серверу только с определенного ip-адреса или подсети по всем портам, где живет админ.
sudo ufw allow from 192.168.1.1
#или для подсети
sudo ufw allow from 192.168.1.1/24
Включение файрвола UFW
Теперь смело можно запускать брандмауэр:
sudo ufw enable
Помимо того, что я уже предупредил и позаботился о связи с сервером, программа то же поинтересуется о том, что ssh может быть заблокировано.
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
# жмем y
Firewall is active and enabled on system startup
# Файервол активен, проверяем
sudo iptables -S
# много непонятных букав ))
Статус правил UFW
Просмотреть активные правила при помощи команды:
sudo ufw status
Как видно все что разрешили здесь присутствует, причем с избытком и в разных формах, не хватает еще записи прямого открытия порта без участия пакетов. С пакетами удобнее, чтоб потом не вспоминать, по какому порту приложение работает, все же цифры наизусть не надо в голове держать.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
SSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
SSH (v6) ALLOW Anywhere (v6)
Удалить правило UFW
Удаление правила по названию
Удалять правила можно несколькими способами, каким удобнее, тем и пользоваться. Удалить правило по имени, в данном случае дублирующее доступ к порту 22
sudo ufw delete allow OpenSSHRule deletedRule deleted (v6)
Список правил под номерами
Можно по другому. Сначала выведя список правил под номерами:
sudo ufw status numbered
Оставшиеся правила уже приобрели в таком случае порядковые номера.
Status: active
To Action From
-- ------ ----
[ 1] SSH ALLOW IN Anywhere
[ 2] SSH (v6) ALLOW IN Anywhere (v6)
Удаление правил по номерам
Удалить правило номер 2 введя такую команду:
sudo ufw delete 2
Что интересно при удалении правила по номеру, нас спросят типа уверены, что надо удалить? При удалении по имени такого не спрашивает.
Deleting:
allow SSH
Proceed with operation (y|n)?
# подтверждаем удаление - y
Rule deleted (v6)
Отключение протокола ipv6 UFW
Поскольку у меня нет поддержки от провайдера протокола ipv6 я его отключил, соответственно отключим и в файрволе
sudo nano /etc/default/ufw# находим строчку IPV6=yes# меняем на IPV6=no
Сохранить файл Ctrl+O, закрыть Ctrl+X.
Перезагрузка UFW
После каких либо изменений в файле конфигурации, чтобы они вступили в силу необходимо перезапустить сервис командой
sudo ufw reload
При удачном стечении обстоятельств получим вот такой положительный ответ:
Firewall reloaded
Теперь правила будут работать и создаваться без поддержки ipv6
Создание своих пакетов UFW
Поскольку есть почтовый сервер надо открыть нужные порты используя записи пакета, который есть по умолчанию ufw-mailserver
Правила, которые написаны через пробел необходимо заключать в кавычки.
sudo ufw allow SMTP
sudo ufw allow IMAP
sudo ufw allow IMAPS
sudo ufw allow "Mail submission"
Вот порт 587 - starttls есть в пакете, а 465 в пакете нет(наверное устаревший уже) откроем добавив запись в пакет ufw-mailserver или создать новый пакет назвав его как угодно. Откроем файл с пакетом:
sudo nano /etc/ufw/applications.d/ufw-mailserver
В конце допишем свое правило, назвав его в честь порта, который отвечает за секретную передачу почтовых сообщений, в квадратных скобках имя правила.
[SMTPS]
title=Mail server (SMTPS)
description=Mail server (SMTPS)
ports=465/tcp
Сохранить файл Ctrl+O, закрыть Ctrl+X и применить правило.
sudo ufw allow SMTPS
А так же откроем доступ к веб серверу используя правило из установленного пакета ufw-webserver. Если правило с именем содержащее пробел или еще какие то символы оно применяется только если заключено в кавычки
sudo ufw allow "WWW Full"
Мне понравилось применение массового открытия портов в пакете “WWW Full” сделаю так же для почтового сервера, чтоб не плодить файлы допишу все это в ufw-mailserver .
sudo nano /etc/ufw/applications.d/ufw-mailserver
Вводим текст.
[Mail Full]
title=Mail server (SMTP,SMTPS,IMAP,IMAPS)
description=Mail server (SMTP,SMTPS,IMAP,IMAPS)
ports=25,465,587,143,993/tcp
Сохранить файл Ctrl+O, закрыть Ctrl+X
Подробный вывод правил UFW
Проверим более подробно установленные правила с выводом не только имен правил из пакета, но и порта с протоколом TCP или UDP
sudo ufw status verbose
На выходе получим не только имя правила, но еще и порт к которому оно относится.
Сброс всех правил UFW
Для сброса всех настроек ufw, нужно выполнить команду, после которой ufw будет деактивирован
sudo ufw reset
Выключить файрвол UFW
Бывает необходимо выяснить какую то проблему для исключения из этой цепочки файрвола его необходимо выключить. Для полного отключения утилиты ufw, нужно выполнить команду
sudo ufw disable
Примеры, добавления / удаления, правил
# Добавление правил ufw
# Открытие порта:
sudo ufw allow 12345/tcp
# Открытие диапазона портов:
sudo ufw allow 1000:1010/tcp
# Закрытие порта:
sudo ufw deny 12345/tcp
# Разрешение на доступ ко всем портам, с определённого ip-адреса:
sudo ufw allow from 123.123.123.123
# Разрешение на доступ к какому-нибудь порту (в примере 443 порт), с определённого ip-адреса:
sudo ufw allow from 123.123.123.123 to any port 443
# Разрешение на доступ ко всем портам, с адресов определённой подсети:
sudo ufw allow from 192.168.1.0/24
# Разрешение на доступ к какому-нибудь порту (в примере 443 порт), с адресов определённой подсети:
sudo ufw allow from 192.168.1.0/24 to any port 443
# УДАЛЕНИЕ ПРАВИЛ ufw
# Проверка номера правила, и удаление по номеру (в примере правило № 1):
sudo ufw status numbered
sudo ufw delete 1
Удаление по порту, или диапазону портов:
sudo ufw delete allow 12345/tcp
sudo ufw delete allow 1000:1010/tcp
Это конечно не все возможности брандмауэра есть еще, но это уже отдельная тема, весь необходимый минимум рассказан.
Комментарии