Panduan Pemula untuk iptables, Linux Firewall

Daftar Isi:

Panduan Pemula untuk iptables, Linux Firewall
Panduan Pemula untuk iptables, Linux Firewall

Video: Panduan Pemula untuk iptables, Linux Firewall

Video: Panduan Pemula untuk iptables, Linux Firewall
Video: Matte vs Glossy Monitor - Laptop Screen Comparison - Which one to choose? - YouTube 2024, November
Anonim
Iptables adalah utilitas firewall yang sangat fleksibel yang dibangun untuk sistem operasi Linux. Baik 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.
Iptables adalah utilitas firewall yang sangat fleksibel yang dibangun untuk sistem operasi Linux. Baik 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 mengonfigurasi 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 di sistem Anda yang memerlukan penerusan, Anda bahkan tidak akan menggunakan rantai ini.

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

iptables -L -v

Tangkapan layar di atas adalah server yang telah 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 keluaran telah memproses 17GB. Rantai ke depan, di sisi lain, tidak perlu memproses paket tunggal. Ini karena server tidak melakukan penerusan apa pun atau digunakan sebagai perangkat pass-through.
Tangkapan layar di atas adalah server yang telah 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 keluaran telah memproses 17GB. Rantai ke depan, di sisi lain, tidak perlu memproses paket tunggal. Ini karena server tidak melakukan penerusan apa pun 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 akan ingin 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.
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. Apa pun caranya, inilah perintah untuk menerima koneksi secara default:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy 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 --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD 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, kami akan membahas tiga "jawaban" yang paling dasar dan umum digunakan.

Menerima - Biarkan koneksi.

Penurunan - Jatuhkan koneksi, bertindak seperti itu tidak pernah terjadi. Ini terbaik jika Anda tidak ingin sumbernya 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 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:

Menolak koneksi:
Menolak koneksi:
Image
Image

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

DROP

tetapi Anda dapat mengubahnya menjadi

ACCEPT

atau

REJECT

tergantung pada kebutuhan Anda dan bagaimana Anda mengatur rantai kebijakan Anda.

Catatan: Dalam contoh ini, kami akan menggunakannya

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 [chain] [number]

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 letak status koneksi, yang memberi Anda kemampuan yang Anda butuhkan untuk memungkinkan komunikasi dua arah tetapi hanya memungkinkan satu cara koneksi dibentuk. 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 NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 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/service iptables save

Atau

/etc/init.d/iptables save

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

Direkomendasikan: