Panduan Permulaan untuk iptables, Linux Firewall
Iptables adalah utiliti firewall yang sangat fleksibel yang dibina untuk sistem operasi Linux. Sama ada anda seorang pemula Linux atau pentadbir sistem, mungkin terdapat beberapa cara yang boleh digunakan oleh iptables untuk anda. Teruskan membaca seperti yang kami tunjukkan kepada anda bagaimana untuk mengkonfigurasi firewall Linux yang paling serba boleh.
gambar dari ezioman.
Mengenai iptables
iptables adalah utiliti firewall baris perintah yang menggunakan rantai dasar untuk membenarkan atau menyekat lalu lintas. Apabila sambungan cuba menubuhkan sendiri pada sistem anda, iptables mencari peraturan dalam senarainya untuk dipadankan dengannya. Jika ia tidak menemui satu, ia berperang dengan tindakan lalai.
iptables hampir selalu datang sebelum dipasang pada mana-mana pengedaran Linux. Untuk mengemas kini / memasangnya, hanya dapatkan pakej iptables:
sudo apt-get install iptables
Terdapat alternatif GUI untuk iptables seperti Firestarter, tetapi iptables tidak benar-benar sukar apabila anda mempunyai beberapa perintah ke bawah. Anda ingin menjadi sangat berhati-hati apabila mengkonfigurasi peraturan iptables, terutamanya jika anda SSH'd ke pelayan, kerana satu perintah yang salah boleh mengunci anda secara kekal sehingga ia secara manual ditetapkan pada mesin fizikal.
Jenis Rantai
iptables menggunakan tiga rantai yang berbeza: input, ke hadapan, dan output.
Input - Rantaian ini digunakan untuk mengawal kelakuan untuk sambungan masuk. Contohnya, jika pengguna cuba ke SSH ke dalam PC / pelayan anda, iptables akan cuba memadankan alamat IP dan port ke peraturan dalam rantaian masukan.
Teruskan - Rantai ini digunakan untuk sambungan masuk yang sebenarnya tidak dihantar secara tempatan. Fikirkan penghala - data sentiasa dihantar kepadanya tetapi jarang ditakdirkan untuk penghala itu sendiri; data hanya dikemukakan kepada sasarannya. Kecuali anda melakukan beberapa jenis routing, NATing, atau sesuatu yang lain pada sistem anda yang memerlukan penghantaran, anda tidak akan menggunakan rantaian ini.
Ada satu cara pasti-api untuk memeriksa sama ada atau tidak sistem anda menggunakan / memerlukan rantaian hadapan.
iptables -L -v
Tangkapan skrin di atas adalah pelayan yang telah berjalan selama beberapa minggu dan tidak mempunyai sekatan pada sambungan masuk atau keluar. Seperti yang anda lihat, rantaian input telah memproses 11GB paket dan rantaian output telah memproses 17GB. Rantai ke depan, sebaliknya, tidak perlu memproses satu paket. Ini kerana pelayan tidak melakukan apa-apa penghantaran atau digunakan sebagai peranti lulus.
Pengeluaran - Rantaian ini digunakan untuk sambungan keluar. Sebagai contoh, jika anda cuba untuk ping howtogeek.com, iptables akan memeriksa rantai outputnya untuk melihat apa peraturannya mengenai ping dan howtogeek.com sebelum membuat keputusan untuk membenarkan atau menafikan percubaan sambungan.
Kaveat
Walaupun pinging tuan rumah luaran kelihatan seperti sesuatu yang hanya perlu melintasi rantai output, perlu diingat bahawa untuk mengembalikan data, rantaian input akan digunakan juga. Apabila menggunakan iptables untuk mengunci sistem anda, ingat bahawa banyak protokol akan memerlukan komunikasi dua arah, jadi kedua-dua rantaian input dan output perlu dikonfigurasi dengan betul. SSH adalah protokol biasa yang orang lupa untuk membenarkan kedua-dua rantai itu.
Kelakuan Default Rantaian Dasar
Sebelum masuk dan mengkonfigurasi peraturan tertentu, anda akan mahu memutuskan apa yang anda mahu kelakuan lalai dari tiga rantai itu. Dalam erti kata lain, apa yang anda mahu iptables lakukan jika sambungan itu tidak sepadan dengan mana-mana peraturan yang sedia ada?
Untuk melihat apa rantai dasar anda kini dikonfigurasikan untuk dilakukan dengan trafik yang tidak dapat ditandingi, jalankan iptables -L
perintah.
Seperti yang anda lihat, kami juga menggunakan arahan grep untuk memberi kami output yang bersih. Dalam tangkapan skrin itu, rantaian kami kini dilihat untuk menerima trafik.
Lebih banyak masa tidak, anda akan mahu sistem anda menerima sambungan secara lalai. Kecuali anda mengubah peraturan rantaian dasar sebelum ini, tetapan ini harus dikonfigurasikan. Sama ada cara, inilah perintah untuk menerima sambungan secara lalai:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
Dengan memungkiri aturan penerimaan, anda boleh menggunakan iptables untuk menolak alamat IP atau nombor port tertentu, sambil terus menerima semua sambungan lain. Kami akan sampai kepada arahan itu dalam satu minit.
Jika anda lebih suka menafikan semua sambungan dan menentukan secara spesifik mana yang anda mahu membenarkan untuk disambungkan, anda harus menukar dasar lalai rantai anda untuk dilepaskan. Melakukan ini mungkin hanya berguna untuk pelayan yang mengandungi maklumat sensitif dan hanya mempunyai alamat IP yang sama bersambung dengan mereka.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Sambutan khusus Sambungan
Dengan dasar rantaian lalai anda dikonfigurasikan, anda boleh mula menambahkan peraturan kepada iptables supaya ia tahu apa yang perlu dilakukan apabila ia mengalami sambungan dari atau ke alamat atau port IP tertentu. Dalam panduan ini, kita akan pergi ke tiga "jawapan" yang paling asas dan biasa digunakan.
Terima - Benarkan sambungan.
Drop - Jatuhkan sambungan, bertindak seperti tidak pernah berlaku. Ini adalah yang terbaik jika anda tidak mahu sumber menyedari wujudnya sistem anda.
Tolak - Jangan benarkan sambungan, tetapi hantar semula ralat. Ini adalah yang terbaik jika anda tidak mahu sumber tertentu menyambung ke sistem anda, tetapi anda mahu mereka tahu bahawa firewall anda menyekatnya.
Cara terbaik untuk menunjukkan perbezaan di antara ketiga-tiga peraturan ini adalah untuk memperlihatkan apa yang kelihatan seperti ketika PC cuba untuk ping mesin Linux dengan iptables yang dikonfigurasikan untuk setiap tetapan ini.
Membenarkan sambungan:
Mengeluarkan sambungan:
Menolak sambungan:
Membenarkan atau Menyekat Sambungan Tertentu
Dengan rantaian dasar anda dikonfigurasikan, anda kini boleh mengkonfigurasi iptables untuk membenarkan atau menyekat alamat, rentang alamat dan port khusus. Dalam contoh ini, kami akan menetapkan sambungan kepada DROP
, tetapi anda boleh menukarnya TIDAK AKTIF
atau Gembira
, bergantung kepada keperluan anda dan bagaimana anda mengkonfigurasikan rantai dasar anda.
Nota: Dalam contoh ini, kami akan menggunakannya iptables -A
untuk memasukkan peraturan kepada rantaian yang sedia ada. iptables bermula di bahagian atas senarainya dan melepasi setiap peraturan sehingga ia mendapati satu yang sepadan dengannya. Jika anda perlu memasukkan peraturan di atas yang lain, anda boleh menggunakannya iptables -I [chain] [number]
untuk menentukan nombor yang sepatutnya dalam senarai.
Sambungan dari satu alamat IP
Contoh ini menunjukkan bagaimana untuk menyekat semua sambungan dari alamat IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Sambungan dari pelbagai alamat IP
Contoh ini menunjukkan bagaimana untuk menyekat semua alamat IP dalam rangkaian rangkaian 10.10.10.0/24. Anda boleh menggunakan notasi netmask atau standard slash untuk menentukan julat 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
Sambungan ke pelabuhan tertentu
Contoh ini menunjukkan bagaimana untuk menyekat sambungan SSH dari 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
Anda boleh menggantikan "ssh" dengan mana-mana nombor protokol atau port. The -p tcp
sebahagian kod memberitahu iptables jenis sambungan yang digunakan oleh protokol. Jika anda menyekat protokol yang menggunakan UDP dan bukannya TCP, maka -p udp
akan diperlukan.
Contoh ini menunjukkan bagaimana untuk menyekat sambungan SSH dari mana-mana alamat IP.
iptables -A INPUT -p tcp --dport ssh -j DROP
Negeri Penyambungan
Seperti yang telah disebutkan sebelumnya, banyak protokol akan memerlukan komunikasi dua hala. Sebagai contoh, jika anda mahu membenarkan sambungan SSH ke sistem anda, rantaian input dan output akan memerlukan peraturan yang ditambah kepada mereka. Tetapi, bagaimana jika anda hanya mahu SSH masuk ke sistem anda untuk dibenarkan? Tidak akan menambah peraturan pada rantaian output juga membolehkan percubaan SSH keluar?
Di sinilah negeri-negeri sambungan masuk, yang memberikan anda keupayaan yang anda perlukan untuk membolehkan komunikasi dua hala tetapi hanya membenarkan satu cara sambungan dibuat. Lihat contoh ini, di mana sambungan SSH DARI 10.10.10.10 dibenarkan, tetapi sambungan SSH KEPADA 10.10.10.10 tidak. Walau bagaimanapun, sistem ini dibenarkan untuk menghantar maklumat lanjut ke atas SSH selagi sesi telah ditubuhkan, yang menjadikan komunikasi SSH mungkin antara kedua-dua hos 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 peraturan iptables anda akan dibatalkan pada waktu berikutnya bahawa perkhidmatan iptables akan dimulakan semula kecuali anda menjalankan perintah untuk menyimpan perubahan. Perintah ini boleh berbeza bergantung pada pengedaran anda:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / perkhidmatan iptables save
Atau
/etc/init.d/iptables save
Perintah lain
Senaraikan peraturan iptables yang dikonfigurasikan semasa:
iptables -L
Menambah -v
pilihan akan memberi anda maklumat paket dan bait, dan menambah -n
akan menyenaraikan semuanya secara numerik. Dalam erti kata lain - nama host, protokol, dan rangkaian disenaraikan sebagai nombor.
Untuk mengosongkan semua peraturan yang dikonfigurasi, anda boleh mengeluarkan arahan flush.
iptables -F