Apache Tomcat Sertleştirme ve Güvenlik Kılavuzu

Yayınlanan: 2015-02-14

En iyi uygulamalarla Apache Tomcat Sunucusunu sağlamlaştırmak ve güvenliğini sağlamak için pratik bir kılavuz.

Tomcat, en popüler Servlet ve JSP Container sunucularından biridir. Aşağıdaki yüksek trafikli web sitelerinden bazıları tarafından kullanılır:

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

Aşağıdaki grafik, Tomcat'in Java uygulama sunucusundaki pazar konumunu göstermektedir.

tomcat-pazar payı
Kaynak: Plumbr

Teknik olarak, site isteklerini doğrudan sunmak için Tomcat'i bir ön uç sunucu olarak kullanabilirsiniz. Ancak, bir üretim ortamında, istekleri Tomcat'e yönlendirmek için Apache, Nginx gibi bazı web sunucularını ön uç olarak kullanmak isteyebilirsiniz.

İstekleri işlemek için bir web sunucusu kullanmak, performans ve güvenlik avantajları sağlar. Ön uç web sunucusu olarak Apache HTTP kullanıyorsanız, bunu da güvence altına almayı düşünmelisiniz.

Varsayılan Tomcat yapılandırmasına sahip olmak, bilgisayar korsanının uygulamaya yönelik bir saldırıya hazırlanmasına yardımcı olan hassas bilgileri açığa çıkarabilir.

Aşağıdakiler Tomcat 7.x, UNIX ortamında test edilmiştir.

Kitle

Bu, Ara Katman Yöneticisi, Uygulama Desteği, Sistem Analisti veya Tomcat Sertleştirme ve Güvenliğini öğrenmek isteyen veya çalışan herkes için tasarlanmıştır.

Tomcat & UNIX komutunun iyi bilinmesi zorunludur.

Notlar

Doğrulama için HTTP Başlıklarını incelemek için bazı araçlara ihtiyacımız var. Bunu yapmanın iki yolu vardır.

İnternete yönelik uygulamayı test ediyorsanız, uygulamayı doğrulamak için aşağıdaki HTTP Başlık araçlarını kullanabilirsiniz.

  • HTTP Üstbilgi Denetleyicisi
  • Hacker Hedefi

Ve bir Intranet uygulaması için Google Chrome, Firefox geliştirici araçlarını kullanabilirsiniz.

En iyi uygulama olarak, değiştirmek üzere olduğunuz herhangi bir dosyanın yedeğini almalısınız.

Bu yönergeler boyunca Tomcat Kurulum klasörünü $Tomcat olarak adlandıracağız.

Sertleştirme ve sabitleme prosedürlerinden geçelim.

Sunucu Afişini Kaldır

Server Banner'ı HTTP Header'dan kaldırmak, sertleştirme olarak yapılacak ilk şeylerden biridir.

Bir sunucu banner'ına sahip olmak, kullandığınız ürünü ve sürümü ortaya çıkarır ve bilgi sızıntısı güvenlik açığına yol açar.

Varsayılan olarak, Tomcat tarafından sunulan bir sayfa bu şekilde gösterilecektir.

tomcat-sunucu-başlığı

Sunucu başlığından ürün ve sürüm detaylarını gizleyelim.

  • $Tomcat/conf klasörüne gidin
  • vi kullanarak server.xml'i değiştirin
  • Connector port aşağıdakileri ekleyin
 Server =” “

Eski: -

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" Server =" " redirectPort="8443" />
  • Dosyayı kaydedin ve Tomcat'i yeniden başlatın. Şimdi, bir uygulamaya eriştiğinizde, Sunucu başlığı için boş bir değer görmelisiniz.
Tomcat-kaldırılan-sunucu başlığı

Tomcat'i bir Güvenlik Yöneticisi ile Başlatma

Güvenlik Yöneticisi, sizi tarayıcınızda çalışan güvenilmeyen bir uygulamadan korur.

Tomcat'i bir güvenlik yöneticisi ile çalıştırmak, bir güvenlik yöneticisi olmadan çalıştırmaktan daha iyidir. Tomcat, Tomcat Security Manager hakkında mükemmel belgelere sahiptir.

Bununla ilgili iyi olan şey, herhangi bir yapılandırma dosyasını değiştirmenize gerek olmamasıdır. Bu sadece startup.sh dosyasını çalıştırma şeklinizdir.

Tek yapmanız gereken –security argümanı ile başlatmak.

 [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]#

SSL/TLS'yi etkinleştir

İstemci ve Tomcat arasındaki verileri korumak için web isteklerini HTTPS üzerinden sunmak çok önemlidir. Web uygulamanızı HTTPS üzerinden erişilebilir kılmak için SSL sertifikası uygulamanız gerekir.

Sertifikayla birlikte hazır bir anahtar deponuz olduğunu varsayarsak, server. xml dosyası Connector port bölümü altında.

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

Anahtar deposu dosya adını ve parolasını kendinizle değiştirin.

Anahtar deposu ve CSR süreciyle ilgili yardıma ihtiyacınız varsa bu kılavuza bakın.

HTTPS'yi uygula

Bu, yalnızca SSL'yi etkinleştirdiğinizde geçerlidir. Değilse, uygulamayı bozacaktır.

SSL'yi etkinleştirdikten sonra, kullanıcı ile Tomcat uygulama sunucusu arasında güvenli iletişim için tüm HTTP isteklerini HTTPS'ye yönlendirmeye zorlamak iyi olur.

  • $Tomcat/conf klasörüne gidin
  • vi kullanarak web.xml değiştirin
  • </web-app> sözdiziminin önüne aşağıdakileri ekleyin
 <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>
  • Dosyayı kaydedin ve Tomcat'i yeniden başlatın

Çerez'e Secure & HttpOnly bayrağı ekle

Güvenli bir çerez olmadan web uygulaması oturumunu ve çerezleri çalmak veya değiştirmek mümkündür. Yanıt başlığına enjekte edilen bir bayraktır.

Bu, web.xml dosyasının session-config bölümünde satırın altına ekleyerek yapılır.

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

Yapılandırma ekran görüntüsü:

tomcat-httponly

Dosyayı kaydedin ve HTTP yanıt başlığını incelemek için Tomcat'i yeniden başlatın.

Tomcat'i ayrıcalıklı olmayan Hesaptan çalıştırın

Tomcat için ayrıcalığı olmayan ayrı bir kullanıcı kullanmak iyidir. Buradaki fikir, herhangi bir hesabın tehlikeye girmesi durumunda çalışan diğer hizmetleri korumaktır.

  • Bir UNIX kullanıcısı oluştur, tomcat diyelim
 useradd tomcat
  • Çalışıyorsa Tomcat'i durdurun
  • $ Tomcat sahipliğini kullanıcı Tomcat olarak değiştirin
 chown -R tomcat:tomcat tomcat/

Tomcat'i başlatın ve Tomcat kullanıcısı ile çalıştığından emin olun

Varsayılan/istenmeyen Uygulamaları Kaldır

Varsayılan olarak Tomcat, bir üretim ortamında gerekli olabilecek veya gerekmeyecek aşağıdaki web uygulamalarıyla birlikte gelir.

Tomcat varsayılan uygulamasıyla temiz tutmak ve bilinen herhangi bir güvenlik riskinden kaçınmak için bunları silebilirsiniz.

  • KÖK – Varsayılan karşılama sayfası
  • Dokümanlar – Tomcat belgeleri
  • Örnekler – Gösteri için JSP ve sunucu uygulamaları
  • Yönetici, ana bilgisayar yöneticisi – Tomcat yönetimi

$Tomcat/webapps klasörü altında bulunurlar.

 [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]#

SHUTDOWN bağlantı noktasını ve Komutu değiştir

Varsayılan olarak, Tomcat 8005 bağlantı noktasında kapatılacak şekilde yapılandırılmıştır.

IP: bağlantı noktasına telnet yaparak ve SHUTDOWN komutu vererek Tomcat örneğini kapatabileceğinizi biliyor musunuz?

 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 #

Tehlikeli!

Görüyorsunuz, varsayılan yapılandırmaya sahip olmak yüksek güvenlik riskine yol açar.

Tomcat kapatma bağlantı noktasını ve varsayılan komutu öngörülemeyen bir şeye değiştirmeniz önerilir.

  • Aşağıdakileri server.xml'de değiştirin
 <Server port="8005" shutdown="SHUTDOWN">

8005 - Kullanılmayan başka bir bağlantı noktasına geçin

KAPATMA – Karmaşık bir şeye geç

Eski-

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

Varsayılan 404, 403, 500 sayfayı değiştir

Bulunamadı, yasak, sunucu hatası için varsayılan sayfaya sahip olmak, sürüm ayrıntılarını ortaya çıkarır.

Varsayılan 404 sayfasına bakalım.

Tomcat-varsayılan-404-sayfa

Azaltmak için önce genel bir hata sayfası oluşturabilir ve web.xml'i genel bir hata sayfasına yönlendirecek şekilde yapılandırabilirsiniz.

  • $Tomcat/webapps/$application'a gidin
  • vi düzenleyicisini kullanarak bir error.jsp dosyası oluşturun
 <html>
<kafa> 
<title>Hata Sayfası</title>
</head>
<body> Bu bir hata! </body>
</html>
  • $Tomcat/conf klasörüne gidin
  • Aşağıdakileri web.xml dosyasına ekleyin. </web-app> sözdiziminden önce eklediğinizden emin olun
 <hata sayfası> 
<hata kodu>404</hata kodu> 
<konum>/error.jsp</location>
</hata sayfası>
<hata sayfası> 
<hata kodu>403</hata kodu> 
<konum>/error.jsp</location>
</hata sayfası>
<hata sayfası> 
<hata kodu>500</hata kodu> 
<konum>/error.jsp</location>
</hata sayfası>
  • Test etmek için Tomcat sunucusunu yeniden başlatın
tomcat-özel-hata

Çok daha iyi!

Bunu java.lang.Exception için de yapabilirsiniz. Bu, herhangi bir Java lang istisnası varsa, Tomcat sürüm bilgilerinin açığa çıkmamasına yardımcı olacaktır.

Aşağıdakileri web.xml ekleyin ve Tomcat sunucusunu yeniden başlatın.

 <hata sayfası> 
<istisna türü>java.lang.Exception</istisna türü> 
<konum>/error.jsp</location>
</hata sayfası>

Umarım yukarıdaki kılavuz size Tomcat'i güvence altına alma konusunda bir fikir verir. Tomcat yönetimi hakkında daha fazla bilgi edinmek istiyorsanız bu çevrimiçi kursa göz atın.
Ayrıca, WAS'ı kapatma sırasında parola sormayı durduracak şekilde nasıl yapılandıracağınızı buradan öğrenin.