Рейтинг:4

Как добавить несколько IP-адресов в одну командную строку iptables? sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4 -j УДАЛИТЬ

флаг my

Обновлять:

я пытался sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4,11.22.33.44 -j УДАЛИТЬ, Не работает и выдает ошибку

iptables v1.8.2 (nf_tables): ! не допускается с несколькими исходными или целевыми IP-адресами


Например, Моя цель: Разрешить только разрешить. 1.2.3.4 и 11.22.33.44 для подключения ssh (порт 22) моего сервера.

И я предпочитаю этот подход/команду другим.

sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4 -j УДАЛИТЬ

Но я не знаю, как добавить еще один разрешенный IP-адрес 11.22.33.44 в этой команде

Не могли бы вы дать мне немного помощи или советов?

Спасибо.

флаг in
Отвечает ли это на ваш вопрос? [iptables несколько исходных IP-адресов в одном правиле] (https://serverfault.com/questions/6989/iptables-multiple-source-ips-in-single-rule)
rm -rf avatar
флаг my
@NiKiZe О, это может сработать, большое вам спасибо.
Michael Hampton avatar
флаг cz
NB: Брандмауэр с разрешением ввода по умолчанию, как правило, не считается хорошей практикой.
Рейтинг:5
флаг cc

Вы можете использовать IP-адрес.

В зависимости от вашего дистрибутива вам может потребоваться установить ipset полезность в первую очередь.

#(Для Debian и производных от Debian дистрибутивов)
sudo apt установить ipset-persistent

Затем вы создаете набор с понятным именем.

sudo ipset создать ssh_friends iphash

Когда у вас есть набор, вы можете добавить к нему IP-адреса.

sudo ipset добавить ssh_friends 1.2.3.4
sudo ipset добавить ssh_friends 11.22.33.44

Теперь вы можете использовать созданный вами набор в iptables правило вместо отдельных IP-адресов.

sudo iptables -A INPUT -p tcp --destination-port 22 -m set ! --match-set ssh_friends источник -j DROP
Michael Hampton avatar
флаг cz
Я думаю, что он хочет перевернуть матч.
флаг cc
Ах, я перепутал.... и забыл ограничить правило определенным портом... исправлено!
флаг in
Созданный ipset хранится в памяти и исчезнет после перезагрузки. Возможно стоит указать на пакет [ipset-persistent](https://packages.debian.org/bullseye/ipset-persistent) и для debian-подобных дистрибутивов. Поэтому вместо «apt install ipset», вероятно, лучше использовать «apt install ipset-persistent».
флаг cc
Спасибо @LutzWillek, обновлено!
Рейтинг:-1
флаг in

Определение несколько адреса, используя только один iptables команда с использованием ! --источник это невозможно.

Адрес может быть сетевым именем, именем хоста (вероятно, плохая идея использовать имена хостов), сетевой IP-адрес (с /mask) или обычный IP-адрес. Маска может быть либо маской сети, либо обычным номером.

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

iptables -A ВВОД -i lo -j ПРИНЯТЬ
iptables -A ВХОД -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
... другие ваши правила идут здесь ...
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -s 1.2.3.4,11.22.33.44 -j ПРИНЯТЬ
iptables -P ВХОД DROP

Преимущество/прелесть в том, что такой набор правил будет гораздо более производительным, поскольку учитывается состояние пакетов. Кроме того, он позволяет использовать желаемый синтаксис. Plus также является рекомендуемым способом определения правил брандмауэра.

Однако имейте в виду, что при использовании синтаксиса, как показано выше: -с 1.2.3.4,11.22.33.44 по-прежнему создает 2 отдельные записи в таблице, как вы можете видеть с помощью команды iptables -L ВВОД. Кроме того, он работает не со всеми версиями iptables. Кроме того, лично мне трудно читать или поддерживать. Вот почему я стараюсь избегать этого в пользу использования двух отдельных команд.

Если вы хотите свести к минимуму количество правил, самое близкое, что вы можете сделать, это использовать один iptables правило с использованием --соответствовать вместо --источник. Однако вам все равно придется определить совпадение, используя дополнительные команды. Как это работает, было прекрасно объяснено в другом комментарии, посвященном ipset.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.