Bagaimana saya mengizinkan ips tertentu dan memblokir semua koneksi lain di iptables?
Bagaimana saya mengizinkan ips tertentu dan memblokir semua koneksi lain di iptables?
Jawaban:
Saya menulis posting blog tentang aturan dasar Iptables untuk pengguna desktop sejak lama dan Anda mungkin harus membacanya, dan artikelnya terkait dengan desain firewall Stateful . Tetapi pra kernel 2.6.39 (yang termasuk ipset
dan Anda mungkin ingin menggunakannya untuk daftar putih IP jika Anda memiliki lebih dari 10 untuk daftar putih (di mana 10 adalah sewenang-wenang)).
Pegangan pertama menyatakan bahwa kita tahu kita ingin menerima atau menjatuhkan, dan antarmuka.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
Jika Anda hanya ingin melakukan izin dengan IP saja, tanpa status
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Anda cenderung mengalami masalah dalam melakukan hal ini, dan saya sarankan menggunakan keadaan untuk membuat hidup Anda lebih mudah. Misalnya, tidak mengizinkan -i lo
dan -o lo
pasti akan menimbulkan masalah untuk aplikasi tertentu.
iptables -F
itu untuk menghapus semua aturan, bahkan tidak bisa ping ubuntu.com
Inilah contoh (belum diuji!) Yang hanya memblokir koneksi masuk . Koneksi melalui antarmuka loopback, yang berasal dari 192.168.3.x, ICMP, atau ke port SSH diizinkan. Semua koneksi lain ditolak.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
lo
dalam contoh di atas dikecualikan dari pencocokan negara dan selalu diizinkan.
Aturan di bawah ini hanya akan memungkinkan IP Anda dan Memblokir semua IP lain melalui port 22 atau ssh. Uji dengan terminal baru sebelum memutuskan koneksi.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress
saya dapat menambahkan beberapa alamat dan rentang IP? Dan jika saya menggunakan SSH pada port non-standar seperti 2888, maka perintahnya akan mengubah 22
contoh Anda menjadi 2288
? Juga, apakah ini juga akan memblokir rsync, sftp, dll ke server ini dari semua IP kecuali yang diizinkan?
-p tcp
penting di sini karena --dport
tidak berfungsi tanpanya. Saya juga menyarankan menggunakan -j REJECT
daripada DROP
karena REJECT
membuat port identik dengan port tertutup dan DROP
membuat paket-paket yang ditakdirkan untuk port black holed. Dalam praktiknya, penyerang jarak jauh dapat mendeteksi DROP
port yang dikonfigurasi dari port yang sebenarnya tertutup.
Ini adalah contoh lengkap.
Juga membuat aplikasi berfungsi (ulang: komentar saya tentang keepass tidak memulai)