Bagaimana cara memungkinkan rentang IP dengan IPTABLES?

29

Ini adalah iptables saya, bagaimana saya bisa membuatnya sehingga saya dapat mengizinkan rentang ip di 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
sumber

Jawaban:

39

Jika Anda hanya ingin mengizinkan rentang alamat IP tertentu di dalam 10.50.0.0 (seperti dari 10.50.10.20 hingga 10.50.10.80), Anda dapat menggunakan perintah berikut:

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

Jika Anda ingin mengizinkan seluruh rentang Anda dapat menggunakan ini sebagai gantinya:

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

Lihat halaman manual iptables dan pertanyaan ini di ServerFault: Daftar putih IP yang diizinkan (masuk / keluar) menggunakan iptables

runlevelsix
sumber
Di mana saya meletakkan baris ini?
Mike Curry
Itu adalah perintah yang akan Anda jalankan dari baris perintah: [root @ host ~] # iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT
runlevelsix
1
Gunakan "10.50.10.20-10.50.10.80", "-80" mungkin tidak melakukan apa yang Anda inginkan .
basic6
@ runlevelsix Jika saya ingin mengizinkan rentang ip seperti 10.0.0.0 hingga 10.255.255.255, apakah saya akan menggunakan 10.0.0.0/24?
RoboBear
@ MikeCurry ini menentukan apa yang harus dijalankan pada perintah-line / dari terminal Anda. Atau, Anda dapat menambahkan aturan ini ke file aturan iptables di /etc/iptables/rulesets.d (jika Anda menggunakan Debian Linux) dengan menghapus "iptables" dan mengikuti spasi dari baris: -P INPUT -i eth1 - m iprange --src-range 10.50.10.20-10.50.10.80 -j MENERIMA.
RoboBear
3

Untuk port tertentu, katakan 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT
Swapnil jaiswal
sumber
1

Yah Anda memang melihat apa yang ingin Anda izinkan untuk IP tersebut tetapi diterjemahkan dalam 10.51.xx dalam CIDR 10.50.0.0/16. Jadi itu akan menjadi sesuatu seperti garis untuk antarmuka loopback yang dimilikinya 127.0.0.0/8.

Kyle Brandt
sumber
1
iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

Dapat memberikan kesalahan berikut:

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

Untuk memperbaikinya, cukup masukkan ip lengkap seperti ini:

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
sumber