iptables Linux

Содержание
Введение
Проверить версию
-L: Проверить статус
-F: Очистить все правила
-save: Сохранить конфигурацию
-restore: Восстановить конфигурацию из файла
-A: Добавить правило
Разрешить доступ по ssh
Редактирование файла с конфигурацией
Похожие статьи

Введение

iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux , начиная с версии 2.4. До этого в основном пользовались ipchains и ipfw.

Для использования утилиты iptables требуются привилегии суперпользователя (root).

Проверить версию

Чтобы проверить статус iptablesd выполните

iptables -V

В новых дистрибутивах, например, Rocky или CentOS 8 результат будет содержать nf_tables

iptables v1.8.4 (nf_tables)

В старых дистрибутивах, например, CentOS 7 результат будет содержать legacy версию

iptables v1.4.21

Также изучить тип iptables можно с помощью

ls -al /usr/sbin/iptables

Пример для nft

lrwxrwxrwx. 1 root root 17 May 19 2021 /usr/sbin/iptables -> xtables-nft-multi

Пример для устаревшей (legacy) версии

lrwxrwxrwx. 1 root root 17 Jul 22 2024 /usr/sbin/iptables -> xtables-multi

Проверить статус

Чтобы проверить статус iptables выполните

iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Результат выше получен при выключенном firewall который является надстройкой над iptables и добавляет большое количество нужных ему записей.

Выключить firewall можно командой systemctl stop firewalld. Подробнее здесь

Сохранить конфигурацию

Чтобы сохранить текущую конфигурацию iptables выполните

iptables-save > fwoff

fwoff означает firewall off - то есть такая конфигурация, при которой мы не применяем никаких правил.

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Добавить правило

Чтобы добавить к текущей конфигурации iptables новое правило выполните

iptables -A

Например чтобы добавить правило на входящий трафик на локальный интерфейс выполните

iptables -A INPUT -i lo -j ACCEPT

Использована команда

--append -A chain Append to chain

C опциями:

[!] --in-interface -i input name[+] network interface name ([+] for wildcard) --jump -j target target for rule (may load target extension)

Проверить результат

iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Явно задать разрешение на получение ответного трафика

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

--match -m match extended match (may load extension)

conntrack означает connection tracker - этот модуль пришёл на смену модулю state начиная с версии ядра 3.7 подробнее - здесь

Определить версию своего ядра можно командой uname -r подробнее здесь

iptables -L

Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Разрешить доступ по ssh

Чтобы разрешить доступ по ssh

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Конфиграцию с созданными правилами можно сохранить в файл

iptables-save > fwon

Запретить всё что не разрешено

Если созданы какие-либо разрешающие правила от них нет толку пока нет запрещающих.

Чтобы запретить всё, кроме того что явно разрешено выполните

iptables -A INPUT -j DROP

Либо внесите измнения в файл конфигурации вручную и загрузите iptables из него - как это сделать вы узнаете в следующем парагарафе.

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

Изображение баннера

Конец рекламы хостинга Beget, который я всем рекомендую.

Редактирование файла с конфигурацией

С помощью iptables-save и iptables-restore можно сохранять и восстанавливать конфигурации.

Выглядят файлы с конфигурацией следующим оригинальным образом

vi fwoff

# Generated by iptables-save v1.4.21 on Mon Jul 22 22:14:55 2024 *filter :INPUT ACCEPT [336:29428] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [579:44284] COMMIT # Completed on Mon Jul 22 22:14:55 2024

В эти файлы можно вносить изменения. Перед этим желательно восстановить конфигурацию из какого-то другого файла.

iptables-restore < fwoff
vi fwon

# Generated by iptables-save v1.4.21 on Mon Jul 22 22:14:55 2024 *filter :INPUT ACCEPT [1:169] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1060:80724] -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -j DROP COMMIT # Completed on Mon Jul 22 22:14:55 2024

Последнее правило запрещает всё что не разрешено явно.

iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Похожие статьи
iptables
conntrack
Настройка сети
Linux
Компьютерные сети
ip
SCP: обмен файлами;
SSH: удалённый доступ
Сокеты в C

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: