Как разрешить диапазон IP-адресов с IPTABLES?

29

Вот мои iptables, как я могу сделать так, чтобы я мог разрешить диапазон IP-адресов на ETH1 (10.51.xx)

# Generated by iptables-save v1.4.4 on Thu Jul  8 13:00:14 2010
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
-A fail2ban-ssh -j RETURN 
COMMIT
Майк Карри
источник

Ответы:

39

Если вы хотите разрешить определенный диапазон IP-адресов внутри 10.50.0.0 (например, от 10.50.10.20 до 10.50.10.80), вы можете использовать следующую команду:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Если вы хотите разрешить весь диапазон, вы можете использовать это вместо:

iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT

См. Справочную страницу iptables и этот вопрос здесь на ServerFault: белый список разрешенных IP-адресов (вход / выход) с использованием iptables

runlevelsix
источник
Где я могу поставить эту строку?
Майк Карри
Это команды, которые вы запускаете из командной строки: [root @ host ~] # iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ПРИНЯТЬ
runlevelsix
1
Используйте «10.50.10.20-10.50.10.80», «-80» может не выполнять то, что вы хотите .
basic6
@runlevelsix Если бы я хотел разрешить диапазон IP-адресов от 10.0.0.0 до 10.255.255.255, я бы использовал 10.0.0.0/24?
RoboBear
@MikeCurry это указывает, что запускать по командной строке / с вашего терминала. Кроме того, вы можете добавить это правило в файл правил iptables в /etc/iptables/rulesets.d (если вы используете Debian Linux), удалив «iptables» и следующий пробел из строки: -A INPUT -i eth1 - m iprange --src-range 10.50.10.20-10.50.10.80 -j ПРИНЯТЬ.
RoboBear
3

Для конкретного порта, скажите 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT
Свапнил джайсвал
источник
1

Ну вы же видели то , что вы хотите , чтобы этот IP - адрес для но 10.51.xx в CIDR переводится 10.50.0.0/16. Так что это будет что-то вроде строки для интерфейса обратной связи, которая имеет 127.0.0.0/8.

Кайл Брандт
источник
1
iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

Может выдать следующую ошибку:

iptables: Applying firewall rules: xt_iprange: range 10.50.10.20-80 is reversed and will never match

Чтобы исправить это, просто введите полный IP вместо этого:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Ссылка: http://blog.capitar.com/iptables-ip-range-reversed/

Franck
источник