Tabel IP hanya memungkinkan akses host lokal

58

Saya telah berjuang selama bertahun-tahun untuk mendapatkan pemahaman yang kuat tentang iptables. Setiap kali saya mencoba dan membaca halaman buku, mata saya mulai berkaca-kaca.

Saya memiliki layanan yang saya hanya ingin mengizinkan localhost untuk memiliki akses.

Apa istilah (atau konfigurasi, jika seseorang merasa murah hati) yang harus saya Google untuk mengizinkan hanya host host lokal untuk memiliki akses ke port yang diberikan?

iptablessuck
sumber
2
Port apa yang digunakan layanan ini?
Bart De Vos
44344, ini adalah layanan yang ditulis di rumah
iptablessuck
1
Saya ingin mengganti nama panggilan sementara untuk 'iptablesrules' tetapi saya tidak bisa
Art Shayderov
@ Art, mereka hanya menghisap karena saya tidak mengerti mereka :)
iptablessuck
@iptablessuck sebenarnya sepertinya saya bisa. Tapi saya tidak akan menyebabkan saya tidak yakin saya akan dapat mengubahnya kembali :)
Art Shayderov

Jawaban:

65

Jika berdasarkan layanan Anda maksud port tertentu, maka dua baris berikut harus bekerja. Ubah "25" ke port apa pun yang ingin Anda batasi.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
Hipn
sumber
1
"Apa pun yang datang dari localhost ke port 25, terima" dan aturan kedua mengatakan "Jatuhkan apa pun yang masuk ke port 25". Baris pertama diproses terlebih dahulu, memungkinkan localhost, dan apa pun akan dijatuhkan oleh baris kedua. Iya?
iptablessuck
Itu benar!
Hyppy
4
@ Hippy, bagaimana Anda "membatalkan" ini?
tester
10
@tester ketik perintah-perintah itu lagi, tetapi ganti -Adengan-D
pepoluan
1
@Astronaut type 'sudo service iptables save' untuk menyimpan perubahan. lalu reboot. Anda dapat memeriksa apakah perubahan disimpan dengan mengetikkan 'sudo iptables -L'
Vinayak
30

Saya akan merekomendasikan:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Karena, paket yang ditujukan sendiri tidak harus memiliki 127.0.0.1 sebagai sumbernya, tetapi mereka semua 'masuk' dari loantarmuka.

Sekarang, jika Anda benar - benar ingin memahami iptableshal pertama yang harus Anda lakukan adalah mengunduh dan mencetak diagram yang baik menjelaskan hubungan netfiltertabel. Inilah dua yang hebat:

Akhirnya, baca banyak iptablesHOWTO. Contoh-contoh praktis akan membantu Anda mendapatkan kecepatan yang sangat cepat :)

pepoluan
sumber
ty! lomuncul untuk saya setelah menggunakan perintah-perintah ini dengan perintah terakhir dari tautan ini cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers
2
@Gracchus Saya merasa lebih mudah untuk menggunakan iptables-save, menyimpan output ke file, mengeditnya dengan vimatau emacs, dan mengimpor kembali file yang diedit menggunakaniptables-apply
pepoluan
Saya pikir tergantung pada kasus penggunaan, aturan kedua harus secara eksplisit MENOLAK bukannya jatuh diam-diam. Apakah itu diam-diam dijatuhkan sebagai praktik terbaik? Apakah REJECT aman digunakan?
Tn. Doomsbuster
1
@ tech-pro Ya, TOLAK aman untuk digunakan. Tergantung pada apa yang ingin Anda capai dan apakah Anda ingin sopan kepada orang-orang yang mencoba menggunakan pelabuhan. REJECT akan mengirim kembali paket TCP RST yang memberi tahu klien bahwa mesin sudah naik tetapi port ditutup. Jika Anda menutup port yang orang mungkin harapkan akan digunakan, maka TOLAKAN baik. Jika Anda hanya mengharapkan port scanner maka DROP lebih baik.
Law29
1
@ x-yuri Misalnya, saya menjalankan unboundDNS Cache, di depan dnscrypt-proxy. unboundmengikat 127.0.53.1:53, dan dnscrypt-proxymengikat 127.0.53.2:53. Saat aplikasi meminta proxy yang tidak terikat atau dnscrypt untuk menyelesaikan FQDN, tebak alamat sumber mana yang akan dihapus / dnscrypt-proxy merespons?
pepoluan