Beranda » bagaimana » Panduan Pemula untuk iptables, Linux Firewall

    Panduan Pemula untuk iptables, Linux Firewall

    Iptables adalah utilitas firewall yang sangat fleksibel yang dibangun untuk sistem operasi Linux. Apakah Anda seorang geek pemula Linux atau administrator sistem, mungkin ada beberapa cara yang iptables bisa sangat berguna bagi Anda. Baca terus saat kami menunjukkan kepada Anda cara mengkonfigurasi firewall Linux yang paling fleksibel.

    foto oleh ezioman.

    Tentang iptables

    iptables adalah utilitas firewall baris perintah yang menggunakan rantai kebijakan untuk mengizinkan atau memblokir lalu lintas. Ketika koneksi mencoba memantapkan dirinya pada sistem Anda, iptables mencari aturan dalam daftar yang cocok dengannya. Jika tidak menemukan satu, itu resor ke tindakan default.

    iptables hampir selalu sudah diinstal sebelumnya pada distribusi Linux apa pun. Untuk memperbarui / menginstalnya, cukup ambil paket iptables:

    sudo apt-get install iptables

    Ada alternatif GUI untuk iptables seperti Firestarter, tetapi iptables tidak terlalu sulit setelah Anda memiliki beberapa perintah. Anda ingin sangat berhati-hati saat mengonfigurasi aturan iptables, terutama jika Anda SSH masuk ke server, karena satu perintah yang salah dapat mengunci Anda secara permanen hingga diperbaiki secara manual di mesin fisik.

    Jenis-jenis Rantai

    iptables menggunakan tiga rantai berbeda: input, forward, dan output.

    Memasukkan - Rantai ini digunakan untuk mengontrol perilaku koneksi masuk. Misalnya, jika pengguna mencoba SSH ke PC / server Anda, iptables akan berusaha mencocokkan alamat IP dan port dengan aturan dalam rantai input.

    Meneruskan - Rantai ini digunakan untuk koneksi masuk yang sebenarnya tidak dikirim secara lokal. Pikirkan router - data selalu dikirim ke sana tetapi jarang benar-benar ditujukan untuk router itu sendiri; data hanya diteruskan ke targetnya. Kecuali jika Anda melakukan semacam perutean, NATing, atau sesuatu yang lain pada sistem Anda yang membutuhkan penerusan, Anda bahkan tidak akan menggunakan rantai ini.

    Ada satu cara pasti untuk memeriksa apakah sistem Anda menggunakan / membutuhkan rantai maju.

    iptables -L -v

    Tangkapan layar di atas adalah dari server yang sudah berjalan selama beberapa minggu dan tidak memiliki batasan pada koneksi masuk atau keluar. Seperti yang Anda lihat, rantai input telah memproses paket 11GB dan rantai output telah memproses 17GB. Rantai ke depan, di sisi lain, tidak perlu memproses satu paket. Ini karena server tidak melakukan penerusan atau digunakan sebagai perangkat pass-through.

    Keluaran - Rantai ini digunakan untuk koneksi keluar. Misalnya, jika Anda mencoba melakukan ping howtogeek.com, iptables akan memeriksa rantai keluarannya untuk melihat apa aturannya mengenai ping dan howtogeek.com sebelum membuat keputusan untuk mengizinkan atau menolak upaya koneksi.

    Peringatan itu

    Meskipun melakukan ping pada host eksternal sepertinya adalah sesuatu yang hanya perlu melintasi rantai output, perlu diingat bahwa untuk mengembalikan data, rantai input akan digunakan juga. Saat menggunakan iptables untuk mengunci sistem Anda, ingatlah bahwa banyak protokol akan membutuhkan komunikasi dua arah, sehingga rantai input dan output perlu dikonfigurasikan dengan benar. SSH adalah protokol umum yang orang lupa untuk mengizinkan pada kedua rantai.

    Perilaku Default Rantai Kebijakan

    Sebelum masuk dan mengonfigurasi aturan tertentu, Anda harus memutuskan perilaku default tiga rantai yang Anda inginkan. Dengan kata lain, apa yang ingin Anda lakukan iptables jika koneksi tidak cocok dengan aturan yang ada?

    Untuk melihat apa yang dikonfigurasikan oleh rantai kebijakan Anda saat ini dengan lalu lintas yang tidak cocok, jalankan iptables -L perintah.

    Seperti yang Anda lihat, kami juga menggunakan perintah grep untuk memberi kami hasil yang lebih bersih. Dalam tangkapan layar itu, rantai kami saat ini dianggap menerima lalu lintas.

    Lebih sering daripada tidak, Anda ingin sistem Anda menerima koneksi secara default. Kecuali Anda telah mengubah aturan rantai kebijakan sebelumnya, pengaturan ini harus sudah dikonfigurasi. Apa pun itu, inilah perintah untuk menerima koneksi secara default:

    iptables --POLicy INPUT ACCEPT
    iptables --PENDEKATAN OUTPUT polis
    iptables --policy FORWARD ACCEPT

    Dengan secara default pada aturan accept, Anda kemudian dapat menggunakan iptables untuk menolak alamat IP atau nomor port tertentu, sambil terus menerima semua koneksi lainnya. Kami akan sampai ke perintah itu sebentar lagi.

    Jika Anda lebih suka menolak semua koneksi dan secara manual menentukan mana yang ingin Anda sambungkan, Anda harus mengubah kebijakan default rantai Anda untuk dihapus. Melakukan ini mungkin hanya akan berguna untuk server yang berisi informasi sensitif dan hanya pernah memiliki alamat IP yang sama terhubung ke mereka.

    iptables - DROP INPUT polis
    iptables - DROP OUTPUT pedas
    iptables --policy FORWARD DROP

    Respons khusus koneksi

    Dengan kebijakan rantai default Anda yang dikonfigurasi, Anda dapat mulai menambahkan aturan ke iptables sehingga ia tahu apa yang harus dilakukan ketika menemukan koneksi dari atau ke alamat IP atau port tertentu. Dalam panduan ini, kita akan membahas tiga "respons" yang paling dasar dan umum digunakan.

    Menerima - Izinkan koneksi.

    Penurunan - Putus koneksi, bertingkah seolah tidak pernah terjadi. Ini yang terbaik jika Anda tidak ingin sumber menyadari sistem Anda ada.

    Menolak - Jangan izinkan koneksi, tetapi kirim kembali kesalahan. Ini terbaik jika Anda tidak ingin sumber tertentu terhubung ke sistem Anda, tetapi Anda ingin mereka tahu bahwa firewall Anda memblokirnya.

    Cara terbaik untuk menunjukkan perbedaan antara ketiga aturan ini adalah untuk menunjukkan seperti apa rasanya ketika PC mencoba melakukan ping ke mesin Linux dengan iptables yang dikonfigurasi untuk masing-masing pengaturan ini..

    Mengizinkan koneksi:

    Menjatuhkan koneksi:

    Menolak koneksi:

    Mengizinkan atau Memblokir Koneksi Khusus

    Dengan rantai kebijakan Anda yang dikonfigurasi, kini Anda dapat mengonfigurasi iptables untuk mengizinkan atau memblokir alamat, rentang alamat, dan port tertentu. Dalam contoh ini, kami akan mengatur koneksi PENURUNAN, tetapi Anda dapat mengubahnya ke MENERIMA atau MENOLAK, tergantung pada kebutuhan Anda dan bagaimana Anda mengonfigurasi rantai kebijakan Anda.

    Catatan: Dalam contoh ini, kita akan gunakan iptables -A untuk menambahkan aturan ke rantai yang ada. iptables mulai di bagian atas daftar dan melewati setiap aturan sampai menemukan yang cocok. Jika Anda perlu memasukkan aturan di atas yang lain, Anda bisa menggunakannya iptables -Saya [rantai] [angka] untuk menentukan nomor itu harus ada dalam daftar.

    Koneksi dari satu alamat IP

    Contoh ini menunjukkan cara memblokir semua koneksi dari alamat IP 10.10.10.10.

    iptables -A INPUT -s 10.10.10.10 -j DROP

    Koneksi dari berbagai alamat IP

    Contoh ini menunjukkan cara memblokir semua alamat IP dalam rentang jaringan 10.10.10.0/24. Anda dapat menggunakan netmask atau notasi slash standar untuk menentukan rentang alamat IP.

    iptables -A INPUT -s 10.10.10.0/24 -j DROP

    atau

    iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

    Koneksi ke port tertentu

    Contoh ini menunjukkan cara memblokir koneksi SSH dari 10.10.10.10.

    iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

    Anda dapat mengganti "ssh" dengan nomor port atau protokol. Itu -p tcp bagian dari kode memberitahu iptables koneksi seperti apa yang digunakan protokol. Jika Anda memblokir protokol yang menggunakan UDP daripada TCP, maka -p udp akan diperlukan sebagai gantinya.

    Contoh ini menunjukkan cara memblokir koneksi SSH dari alamat IP apa pun.

    iptables -A INPUT -p tcp --dport ssh -j DROP

    Status Koneksi

    Seperti yang kami sebutkan sebelumnya, banyak protokol akan membutuhkan komunikasi dua arah. Misalnya, jika Anda ingin memperbolehkan koneksi SSH ke sistem Anda, rantai input dan output akan membutuhkan aturan yang ditambahkan padanya. Tapi, bagaimana jika Anda hanya ingin SSH masuk ke sistem Anda diizinkan? Tidak akan menambahkan aturan ke rantai keluaran juga memungkinkan upaya SSH keluar?

    Di situlah negara koneksi masuk, yang memberi Anda kemampuan yang Anda butuhkan untuk memungkinkan komunikasi dua arah tetapi hanya memungkinkan koneksi satu arah dibuat. Lihatlah contoh ini, di mana koneksi SSH DARI 10.10.10.10 diizinkan, tetapi koneksi SSH KE 10.10.10.10 tidak. Namun, sistem ini diizinkan untuk mengirim kembali informasi melalui SSH selama sesi telah dibuat, yang memungkinkan komunikasi SSH antara kedua host.

    iptables -Sebuah INPUT -p tcp --port ssh -s 10.10.10.10 -m state --state NEW, ESTABLISHED -j ACCEPT

    iptables -P OUTPUT -p tcp --port 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

    Menyimpan perubahan

    Perubahan yang Anda buat pada aturan iptables Anda akan dihapus pada saat berikutnya layanan iptables akan dimulai kembali kecuali Anda menjalankan perintah untuk menyimpan perubahan. Perintah ini dapat berbeda tergantung pada distribusi Anda:

    Ubuntu:

    sudo / sbin / iptables-save

    Red Hat / CentOS:

    / sbin / service iptables simpan

    Atau

    /etc/init.d/iptables simpan

    Perintah lain

    Daftar aturan iptables yang saat ini dikonfigurasi:

    iptables -L

    Menambahkan -v Opsi akan memberi Anda informasi paket dan byte, dan menambahkan -n akan mendaftar semuanya secara numerik. Dengan kata lain - nama host, protokol, dan jaringan terdaftar sebagai angka.

    Untuk menghapus semua aturan yang saat ini dikonfigurasi, Anda dapat mengeluarkan perintah flush.

    iptables -F