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.
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.
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
- Bağlayıcı bağlantı noktasına 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.
Bir Güvenlik Yöneticisi ile Tomcat’i 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’in mükemmel belgeleri var Tomcat Güvenlik Müdürü.
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 Tomcat’i –security argümanı ile başlatmak.
[[email protected] 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. [[email protected] 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ındaki Connector port bölümünün altındaki satırın altına ekleyebilirsiniz.
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’i değiştirin
- 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.
[[email protected] 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 [[email protected] 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> <head> <title>Error Page</title> </head> <body> That's an error! </body> </html>
- $Tomcat/conf klasörüne gidin
- Aşağıdakileri web.xml dosyasına ekleyin. sözdiziminden önce eklediğinizden emin olun
<error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>403</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page>
- 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’e ekleyin ve Tomcat sunucusunu yeniden başlatın.
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page>
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, buna göz atın çevrimiçi kurs.
Ayrıca, WAS’ı kapatma sırasında parola sormayı durduracak şekilde nasıl yapılandıracağınızı buradan öğrenin.