H2o: Larang akses tanpa host yang diminta

Dibuat pada 27 Apr 2018  ·  8Komentar  ·  Sumber: h2o/h2o

Saya memiliki beberapa host (domain) yang dikonfigurasi di server saya. Tetapi terkadang seseorang (mungkin bot) hanya mencoba alamat IP. Dalam hal ini, h2o tampaknya menggunakan host yang dikonfigurasi pertama sebagai default. Bagaimana saya bisa mengubah ini? Tujuan saya adalah agar h2o tidak menanggapi permintaan tanpa nama host (atau menjawab dengan 404).

Tentu saja, saya bisa melakukan ini dengan mruby... tapi saya yakin ada cara yang lebih sederhana/bersih, misalnya dengan mengonfigurasi perilaku mundur jika tidak ada aturan host yang cocok.

Semua 8 komentar

Saya tidak yakin apakah ini cara yang lebih bersih, tetapi solusi saya adalah meletakkan entri palsu di bagian atas, yang terinspirasi oleh _Mengapa menyiapkan "server SSL kosong default"?_ @ https://calomel.org/ nginx.html

listen: &listen80
  port: 80

# fake/invalid cert
listen: &listen443_blank
  port: 443
  ssl:
    <<: !file /etc/h2o/default_ssl.conf
    certificate-file: /etc/ssl/h2o/blank.cert.pem
    key-file: /etc/ssl/h2o/blank.key.pem

hosts:
  "_:80":
    listen: *listen80
    paths: &paths_blank
      "/":
        - mruby.handler: |
            acl {
              deny { ! addr.start_with?("127.0.0.1") && ! addr.start_with?("::1") }
            }
        - file.dir: /var/whatever

  "_:443":
    listen: *listen443_blank
    paths: *paths_blank

# The valid domains start from here

@csmk Saya telah mencoba dengan kode Anda dan mendapat pesan kesalahan "Terlarang" yang menampilkan halaman di Google Chrome.

Log akses ditampilkan:

123.123.123.123 - - [27/Apr/2018:12:59:00 +0000] "GET / HTTP/2" 403 9 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"

@proyb6 bisakah Anda menempelkan cuplikan konfigurasi Anda?

Nah, "Terlarang" adalah kesalahan yang dimaksud jika Anda belum mengonfigurasi domain yang valid.

Saya telah mengakses menggunakan alamat IP. Ini berfungsi sebagaimana dimaksud dengan menggunakan nama domain.

@csmk Terima kasih, berfungsi dengan baik... Masih: Jika ada yang memiliki solusi yang lebih sederhana, misalnya tanpa mruby, saya ingin mengetahuinya.

Jika ada yang punya solusi yang lebih sederhana, misalnya tanpa mruby

Saya menemukan solusi, dalam contoh saya di atas, hapus bagian mruby dan arahkan file.dir: ke direktori kosong di mana pengguna yang menjalankan H2O tidak memiliki akses. Respons H2O adalah 403.

Saya pikir solusi sederhana bisa di sisi firewall atau iptables?

Terima kasih sekali lagi, @csmk . Ini sepertinya pendekatan yang masuk akal untuk pergi tanpa mruby.

@proyb6 Firewall tipikal seperti iptables hanya melihat paket (dari IP mana, ke IP mana, port mana, protokol mana), tetapi tidak melihat konten lalu lintas HTTP. Dengan HTTPS, ia bahkan tidak dapat melihat detailnya, meskipun diinginkan. Oleh karena itu, ini sepertinya bukan solusi yang bisa diterapkan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat