Я довольно новичок в 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