Firewall linux посмотреть все правила

Содержание
  1. 21 пример использования iptables для администраторов.
  2. 1. Показать статус.
  3. 2. Отобразить список правил с номерами строк.
  4. 3. Отобразить INPUT или OUTPUT цепочки правил.
  5. 4. Остановить, запустить, перезапустить файрвол.
  6. 5. Удалить правила файрвола.
  7. 6. Добавить правило в файрвол.
  8. 7. Сохраняем правила файрвола.
  9. 8. Восстанавливаем правила.
  10. 9. Устанавливаем политики по умолчанию.
  11. 10. Блокировать только входящие соединения.
  12. 11. Сбрасывать адреса изолированных сетей в публичной сети.
  13. 12. Блокировка определенного IP адреса.
  14. 13. Заблокировать входящие запросы порта.
  15. 14. Заблокировать запросы на исходящий IP адрес.
  16. 15. Записать событие и сбросить.
  17. 16. Записать событие и сбросить (с ограничением на количество записей).
  18. 16. Сбрасывать или разрешить трафик с определенных MAC адресов.
  19. 17. Разрешить или запретить ICMP Ping запросы.
  20. 18. Открыть диапазон портов.
  21. 19. Открыть диапазон адресов.
  22. 20. Закрыть или открыть стандартные порты.
  23. 21. Ограничить количество параллельных соединений к серверу для одного адреса.
  24. Помощь по iptables.
  25. Проверка правила iptables.
  26. Настройка firewalld в CentOS
  27. Установка и запуск
  28. Общие команды для управления firewalld
  29. Управление правилами
  30. Синтаксис
  31. Добавление портов
  32. Добавление сервиса
  33. Rich-Rule
  34. Удаление правил
  35. Управление зонами
  36. Пример настройки NAT (шлюза)
  37. Проброс портов
  38. Запретить или разрешить трафик между интерфейсами
  39. Запретить
  40. Разрешить
  41. Разрешить трафик в одном направлении
  42. Возможные проблемы при работе с firewalld

21 пример использования iptables для администраторов.

Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.

Знак # означает, что команда выполняется от root. Откройте заранее консоль с рутовыми правами — sudo -i в Debian-based системах или su в остальных.

1. Показать статус.

Примерный вывод команды для неактивного файрвола:

Для активного файрвола:

Где:
-L : Показать список правил.
-v : Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы ‘K’, ‘M’ or ‘G’.
-n : Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).

2. Отобразить список правил с номерами строк.

# iptables -n -L -v —line-numbers

Вы можете использовать номера строк для того, чтобы добавлять новые правила.

3. Отобразить INPUT или OUTPUT цепочки правил.

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v —line-numbers

4. Остановить, запустить, перезапустить файрвол.

Силами самой системы:
# service ufw stop
# service ufw start

Можно также использовать команды iptables для того, чтобы остановить файрвол и удалить все правила:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

Где:
-F : Удалить (flush) все правила.
-X : Удалить цепочку.
-t table_name : Выбрать таблицу (nat или mangle) и удалить все правила.
-P : Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).

5. Удалить правила файрвола.

Чтобы отобразить номер строки с существующими правилами:
# iptables -L INPUT -n —line-numbers
# iptables -L OUTPUT -n —line-numbers
# iptables -L OUTPUT -n —line-numbers | less
# iptables -L OUTPUT -n —line-numbers | grep 202.54.1.1

Получим список IP адресов. Просто посмотрим на номер слева и удалим соответствующую строку. К примеру для номера 3:
# iptables -D INPUT 3

Или найдем IP адрес источника (202.54.1.1) и удалим из правила:
# iptables -D INPUT -s 202.54.1.1 -j DROP

Где:
-D : Удалить одно или несколько правил из цепочки.

6. Добавить правило в файрвол.

Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк:
# iptables -L INPUT -n —line-numbers

Чтобы вставить правило между 1 и 2 строкой:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

Проверим, обновилось ли правило:
# iptables -L INPUT -n —line-numbers

Вывод станет таким:

7. Сохраняем правила файрвола.

Через iptables-save:
# iptables-save > /etc/iptables.rules

8. Восстанавливаем правила.

Через iptables-restore
# iptables-restore

9. Устанавливаем политики по умолчанию.

Чтобы сбрасывать весь трафик:
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n

После вышеперечисленных команд ни один пакет не покинет данный хост.
# ping google.com

10. Блокировать только входящие соединения.

Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state —state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n

Пакеты исходящие и те, которые были запомнены в рамках установленных сессий — разрешены.
# ping google.com

11. Сбрасывать адреса изолированных сетей в публичной сети.

# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Читайте также:  Windows 10 планировщик заданий не запускаются bat файлы

Список IP адресов для изолированных сетей:
10.0.0.0/8 -j (A)
172.16.0.0/12 (B)
192.168.0.0/16 (C)
224.0.0.0/4 (MULTICAST D)
240.0.0.0/5 (E)
127.0.0.0/8 (LOOPBACK)

12. Блокировка определенного IP адреса.

Чтобы заблокировать адрес взломщика 1.2.3.4:
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

13. Заблокировать входящие запросы порта.

Чтобы заблокировать все входящие запросы порта 80:
# iptables -A INPUT -p tcp —dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp —dport 80 -j DROP

Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4:
# iptables -A INPUT -p tcp -s 1.2.3.4 —dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 —dport 80 -j DROP

14. Заблокировать запросы на исходящий IP адрес.

Чтобы заблокировать определенный домен, узнаем его адрес:
# host -t a facebook.com

Вывод: facebook.com has address 69.171.228.40

Найдем CIDR для 69.171.228.40:
# whois 69.171.228.40 | grep CIDR

Вывод:
CIDR: 69.171.224.0/19

Заблокируем доступ на 69.171.224.0/19:
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

Также можно использовать домен для блокировки:
# iptables -A OUTPUT -p tcp -d www.fаcebook.com -j DROP
# iptables -A OUTPUT -p tcp -d fаcebook.com -j DROP

15. Записать событие и сбросить.

Чтобы записать в журнал движение пакетов перед сбросом, добавим правило:

# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG —log-prefix «IP_SPOOF A: »
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Проверим журнал (по умолчанию /var/log/messages):
# tail -f /var/log/messages
# grep -i —color ‘IP SPOOF’ /var/log/messages

16. Записать событие и сбросить (с ограничением на количество записей).

Чтобы не переполнить раздел раздутым журналом, ограничим количество записей с помощью -m. К примеру, чтобы записывать каждые 5 минут максимум 7 строк:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit —limit 5/m —limit-burst 7 -j LOG —log-prefix «IP_SPOOF A: »
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

16. Сбрасывать или разрешить трафик с определенных MAC адресов.

# iptables -A INPUT -m mac —mac-source 00:0F:EA:91:04:08 -j DROP
## *разрешить только для TCP port # 8080 с mac адреса 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp —destination-port 22 -m mac —mac-source 00:0F:EA:91:04:07 -j ACCEPT

17. Разрешить или запретить ICMP Ping запросы.

Чтобы запретить ping:
# iptables -A INPUT -p icmp —icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp —icmp-type echo-request -j DROP

Разрешить для определенных сетей / хостов:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp —icmp-type echo-request -j ACCEPT

Разрешить только часть ICMP запросов:
### ** предполагается, что политики по умолчанию для входящих установлены в DROP ** ###
# iptables -A INPUT -p icmp —icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type destination-unreachable -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type time-exceeded -j ACCEPT
## ** разрешим отвечать на запрос ** ##
# iptables -A INPUT -p icmp —icmp-type echo-request -j ACCEPT

18. Открыть диапазон портов.

# iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 7000:7010 -j ACCEPT

19. Открыть диапазон адресов.

## разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 ##
# iptables -A INPUT -p tcp —destination-port 80 -m iprange —src-range 192.168.1.100-192.168.1.200 -j ACCEPT

## пример для nat ##
# iptables -t nat -A POSTROUTING -j SNAT —to-source 192.168.1.20-192.168.1.25

20. Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP, чтобы заблокировать порт.

## ssh tcp port 22 ##
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 22 -j ACCEPT

## cups (printing service) udp/tcp port 631 для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp —dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp —dport 631 -j ACCEPT

## time sync via NTP для локальной сети (udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p udp —dport 123 -j ACCEPT

## tcp port 25 (smtp) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 25 -j ACCEPT

# dns server ports ##
iptables -A INPUT -m state —state NEW -p udp —dport 53 -j ACCEPT
iptables -A INPUT -m state —state NEW -p tcp —dport 53 -j ACCEPT

## http/https www server port ##
iptables -A INPUT -m state —state NEW -p tcp —dport 80 -j ACCEPT
iptables -A INPUT -m state —state NEW -p tcp —dport 443 -j ACCEPT

## tcp port 110 (pop3) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 110 -j ACCEPT

Читайте также:  Нужен ли антивирус для mac os big sur

## tcp port 143 (imap) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 143 -j ACCEPT

## Samba file server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 445 -j ACCEPT

## proxy server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 3128 -j ACCEPT

## mysql server для локальной сети ##
iptables -I INPUT -p tcp —dport 3306 -j ACCEPT

21. Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется connlimit модуль. Чтобы разрешить только 3 ssh соединения на одного клиента:
# iptables -A INPUT -p tcp —syn —dport 22 -m connlimit —connlimit-above 3 -j REJECT

Установить количество запросов HTTP до 20:
# iptables -p tcp —syn —dport 80 -m connlimit —connlimit-above 20 —connlimit-mask 24 -j DROP

Где:
—connlimit-above 3 : Указывает, что правило действует только если количество соединений превышает 3.
—connlimit-mask 24 : Указывает маску сети.

Помощь по iptables.

Для поиска помощи по iptables, воспользуемся man:
$ man iptables

Чтобы посмотреть помощь по определенным командам и целям:
# iptables -j DROP -h

Проверка правила iptables.

Проверяем открытость / закрытость портов:
# netstat -tulpn

Проверяем открытость / закрытость определенного порта:
# netstat -tulpn | grep :80

Проверим, что iptables разрешает соединение с 80 портом:
# iptables -L INPUT -v -n | grep 80

В противном случае откроем его для всех:
# iptables -A INPUT -m state —state NEW -p tcp —dport 80 -j ACCEPT

Проверяем с помощью telnet
$ telnet ya.ru 80

Можно использовать nmap для проверки:
$ nmap -sS -p 80 ya.ru

Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.

Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

Источник

Настройка firewalld в CentOS

Firewalld — утилита для управления встроенным в ядро Linux брандмауэром Netfilter. Несмотря на собственный синтаксис, имеет такой же принцип работы, как Iptables. Дополнительно про управление Netfilter при помощи последнего.

Установка и запуск

В некоторых системах CentOS может не оказаться firewalld. Для его установки вводим:

yum install firewalld

Для автоматического зауска вводим:

systemctl enable firewalld

И для запуска службы:

systemctl start firewalld

Общие команды для управления firewalld

Мягко перечитать правила (применить настройки):

Перечитать правила и сбросить текущие подключения:

* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld.

Посмотреть созданные правила:

systemctl stop firewalld

systemctl start firewalld

systemctl disable firewalld

systemctl enable firewalld

Сохранить текущие правила, сделав их постоянными (permanent):

Управление правилами

Синтаксис

Общий синтаксис для работы с правилами:

firewall-cmd [опции] [зона]

* порядок следования параметров не важен.

  • [опции] — дополнительные параметры для создаваемого правила, например —permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
  • [зона] — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, —zone=dmz. Не обязательный.
  • само правило. Обязательный.

Чтобы правила применялись, не забываем их перечитывать:

Добавление портов

Открыть порт 80:

firewall-cmd —permanent —add-port=80/tcp

* где ключ —permanent — добавить постоянное правило (будет действовать после перезагрузки).

Добавить правило для определенной зоны:

firewall-cmd —permanent —zone=external —add-port=80/tcp

Добавить диапазон портов:

firewall-cmd —permanent —add-port=6500-6700/udp

Добавить несколько правил одной командой:

firewall-cmd —permanent —add-port=80/tcp —add-port=443/tcp

Добавление сервиса

Использование служб, вместо портов, может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.

Посмотреть список доступных служб:

Разрешить порт, например, для сервиса ntp:

firewall-cmd —permanent —add-service=ntp

Создать собственную службу:

firewall-cmd —permanent —new-service=name-service

* где name-service — произвольное имя создаваемой службы.

Добавить порт, например TCP 2200 к службе:

firewall-cmd —permanent —service=name-service —add-port=2200/tcp

Задать описание для удобства:

firewall-cmd —permanent —service=name-service —set-short=»Service With This Name»

firewall-cmd —permanent —service=name-service —set-description=»Long Description For Service With This Name»

Информацию о созданном сервисе можно получить командой:

Теперь созданную службу можно использовать для создания правил, например:

firewall-cmd —permanent —add-service=name-service

Rich-Rule

rich-rule позволяет создавать правила с условиями. Рассмотрим несколько примеров:

1. Разрешаем службу http с условием, что запросы будут с определенных IP-адресов (подсети 192.168.0):

Читайте также:  Windows 10 отключить заставку при простое

firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ service name=»http» accept’

2. Или для конкретного порта:

firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ port port=»5038″ protocol=»tcp» accept’

3. Чтобы заблокировать подсеть можно воспользоваться командой:

firewall-cmd —permanent —add-rich-rule=»rule family=’ipv4′ source address=’192.168.1.0/24′ reject»

Список правил с условиями можно отобразить командой:

Удаление правил

Аналогично созданию, но вместо add вводим remove, например —remove-port (удалит порт) или —remove-service (службу).

Удалим правило для открытия 80-о порта:

firewall-cmd —permanent —remove-port=80/tcp

Управление зонами

Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если мы захотим для разных сетевых адаптеров сделать разные по строгости правила.

Посмотреть список всех имеющихся зон:

Посмотреть список используемых зон:

Информация о конкретной зоне:

firewall-cmd —list-all —zone=public

Создать правило для зоны public:

firewall-cmd —permanent —zone=public —add-port=80/tcp

Добавить сетевой интерфейс в зону:

firewall-cmd —permanent —zone=public —remove-interface=ens34

firewall-cmd —permanent —zone=internal —add-interface=ens34

* сначала нужно удалить адаптер из текущей зоны.

Задать действие по умолчанию для зоны:

firewall-cmd —permanent —zone=public —set-target=DROP

Создать новую зону:

firewall-cmd —permanent —new-zone=custom_zone

* чтобы система увидела новую зону custom_zone, команда reload обязательная.

Пример настройки NAT (шлюза)

firewall-cmd —permanent —zone=dmz —add-masquerade

* без указания зон, будет включен для public и external.

Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:

firewall-cmd —permanent —direct —add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE

* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция —direct требуется перед всеми пользовательскими правилами (—passthrough, —add-chain, —remove-chain, —query-chain, —get-chains, —add-rule, —remove-rule, —query-rule, —get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT

* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state —state RELATED,ESTABLISHED -j ACCEPT

* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).

systemctl restart firewalld

* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.

Для просмотра созданных данным способом правил используем команду:

firewall-cmd —direct —get-all-rules

Проброс портов

Проброс настраивается со следующим синтаксисом:

firewall-cmd —add-forward-port=port= :proto=tcp|udp|sctp|dccp:toport= :toaddr=

firewall-cmd —zone=external —permanent —add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15

* в данном примере мы будем слушать запросы на порту 25 и передодить их на узел 192.168.0.15 и порт 8025.

Запретить или разрешить трафик между интерфейсами

Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.

Запретить

Применяется в случаях, когда на сервере включен FORWARD, но необходимо блокировать трафик между определенными сегменами сети.

Вводим следующие команды:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP

Разрешить

Применяется в случаях, когда интерфейсы находятся в зонах, где по умолчанию, трафик блокируется.

Для разрешения команды, практически, аналогичные:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT

Разрешить трафик в одном направлении

В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

Возможные проблемы при работе с firewalld

1. Ошибка command not found (команда не найдена).

Возможные причины: не установлен пакет или не запущена служба.

Выполняем установку пакета firewalld:

yum install firewalld firewall-config

systemctl start firewalld

2. Не применяются правила.

Причина: не введена команда перезапуска правил.

Если это не помогло, делаем перезапуск со сбросом подключений:

В некоторых случаях, необходимо перезапустить сетевые службы:

systemctl restart network

В исключительных случаях, перезагружаем компьютер:

3. The interface is under control of NetworkManager and already bound to the default zone.

Ошибка появляется при попытке удалить интерфейс из зоны, настройками которого управляет NetworkManager.

Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:

И дописываем следующее:

* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.

Источник

Оцените статью