GNU/Linux >> Belajar Linux >  >> Linux

Apakah tidak aman menggunakan file /etc/hosts sebagai pemblokir situs web dengan cara berikut?

Jawaban Singkat

Apakah aman untuk menggunakan /etc/hosts file sebagai situs web yang memblokir alamat "null"?

Saya berpendapat bahwa jawabannya adalah:Tidak.

Jika tidak ada alasan lain selain permintaan sebenarnya tidak "dibatalkan". Mereka masih permintaan aktif. Dan seperti yang ditunjukkan OP, karena permintaan adalah untuk host Internet yang sah, metode pintasan semacam ini untuk mengalihkan permintaan ke localhost dapat mengganggu pengujian kode jaringan di lingkungan pengembangan.

Mungkin metode yang lebih baik untuk memblokir lalu lintas ke dan dari host Internet tertentu adalah dengan menggunakan iptables yang merupakan antarmuka ke firewall kernel Linux. iptables adalah tabel aturan jaringan default untuk sebagian besar sistem GNU/Linux. Beberapa distro menggunakan ufw sebagai front-end untuk iptables .

Jika Anda ingin menggunakan iptables , inilah skrip sederhana yang akan DROP semua paket masuk dan keluar untuk daftar alamat IP atau nama host dengan satu alamat atau nama host per baris yang terdapat dalam file teks biasa yang disebut ~/blocking.txt

## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
    echo "Blocking all traffic to and from $i"    
    /sbin/iptables -I INPUT -s $i -j DROP
    /sbin/iptables -I OUTPUT -d $i -j REJECT
done

Contoh ~/blocking.txt

websiteiwanttoblock.com
anotherone.com
ip.add.of.net/mask

Jangan tempatkan localhost Anda Alamat IP dalam file ini.

Jawaban Lebih Panjang

Saat menetapkan ulang host Internet ke localhost di /etc/hosts file adalah teknik pintasan umum untuk memblokir host Internet yang tidak diinginkan, metode ini memiliki beberapa kelemahan keamanan yang serius.

Permintaan masuk

Permintaan masuk yang tidak sengaja dimulai melalui permintaan pengguna tertentu. Contoh paling umum adalah iklan di halaman web. Ayo ikuti paket yang masuk...

Pertama, saya memulai wireshark . Kemudian saya menempatkan perusahaan iklan Internet terbesar di /etc/hosts saya file dengan baris ini:

127.0.0.1   google.com

Dan kemudian nonaktifkan semua pemblokir iklan di browser saya, arahkan ke youtube dan putar video acak apa pun.

Jika saya memfilter paket saya, secara luas termasuk ruang alamat IP Google:

ip.addr==172.217.0.0/16

Saya masih menerima paket dari Google.

Apa artinya ini?

Artinya ada kemungkinan server jahat memasukkan malware yang mungkin dapat menyerang platform komputasi saya melalui paket yang masih berdatangan dan dikirim ke localhost. Penggunaan /etc/hosts daripada menjatuhkan atau menolak paket melalui aturan firewall, adalah langkah keamanan yang buruk. Itu tidak memblokir paket masuk dari kemungkinan host jahat, juga tidak memberikan umpan balik yang efektif untuk tujuan pemecahan masalah.

Permintaan keluar

Permintaan keluar yang dikirim ke localhost daripada ditolak atau dijatuhkan oleh aturan firwall masih diproses oleh kernel. Ada beberapa tindakan yang tidak diinginkan yang terjadi saat /etc/hosts digunakan daripada firewall:

  • Pemrosesan ekstra terjadi ketika paket keluar mengenai localhost. Misalnya, jika server web berjalan di host, paket yang dikirim ke localhost dapat diproses oleh server web.

  • Umpan balik dari permintaan keluar dapat membingungkan jika /etc/hosts diisi dengan domain tertentu.

iptables dapat menangani banyak aturan

Menurut beberapa:

ServerFault:Berapa banyak aturan yang dapat didukung iptables

Batas teoretis yang mungkin pada mesin 32-bit adalah 38 juta aturan. Namun, seperti yang tercantum dalam posting yang direferensikan, sebagai iptables daftar aturan diperluas begitu juga dengan memori kernel yang dibutuhkan.


[...] sambil mencari teknik pemblokiran situs web tingkat OS yang sederhana, saya menemukan solusi menggunakan file host linux [...]

Untuk memperjelas, /etc/hosts hanya memetakan nama host ke alamat IP. Entri dengan 127.0.0.1 tidak memblokir akses Anda ke server, itu hanya membuat komputer Anda secara lokal menyelesaikan nama tertentu itu menjadi 127.0.0.1 . Anda dan server masih dapat bertukar paket tanpa batasan.

Kalau saya sering pakai 127.0.0.1 untuk tujuan pengembangan web, apakah ini berbahaya? Tampaknya, paling tidak hal itu dapat mengacaukan proyek dev web yang sedang saya kerjakan?

Tidak, menyelesaikan ke 127.0.0.1 tidak menempatkan Anda dalam bahaya tambahan. Itu karena nama situs web dapat diselesaikan ke IP apa pun, termasuk 127.0.0.1 (kecuali server DNS memblokirnya). Jadi jika evilpage.example ingin menyelesaikan ke 127.0.0.1 , mereka cukup menentukan DNS masing-masing A merekam dan tidak harus bergantung pada /etc/hosts Anda . (Juga lihat:Apakah aman memiliki data DNS yang mengarah ke 127.0.0.1?)

Perhatikan bahwa menjalankan sesuatu di 127.0.0.1 dapat membuat Anda rentan terhadap serangan pengikatan ulang DNS.


Kecuali server web Anda berjalan di port 80 atau 443 di mesin lokal Anda (127.0.0.1 ), maka itu tidak akan memengaruhi proyek web Anda. Namun jika demikian, maka itu bisa menjadi gangguan. Jika Anda mengirim permintaan ke http://example.com/api/ , lalu akan mengirimkan permintaan ke http://127.0.0.1/api/ . Jika Anda memiliki sumber daya bernama /api/ , maka itu akan berakhir menerima permintaan dan dengan demikian mengganggu aplikasi Anda. Tetapi poin terbesar yang ingin saya tekankan yang disebutkan oleh @Arminus adalah bahwa /etc/hosts/ file adalah untuk memetakan alamat IP ke nama host. Jika Anda ingin memblokir host tertentu, saya sarankan memasang firewall seperti UFW atau menggunakan firewall Linux default, iptables. Berikut beberapa tautan untuk membantu Anda memulai:

UFW:https://www.linux.com/learn/introduction-uncomplicated-firewall-ufw

iptables:https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Buat File Host Khusus Pengguna Untuk Melengkapi /etc/hosts?

  3. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  1. Memahami file /etc/hosts di Linux

  2. Memahami File /etc/exports

  3. Apa hubungan antara direktori /etc/init.d dan /etc/rcX.d di Linux?

  1. Di file /etc/hosts/ saya di Linux/OSX, bagaimana cara melakukan subdomain wildcard?

  2. Perbedaan antara /etc/hosts dan /etc/resolv.conf

  3. Cara mengatur /etc/issues untuk menampilkan alamat IP untuk eth0