Debian 10 iptables команда не найдена

Обновлено: 03.07.2024

Дебиан 8
установил
apt-get install iptables
прописал нужные правила, все норм. Тут сегодня нужно было пустить кодера. Я решил сбросить правила, не тут то было

пробую
services iptables restart
-bash: services: command not found
/etc/rc.d/init.d/iptabels restart
-bash: /etc/rc.d/init.d/iptabels: No such file or directory

systemctl status firewalld
● firewalld.service
Loaded: masked (/dev/null)
Active: inactive (dead)

ip route
default via 172.31.1.1 dev eth0
172.31.1.0/24 dev eth0 proto kernel scope link src 172.31.1.100

ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default

Дебиан 8
установил

прописал нужные правила, все норм. Тут сегодня нужно было пустить кодера. Я решил сбросить правила, не тут то было

-bash: services: command not found

-bash: /etc/rc.d/init.d/iptabels: No such file or directory

В чем дело, почему он не перезагружается?

systemctl status firewalld
● firewalld.service
Loaded: masked (/dev/null)
Active: inactive (dead)

ip route
default via 172.31.1.1 dev eth0
172.31.1.0/24 dev eth0 proto kernel scope link src 172.31.1.100

ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Хмм, а ип адрес прогера добавлен в разрешенные?
Я за на дэбиане запускаю так.
iptables-save > /указываем путь для файлу/voll
iptables-restore

Мне не нужна автозагрузка
Сбросить правила получлось только перезагрузкой сервера.

Теперь я хочу понять как просто перезагружать iptables?

Сейчас iptables работает, но я не могу понять как его перезагрузить . Команды перезапуска не работают.

Мне не нужна автозагрузка
Сбросить правила получлось только перезагрузкой сервера.

Теперь я хочу понять как просто перезагружать iptables?

Сейчас iptables работает, но я не могу понять как его перезагрузить . Команды перезапуска не работают.
Я же написал.
/sbin/iptables-restore

Прошу пояснить следующую ситуацию: системная команда требует sudo даже от суперпользователя. как так ?

bash iptables command not found

в общем надо читать было маны 🙂

bash iptables command not found

это разные команды.

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

* sudo по дефолту не использует PATH от вашего юзера или от root
* sudo также игнорирует глобальные переменные из /etc/environment или /etc/profile.d/*.sh.
* PATH для sudo захардкожен и равен /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Для справки, можно почитать man sudo, искать env_reset

How to fix this?

1 Answer 1

iptables needs a root priviledges. Seems like you are trying to execute it as a normal user.

so: sudo iptables

Also, check are iptables loaded in the kernel:

lsmod | grep ip_tables

bash iptables command not found

Related

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2019 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2019.11.15.35459

У меня Linux Debian 5.0 Lenny, обновлённый до версии 5.0.3 iptables, я взял скрипт iptables с другого шлюза, на котором стоит Fedora core 6.0. Этот скрипт настроен под этот дистрибутив, вы не поможете подогнать его под Debian? Вот ошибки

:INPUT DROP
$iptables :FORWARD DROP
$iptables :OUTPUT ACCEPT


надо
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT


Всё смешалось - кони,люди,мухи и котлеты.

fw [B---] 0 L:[ 1+ 0 1/ 88] *(0 /5440b)= I 73 0x49


Это что? Вызов терминатора?


COMMIT
*nat
:PREROUTING ACCEPT [81:7382]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

Просто повисли в воздухе.

:INPUT DROP
$iptables :FORWARD DROP
$iptables :OUTPUT ACCEPT


надо
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT


Всё смешалось - кони,люди,мухи и котлеты.

fw [B---] 0 L:[ 1+ 0 1/ 88] *(0 /5440b)= I 73 0x49


Это что? Вызов терминатора?


COMMIT
*nat
:PREROUTING ACCEPT [81:7382]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

Просто повисли в воздухе.

$iptables :FORWARD DROP
$iptables :OUTPUT ACCEPT
$IPTABLES -A INPUT -p tcp -s 192.168.12.8 --dport 3000 -m state --state NEW -j A

Привести переменную $IPTABLES к общему знаменателю, т.е. по всему скрипту один регистр использовать, т.к. регистрозависимо!

$iptables :FORWARD DROP
$iptables :OUTPUT ACCEPT
$IPTABLES -A INPUT -p tcp -s 192.168.12.8 --dport 3000 -m state --state NEW -j A

Привести переменную $IPTABLES к общему знаменателю, т.е. по всему скрипту один регистр использовать, т.к. регистрозависимо!

Вот ошибки. Помогите, будьте любезны, меня начальство напрягло им надо и локалку ложить, и серваки делать. Как самбовский сервак делать, я разобрался, а вот с iptables не успеваю, просто времени нет читать документацию по iptables. Я за 8 человек один работаю.

./fw: line 2: =/sbin/iptables: Нет такого файла или каталога

Все остальное работать не будет.
Сделай в консоли
whereis iptables

Пускай скрипят мои конечности.
Я - повелитель бесконечности.
Мой блог ./fw: line 2: =/sbin/iptables: Нет такого файла или каталога

Все остальное работать не будет.
Сделай в консоли
whereis iptables

У тебя в скрипте написано

Пускай скрипят мои конечности.
Я - повелитель бесконечности.
Мой блог

Это выброси из конфига

$IPTABLES COMMIT
$IPTABLES *nat
$IPTABLES :PREROUTING ACCEPT [81:7382]
$IPTABLES :POSTROUTING ACCEPT [0:0]
$IPTABLES:OUTPUT ACCEPT [0:0]

А почему все правила по 2 раза?

--------------
Повезло чувачкам с 12 подсети
$IPTABLES -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A POSTROUTING -s 192.168.12.0/255.255.255.0 -j MASQUERADE

У тебя в скрипте написано

Исправил на IPTABLES=/sbin/iptables ошибки такие
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.2: Illegal option `-p' with this command

Try `iptables -h' or 'iptables --help' for more information.
Bad argument `COMMIT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `*nat'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `PREROUTING'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `POSTROUTING'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `OUTPUT'
Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
Bad argument `COMMIT'
Try `iptables -h' or 'iptables --help' for more information.
что написать перед COMMIT nat PREROUTING

Это выброси из конфига

$IPTABLES COMMIT
$IPTABLES *nat
$IPTABLES :PREROUTING ACCEPT [81:7382]
$IPTABLES :POSTROUTING ACCEPT [0:0]
$IPTABLES:OUTPUT ACCEPT [0:0]

А почему все правила по 2 раза?

--------------
Повезло чувачкам с 12 подсети
$IPTABLES -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A POSTROUTING -s 192.168.12.0/255.255.255.0 -j MASQUERADE

__________
Выбросил теперь вот эти ошибки
iptables v1.4.2: Illegal option `-p' with this command

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name

Согласно документа в Debian Wiki фреймворк nftables представляет собой механизм, используемый ОС Debian 10 Buster по умолчанию для управления встроенного в ядро Linux брандмауэра Netfilter. Nftables может рассматриваться, как современная, более продвинутая и функциональная замена таким инструментам, как iptables, ip6tables, arptables и ebtables.

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

Не смотря на то, что в Debian 10 на данный момент по прежнему доступна утилита iptables, на самом деле она уже работает с фреймворком nftables в режиме совместимости с синтаксисом iptables и ссылается на утилиту iptables-nft.

Debian 10 iptables-nft

Чтобы отказаться от использования режима совместимости и синтаксиса iptables, мы можем использовать родной для nftables инструмент nft. Для этого установим пакет nftables.

После установки посмотрим на то, какая конфигурация правил nftables используется по умолчанию

Debian 10 default nftables config

Как видим, у нас уже описана таблица с именем " filter " семейства inet, предоставляющим возможность использовать правила IPv4/IPv6. В этой таблице созданы три цепочки с хуками netfilter типа input, forward, output. Правила в этих цепочках отсутствуют.

Настраиваем автоматический запуск службы, отвечающей за активацию правил nftables, затем запускаем эту службу:

Start nftables in Debian 10

Теперь можно переходить к управлению правилами nftables.

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

Управление правилами nftables будем выполнять с помощью утилиты nft.

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

Очистить правила в цепочке " input " таблицы " filter " можно так:

Полностью очистить набор активных правил можно командой:

Очистка действующих правил не влияет на загружаемый при старте службы nftables.service конфигурационный файл /etc/nftables.conf

Если нужно, чтобы текущие активные правила nftables попали в стартовую конфигурацию nftables, то достаточно выгрузить их командами типа:

То есть внутри конфигурационного файла nftables.conf в первой строке присутствует ссылка на исполняемый файл nft, во второй строке – команда полной очистки текущей конфигурации nftables, а затем идут настроенные нами правила.

Чтобы загрузить в активную конфигурацию nftables набор правил из файла можно выполнить команду типа:

По аналогии с ранее рассматриваемым iptables, nftables обрабатывает пакеты на основе правил (Rules), которые группируются в цепочки (Chains). Цепочки хранятся в таблицах (Tables).

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

Далее для наглядности рассмотрим несколько простых примеров управления правилами nftables с помощью nft.

Простые примеры правил nftables

Разрешаем все пакеты для уже установленных соединений с использованием механизма connection tracking:

Разрешаем доступ из подсети 192.168.1.0/24 и IP 192.168.0.10 по SSH:

Вместо IP в правилах возможно использование доменного имени:

Запрещаем доступ к 80-му порту:

Удаляем правило с определённым номером в цепочке " output " таблицы " filter ":

Как конвертировать правила iptables

Базовую информацию о конвертации правил можно найти в документе: Moving from iptables to nftables. Можно использовать дополнительные утилиты, такие как iptables-translate и ip6tables-translate, для того чтобы транслировать правила из привычного синтаксиса iptables в новый формат nftables.

Например, команда вида:

вернёт нам указанное в формате iptables правило, транслированное в формат nftables:

iptables-translate

Простейший вариант настройки правил nftables

Рассмотрим простейший пример настройки брандмауэра для среднестатистического Linux-сервера в локальной сети предприятия. В рассматриваемом примере настраивается доступ к серверу по протоколу IPv4, а доступ по протоколу IPv6 полностью блокируется. По IPv4 разрешаются входящие подключения по протоколу SSH из сети администраторов (10.1.5.0/24), а также Ping и подключения к веб-серверу из всей сети предприятия (10.1.0.0/13).

Набор команд для наполнения правилами nftables в этом случае может выглядеть примерно следующим образом:

Давайте посмотрим, что у нас в итоге получилось в активной конфигурации nftables.

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

Дополнительные источники информации:

Похожее

Всего комментариев: 8 Комментировать

Доброго времени суток, спасибо большое за информацию, а то по nftables информации не так много, обрывки

А примеры точно верные? Так как описано добавление правила на пинг выдает ошибку. Вот как оно реально срабатывает: nft add rule inet filter input icmp type echo-request accept, другими словами пропущен inet

Да действительно inet не хватает, причём на всех источниках примеры аналогичные стоит debian 10 , где-то нужно и ip убрать .
nft add rule inet ip filter input ip saddr tcp dport 22 accept

Получаем ответ:
tcp 0 0 0.0.0.0:56473 0.0.0.0:* LISTEN 3586/sshd
tcp6 0 0 . 56473 . * ISTEN 3586/sshd

Перезагружаем компьютер и соединяемся с ним удалённо, через Putty, используя новый порт.

А можно ли установить в Debian 10 Firewalld, я к нему привык и свободно ориентируюсь. А то, сначала IPTables, затем Ferewalld, затем, nftables. Хорошо, если настройки будут аналогичны IPTables, и опять придётся их изучать.

Можно, так как firewalld может использовать в качестве бакенда как iptables так и nftables

Всё-таки, думаю, до возвращения Debian на домашний сервер, дело не дойдёт. Debian 10 почему-то очень сильно подтормаживает, даже Fedora 31 Plasma, установленная на USB_HDD работает намного быстрее, чем Debian 10 на SATA. К тому же уже практически настроил CentOS 8, его работа на сервере с USB_HDD гораздо быстрее, чем у 7 версии. А Debian тормозит даже в простейших приложениях, например в пасьянсе Aisleriot, я уже отпустил клавишу мышки, а карта перемещается, спустя 0,5 - 2 секунды. Ранее, когда у меня на сервере стоял Debian 7, открытие сетевого ресурса затягивалось от 20 секунд до нескольких минут, абсолютный рекорд открытия папки на сервере составил более 5 минут!

UFW (Uncomplicated Firewall) – это удобный интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Инструмент iptables надёжный и гибкий, но новичкам непросто настроить его самостоятельно.

Данный мануал поможет вам настроить брандмауэр с помощью UFW на виртуальном сервере Debian 10.

Требования

Для работы вам нужен сервер Debian 10, настроенный по этому мануалу (разделы 1-3).

1: Установка UFW

В Debian инструмент UFW не установлен по умолчанию. Если вы выполнили мануал по начальной настройке, значит, вы уже установили его. Если нет, введите команду:

sudo apt install ufw

2: Использование IPv6 (опционально)

Данный мануал предназначен для IPv4, но он подойдёт и для IPv6.

Если на вашем сервере Debian включен протокол IPv6, убедитесь, что UFW поддерживает его. Откройте конфигурации UFW:

sudo nano /etc/default/ufw

Убедитесь, что в настройках есть строка:

Сохраните и закройте файл.

После включения UFW будет поддерживать правила для протоколов IPv4 и IPv6.

Прежде чем приступить к работе над правилами, нужно убедиться, что брандмауэр поддерживает соединения SSH. Для этого ознакомьтесь с политикой UFW по умолчанию.

3: Политика по умолчанию

Начиная настройку брандмауэра, вы должны продумать и определить его политику по умолчанию. Эти правила управляют обработкой трафика, который не отвечает другим правилам. По умолчанию UFW сбрасывает все входящие и разрешает все исходящие соединения. Это значит, что другие пользователи не смогут получить доступ к вашему облачному серверу, но все установленные на сервере приложения могут взаимодействовать с внешними приложениями.

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

sudo ufw default deny incoming
sudo ufw default allow outgoing

Если вы настроили пользовательский набор правил, эти команды сбросят его и восстановят исходный набор. Теперь брандмауэр будет сбрасывать все входящие и поддерживать исходящие соединения.

Стандартные правила брандмауэра подходят для персональных компьютеров; серверам обычно необходимо принимать входящий трафик.

4: Настройка соединений SSH

Чтобы разблокировать соединения SSH, введите:

sudo ufw allow ssh

Это правило разрешит входящие соединения по порту 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH), которые перечислены в файле /etc/services.

Вместо названия сервиса в правиле можно указать порт. Например:

sudo ufw allow 22

Если вы используете нестандартный порт для SSH, укажите его в команде. К примеру, если SSH прослушивает порт 2222, нужно ввести:

sudo ufw allow 2222

5: Включение UFW

Чтобы включить брандмауэр UFW, введите:

sudo ufw enable

Вы получите предупреждение:

command may disrupt existing ssh connections

Это означает, что команда может сбросить все текущие ssh-соединения. Поскольку только что вы разблокировали трафик ssh, этого не произойдёт. Можно нажать y и Enter, чтобы продолжить.

Теперь брандмауэр включен. Чтобы просмотреть текущий набор правил, введите:

sudo ufw status verbose

6: Поддержка других соединений

Теперь разблокируйте другие соединения, которые нужны для работы вашего сервера. Список необходимых сервисов индивидуален для каждого сервера.

Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.

Настройка диапазонов портов

UFW позволяет разблокировать необходимый диапазон портов. Некоторые приложения используют сразу несколько портов.

К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

Указывая диапазон портов, вы должны указать протокол (tcp или udp). Если вы не сделаете этого, UFW будет использовать оба протокола (в большинстве случаев это нормально).

Настройка IP-адресов

Также UFW может поддерживать трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 203.0.113.4, нужно ввести from и сам адрес:

sudo ufw allow from 203.0.113.4

Вы можете ограничить доступ для определенного IP-адреса конкретным портом с помощью опции to any port. Например, чтобы разрешить IP-адресу 203.0.113.4 SSH-доступ, используйте:

sudo ufw allow from 203.0.113.4 to any port 22

Настройка подсетей

Чтобы разблокировать в брандмауэре подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 203.0.113.1-203.0.113.254 , нужно ввести:

sudo ufw allow from 203.0.113.0/24

Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:

sudo ufw allow from 203.0.113.0/24 to any port 22

Настройка сетевых интерфейсов

Правила брандмауэра могут применяться к конкретному интерфейсу. Для этого нужно ввести allow in on, а затем указать имя этого интерфейса.

Прежде чем продолжить, просмотрите свои сетевые интерфейсы.

ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

Имена интерфейсов выделены красным (обычно они называются eth0, enp3s2 и т.п.).

sudo ufw allow in on eth0 to any port 80

Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:

sudo ufw allow in on eth1 to any port 3306

7: Блокирование соединений

По умолчанию UFW блокирует все входящие соединения. В целом это очень надежная политика.

Однако иногда вам может потребоваться заблокировать определенные подключения на основе IP-адреса или подсети (например, если вы знаете, что ваш сервер регулярно подвергается атакам оттуда).

Если вы хотите изменить политику брандмауэра по умолчанию на allow, вам нужно уметь блокировать трафик определённых вредоносных IP-адресов или подсетей.

Правила, блокирующие трафик, пишутся точно так же, только вместо allow используется deny.

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

sudo ufw deny from 203.0.113.4

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

Существует два способа удалить правило: указать номер правила или само правило.

Удаление правила по его номеру

Для начала просмотрите список существующих правил. Для этого запросите состояние брандмауэра с опцией numbered.

sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere

sudo ufw delete 2

Брандмауэр запросит подтверждение.

Примечание: Если сервер поддерживает IPv6, нужно удалить соответствующее правило и для этого протокола.

Удаление самого правила

sudo ufw delete allow 80

Этот метод работает и для IPv4, и для IPv6.

9: Проверка состояния и правил UFW

Чтобы проверить состояние UFW, введите:

sudo ufw status verbose

По умолчанию брандмауэр UFW отключен:

Если брандмауэр включен, на экране появится его состояние и список правил. К примеру, если он поддерживает соединения SSH (порт 22), вывод будет выглядеть так:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere

10: Отключение или сброс правил UFW (опционально)

Если вы хотите отключить брандмауэр UFW, введите команду:

sudo ufw disable

Все правила будут отключены.

Если вы хотите сбросить текущий набор правил UFW, запустите:

Эта команда сбросит все текущие правила. Имейте в виду: при этом политика брандмауэра по умолчанию не будет восстановлена.

После этого вы можете добавить новые правила.

Заключение

Теперь ваш брандмауэр поддерживает SSH-соединения. Также вы знаете основные команды для управления UFW. Обязательно откройте все необходимые входящие соединения и заблокируйте порты, которые не используются.

В Debian 10 Buster по умолчанию реализован новый механизм управления брандмауэром Linux Netfilter, который представлен в виде фреймворка nftables. Следовательно, Nftables может рассматриваться, как современная, более продвинутая и безусловно функциональная замена таким инструментам, как iptables, ip6tables, arptables и ebtables. Итак, в данной статье рассматривается настройка nftables в Debian 10.

Установка nftables в Debian 10

Разумеется в Debian 10 Buster по прежнему работает утилита iptables, но на самом деле она работает через фреймворк nftables в режиме совместимости. При этом синтаксис управления iptables сохранился, но как видим уже ссылается на iptables-nft.

nftables debian 10

Чтобы отказаться от режима совместимости и синтаксиса iptables, возможно использовать инструмент nft для nftables. Для этого его необходимо установить:

После установки посмотрим конфигурацию nftables по умолчанию:

nftables Debian 10

Далее, необходимо настроить служба и автоматический старт:

nftables Debian 10

Установка и запуск завершены. Следовательно можно перейти к управлению правилами nftables.

Управления правилами nftables в Debian 10

Прежде всего, управление nftables осуществляется с помощью утилиты nft. Посмотреть текущий набор правил:

Более того, очистить правила nftables в цепочке INPUT таблицы filter выполняется командой:

Подобным образом можно полностью очистить правила nftables:

При старте системы правила загружаются из файла /etc/nftables.conf. Поэтому чтобы активные правила попали в стартовую конфигурацию, их необходимо сохранить в файл одной из следующих команд:

Далее, для загрузки в активную конфигурацию правил из файла, необходимо выполнить команду:

Nftables обрабатывает пакеты на основании правил (Rules), которые сгруппированы в цепочки (Chains). Между тем, цепочки в свою очередь хранятся в таблицах (Tables). Формирование правил осуществляются при помощи следующего синтаксиса:

Примеры правил nftables

К примеру, рассмотрим, как настроить nftables для работы с Asterisk. Прежде всего, отредактируем файл /etc/nftables.conf:

Далее загрузим правила в активную конфигурацию:

Переход с iptables на nftables в Debian 10

Кроме того, для конвертации правил из iptables в nftables существует дополнительная утилита iptables-translate, также позволяющая переписать правила в nftables.

Например, выполнение команды:

Как следствие, создаст правило для nftables:

Настройка nftables в Debian 10 (Buster) окончена. В заключении, дополнительная информация по nftables в Debian 10:

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

Читайте также: