Я довольно новичок в IPTABLES, но я написал скрипт, который блокирует несколько диапазонов IP-адресов Amazon EC2 из входного файла, blacklist.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, которое также попадает в диапазон, заблокированный правилом DROP?
Есть ли лучший, более приемлемый способ сделать это? Я искал приоритет правил ПРИНЯТЬ против правил УДАЛЕНИЯ, но я не могу найти много.
Один сервер - это 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