Panduan Pengerasan dan Keamanan Apache Tomcat

Diterbitkan: 2015-02-14

Panduan praktis untuk memperkuat dan mengamankan Apache Tomcat Server dengan praktik terbaik.

Tomcat adalah salah satu server Kontainer Servlet dan JSP yang paling populer. Ini digunakan oleh beberapa situs web lalu lintas tinggi berikut:

  • LinkedIn.com
  • Dailymail.co.uk
  • Comcast.net
  • Wallmart.com
  • Reuters.com
  • Meetup.com
  • Webs.com

Bagan di bawah ini menunjukkan posisi pasar Tomcat di server aplikasi Java.

Tomcat-pasar-pangsa
Sumber: Plumbr

Secara teknis, Anda dapat menggunakan Tomcat sebagai server front-end untuk melayani permintaan situs secara langsung. Namun, dalam lingkungan produksi, Anda mungkin ingin menggunakan beberapa server web seperti Apache, Nginx sebagai front-end untuk merutekan permintaan ke Tomcat.

Menggunakan server web untuk menangani permintaan memberikan manfaat kinerja dan keamanan . Jika Anda menggunakan Apache HTTP sebagai server web front-end, maka Anda harus mempertimbangkan untuk mengamankannya juga.

Memiliki konfigurasi Tomcat default dapat mengekspos informasi sensitif, yang membantu peretas untuk mempersiapkan serangan terhadap aplikasi.

Berikut ini diuji pada Tomcat 7.x, lingkungan UNIX.

Hadirin

Ini dirancang untuk Administrator Middleware, Dukungan Aplikasi, Analis Sistem, atau siapa pun yang bekerja atau ingin mempelajari Pengerasan dan Keamanan Tomcat.

Pengetahuan yang baik tentang perintah Tomcat & UNIX adalah wajib.

Catatan

Kami memerlukan beberapa alat untuk memeriksa Header HTTP untuk verifikasi. Ada dua cara yang bisa Anda lakukan.

Jika menguji aplikasi yang menghadap ke Internet , maka Anda dapat menggunakan alat HTTP Header berikut untuk memverifikasi implementasinya.

  • Pemeriksa Tajuk HTTP
  • Target Peretas

Dan untuk aplikasi Intranet , Anda dapat menggunakan Google Chrome, alat pengembang Firefox.

Sebagai praktik terbaik, Anda harus membuat cadangan file apa pun yang akan Anda ubah.

Kami akan memanggil folder Instalasi Tomcat sebagai $tomcat di seluruh panduan ini.

Mari kita melalui prosedur pengerasan & pengamanan.

Hapus Spanduk Server

Menghapus Server Banner dari HTTP Header adalah salah satu hal pertama yang harus dilakukan sebagai pengerasan.

Memiliki spanduk server mengekspos produk dan versi yang Anda gunakan dan menyebabkan kerentanan kebocoran informasi.

Secara default, halaman yang dilayani oleh Tomcat akan ditampilkan seperti ini.

Tomcat-server-header

Mari sembunyikan detail produk dan versi dari header Server.

  • Buka folder $tomcat/conf
  • Ubah server.xml dengan menggunakan vi
  • Tambahkan berikut ke Connector port
 Server =” “

Mantan: -

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" Server =" " redirectPort="8443" />
  • Simpan file dan mulai ulang Tomcat. Sekarang, ketika Anda mengakses aplikasi, Anda akan melihat nilai kosong untuk header Server.
Tomcat-dihapus-server-header

Memulai Tomcat dengan Manajer Keamanan

Manajer Keamanan melindungi Anda dari applet tidak tepercaya yang berjalan di browser Anda.

Menjalankan Tomcat dengan manajer keamanan lebih baik daripada menjalankannya tanpa manajer keamanan. Tomcat memiliki dokumentasi yang sangat baik tentang Tomcat Security Manager.

Hal yang baik tentang ini adalah Anda tidak perlu mengubah file konfigurasi apa pun. Ini hanya cara Anda menjalankan file startup.sh .

Yang harus Anda lakukan adalah memulai Tomcat dengan argumen –security .

 [root@geekflare bin]# ./startup.sh -security Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TMPDIR: /opt/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Using Security Manager Tomcat started. [root@geekflare bin]#

Aktifkan SSL/TLS

Melayani permintaan web melalui HTTPS sangat penting untuk melindungi data antara klien dan Tomcat. Untuk membuat aplikasi web Anda dapat diakses melalui HTTPS, Anda perlu menerapkan sertifikat SSL.

Dengan asumsi, Anda sudah menyiapkan keystore dengan sertifikat, Anda dapat menambahkan baris di bawah ini di server. xml file di bawah bagian Connector port .

 SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"

Ubah nama file dan kata sandi Keystore dengan milik Anda.

Jika Anda memerlukan bantuan dengan proses keystore & CSR, lihat panduan ini.

Terapkan HTTPS

Ini hanya berlaku jika Anda mengaktifkan SSL. Jika tidak, itu akan merusak aplikasi.

Setelah Anda mengaktifkan SSL, akan baik untuk memaksa mengarahkan ulang semua permintaan HTTP ke HTTPS untuk komunikasi yang aman antara pengguna ke server aplikasi Tomcat.

  • Buka folder $tomcat/conf
  • Ubah web.xml dengan menggunakan vi
  • Tambahkan yang berikut sebelum sintaks </web-app>
 <security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
  • Simpan file dan mulai ulang Tomcat

Tambahkan bendera Aman & Hanya Http ke Cookie

Dimungkinkan untuk mencuri atau memanipulasi sesi aplikasi web dan cookie tanpa memiliki cookie yang aman. Ini adalah bendera yang disuntikkan di header respons.

Ini dilakukan dengan menambahkan di bawah baris di bagian session-config dari file web.xml

 <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config>

Tangkapan layar konfigurasi:

Tomcat-httponly

Simpan file dan mulai ulang Tomcat untuk memeriksa header respons HTTP.

Jalankan Tomcat dari Akun yang tidak memiliki hak istimewa

Ada baiknya menggunakan pengguna non-istimewa terpisah untuk Tomcat. Idenya di sini adalah untuk melindungi layanan lain yang berjalan jika ada akun yang disusupi.

  • Buat pengguna UNIX, katakanlah Tomcat
 useradd tomcat
  • Hentikan Tomcat jika berlari
  • Ubah kepemilikan $tomcat menjadi pengguna Tomcat
 chown -R tomcat:tomcat tomcat/

Mulai Tomcat dan pastikan itu berjalan dengan pengguna Tomcat

Hapus Aplikasi default/tidak diinginkan

Secara default, Tomcat hadir dengan aplikasi web berikut, yang mungkin diperlukan atau tidak di lingkungan produksi.

Anda dapat menghapusnya agar tetap bersih dan menghindari risiko keamanan yang diketahui dengan aplikasi default Tomcat.

  • ROOT – Halaman selamat datang default
  • Dokumen – Dokumentasi Tomcat
  • Contoh – JSP dan servlet untuk demonstrasi
  • Manajer, manajer tuan rumah – administrasi Tomcat

Mereka tersedia di bawah folder $Tomcat/webapps

 [root@geekflare webapps]# ls -lt drwxr-xr-x 14 tomcat tomcat 4096 Sep 29 15:26 docs drwxr-xr-x 7 tomcat tomcat 4096 Sep 29 15:26 examples drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 host-manager drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 manager drwxr-xr-x 3 tomcat tomcat 4096 Sep 29 15:26 ROOT [root@geekflare webapps]#

Ubah port SHUTDOWN dan Perintah

Secara default, Tomcat dikonfigurasi untuk dimatikan pada port 8005.

Tahukah Anda bahwa Anda dapat mematikan instance Tomcat dengan melakukan telnet ke IP: port dan mengeluarkan perintah SHUTDOWN?

 Chandans # telnet localhost 8005 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. SHUTDOWN Connection closed by foreign host. Chandans #

Berbahaya!

Anda lihat, memiliki konfigurasi default menyebabkan risiko keamanan yang tinggi.

Disarankan untuk mengubah port shutdown Tomcat dan perintah default menjadi sesuatu yang tidak dapat diprediksi.

  • Ubah yang berikut di server.xml
 <Server port="8005" shutdown="SHUTDOWN">

8005 – Ubah ke port lain yang tidak digunakan

SHUTDOWN – Ubah ke sesuatu yang rumit

Mantan-

 <Server port="8867" shutdown="NOTGONNAGUESS">

Ganti default 404, 403, 500 halaman

Memiliki halaman default untuk tidak ditemukan, dilarang, kesalahan server memperlihatkan detail versi.

Mari kita lihat halaman 404 default.

Tomcat-default-404-halaman

Untuk mengurangi, pertama-tama Anda dapat membuat halaman kesalahan umum dan mengonfigurasi web.xml untuk mengarahkan ulang ke halaman kesalahan umum.

  • Buka $Tomcat/webapps/$application
  • Buat file error.jsp menggunakan editor vi
 <html>
<kepala> 
<title>Halaman Kesalahan</title>
</head>
<body> Itu kesalahan! </tubuh>
</html>
  • Buka folder $tomcat/conf
  • Tambahkan berikut ini di file web.xml. Pastikan Anda menambahkan sebelum sintaks </web-app>
 <halaman-kesalahan> 
<error-code>404</error-code> 
<location>/error.jsp</location>
</halaman-kesalahan>
<halaman-kesalahan> 
<error-code>403</error-code> 
<location>/error.jsp</location>
</halaman-kesalahan>
<halaman-kesalahan> 
<error-code>500</error-code> 
<location>/error.jsp</location>
</halaman-kesalahan>
  • Mulai ulang server Tomcat untuk mengujinya
Tomcat-custom-error

Jauh lebih baik!

Anda dapat melakukan ini untuk java.lang.Exception juga. Ini akan membantu dalam tidak mengekspos informasi versi Tomcat jika ada pengecualian Java lang.

Cukup tambahkan berikut di web.xml dan mulai ulang server Tomcat.

 <halaman-kesalahan> 
<exception-type>java.lang.Exception</exception-type> 
<location>/error.jsp</location>
</halaman-kesalahan>

Saya harap panduan di atas memberi Anda ide untuk mengamankan Tomcat. Jika Anda ingin mempelajari lebih lanjut tentang administrasi Tomcat, lihat kursus online ini.
Juga, pelajari cara mengonfigurasi WS untuk berhenti meminta kata sandi selama shutdown di sini.