Bagaimana cara memblokir akses ke file agar tidak dilayani oleh Tomcat?

10

Kami memiliki beberapa server kucing jantan dan kami baru saja menemukan bahwa beberapa file yang kami tidak ingin publik memiliki akses ke file-file itu. Untuk memberi contoh:

Katakanlah kita memiliki folder / var / www / html / yang kami terbitkan melalui kucing jantan, tetapi kami tidak ingin mengekspos /var/www/html/conf/dbinfo.txt. Saat ini orang dapat mengunjungi www.thissite.com/conf/dbinfo.txt dan mereka dapat melihat banyak hal. Saya ingin dapat memblokirnya sehingga tidak menunjukkannya tetapi memungkinkan untuk dibaca oleh kucing jantan itu sendiri.

Bantuan apa pun dihargai.

Geo
sumber
Ada banyak jawaban bagus, tetapi yang paling mudah dan lebih mudah di lingkungan produksi kami adalah yang diposting pada 24 Juni 2009.
Geo
Terima kasih atas masukan Anda, saya berharap untuk mendapatkan suara sebelum menerimanya sebagai jawaban, karena ada orang lain dengan suara juga. Terima kasih!
Geo

Jawaban:

5

Akses file Tomcat dikendalikan oleh bagian kendala keamanan WEB-INF / web.xml.

Anda dapat memblokir confseperti ini:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>HTTP-Protected-Resource-1</web-resource-name>
        <description>Description here</description>
        <url-pattern>/conf/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>NOSOUPFORYOU</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>DEFAULT</auth-method>
    <realm-name>NOACCESSFORANYONE</realm-name>
</login-config>
<security-role>
    <role-name>NOSOUPFORYOU</role-name>
</security-role>

Jika Anda menggunakan apache untuk menyajikan konten statis, ini tidak akan berfungsi karena apache akan melayani file conf sebelum tomcat mendapatkan URL. Dalam kasus tersebut, Anda harus menyelesaikan ini melalui file konfigurasi http apache.

sal
sumber
4

Mengapa tidak menyimpannya di luar struktur direktori web Anda? Kami tidak pernah memasukkan apa pun di bawah / var / www / html / yang kami tidak ingin ditemukan pengguna.

Bip bip
sumber
4

Halo untuk semua SysAdmin dan Pekerja IT di pos ini. Terima kasih atas tanggapan Anda. Banyak jawaban untuk pertanyaan saya dapat diterima tetapi yang ini paling cocok untuk lingkungan produksi kami.

Baik. Untuk memblokir direktori atau file di dalam virtual host di server.xml Anda hanya perlu menambahkan kode berikut ke server.xml di direktori tomcat / conf.

Sebelum:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

Setelah:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

Jadi jawaban pertanyaannya adalah tambahkan baris berikut:

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
Geo
sumber
2

Nasihat nasihat. Setelah Anda memperbaiki izin. Ubah semua kata sandi, dan pastikan PASTI tidak ada cache google.

Joseph Kern
sumber
Terima kasih! sudah diperbaiki sekarang. Saya hanya ingin tahu apakah ada perbaikan yang lebih baik di luar sana. Jika saya tidak mendapatkan balasan, saya akan memposting perbaikannya. Terima kasih lagi.
Geo
2

Biasanya informasi konfigurasi (seperti informasi koneksi basis data, ...) disimpan dalam file di bawah folder WEB-INF dari file WAR yang digunakan untuk Tomcat. File di bawah WEB-INF tidak dapat diakses oleh klien.

John Meagher
sumber
0

Memiliki masalah yang sama, tetapi saya tidak dapat melihat bagaimana jawaban yang diterima benar-benar berfungsi. Katup yang digunakan di sini berlaku untuk SELURUH webapp. Bukan bagian dari itu. Jadi saya berasumsi bahwa dalam kasus ini setelah itu tidak dapat mengenali konteksnya sebagai mewakili webapp, itu hanya mengabaikan arahan dan melemparkan beberapa komentar dalam file log.


sumber
0

Anda dapat memblokir direktori dalam akses publik melalui file server.xml

Tambahkan baris ini ke file server.xml itu

    <Context path="/opt/tomcat7/webapps/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Context path="/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

kemudian akses http: // localhost: 8080 / contoh maka itu ditampilkan sebagai kesalahan 404 halaman, yaitu) berarti diblokir

Linux Sridharan
sumber