IPTables - разрешить (принять) определенные IP-адреса в заблокированной подсети

Я довольно новичок в IPTABLES, но я написал скрипт, который блокирует несколько диапазонов IP-адресов Amazon EC2 из входного файла, черного списка.txt:

...
54.66.0.0/16
54.67.0.0/16
...

у меня также есть отдельный whilelist.txt файл, состоящий из дружественных IP-адресов (произвольный, здесь) в том числе:

54.66.1.1
54.67.1.2

вот сокращенная версия сценария bash, который я запускаю, чтобы заблокировать занесенные в черный список IP-адреса и разрешить белые:

#!/bin/sh

TABLENAME="EC2LIST"


iptables -N $TABLENAME

# Block These
while read ip; do

    # Create the drop rule
    iptables -t filter -A $TABLENAME -s $ip -j DROP

done <~/ec2block/blacklist.txt  # The blacklist location

# Delete matching rules from blacklist
while read ip; do

    # Remove any matching explicit whitelisted IPs from Blacklist
    # This will fail if explicit record doesn't exit. Ommitted check for existence.
    iptables -t -D $TABLENAME -s $ip -j DROP

    # Accept this incoming IP
    iptables -A INPUT -i eth0 -s $ip -j ACCEPT

done <~/ec2block/whitelist.txt  # Edit this location if needed

# Drop incoming packets from EC2LIST
iptables -I INPUT -j $TABLENAME

могу ли я гарантировать, что IP с ACCEPT правило, которое также попадает в диапазон, заблокированный правилом отбрасывания, будет принято?

есть ли лучший, более приемлемый способ сделать это? Я искал приоритет правил ACCEPT rules vs Drop rules, но я не могу найти много.

один сервер CentOS с другой реализацией на Gentoo. Я не помню, что есть что, но надо было использовать:

service iptables save

вот пример вывода из

$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
EC2LIST    all  --  anywhere             anywhere
ACCEPT     all  --  ec2-54-66-1-1.ap-southeast-2.compute.amazonaws.com  anywhere
ACCEPT     all  --  ec2-54-67-1-2.ap-southeast-2.compute.amazonaws.com  anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain EC2LIST (1 references)
target     prot opt source               destination
DROP       all  --  ec2-54-66-0-0.ap-southeast-2.compute.amazonaws.com/16  anywhere
DROP       all  --  ec2-54-67-0-0.us-west-1.compute.amazonaws.com/16  anywhere
24
задан QNeville
21.01.2023 5:40 Количество просмотров материала 2540
Распечатать страницу

2 ответа

правила Iptables обрабатываются по порядку. При совпадении правила обработка останавливается. Если вы используете вложенные цепочки (а именно, EC2LIST), вложенные цепочки "возвращаются к вызывающей цепочке", если ничего не совпадает во вложенной цепочке.

вы можете (и должны) использовать это в ваших интересах. Если у вас есть IP, который попадает в отклоненное правило, и вы хотите добавить его в белый список, поместите правило ACCEPT для него перед отклонением/отбрасыванием.

1
отвечен jurez 2023-01-22 13:28

спасибо джурез, я подумал, что это один из. Если я добавляю принимать и падение правила, тот же список, принять правила перед правилами падение будет иметь приоритет.

порядок операций может быть не совсем правильной или обычной, но эта конфигурация работает, если я пытаюсь разрешить 123.123.123.123 а остальные 123.123.0.0 to 123.123.255.255: например.

iptables -A EC2BLOCK -i eth0 -s 123.123.123.123 -j ACCEPT
iptables -t filter -A EC2BLOCK -s 123.123.0.0/16 -j DROP
iptables -I INPUT -j EC2BLOCK
0
отвечен QNeville 2023-01-22 15:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

bash
centos
firewall
iptables
linux
Вверх