Вступление
Надежно настроенный фаервол – одно из важнейших условий защиты облачного сервера. Раньше для настройки фаервола использовались сложные утилиты с огромным количеством встроенных функций, ознакомление с которыми занимает немало времени и усилий. Одна из наиболее популярных программ такого типа – IPTables. Правила фаервола нельзя придумать или составить наугад, их синтаксис не так прост. UFW – отличный альтернативный вариант, намного более простой в использовании.
Что такое UFW?
UFW, или Uncomplicated Firewall (“незамысловатый фаервол”) – это интерфейс IPTables. Основная цель этого удобного в использовании интерфейса – существенно упростить управление фаерволом. Он популярен среди пользователей Linux и даже установлен на многие дистрибутивы по умолчанию.
Установка UFW
Для начала нужно проверить, установлен ли UFW. На Ubuntu он поставляется по умолчанию, но если по каким-либо причинам он не был установлен, его можно установить при помощи команд aptitude или apt-get следующим образом:
sudo aptitude install ufw
или
sudo apt-get install ufw
Проверка состояния
Чтобы проверить состояние UFW, наберите:
sudo ufw status
Скорее всего, сейчас он отключен. Всякий раз, когда UFW активен, он выдает список текущих правил, который выглядит примерно так:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
Настройка по умолчанию
Правила по умолчанию, разрешающие или запрещающие доступ, помогут быстро и надежно настроить любой фаервол. По умолчанию UFW отклоняет все входящие и разрешает все исходящие соединения. Это значит, что никто не сможет подключиться к серверу, но все его приложения могут устанавливать необходимые соединения. Чтобы установить настройки UFW по умолчанию, используйте команды:
sudo ufw default deny incoming
и
sudo ufw default allow outgoing
Примечание: при необходимости установить более строгие настройки можно также запретить все исходящие соединения. Это достаточно спорный момент, но это может защитить облачный сервер от различного рода удаленных подключений оболочки. Это может усложнить управление фаерволом, поскольку придется также установить правила для исходящих соединений. Чтобы установить данные настройки по умолчанию, используйте:
sudo ufw default deny outgoing
Разрешение соединения
Синтаксис достаточно прост. Правила фаервола редактируются с помощью командной строки в терминале. Если активировать фаервол сейчас, он будет отклонять все входящие соединения. При подключении к облачному серверу через SSH могут возникнуть некоторые проблемы, так как данное соединение будет заблокировано. Чтоб не допустить этого, нужно разрешить SSH-соединения, это делается так:
sudo ufw allow ssh
Как можно видеть, синтаксис для разрешения соединений достаточно прост. UFW идет с некоторыми значениями по умолчанию для общего применения. Приведенная выше команда – всего лишь один из примеров. По сути это краткое обозначение команды:
sudo ufw allow 22/tcp
Данная команда позволяет устанавливать соединение с портом 22 при помощи протокола TCP. К примеру, если сервер запущен через порт 2222, то данное соединение разрешает следующая команда:
sudo ufw allow 2222/tcp
Другие соединения
Также нужно определить и разрешить другие важные соединения. Если веб-сервер защищен с помощью доступа FTP, понадобятся следующие команды:
sudo ufw allow www or sudo ufw allow 80/tcp
sudo ufw allow ftp or sudo ufw allow 21/tcp
Чтобы убедиться, что все работает должным образом, нужно протестировать сервер. Кроме того, нужно убедиться, что SSH-соединение разрешено.
Диапазоны портов
С помощью UFW можно также указать диапазоны портов. К примеру, чтобы разрешить подключение к портам с номером от 1000 до 2000, используйте команду:
sudo ufw allow 1000:2000/tcp
Чтобы вместо TCP использовать протокол UDP, наберите:
sudo ufw allow 1000:2000/udp
IP-адреса
Также понадобится указать IP-адреса. К примеру, если нужно разрешить подключение определенному адресу (допустим, домашнему или рабочему адресу), нужно использовать команду:
sudo ufw allow from 192.168.255.255
Ограничение подключений
По умолчанию все входящие подключения блокируются. Благодаря этому фаерволом легче управлять, поскольку все, что нужно сделать – это выборочно разрешить определенные порты и IP-адреса. Тем не менее, при желании открыть все порты сервера (что делать не рекомендуется), можно сначала разрешить все соединения, а потом заблокировать подключение к определенным портам, заменив в вышеприведенных командах “allow” на “deny”. Например, команда:
sudo ufw allow 80/tcp
разрешает доступ к порту 80, а команда:
sudo ufw deny 80/tcp
запрещает доступ к нему.
Удаление правил
Для удаления правил существует 2 операции. Наиболее простая из них представлена следующим синтаксисом:
sudo ufw delete allow ssh
Как видите, нужно просто использовать команду “delete”, а после ввести правила, которые нужно удалить. К примеру:
sudo ufw delete allow 80/tcp
или
sudo ufw delete allow 1000:2000/tcp
Но сложные и длинные правила удалять таким образом неудобно. Для этого существует альтернативная операция, состоящая из двух действий. Введите:
sudo ufw status numbered
что выведет пронумерованный список всех текущих правил UFW. Затем используйте команду:
sudo ufw delete [номер]
где “номер” – порядковый номер правила, которое нужно удалить.
Активация UFW
Настроив UFW согласно требованиям, его можно активировать при помощи команды (при подключении по SSH убедитесь, что такое соединение (обычно через порт 22) разрешено правилами фаервола):
sudo ufw enable
Если все работает должным образом, снова появится командная строка. Проверьте состояние UFW:
sudo ufw status
или
sudo ufw status verbose
для более подробного вывода.
Чтобы деактивировать UFW, наберите:
sudo ufw disable
Сброс настроек
Чтобы сбросить установленные правила и вернуть настройки по умолчанию, наберите:
sudo ufw reset
Итоги
Теперь облачный сервер надежно защищен, поскольку доступ к нему разрешен только определенной группе портов или IP-адресов.