If-Koubou

Panduan Pemula untuk iptables, Linux Firewall

Panduan Pemula untuk iptables, Linux Firewall (Bagaimana caranya)

Iptables adalah utilitas firewall yang sangat fleksibel yang dibangun untuk sistem operasi Linux. Apakah Anda seorang geek Linux pemula atau administrator sistem, mungkin ada beberapa cara yang dapat sangat bermanfaat bagi Anda. Baca terus selagi kami tunjukkan cara mengkonfigurasi firewall Linux yang paling serbaguna.

foto oleh ezioman.

Tentang iptables

iptables adalah utilitas firewall baris perintah yang menggunakan rantai kebijakan untuk memungkinkan atau memblokir lalu lintas. Ketika koneksi mencoba membangun dirinya sendiri di sistem Anda, iptables mencari aturan dalam daftar untuk mencocokkannya. Jika tidak menemukannya, ia akan beralih ke tindakan default.

iptables hampir selalu datang pra-instal pada distribusi Linux. Untuk memperbarui / menginstalnya, cukup ambil paket iptables:

sudo apt-get install iptables

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

Jenis Rantai

iptables menggunakan tiga rantai berbeda: masukan, maju, dan keluaran.

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 ke 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 ditakdirkan untuk router itu sendiri; data hanya diteruskan ke targetnya. Kecuali Anda melakukan semacam perutean, NATing, atau sesuatu yang lain pada sistem Anda yang memerlukan penerusan, Anda bahkan tidak akan menggunakan rantai ini.

Ada satu cara yang pasti untuk memeriksa apakah sistem Anda menggunakan / membutuhkan rantai ke depan.

iptables -L -v

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

Keluaran - Rantai ini digunakan untuk koneksi keluar. Sebagai contoh, jika Anda mencoba melakukan ping howtogeek.com, iptables akan memeriksa rantai outputnya untuk melihat aturan tentang ping dan howtogeek.com sebelum membuat keputusan untuk mengizinkan atau menolak upaya koneksi.

Peringatan itu

Meskipun ping host eksternal tampak seperti 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, ingat bahwa banyak protokol akan memerlukan komunikasi dua arah, sehingga rantai input dan output perlu dikonfigurasi dengan benar. SSH adalah protokol umum yang orang lupa untuk izinkan pada kedua rantai.

Perilaku Default Rantai Kebijakan

Sebelum masuk dan konfigurasikan aturan khusus, Anda harus memutuskan perilaku default dari ketiga rantai yang Anda inginkan. Dengan kata lain, apa yang Anda inginkan iptables lakukan jika koneksi tidak sesuai dengan aturan yang ada?

Untuk melihat apa rantai kebijakan Anda saat ini dikonfigurasi untuk dilakukan dengan lalu lintas yang tak tertandingi, jalankan iptables -L perintah.

Seperti yang Anda lihat, kami juga menggunakan perintah grep untuk memberi kami output yang lebih bersih. Dalam tangkapan layar itu, rantai kami saat ini dianggap dapat 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. Either way, inilah perintah untuk menerima koneksi secara default:

iptables --policy INPUT ACCEPT
iptables - kebijakan OUTPUT ACCEPT
iptables - kebijakan FORWARD ACCEPT

Secara default ke aturan accept, Anda dapat menggunakan iptables untuk menolak alamat IP atau nomor port tertentu, sambil terus menerima semua koneksi lainnya. Kita akan sampai ke perintah itu dalam satu menit.

Jika Anda lebih suka menolak semua koneksi dan menentukan secara manual mana yang ingin Anda izinkan untuk terhubung, Anda harus mengubah kebijakan default dari rantai Anda untuk turun. Melakukan hal ini mungkin hanya berguna untuk server yang berisi informasi sensitif dan hanya memiliki alamat IP yang sama yang terhubung dengannya.

iptables - kebijakan DROP INPUT
iptables - TONGKOL OUTPUT kebijakan
iptables - kebijakan MENUJU DROP

Tanggapan khusus koneksi

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

Menerima - Biarkan koneksi.

Penurunan - Jatuhkan koneksi, bertindak seperti itu tidak pernah terjadi. Ini yang terbaik jika Anda tidak ingin sumbernya menyadari sistem Anda ada.

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

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

Mengizinkan koneksi:

Menjatuhkan koneksi:

Menolak koneksi:

Membiarkan atau Memblokir Koneksi Tertentu

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

Catatan: Dalam contoh ini, kita akan menggunakan iptables -A untuk menambahkan aturan ke rantai yang ada. iptables mulai di bagian atas daftar dan melewati setiap aturan sampai menemukan satu yang cocok. Jika Anda perlu memasukkan aturan di atas yang lain, Anda dapat menggunakan iptables -I [rantai] [angka] untuk menentukan nomor yang 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 jangkauan jaringan 10.10.10.0/24. Anda dapat menggunakan netmask atau notasi slash standar untuk menentukan kisaran 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 protokol atau nomor port. Itu -p tcp bagian dari kode memberitahu iptables apa jenis koneksi yang digunakan protokol. Jika Anda memblokir protokol yang menggunakan UDP daripada TCP, lalu -p udp akan diperlukan sebagai gantinya.

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

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

Negara koneksi

Seperti yang telah disebutkan sebelumnya, banyak protokol akan membutuhkan komunikasi dua arah. Misalnya, jika Anda ingin mengizinkan koneksi SSH ke sistem Anda, rantai input dan output akan membutuhkan aturan yang ditambahkan ke mereka. Tetapi, bagaimana jika Anda hanya ingin SSH masuk ke sistem Anda untuk diizinkan? Tidak akan menambahkan aturan ke rantai output juga memungkinkan upaya SSH keluar?

Di situlah keadaan koneksi datang, yang memberi Anda kemampuan yang Anda perlukan untuk memungkinkan komunikasi dua arah tetapi hanya memungkinkan satu cara koneksi untuk didirikan. Lihatlah contoh ini, di mana koneksi SSH FROM 10.10.10.10 diizinkan, tetapi koneksi SSH KE 10.10.10.10 tidak diizinkan. Namun, sistem ini diizinkan untuk mengirim kembali informasi melalui SSH selama sesi telah ditetapkan, yang memungkinkan komunikasi SSH antara dua host ini.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state BARU, ESTABLISHED -j ACCEPT

iptables -A 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 dijalankan ulang kecuali Anda menjalankan perintah untuk menyimpan perubahan. Perintah ini dapat berbeda tergantung pada distribusi Anda:

Ubuntu:

sudo / sbin / iptables-save

Red Hat / CentOS:

/ sbin / layanan iptables simpan

Atau

/etc/init.d/iptables simpan

Perintah lainnya

Daftar aturan iptables yang dikonfigurasi saat ini:

iptables -L

Menambahkan -v pilihan akan memberi Anda informasi paket dan byte, dan menambahkan -n akan mencantumkan semuanya secara numerik. Dengan kata lain - hostname, protokol, dan jaringan terdaftar sebagai angka.

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

iptables -F