Gyakorlati útmutató az Apache Tomcat Server keményítéséhez és biztonságossá tételéhez a legjobb gyakorlatokkal.
A Tomcat az egyik legnépszerűbb Servlet és JSP Container kiszolgáló. A következő nagy forgalmú webhelyek némelyike használja:
- LinkedIn.com
- Dailymail.co.uk
- Comcast.net
- Wallmart.com
- Reuters.com
- Meetup.com
- Webs.com
Az alábbi diagram a Tomcat piaci pozícióját mutatja a Java alkalmazásszerverben.
Forrás: Plumbr
Technikailag a Tomcat előtér-kiszolgálóként használhatja a webhelykérések közvetlen kiszolgálására. Éles környezetben azonban érdemes néhány webszervert, például az Apache-t, az Nginxet használni előtérként, hogy a kéréseket a Tomcathez irányítsa.
A webszerver használata a kérések kezelésére teljesítmény- és biztonsági előnyöket biztosít. Ha az Apache HTTP-t front-end webszerverként használja, akkor ennek is meg kell fontolnia annak biztosítását.
Az alapértelmezett Tomcat konfiguráció érzékeny információkhoz juthat, ami segít a hackereknek felkészülni az alkalmazás elleni támadásra.
A következőket Tomcat 7.x UNIX környezetben teszteltük.
Tartalomjegyzék
Közönség
Ezt a köztesszoftver-adminisztrátornak, alkalmazástámogatónak, rendszerelemzőnek vagy bárkinek, aki dolgozik, vagy szívesen tanulja meg a Tomcat keményítését és biztonságát.
A Tomcat és UNIX parancsok jó ismerete kötelező.
Megjegyzések
Szükségünk van valamilyen eszközre a HTTP-fejlécek ellenőrzéséhez. Ezt kétféleképpen teheti meg.
Internetre néző alkalmazás tesztelésekor a következő HTTP-fejléc-eszközöket használhatja a megvalósítás ellenőrzésére.
Intranet alkalmazáshoz pedig használhatja a Google Chrome és a Firefox fejlesztői eszközeit.
A legjobb gyakorlat szerint minden módosítani kívánt fájlról biztonsági másolatot kell készítenie.
Ebben az útmutatóban a Tomcat telepítési mappáját $tomcat néven fogjuk hívni.
Végezzük el a keményítési és rögzítési eljárásokat.
Távolítsa el a kiszolgáló szalaghirdetését
A kiszolgáló szalaghirdetésének eltávolítása a HTTP-fejlécből az egyik első lépés, amelyet meg kell erősíteni.
A szerver szalaghirdetése felfedi az Ön által használt terméket és verziót, és információszivárgási sebezhetőséghez vezet.
Alapértelmezés szerint a Tomcat által kiszolgált oldal így fog megjelenni.
Rejtsük el a termék és verzió részleteit a Szerver fejlécből.
- Lépjen a $tomcat/conf mappába
- Módosítsa a server.xml fájlt a vi használatával
- Adja hozzá a következőket a csatlakozási porthoz
Server =” “
Pl.: –
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" Server =" " redirectPort="8443" />
- Mentse el a fájlt, és indítsa újra a Tomcatet. Most, amikor hozzáfér egy alkalmazáshoz, a Server fejléc üres értékét kell látnia.
A Tomcat indítása biztonsági kezelővel
A Security Manager megvédi Önt a böngészőjében futó nem megbízható kisalkalmazásoktól.
A Tomcat biztonsági menedzserrel jobb futtatni, mint anélkül. A Tomcat kiváló dokumentációval rendelkezik Tomcat biztonsági menedzser.
Ebben az a jó, hogy nem kell módosítania egyetlen konfigurációs fájlt sem. Csak így futtatja a startup.sh fájlt.
Mindössze annyit kell tennie, hogy elindítja a tomcat -biztonsági érvvel.
[[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 engedélyezése
A webes kérések HTTPS-en keresztüli kiszolgálása elengedhetetlen az ügyfél és a Tomcat közötti adatok védelméhez. Ahhoz, hogy webalkalmazását HTTPS-en keresztül elérhetővé tegye, SSL-tanúsítványt kell megvalósítania.
Feltételezve, hogy már készen áll a kulcstár a tanúsítvánnyal együtt, hozzáadhatja az alábbi sort a server.xml fájlhoz a Connector port szakaszban.
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
Módosítsa a Keystore fájl nevét és jelszavát a sajátjával.
Ha segítségre van szüksége a kulcstár és CSR folyamathoz, tekintse meg ezt az útmutatót.
HTTPS kényszerítése
Ez csak akkor érvényes, ha engedélyezve van az SSL. Ha nem, akkor megszakítja az alkalmazást.
Ha engedélyezte az SSL-t, jó lenne minden HTTP-kérést átirányítani a HTTPS-re a biztonságos kommunikáció érdekében a felhasználó és a Tomcat alkalmazáskiszolgáló között.
- Lépjen a $tomcat/conf mappába
- Módosítsa a web.xml fájlt a vi használatával
- Adja hozzá a következőt a szintaxis előtt
<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>
- Mentse el a fájlt, és indítsa újra a Tomcatet
Adja hozzá a Secure & HttpOnly jelzőt a Cookie-hoz
Lehetőség van a webalkalmazás-munkamenet és a cookie-k ellopására vagy manipulálására biztonságos cookie nélkül. Ez egy zászló, amely a válaszfejlécbe kerül.
Ezt úgy teheti meg, hogy a web.xml fájl session-config szakaszában hozzáadja a sor alá
<cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config>
Konfigurációs képernyőkép:
Mentse el a fájlt, és indítsa újra a Tomcat programot a HTTP-válasz fejlécének vizsgálatához.
Futtassa a Tomcat-ot nem privilegizált fiókból
Érdemes külön, nem privilegizált felhasználót használni a Tomcathez. Az ötlet itt az, hogy megvédjük a többi futó szolgáltatást, ha valamelyik fiókot feltörik.
- Hozzon létre egy UNIX-felhasználót, mondjuk a tomcat-et
useradd tomcat
- Állítsa le a Tomcatet, ha fut
- Módosítsa a $tomcat tulajdonjogát a tomcat felhasználóra
chown -R tomcat:tomcat tomcat/
Indítsa el a Tomcatet, és győződjön meg arról, hogy fut a tomcat felhasználóval
Távolítsa el az alapértelmezett/nem kívánt alkalmazásokat
Alapértelmezés szerint a Tomcat a következő webalkalmazásokkal érkezik, amelyekre éles környezetben szükség lehet, vagy nem.
Törölheti őket, hogy tiszta maradjon, és elkerülje az ismert biztonsági kockázatokat a Tomcat alapértelmezett alkalmazással.
- ROOT – Alapértelmezett üdvözlőoldal
- Dokumentumok – Tomcat dokumentáció
- Példák – JSP és servletek a demonstrációhoz
- Menedzser, host-manager – Tomcat adminisztráció
A $tomcat/webapps mappában érhetők el
[[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]#
Változtassa meg a SHUTDOWN portot és a parancsot
Alapértelmezés szerint a tomcat úgy van beállítva, hogy a 8005-ös porton leálljon.
Tudja, hogy leállíthatja a tomcat példányt úgy, hogy egy telnet IP: portra lép, és kiadja a SHUTDOWN parancsot?
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 #
Veszélyes!
Látod, az alapértelmezett konfiguráció magas biztonsági kockázatot jelent.
Javasoljuk, hogy a tomcat shutdown portot és az alapértelmezett parancsot valami kiszámíthatatlanra módosítsa.
- Módosítsa a következőket a server.xml fájlban
<Server port="8005" shutdown="SHUTDOWN">
8005 – Váltás egy másik nem használt portra
LEÁLLÍTÁS – Válts valami bonyolultra
Volt-
<Server port="8867" shutdown="NOTGONNAGUESS">
Cserélje ki az alapértelmezett 404, 403, 500 oldalt
A nem található, tiltott, szerverhiba alapértelmezett oldala megjeleníti a verzió részleteit.
Nézzük az alapértelmezett 404-es oldalt.
A probléma enyhítése érdekében először létrehozhat egy általános hibaoldalt, és beállíthatja a web.xml fájlt, hogy átirányítsa az általános hibaoldalra.
- Nyissa meg a $tomcat/webapps/$application webhelyet
- Hozzon létre egy error.jsp fájlt a vi szerkesztővel
<html> <head> <title>Error Page</title> </head> <body> That's an error! </body> </html>
- Lépjen a $tomcat/conf mappába
- Adja hozzá a következőt a web.xml fájlhoz. Ügyeljen arra, hogy a szintaxis előtt adja meg
<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>
- Indítsa újra a tomcat szervert a teszteléshez
Sokkal jobb!
Ezt megteheti a java.lang.Exception esetén is. Ez segít abban, hogy ne fedjük fel a tomcat verzióinformációit, ha bármilyen java lang kivétel van.
Csak adja hozzá a következőt a web.xml fájlhoz, és indítsa újra a tomcat szervert.
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page>
Remélem, a fenti útmutató ötletet ad a Tomcat biztosításához. Ha többet szeretne megtudni a Tomcat adminisztrációjáról, nézze meg ezt online tanfolyam.
Itt megtudhatja, hogyan konfigurálhatja a WAS-t úgy, hogy ne kérjen jelszót leállítás közben.