Jak zezwolić na szereg adresów IP za pomocą IPTABLES?

29

Oto moje iptables, jak mogę to zrobić, aby pozwolić na szereg adresów IP na 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
Mike Curry
źródło

Odpowiedzi:

39

Jeśli chcesz zezwolić tylko na pewien zakres adresów IP z zakresu 10.50.0.0 (na przykład od 10.50.10.20 do 10.50.10.80), możesz użyć następującego polecenia:

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

Jeśli chcesz zezwolić na cały zakres, możesz użyć tego:

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

Zobacz stronę podręcznika iptables i to pytanie tutaj na ServerFault: Biała lista dozwolonych adresów IP ( wejścia / wyjścia) przy użyciu iptables

runlevelsix
źródło
Gdzie mam umieścić tę linię?
Mike Curry
Oto polecenia uruchamiane z wiersza poleceń: [root @ host ~] # iptables -A WEJŚCIE -i eth1 -s 10.50.0.0/16 -j AKCEPTUJ
runlevelsix
1
Użyj „10.50.10.20-10.50.10.80”, „-80” może nie robić tego, co chcesz .
podstawowe 6
@runlevelsix Gdybym chciał zezwolić na zakres IP taki jak 10.0.0.0 do 10.255.255.255, czy użyłbym 10.0.0.0/24?
RoboBear,
@MikeCurry określa, co uruchomić w wierszu polecenia / z terminala. Alternatywnie, możesz dodać tę regułę do pliku reguł iptables w /etc/iptables/rulesets.d (jeśli używasz Debiana Linux), usuwając „iptables” i następującą spację z linii: -A WEJŚCIE -i eth1 - m iprange --src-range 10.50.10.20-10.50.10.80 -j AKCEPTUJ.
RoboBear,
3

W przypadku konkretnego portu, powiedz 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT
Swapnil jaiswal
źródło
1

Cóż, widziałeś, na co chcesz zezwolić na te adresy IP, ale 10.51.xx w CIDR tłumaczy 10.50.0.0/16. Będzie to coś w rodzaju linii dla interfejsu pętli zwrotnej 127.0.0.0/8.

Kyle Brandt
źródło
1
iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

Może powodować następujący błąd:

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

Aby to naprawić, po prostu wstaw pełny adres IP w ten sposób:

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

Ref .: http://blog.capitar.com/iptables-ip-range-reversed/

Franck
źródło