Настройка Linux-файрвола iptables: Руководство для начинающих
Iptables — это межсетевой экран для операционных систем Linux. Успешно применять этот инструмент могут не только продвинутые пользователи Linux, но и новички. В этом руководстве представлено описание базовых настроек конфигурации этого мощного файрвола.
Что такое iptables
Как сказано выше, iptables является утилитой, выполняющей функции межсетевого экрана. Ее настройка производится в командной строке, с помощью правил iptables можно разрешать или блокировать прохождение трафика.
Когда происходит попытка установления соединения с текущей машиной, iptables просматривает список правил в списке, чтобы понять, как нужно поступить в этом случае. Если правила нет, то выполняется действие по умолчанию.
Как правило, itpables предустанавливается на всех Linux-дистрибутивах. Чтобы обновить утилиту, или установить ее, если по каким-то причинам она отсутствует в базовой поставке, нужно воспользоваться следующей командой:
sudo apt-get install iptables Существуют и графические инструменты-альтернативы iptables, например Firestarter, но и работа в командной строке не является очень уж сложной.
Однако следует соблюдать особенную осторожность при настройке iptables через удаленное ssh-соединение, поскольку одна неверная команда может заблокировать возможность подключения к удаленному серверу — придется каким-то образом вносить изменения в настройки машины физически получив к ней доступ.
Типы правил
Существует три типа правил iptables — input, forward и output.
Input — Такие цепочки используются для контроля поведения входящих соединений. К примеру, если пользователь попробует подключиться к серверу по SSH, то iptables сравнит его IP-адрес со своим списком, чтобы разрешить или запретить доступ.
Forward — Правила этого типа используются для обработки входящих сообщений, конечный пункт назначения которых не является текущим сервером.
К примеру, в случае маршрутизатора, к нему подключаются многие пользователи и приложения, но данные не посылаются на сам маршрутизатор, они лишь передаются ему, чтобы он мог перенаправить их адресату.
Если вы не занимаетесь настройкой маршрутизации или NAT, то правила этого типа использовать в работе не будете.
Output — Такие цепочки используются для исходящих соединений. К прмиеру, если пользователь пытается отправинг запрос ping к сайту 1cloud.ru, iptables изучит цепочку правил, чтобы понять, что нужно делать в случае ping и этого сайт, и только потом разрешит или запретит соединение.
Важный момент
Даже в случае пинга внешних хостов, нужно не только отправить пакеты к ним, но и получить ответ. При работе с iptables важно помнить, что многие протоколы передачи данных требуют двусторонней коммуникации. Поэтому нужно настраивать правила соответствующим образом — случаи, когда новички забывают разрешить работу с сервером по SSH случаются очень часто.
Поведение по умолчанию
Прежде чем приступать к непосредственной настройке межсетевого экрана, следует определиться с тем, каким должно быть поведение цепочек правил по умолчанию. Другими словами, что iptables нужно делать в том случае, если соединение не подпадает ни под одно из сконфигурированных правил?
Увидеть текущие настройки iptables по умолчанию можно с помощью команды iptables –L:
В данном случае мы также использовали команду grep, чтобы получить более четкий вывод. Как показано на скриншоте, все три цепочки по умолчанию разрешают прием трафика.
Чаще всего такое поведение более предпочтительно. Если вы ничего не меняли в правилах, то так оно и должно быть по умолчанию.
Если же что-то менялось, а теперь нужно вернуть прежние настройки, то сделать это можно с помощью таких команд:
iptables —policy INPUT ACCEPT iptables —policy OUTPUT ACCEPT
iptables —policy FORWARD ACCEPT
Предварительно разрешил весь трафик, затем уже можно запрещать соединения с определенных IP-адресов и на определенные порты.
Если же предпочтительнее пойти по другому пути и сначала запретить весь трафик, а затем выборочно разрешать его, то нужно воспользоваться командами из списка ниже:
iptables —policy INPUT DROP iptables —policy OUTPUT DROP
iptables —policy FORWARD DROP
Действия с соединениями
После настройки поведения межсетевого экрана по умолчанию, можно переходить к созданию правил обработки трафика, чтобы iptables понимал, что делать с конкретным соединением. Ниже мы рассмотрим три основных вида действий с соединениями.
- Accept — разрешить соединение;
- Drop — игнорировать соединение, вести себя так, будто его никогда не было. Действие подходит для случаев, когда нужно сделать так, чтобы источник запроса не узнал о его блокировке.
- Reject — заблокировать соединение и отправить в ответ сообщение об ошибке. Действие подходит для тех случаев, когда владелец сервера хочет дать понять, что соединение заблокировано файрволом.
Вот так выглядит ответ на пинг в каждом из трех случаев
Соединение разрешено:
Соединение проигнорировано:
Соединение отклонено:
Разрешаем и блокируем конкретные соединения
Настроив политики цепочек, можно переходить к работе с конкретными соединениями. В нашем руководстве мы будет по умолчанию их отклонять, но можно и разрешать или игнорировать.
Мы будем использовать комманду iptables –A, чтобы добавлять правила к существующим цепочкам. Iptables будет начинать с начала списка и проходить по всем правилам, пока не найдет совпадение. Если нужно поместить какое-то правило перед уже имеющимся, то можно использовать команду iptables -I [цепочка] [номер], чтобы указать номер позиции в списке, которую должно занять новое правило.
Соединения с одного IP-адреса
Как настроить брандмауэр UFW на Ubuntu 18.04
В этой статье мы покажем вам, как настроить брандмауэр UFW на Ubuntu 18.04. В Ubuntu, брандмауэр по умолчанию UFW, коротко Uncomplicated FireWall. Это было вокруг начиная с версии Ubuntu 18.04 и было построено, чтобы упростить конфигурацию Iptables, который был довольно сложным.
При использовании любой операции, брандмауэр является одним из наиболее важных функций, которые необходимо учитывать, что касается безопасности вашей системы.
Брандмауэр – это щит или барьер, который существует между вашим компьютером и интернетом и блокирует несанкционированный трафик, такой как удаленный доступ к вашей системе, и помогает защитить от вредоносного кода, который постоянно проходит через интернет. Брандмауэр может быть аппаратным или программным.
Аппаратный брандмауэр – это автономная система брандмауэра, размещенная в сети для добавления защитного слоя путем управления потоком трафика в сеть и из нее, а также блокирования доступа пользователей к нежелательным сайтам. Программный брандмауэр встроен в операционные системы, такие как Linux и Windows, и помогает защитить вашу систему от внешних атак.
Установка UFW
По умолчанию Ubuntu 18.04 поставляется с установленной UFW. Однако, для более ранних систем, вы должны выполнить команду ниже
apt-get install ufw
Для того, чтобы проверить, является ли UFW запущенным:
systemctl status ufw
Если он работает, то вы должны получить вывод ниже
● ufw.service — Uncomplicated firewall Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab Active: active (exited) since Tue 2018-05-15 20:32:12 UTC; 4min 1s ago Process: 376 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SU Main PID: 376 (code=exited, status=0/SUCCESS) Tasks: 0 Memory: 0B CPU: 0 CGroup: /system.slice/ufw.service Apr 15 20:32:12 ip-112-31-41-251 systemd[1]: Started Uncomplicated firewall.Warning: Journal has been rotated since unit was started. Log output is incomple
Чтобы проверить, является ли он активным или неактивным
ufw status
Если он неактивен, вы получите вывод ниже
Status: inactive
Чтобы включить UFW с набором правил по умолчанию, запустите
ufw enable
Чтобы отключить запуск брандмауэра
ufw disable
Настройка правил по умолчанию UFW
Для того, чтобы установить правила по умолчанию, которые разрешают все исходящие протоколы, войдите в систему с правами администратора и запустите
ufw default allow outgoing
Вывод
Default outgoing policy changed to 'allow'(be sure to update your rules accordingly)
Для того, чтобы запретить все входящие соединения, запустите
ufw default deny incoming
Вывод
Default outgoing policy changed to 'deny'(be sure to update your rules accordingly)
Вышеуказанные команды позволят всем исходящим соединениям запретить или блокировать все входящие соединения.
На данный момент, вы можете включить брандмауэр, однако, прежде чем вы выполните эту команду, надо открыть первым SSH. Это предотвращает разъединение с сервером, так как мы указали отказ от всех входящих соединений.
Чтобы разрешить SSH, запустите
ufw allow 22/tcp
Исходящий
Skipping adding existing ruleSkipping adding existing rule (v6)
Доступ к SSH также может быть разрешено имя службы
ufw allow ssh
Если вы хотите удалить правило, запустите
ufw delete allow 22/ssh
Запретить услугу по имени сервиса
ufw deny service-name
Например
ufw deny ssh
Чтобы увидеть все услуги, которые могут быть разрешены или запрещены в системе проверьте файл /etc/services.
cat /etc/services | less
Пример вывода
ftp-data 20/tcpftp 21/tcpfsp 21/udp fspdssh 22/tcp # SSH Remote Login Protocolssh 22/udptelnet 23/tcpsmtp 25/tcp mailtime 37/tcp timservertime 37/udp timserverrlp 39/udp resource # resource locationnameserver 42/tcp name # IEN 116whois 43/tcp nicnametacacs 49/tcp # Login Host Protocol (TACACS)tacacs 49/udpre-mail-ck 50/tcp # Remote Mail Checking Protocolre-mail-ck 50/udpdomain 53/tcp # Domain Name Serverdomain 53/udp
Запуск UFW брандмауэра
Для того, чтобы активировать брандмауэр, войдите как root и выполните следующую команду:
ufw enable
Вам может быть предложено со следующим предупреждением
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Если вы выберете Да, вы получите вывод ниже
Firewall is active and enabled on system startup
Брандмауэр теперь активен, и начнет работать при каждой загрузке. Мы можем посмотреть на правила брандмауэра снова:
ufw status
Вывод теперь будет отображать состояние брандмауэра плюс разрешенные услуги/порты
Вывод
ufw status activeStatus: active To Action From— —— —-22/tcp ALLOW Anywhere22 ALLOW Anywhere22/tcp (v6) ALLOW Anywhere (v6)22 (v6) ALLOW Anywhere (v6)
Разрешение соединения в UFW
Вы можете легко разрешить входящие соединения на порт/диапазон, название приложения, IP-адреса/подсети в UFW.
Проверьте приведенные ниже примеры.
а) Предоставление приложений по имени или номеру порта/диапазон
ufw allow service-name
или
ufw allow port/tcp
Например
ufw allow ssh or ufw allow 22/tcp ufw allow ftp or ufw allow 21/tcpsudo ufw allow 1500:2000/tcp
б) Разрешение IP-адреса/подсети
Ниже команда позволяет устанавливать соединение с конкретным IP или подсети, а также мы можем использовать определенные номера портов.
Для того, чтобы разрешить соединения с определенного IP-адреса
Настройка gufw Ubuntu 16.04
Фаервол — это один из самых важных инструментов для управления безопасностью вашей системы Linux. Если ваш компьютер подключен к сети, вы не можете считать его безопасным, несмотря на то, что Linux — это более безопасная система, не стоит игнорировать правила безопасности.
Операционная система Linux известна своим мощнейшим фаерволом — iptables. Но несмотря на свою мощность, этот фаервол очень сложный, им нужно управлять с помощью длинных и сложных консольных команд. Просматривать информацию о соединениях здесь тоже нужно в консоли. Поэтому он недоступен для большинства новых пользователей.
В Ubuntu, ситуация еще хуже, потому что здесь фаервол отключен по умолчанию и нет простого способа запустить его. Для управления фаерволом необходимо будет настроить несколько скриптов, а это непростая задача для начинающего пользователя. Вы можете вручную искать и создавать правила iptables, или же найти инструмент, с помощью которого будет облегчена настройка firewall ubuntu.
Чтобы обеспечить более легкую настройку firewall в linux был создан Uncomplicated Firewall или простой firewall, ufw. Затем была создана графическая утилита — gufw, чтобы настройка ufw была еще легче.
В этой инструкции мы рассмотрим как выполняется настройка фаервола ubuntu. Мы рассмотрим запуск и остановку службы, создание правил и просмотр сетевых журналов и все это без использования терминала. Gufw сделает iptables более простым, как и любой фаервол в операционной системе Windows. Все что вам понадобится — это базовое понимание принципов работы сетей.
Установка Gufw в Ubuntu 16.04
По умолчанию в Ubuntu не поставляется со встроенным фаерволом Gufw, но вы можете его очень просто установить из официальных репозиториев. Установка gufw ubuntu выполняется командой:
sudo apt install gufw
Когда установка gufw ubuntu будет завершена, вы можете найти и запустить программу из главного меню Dash или с помощью настроек системы.
Для запуска программы необходимо ввести пароль:
Чтобы настройка firewall ubuntu применялась и после перезагрузки необходимо добавить его в автозагрузку, для этого выполните:
sudo ufw enable
Настройка фаервола Ubuntu 16.04
Главное окно программы выглядит вот так, здесь, кроме главных инструментов есть небольшая справка пр работе с программой:
Здесь есть все необходимые функции, чтобы настройка gufw ubuntu была удобной, но в то же время очень простой. Для начала нужно включить работу фаервола переключив переключатель статус в положение включен. Окно программы сразу изменится и станут доступными все функции:
Здесь вы можете менять общие режимы работы для дома, общественного места и офиса. С различными параметрами для трафика и правилами. Режим для дома блокирует входящий трафик и разрешает исходящий. Профили отличаются только параметрами входящего и исходящего трафика.Открыв меню Правка, Параметры, вы можете настроить общую работу Gufw linux, здесь вы также можете создавать свои профили. Для каждого профиля вы можете добавлять свои правила.
Настройка правил gufw
Запрет и разрешение трафика для входящих и исходящих подключений ничего бы не значило, если бы не было возможности настройки правил для определенных приложений и сервисов. Настройка правил программы выполняется в главном окне.
В самом низу есть три кнопки, добавить правило +, удалить правило — и кнопка в виде бутерброда для редактирования правила.
Давайте сначала запретим весь входящий и исходящий трафик:
Затем попытайтесь выполнить в терминале ping запрос к какому либо сайту. Ничего не получится. Это так называемая строгая блокировка, когда мы разрешаем только нужные процессы, все остальное запрещено:
ping ya.ru
Gufw ubuntu блокирует весь трафик, теперь разрешим dns с помощью правила. Для этого нажмите +. В открывшимся окне вы можете выбрать политику разрешить или запретить, в нашем случае нужно разрешать.
Во второй строчке можно указать направление трафика — входящий или исходящий, а также можно выбрать оба направления.
Дальше мы должны выбрать приложение или службу, для которой нужно мы будем разрешать трафик. Вы можете выбрать категорию и под категорию чтобы облегчить поиск или же воспользоваться фильтром приложений, нас сейчас интересует DNS.
Осталось нажать кнопку Добавить, чтобы правило было добавлено:
После завершения добавления правила окно не закроется и настройка gufw ubuntu может быть продолжена. Вы можете добавлять другие правила. Но перед тем, давайте проверим действительно ли работает DNS:
ping ya.ru
DNS работает IP адрес был получен, но ICMP все еще не разрешен. Подобно тому как мы это сделали, можно настроить правило для любого из доступных приложений.Но правила созданные таким способом не могут контролировать все программы и порты. Поэтому существуют расширенные способы создания правил.
В окне создать правило, кроме вкладки Предустановленные, вы можете выбрать Обычные или Расширенные. На вкладке Обычные нет выбора приложения, здесь вы можете выбрать только порт и протокол:
А на вкладке расширенные есть также настройка входящего и исходящего IP адреса:
Теперь давайте разрешим работу браузеров Chromium, Firefox и т д. Для этого нам понадобится разрешить работу исходящий трафик на порт 80 и из порта 80, а также 443, или же мы можем воспользоваться предустановленным набором правил для сервисов HTTP и HTTPS:
После добавления этих правил браузеры будут работать. Таким образом, может быть выполнена настройка gufw ubuntu, для всех необходимых вам приложений. Кроме разрешающих правил, вы можете создавать запрещающие, просто установив главное поведение программы все разрешить, а потом создавайте правила для запрета тех или иных служб.
Но здесь есть еще одно но, чтобы знать как и что разрешать и запрещать возможно вам понадобятся журналы программы.
Посмотрев какие программы пытаются проникнуть в сеть вы сможете понять что нужно разрешить и нет.
Посмотреть какие программы работают с сетью вы можете на вкладке отчет в главном окне:
А на вкладке журнал вы найдете информацию по работе программы, переключению режимов и удалению правил.С этой информацией настройка фаервола Ubuntu 16.04 будет более эффективной и вы сможете решить возникшие проблемы.
Выводы
Настройка файрвола на Ubuntu
В независимости от операционной системы файрвол — необходимый инструмент для защиты персонального компьютера от несанкционированных сообщений с хостами или сетями. Во вступлении лишь обозначим проблему, а «почему, зачем и как» — далее. В этой статье мы разберёмся, как настроить файрвол на Ubuntu.
Настройка файрвола на Ubuntu
Чтобы всё было нам понятно, разберёмся сначала, что такое Ubuntu и, собственно, сам файрвол, каким он бывает.
Что такое файрвол и Ubuntu
Первое, что необходимо знать, если вы новичок — Ubuntu это операционная система из семейства Linux, то есть перед нами Linux со всеми вытекающими. Интерфейс, файловая система и всё остальное — родное, с некоторыми изменениями, из-за них Ubuntu и выделяют в отдельную операционную систему, которая входит в четвёрку по популярности среди пользователей семейства.
Файрвол (firewall) — огненная стена, грубо говоря, экран, который контролирует все входящие и исходящие трафики и позволяет контролировать их: разрешать или запрещать.
Линукс во многих аспектах намного безопаснее той же Windows, и вирусов нет, и файловая система круче (не фрагментируется), но это не значит, что можно пренебрегать безопасностью и игнорировать прекрасную возможность обезопасить свои данные файрволом.
В разных версиях Linux с файрволом дела обстоят по-разному, в нашем случае предусмотрен стандартный простой ufw, настройка которого в Ubuntu происходит с помощью командной строки.
Это долго, сложно и неудобно, тем более при копировании команд некоторые символы могут замениться на альтернативные, и придётся доводить команды вручную или, вообще, набирать их целиком.
Обычному пользователю разобраться в этих дебрях не просто, да и не сильно хочется, поэтому мы будем использовать графическую оболочку Gufw, которая позволит нам управлять возможностями файрвола без лишних мучений, просто работая с интерфейсом программы.
В стоковой Линукс предустановлен очень мощный iptables, разобраться с которым неопытному пользователю крайне сложно, поэтому Gufw — настоящий спасательный круг. Давайте разбираться, как его установить и настроить.
Установка Gufw
Изначально в системе не установлен Gufw, поэтому нам необходимо его установить, прописав в командной строке:
$ sudo apt install gufw
Запускаем программу, вводим пароль, тот самый, который вы вводите при входе в систему.
Вводим пароль
Файрвол нужно добавить в автозагрузку, чтобы все его конфигурации оставались в неизменном виде, вводим в командной строке:
$ sudo ufw enable
Итак, перед нами окно программы. Мы находимся на вкладке с полезной информацией, можем прочитать, другие вкладки мы тоже задействуем, но чуть позже. Первым делом нам нужно активировать программу, для этого щёлкаем на переключатель, все доступные функции активируются и становятся доступны для редактирования и изменений.Для удобства в программе предусмотрено три профиля: дом, общественное место, офис. На первичном экране мы можем поставить только общие настройки. Например, если разбираться дальше в правилах нет желания или возможности — можно просто запретить входящий трафик и разрешить исходящий.
Можно запретить например входящий и исходящий трафик
ВАЖНО. Запрет и входящего и исходящего трафика блокирует все подключения, доступа в интернет просто не будет. Но так можно делать, если потом добавить специальные правила доверенным процессам и программам.
Перейдя в «Правка», «Параметры» можно изменить общие настройки приложения и создать свои профили, для которых впоследствии создать отдельные правила.
Можно запретить например входящий трафик и разрешить исходящий
Настройка Gufw
Приступаем к настройке Ubuntu firewall. На главном окне программы переходим во вкладку «Правила», там, собственно, мы их и будем удалять.
Снизу у нас есть три кнопки + — и ≡, означают они соответственно «Добавить правило», «Удалить правило» и «Изменить правило».
Давайте попробуем запретить и входящие и исходящие подключения, затем создать исключающее правило для DNS. Проверяем трафик с помощью команды в командной строке:
$ ping ya.ru
Убеждаемся, что доступа нет и действуем дальше.
Жмём «Добавить правило», нам нужно выбрать политику, наш вариант «Разрешить». Можно также выбрать одну сторону или обе, для которых будет выполняться правило. Указываем приложение — DNS, поиск можно разбивать на категории, чтобы найти было легче. Жмём кнопку «Добавить» и правило создано. Проверяем изменения в командной строке с помощью той же фразы.
Добавление правила сетевого экрана
Мы получили АйПи, но ICMP всё ещё запрещён, какой вывод? Такой способ контроля приложений не универсален и не затрагивает все порты. Специально для нас в окне добавления правил существуют дополнительные вкладки «Обычные» и «Расширенные».
На вкладке «Обычные» мы не можем выбрать программу, но зато можем указать порт и протокол. А в «Расширенных» есть возможность контролировать исходящий и исходящий IP.
В самом общем случае нам необходимо разрешить работу наших браузеров, а для этого необходимо открыть специальные порты. Но мы не будем заморачиваться и воспользуемся встроенными возможностями и перейдём на вкладку «Предустановленные», где создадим разрешающее правило для HTTP и HTTPS. После таких манипуляций все браузеры в системы смогут работать.Необязательно запрещать все подключения и потом создавать отдельные разрешающие правила, можно поступить наоборот: разрешить все соединения, а потом создавать запрещающие правила.
Дополнительные функции
Быстренько пробежимся по двум оставшимся вкладкам на главном окне программы.
Вкладка «Отчёт» предоставляет нам информацию по программам и процессам, которые хотят получить доступ. Основываясь на этой информации, мы можем выявить нежелательные приложения и запретить им доступ, очень удобный инструмент.
Отчет в Gufw
«Журнал» позволяет нам отслеживать любые изменения в настройках программы. Создали правило — в журнале прописалась строчка, удалили правило — то же самое.
Отслеживание работы программы
Заключение
Настройка файрвола Ubuntu сводится к созданию и удалению правил, на этом строится принцип работы защиты.
Как мы убедились, ничего сложного или сверхъестественного в установке и настройке нет, всё довольно просто и понятно.
Каждый пользователь в силах настроить файрвол под себя, и он должен сделать именно так, потому что на каждой машине существует свой набор программ, естественно, для каждой машины нужен свой набор запретов и разрешений.
Фаервол UFW. Базовая настройка
Межсетевой экран, он же firewall (файрвол, фаервол или файервол) служит для автоматической обработки и фильтрации сетевого трафика. Поскольку не все данные, передаваемые по сети, полезны и безопасны, возникла необходимость проверять и обрабатывать их «на лету».
Коротко о UFW
Чтобы лучше понять, о чем идет речь, представьте многоквартирный дом. Сотни или даже тысячи людей входят и выходят ежедневно.
Среди них есть владельцы квартир, их домочадцы, гости, а также люди, которых никто не приглашал — грабители, мошенники и просто продавцы никому не нужных вещей, надоедающие жителям. Фаервол в данном примере — это строгий консьерж на входе.
Он знает и без проблем пропускает каждого жильца, а тех, кого не знает — тщательно проверяет. Имущество и покой обитателей дома при этом находятся в безопасности.
В Linux для фильтрации трафика используется фаервол Netfilter, с 2000 года входящий в состав ядра. Управлять им позволяет известная многим утилита iptables. Она предоставляет очень гибкую систему настроек, но достаточно сложна в конфигурировании.
Чтобы упростить пользователям жизнь, в Ubuntu была добавлена обертка для iptables — фаервол Uncomplicated Firewall (UFW) и графическая оболочка для него — GUI for Uncomplicated Firewall (GUFW).
Чтобы лучше разобраться, мы начнем с консольной версии фаервола, а графическую рассмотрим в одной из следующих статей.
Включение фаервола и создание простейших правил.
По умолчанию в Ubuntu 16.04 UFW отключен. Для проверки его текущего состояния используйте команду:
Стремясь облегчить жизнь пользователям, разработчики сформировали конфигурацию фаервола, которая подходит для большинства домашних ПК. Поэтому на своем компьютере можете смело включать UFW командой:
На сервере, особенно выполняющем какую-либо работу, лучше предварительно выяснить, какие правила фильтрации будут применены и, в случае необходимости, внести свои поправки.
Прежде всего, давайте разберемся с общими принципами работы UFW. Входящие и исходящие пакеты проверяются на предмет соответствия имеющимся правилам фильтрации, после чего выполняется действие, установленное для этого правила. Если подходящее правило не будет найдено, используется действие, установленное по умолчанию. Действия могут быть такими:
- Allow — пропустить (т. е., разрешить);
- Deny — заблокировать (запретить);
- Reject — отклонить и отправить обратно специальный код, сообщающий, что пакет был отклонен.
После включения фаервола можно посмотреть, какие правила используются в данный момент:
Результат будет примерно таким:
На скриншоте выше мы видим, что по умолчанию разрешен весь исходящий трафик и запрещен весь входящий. Созданные правила отменяют запрет входящего трафика для портов 80, 22 и 1194/udp.
Если вы настраиваете сервер, к которому подключились по SSH, прежде всего необходимо разрешить подключение к порту 22:
С большой долей вероятности вам придется открыть некоторые из следующих портов:
- 80 для HTTP,
- 443 для HTTPS,
- 20 и 21 для FTP,
- 25 для SMTP (отправка почты),
- 465 для SMTPS (отправка почты с шифрованием),
- 143 для IMAP (получение почты),
- 993 для IMAPS (получение почты с шифрованием) и т. д.
К счастью, запоминать все порты не обязательно, поскольку UFW имеет набор предустановленных правил для часто используемых сервисов. Благодаря этому мы можем разрешить FTP вот так:
Можно разрешить доступ к порту только с одного IP. К примеру, вы хотите сделать так, чтобы только вы могли подключиться по FTP к своему серверу. Тогда на сервере нужно включить фаервол и выполнить следующее:
sudo ufw allow ftp from ваш_ip
Во-первых, IP должен быть внешним, во-вторых — статическим. Если вы допустите ошибку, то сами не сможете подключиться. У большинства провайдеров статический ip можно получить за небольшую отдельную плату.
Запрещающие правила создаются примерно таким же образом. Запретим доступ к порту 110:Запретим доступ к ftp c уведомлением о недоступности и комментарием:
sudo ufw reject ftp comment 'FTP temporarily closed. Please, come back tomorrow.'
Удаление правил UFW.
Если вы хотите отметить разрешающее правило, не нужно создавать запрещающее, просто удалите его. Например, если по умолчанию входящий трафик запрещен, но вы разрешили подключение к порту 443, а теперь хотите отозвать свое разрешение, выполните в консоли:
sudo ufw delete allow 443
Есть и другой способ: вывести все правила нумерованным списком, после чего указать номер правила, которое вы желаете удалить. Выведем список и удалим правило под номером 1:
sudo ufw status numbered
sudo ufw delete 1
Настройки по умолчанию и восстановление исходного состояния
Если для передаваемых данных не находится соответствующего правила, используются правила, установленные по умолчанию. В Ubuntu 16.
04 после включения фаервола весь входящий трафик блокируется (deny), а исходящий пропускается (accept) без каких-либо препятствий.
Другими словами, исходящие данные фильтруются по принципу черного списка (разрешено все, что не запрещено отдельными правилами), а входящие — по принципу белого (запрещено все, что не было прямо разрешено).
Напомню, что просмотреть текущие настройки при включенном фаерволе позволяет команда:
О настройках по умолчанию вам поведает строка, которая начинается с «Default: ». Если ваша система настроена иначе, следующие две команды установят стандартную конфигурацию:
sudo ufw default allow outgoing
sudo ufw default deny incoming
Пользовательские правила, если они были созданы ранее, при этом останутся. Для того, чтобы сбросить вообще все настройки и вернуть фаервол к изначальному состоянию, выполните:
Для подтверждения нажмите y, после чего все правила будут удалены, а фаервол — выключен, поскольку по умолчанию он находится именно в таком состоянии. Это именно то, что нужно, если в процессе настройки или экспериментов вы запутались и теперь у вас что-то не работает.
На скриншотах — состояние фаервола до и после сброса.
Настройка правил с указанием направления, протокола, порта и IP.
UFW позволяет создавать правила с несколькими дополнительными условиями. В прошлой статье я уже демонстрировал, как создать правило для конкретного IP-адреса. Кроме этого вы можете указать протокол, порт и IP как отправителя, так и получателя.
В качестве первого примера возьмем типичную ситуацию: у вас есть компьютер с Ubuntu, на котором настроены нужные вам сервисы — FTP, Samba или что-нибудь еще. Вы хотите без проблем получать доступ ко всем этим сервисам из своей домашней сети (с ПК, смартфона и т. д. ), но оставить закрытым доступ извне.
В таком случае укажем IP-адреса нашей домашней сети в качестве разрешенных:
sudo ufw allow from 192.168.0.1/24
В список разрешенных при этом попадут IP-адреса с 192.168.0.1 по 192.168.0.254 включительно.
Усложним задачу и разрешим доступ из домашней сети только к порту, используемому для FTP:sudo ufw allow from 192.168.0.1/24 to any port 21
Пусть вас не вводит в заблуждение словосочетание «to any port». Это две отдельные части команды, одна из которых означает IP-адрес, к которому выполняется обращение (в данном случае to any, то есть, к любому), а вторая определяет номер порта (port 21).
Сделаем наше правило еще более конкретным и укажем протокол:
sudo ufw allow from 192.168.0.0/24 to any port 21 proto tcp
В случае необходимости можно заблокировать доступ с нашего компьютера к конкретному IP или даже к конкретному порту неугодившего нам IP:
sudo ufw deny out to xxx.xxx.xx.x port 123
Указывая параметр out, мы сообщаем, что хотим блокировать именно исходящие пакеты. Поскольку они, как вы помните, разрешены у нас по умолчанию, наше правило будет единственным исключением.
Хотите закрыть сразу диапазон портов? Пожалуйста:
sudo ufw deny out to xxx.xxx.xx.x port 123:456 proto udp
Теперь udp-пакеты к портам 123 — 456 на указанном IP отправлены не будут.
Ограничение доступа
Особенность UFW заключается в том, что каждое новое правило добавляется в конец списка существующих правил. При поступлении пакета правила проверяются одно за другим до тех пор, пока не будет найдено подходящее.
Теперь представим ситуацию, при которой вы сначала добавили общее разрешающее правило, а затем — более конкретное запрещающее.
В таком случае последнее правило не будет работать, поскольку пакет пройдет благодаря предыдущему правилу.
Чтобы избежать такой ситуации, при добавлении уточняющего правила указывайте номер, который хотите ему назначить. Предположим, вы обнаружили, что на ваш веб-сервер кто-то отправляет слишком много запросов. Чтобы запретить доступ вредителю, не затрагивая остальных пользователей, назначим блокирующее его правило первым:
sudo ufw insert 1 deny from 123.12.12.12 to any port 80
Теперь все запросы сначала будут проверяться на соответствие запрещенному IP, и лишь после этого — проходить далее, согласно правилу №3.
Кроме того, вы можете ограничить количество подключений. Чаще всего это используется для предотвращения автоматического подбора пароля.
Чтобы запретить более 6 попыток подключения к SSH за 30 секунд, выполните:
Все лишние попытки будут заблокированы и процесс подбора пароля сильно осложнится.
Вот и всё. Для большинства домашних компьютеров этого вполне достаточно и более тонкая настройка просто не нужна.
Настройка фаервола в Ubuntu с помощью утилиты UFW
UFW (Uncomplicated Firewall — несложный фаервол) — удобный интерфейс для управления политиками безопасности межсетевого экрана. Наши серверы постоянно подвергаются различным атакам или сканируются в поиске уязвимостей.
Как только эти уязвимости находятся, мы рискуем стать частью ботнета, раскрыть конфиденциальные данные или потерять деньги из-за сбоев в работе веб-приложений. Одной из первых мер по снижению рисков безопасности является грамотная настройка правил межсетевого экрана.
В нашем руководстве мы рассмотрим основные команды и правила работы с утилитой UFW.
Предварительные требования
-
Для начала работы с UFW вам потребуется суперпользователь(возможность исполнения команд под sudo).
-
Утилита UFW предустановлена в системе. Если по какой-то причине она была отсутствует, вы можете установить ее с помощью команды:
sudo apt-get install ufw
Проверка правил и текущего состояния UFW
В любое время вы можете проверить состояние UFW с помощью команды:
sudo ufw status verbose
По умолчанию UFW отключен, так что вы должны увидеть что-то вроде этого:
Status: inactive
Если UFW включен, то в консоли будут перечисляться заданные правила. Например, если firewall настроен таким образом — SSH (порт 22) соединение из любой точки мира, консоль может выглядеть следующим образом:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
— —— —-
22 ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
Так вы всегда можете узнать как настроен фаервол.
Внимание! Проведите начальную настройку перед включением UFW. В частности, должен быть доступен SSH(22 порт). В ином случае вы рискуете потерять доступ к серверу.
Начальная настройка
По умолчанию UFW настройки запрещают все входящие соединения и разрешают все исходящие. Это значит, что если кто-то попытается достичь ваш сервер, он не сможет подключиться, в то время как любое приложение на сервере имеет доступ к внешним соединениям.
Cоответствующие правила фаервола прописываются так:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Добавление правила для SSH-соединений
Чтобы разрешить входящие SSH-соединения, выполните команду:
sudo ufw allow ssh
SSH демон прослушивает 22 порт. UFW знает об именах распространенных служб (ssh, sftp, http, https), поэтому вы можете использовать их вместо номера порта.
Если ваш SSH-демон использует другой порт, вам необходимо указать его в явном виде, например:
sudo ufw allow 2222
Теперь, когда ваш межсетевой экран настроен, можете включать его.
Запуск UFW
Чтобы включить UFW, используйте следующую команду:
sudo ufw enable
Вы получите похожее предупреждение:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Это означает, что запуск этого сервиса может разорвать текущее ssh соединение.
Но, так как мы его уже добавили ssh в правила, этого не произойдет. Поэтому просто нажмите (y).
Добавление правил для других подключений
Чтобы ваши приложения работали корректно, вам необходимо добавить другие правила. Ниже будут показаны настроить для наиболее распространённых служб.
HTTP (80 порт)
Для работы не зашифрованных веб-серверов используйте следующую команду:
sudo ufw allow http
Или
sudo ufw allow 80
HTTPS (443 порт)
То же самое, что и в предыдущем примере, но для зашифрованных соединений:
sudo ufw allow https
Или
sudo ufw allow 443
FTP (21 порт)
Данный порт используется для незашифрованной передачи файлов:
sudo ufw allow ftp
Или
sudo ufw allow 21/tcp
Добавление диапазонов портов
sudo ufw allow 3000:3100
Также вы можете указывать конкретный протокол:
sudo ufw allow 3000:3100/tcp
sudo ufw allow 3000:3100/udp
Добавление IP-адресов
Вs можете указать IP-адрес, которому будет разрешен доступ.
sudo ufw allow from 123.45.67.89
В приведённом примере указанному адресу разрешается доступ ко всем портам сервера.
Если же вы хотите указать доступ к конкретному порту, воспользуйтесь командой вида:
sudo ufw allow from 123.45.67.89 to any port 22
Аналогичным образом вы можете работать с диапазонами ip-адресов:
sudo ufw allow from 123.45.67.89/24
sudo ufw allow from 123.45.67.89/24 to any port 22
Ограничение подключений
Чтобы запретить HTTP-соединения, вы можете использовать следующую команду:
sudo ufw deny http
Если вы хотите запретить все соединения с 123.45.67.89, воспользуйтесь следующей командой:
sudo ufw deny from 123.45.67.89
Удаление правил
Существует два способа удаления правил. Первый — по номеру правила. Выполните команду:
sudo ufw status numberedStatus: active
To Action From
— —— —-
[ 1] 22 ALLOW IN Anywhere [ 2] 80 ALLOW IN Anywhere [ 3] 22 (v6) ALLOW IN Anywhere (v6) [ 4] 80 (v6) ALLOW IN Anywhere (v6)После этого выполните команду ufw delete и укажите номер правила, которое следует удалить:
sudo ufw delete 2
Второй способ заключается в том, что после команды ufw delete используется фактическое правило, например
sudo ufw delete allow http
или
sudo ufw delete allow 80
Отключение UFW
Отключить UFW можно при помощи команды:
sudo ufw disable
В результате её выполнения всё созданные ранее правила утратят силу.
Сброс правил
Если вам требуется сбросить текущие настройки, воспользуйтесь командой:
sudo ufw reset
В результате её выполнения все правила будут отключены и удалены.
Логи
В Ufw есть опция сохранения логов — журнал событий. Для запуска, используйте команду:
sudo ufw logging on
Ufw поддерживает нескоько уровней логгирования:
- off — отключен.
- low — регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам.
- medium — все то, что при значении low. Плюс все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости.
- high -работает также как и medium. Плюс все пакеты с ограничением скорости.
- full — также как и high, но без ограниения скорости.
Что бы задать уровень, укажите его как параметр:
sudo ufw logging high
По-умолчанию используется уровень low.
Для просмотра файлов относящихся с логам ufw, используйте команду:
ls /var/log/ufw*