- Как настроить Firewall Iptables для ОС Линукс
- Что представляет собой Iptables
- Какие бывают правила
- Как определиться с назначением файрвола
- Что делать с соединением
- Разрешение и блокировка указанных соединений Iptables
- Что делать с соединениями от одного айпи
- Подключения к определенному порту
- О состояниях соединения
- Как сохранить изменения в конфигурации файрвола
- How to configure a firewall on Linux with firewalld
- Training & certification
- Check the firewalld configuration
- View zones
- Allow a port
- Reload firewalld
- Add a service
- Specify traffic by subnet
- List ports and services
- Know your firewall
Как настроить Firewall Iptables для ОС Линукс
Для новичков и продвинутых пользователей операционный системы Линукс был разработан специальный межсетевой экран (так называемый «файрвол») для защиты от угроз извне, который носит имя Iptables. Ниже в инструкции мы объясним, как его установить и настроить на любых машинах под ОС Linux.
Что представляет собой Iptables
Данная утилита – это надежный межсетевой экран, минимизирующий риск вирусных и хакерских атак. Процесс настройки файрвола происходит через командную строку при помощи установленных команд, которые позволяют юзеру самостоятельно контролировать поступление и отправление трафика. При попытке установки соединений с ПК, утилита обращается к своим правилам и проверяет, пропустить или ограничить соединение. В случае, когда никакого конкретного правила не выставлено, действия проходят по умолчанию.
Файрвол предусмотрен стандартно во всех операционных системах Линукс. Для установки, если его внезапно не оказалось в сборке, или обновления следует применить такую команду:
Альтернативой данной утилите может послужить Firestarter – он имеет графический интерфейс и разработан специально для пользователей, которые испытывают трудности с работой через командную строку.
В случае настроек Iptables по удаленному SSH-соединению, пользователю следует проявлять аккуратность: одно ошибочное правило способно прервать подключение и запретить юзеру доступ к удаленной машине.
Какие бывают правила
Для легкой работы с файрволом разработана тройка основных правил (команд):
Правило применяется, когда необходимо контролировать входящий трафик. Например, когда юзер подключается к удаленному серверу по протоколу Secure Shell, файрвол начнет сравнивать его айпи с другими айпи из своего списка. В зависимости от результата, то есть от наличия в списке запретов, доступ пользователю будет открыт или закрыт.
Правило применяется в случаях, когда необходимо проверить входящее сообщение, проходящее через данный компьютер. Например, маршрутизатор постоянно пересылает сообщения к адресату от сетевых пользователей или приложений. Зачастую данное правило не используется, если только юзер целенаправленно не настраивает маршрутизацию на своем устройстве.
Правило применяется к исходящим соединениям. Например, юзер хочет проверить пинг к одному из заданных сайтов – утилита вновь сверится со своими правилами из списка и определит, как поступить при пинге веб-сайта: разрешить или запретить.
Делая ping к внешнему хосту, машина не только отправляет пакет, но и дожидается обратного ответа. Поэтому, настраивая Iptables, не нужно забывать о наличии двухсторонних коммуникаций и запрещать подключение к серверам через протокол SSH.
Как определиться с назначением файрвола
Перед тем, как заниматься настройкой утилиты, потребуется разобраться с ее предназначением, а именно – действующими цепочками правил, то есть то, что она будет делать по умолчанию. Как отреагировать, когда запрашиваемые соединения не подходят ни к одному правилу?
Для начала потребуется понять, какие из настроек межсетевого экрана уже установлены. Для этого применяется команда –L:
Для четкого и понятного вывода информации можно воспользоваться дополнительной командой «grep». В итоге мы получаем тройку цепочек, у каждой из которых стоит разрешение приема трафика. Подобные правила предпочитают устанавливать при стандартной настройке.
Если в процессе эксплуатации Iptables конфигурация была кем-то изменена, значения могут стоять другие. Проверить это можно за пару секунд, достаточно ввести команды:
Правильнее будет заблаговременно разрешить все входящие/исходящие подключения, после чего выставлять запреты под конкретный порт и айпи-адрес.
Можно поступить диаметрально противоположным методом: установить запрет на все соединения, после чего давать разрешения только некоторым из них. Это можно реализовать таким способом:
Что делать с соединением
Настроив поведение утилиты, которое будет происходить автоматически, следует приступать к правилам, обрабатывающим входящий/исходящий трафик. Основные способы взаимодействия с трафиком:
Accept – разрешение определенного соединения;
Drop – игнорирование запросов (межсетевой экран продолжает свое функционирование, будто никакого запроса не происходило, а запрашивающие ресурсы не узнают об игнорировании);
Reject – блокировка входящего трафика и отправка ответных сообщений с обозначением ошибки (в таком случае запрашивающие ресурсы будут уведомлены о блокировке их трафика).
Пример того, как будет выглядеть ping для
Разрешенного соединения (Accept):
Проигнорированного трафика (Drop):
Отклоненного подключения (Reject):
Разрешение и блокировка указанных соединений Iptables
Как только политика отношения к трафику настроена, пора приступать к определению правил для конкретных соединений. Мы рассмотрим вариант с отклонением указанного подключения. Способы для разрешения и игнорирования будут устанавливаться похожим методом.
Воспользуемся командой –А. Она позволит добавить новое правило к уже имеющейся цепочке. Межсетевой экран начинает проверку с самого верха, проходя по каждому из правил до тех пор, пока не обнаружит совпадения или не закончит список.
В случае, когда необходимо разместить правила в определенное место (перед каким-то определенным), следует воспользоваться командой:
iptables -I [цепочка] [номер позиции по списку для нового правила]
Что делать с соединениями от одного айпи
Для блокировки трафика, поступающего из одного и того же источника (например, айпи 120.120.120.120) подойдет команда:
Для блокировки трафика, поступающего с нескольких айпишников в определенном диапазоне, следует воспользоваться стандартной записью масок посредством слэша:
Либо записью необходимого диапазона:
Подключения к определенному порту
Следующая команда сделает блокировку соединений типа Secure Shell с хостом 120.120.120.120:
На месте Secure Shell допустимо применение любого протокола. После команды –р указывается тип подключений, в данном случае – TCP. В случае, когда используется другой тип, следует указывать его.
Любому айпишнику будет запрещено подключаться к машине по Secure Shell соединению, если выполнить:
О состояниях соединения
Существует множество протоколов, которым требуется двусторонняя коммуникация. К примеру, пользователю понадобилось поработать с SSH-соединением, ему придется внести правило сразу и в Output, и в Input.
Что делать, если юзер хочет предоставить разрешение исключительно входящему соединению? В этом случае поможет состояние соединения. Оно даст возможность пользователю описать любую двустороннюю коммуникацию, в которой разрешено подключение заданного направления.
Разрешим соединение типа SSH, приходящее через хост 120.120.120.120. Система будет отправлять данные по этому протоколу только, если сессия установлена.
iptables -A INPUT -p tcp —dport ssh -s 120.120.120.120 -m state —state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp —sport 22 -d 120.120.120.120 -m state —state ESTABLISHED -j ACCEPT
Как сохранить изменения в конфигурации файрвола
После всех изменений, которые мы внесли в цепочку межсетевого экрана, понадобится их сохранение. Иначе перезапуск утилиты удалит проделанные нами настройки. Команда сохранения будет различаться от дистрибутива к дистрибутиву Линукс.
Для Убунту команда выглядит так:
How to configure a firewall on Linux with firewalld
Learn how to install, configure, and use firewalld to restrict or allow a computer’s access to services, ports, networks, subnets, and IP addresses.
Firewalld is an open source, host-based firewall that seeks to prevent unauthorized access to your computer. A firewall is usually a minimum requirement by any information security team at any modern organization, but it’s also a good idea for general computer use.
Training & certification
Firewalld can restrict access to services, ports, and networks. You can block specific subnets and IP addresses.
As with any firewall, firewalld inspects all traffic traversing the various interfaces on your system. The traffic is allowed or rejected if the source address network matches a rule.
Firewalld uses the concept of zones to segment traffic that interacts with your system. A network interface is assigned to one or more zones, and each zone contains a list of allowed ports and services. A default zone is also available to manage traffic that does not match any zones.
Firewalld is the daemon’s name that maintains the firewall policies. Use the firewall-cmd command to interact with the firewalld configuration.
Check the firewalld configuration
Before getting started, confirm that firewalld is running:
The output is either running or not running. To start your firewall if it’s not running, use systemctl :
$ sudo systemctl --enable --now firewalld
View zones
To view all zones on a system, use the —get-zones option:
$ sudo firewall-cmd --get-zones
To display the default zone, use —get-default-zone :
$ sudo firewall-cmd --get-default-zone
By default, if firewalld is enabled and running and in the public zone, all incoming traffic is rejected except SSH and DHCP.
Allow a port
To allow traffic from any IP through a specific port, use the —add-port option along with the port number and protocol:
$ sudo firewall-cmd --add-port=80/tcp
This rule takes effect immediately but only lasts until the next reboot. Add the —permanent flag to make it persistent:
$ sudo firewall-cmd --add-port=80/tcp --permanent
Reload firewalld
I prefer to reload my firewall after making changes. To reload firewalld and all permanent rules:
Add a service
There are predefined services you can allow through your firewall. To see all predefined services available on your system:
$ sudo firewall-cmd --get-services
For example, to add the HTTP service to your firewall permanently, enter:
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
Specify traffic by subnet
You can assign traffic coming from a particular subnet to a specific zone (which allows specific ports and services, possibly unique to just that zone).
For example, to assign the network 172.16.1.0/24 to the internal zone and to allow the Jenkins service:
$ sudo firewall-cmd --zone=internal \ --add-source=172.16.1.0/24 --permanent $ sudo firewall-cmd --add-service=jenkins --permanent $ sudo firewall-cmd --reload
List ports and services
You can list all ports and services allowed in the default zone using the —list-all option:
To view all settings for all zones, use —list-all-zones :
$ sudo firewall-cmd --list-all-zones
Know your firewall
A good firewall is an essential feature on modern computer systems, and firewalld is one of the most convenient available. Its commands are intuitive and clear, and its ability to report useful descriptions of its policies makes it easy to understand. Review your firewall settings, and try out some firewall-cmd commands today.