Apache Tomcat Sertleştirme ve Güvenlik Kılavuzu
Yayınlanan: 2015-02-14En 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.

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.

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'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
kullanarakweb.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ü:

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.

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

Ç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.