Посібник із захисту та захисту Apache Tomcat

Практичний посібник із посилення та безпеки сервера Apache Tomcat із найкращими практиками.

Tomcat є одним із найпопулярніших серверів Servlet і JSP Container. Він використовується деякими з таких веб-сайтів із високим трафіком:

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

Нижче показано ринкову позицію Tomcat на сервері програм Java.

Джерело: Plumbr

Технічно ви можете використовувати Tomcat як зовнішній сервер для безпосереднього обслуговування запитів сайту. Однак у робочому середовищі ви можете використовувати деякі веб-сервери, такі як Apache, Nginx, як інтерфейс для маршрутизації запитів до Tomcat.

Використання веб-сервера для обробки запитів дає переваги в продуктивності та безпеці. Якщо ви використовуєте Apache HTTP як зовнішній веб-сервер, ви також повинні розглянути можливість захисту цього.

Конфігурація Tomcat за замовчуванням може відкрити конфіденційну інформацію, що допоможе хакеру підготуватися до атаки на програму.

Нижче наведено тестування в середовищі Tomcat 7.x, UNIX.

Аудиторія

Це розроблено для адміністраторів проміжного програмного забезпечення, підтримки програм, системних аналітиків або будь-кого, хто працює або хоче вивчити Tomcat Hardening and Security.

Добре знання команд Tomcat і UNIX є обов’язковим.

Примітки

Нам потрібен якийсь інструмент для перевірки заголовків HTTP для перевірки. Це можна зробити двома способами.

Якщо ви тестуєте програму з підключенням до Інтернету, ви можете використовувати наступні інструменти заголовків HTTP, щоб перевірити реалізацію.

А для інтрамережевої програми ви можете використовувати інструменти розробника Google Chrome, Firefox.

Як найкраща практика, ви повинні створити резервну копію будь-якого файлу, який збираєтеся змінити.

У цих інструкціях папка встановлення Tomcat буде називатися $tomcat.

Давайте пройдемо процедури зміцнення та захисту.

Видалити банер сервера

Видалення банера сервера з HTTP-заголовка є однією з перших речей, які потрібно зробити, оскільки посилення.

  Як встановити програми та ігри на Google TV

Банер сервера розкриває продукт і версію, які ви використовуєте, і призводить до вразливості до витоку інформації.

За замовчуванням сторінка, яку обслуговує Tomcat, відображатиметься так.

Давайте приховаємо деталі продукту та версії від заголовка сервера.

  • Перейдіть до папки $tomcat/conf
  • Змініть server.xml за допомогою vi
  • Додайте наступне до порту конектора
Server =” “

Приклад: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Збережіть файл і перезапустіть Tomcat. Тепер, коли ви отримуєте доступ до програми, ви повинні побачити порожнє значення для заголовка сервера.

Запуск Tomcat за допомогою диспетчера безпеки

Менеджер безпеки захищає вас від ненадійного аплету, який працює у вашому браузері.

Запускати Tomcat із менеджером безпеки краще, ніж без нього. У Tomcat є чудова документація Менеджер безпеки Tomcat.

Хороша річ у цьому полягає в тому, що вам не потрібно змінювати файл конфігурації. Це просто спосіб виконання файлу startup.sh.

Все, що вам потрібно зробити, це запустити tomcat з аргументом –security.

[[email protected]ekflare 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

Обслуговування веб-запитів через HTTPS є важливим для захисту даних між клієнтом і Tomcat. Щоб зробити вашу веб-програму доступною через HTTPS, вам потрібно запровадити сертифікат SSL.

Якщо припустити, що у вас уже є готове сховище ключів із сертифікатом, ви можете додати рядок нижче у файл server.xml у розділі Порт конектора.

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

Змініть назву та пароль файлу Keystore на свої.

  9 найкращих програм для управління охороною навколишнього середовища та безпекою (EHS).

Якщо вам потрібна допомога щодо процесу зберігання ключів і CSR, зверніться до цього посібника.

Застосувати HTTPS

Це можна застосувати, лише якщо у вас увімкнено SSL. Якщо ні, програма порушиться.

Після ввімкнення SSL було б добре примусово перенаправляти всі запити HTTP на HTTPS для безпечного зв’язку між користувачем і сервером програм Tomcat.

  • Перейдіть до папки $tomcat/conf
  • Змініть web.xml за допомогою vi
  • Додайте наступний перед синтаксисом
<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>
  • Збережіть файл і перезапустіть Tomcat

Можна вкрасти або маніпулювати сеансом веб-додатків і файлами cookie, не маючи захищених файлів cookie. Це позначка, яка вставляється в заголовок відповіді.

Це робиться шляхом додавання під рядок у розділі session-config файлу web.xml

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

Скріншот конфігурації:

Збережіть файл і перезапустіть Tomcat, щоб перевірити заголовок відповіді HTTP.

Запустіть Tomcat з непривілейованого облікового запису

Добре використовувати окремого непривілейованого користувача для Tomcat. Ідея полягає в тому, щоб захистити інші запущені служби в разі зламу будь-якого облікового запису.

  • Створіть користувача UNIX, скажімо tomcat
useradd tomcat
  • Зупиніть Tomcat, якщо він біжить
  • Змінити право власності $tomcat на користувача tomcat
chown -R tomcat:tomcat tomcat/

Запустіть Tomcat і переконайтеся, що він працює з користувачем tomcat

Видалити стандартні/небажані програми

За замовчуванням Tomcat постачається з наступними веб-програмами, які можуть або не потрібні у робочому середовищі.

Ви можете видалити їх, щоб зберегти їх чистими та уникнути будь-яких відомих ризиків безпеки за допомогою стандартної програми Tomcat.

  • ROOT – сторінка привітання за умовчанням
  • Документи – документація Tomcat
  • Приклади – JSP і сервлети для демонстрації
  • Менеджер, хост-менеджер – адміністрування Tomcat

Вони доступні в папці $tomcat/webapps

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

За замовчуванням tomcat налаштовано на завершення роботи на порту 8005.

  Як об'єднати документи Microsoft Word

Чи знаєте ви, що ви можете вимкнути екземпляр tomcat, виконавши telnet до IP: порту та видавши команду 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 #

Небезпечно!

Розумієте, конфігурація за замовчуванням призводить до високого ризику безпеки.

Рекомендується змінити порт вимкнення tomcat і команду за замовчуванням на щось непередбачуване.

  • Змініть наступне в server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – змініть інший порт, який не використовується

ВИКЛЮЧЕННЯ – Зміна на щось складне

екс-

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

Замінити стандартну сторінку 404, 403, 500

Наявність сторінки за умовчанням для не знайдено, заборонено, помилка сервера розкриває деталі версії.

Давайте подивимося на сторінку 404 за замовчуванням.

Для пом’якшення ви можете спочатку створити загальну сторінку помилки та налаштувати web.xml для переспрямування на загальну сторінку помилки.

  • Перейдіть до $tomcat/webapps/$application
  • Створіть файл error.jsp за допомогою редактора vi
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Перейдіть до папки $tomcat/conf
  • Додайте наступне у файл web.xml. Переконайтеся, що ви додали синтаксис перед
<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>
  • Перезапустіть сервер tomcat, щоб перевірити його

Набагато краще!

Ви також можете зробити це для java.lang.Exception. Це допоможе не розкривати інформацію про версію tomcat у разі будь-якого винятку java lang.

Просто додайте наступне в web.xml і перезапустіть сервер tomcat.

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

Сподіваюся, наведений вище посібник дає вам уявлення про захист Tomcat. Якщо ви хочете дізнатися більше про адміністрування Tomcat, перегляньте це онлайн курс.
Також дізнайтеся, як налаштувати WAS, щоб він не запитував пароль під час завершення роботи.