Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM

RedDeveloper
04.01.2023 06:43
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM

Как установить стек LAMP на виртуальную машину Azure Linux - Безопасность 5/5

В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.

Как установить LAMP Stack - MySQL 4/5 на Azure Linux VM

Далее мы покажем вам, как использовать шифрование с помощью SSL-сертификата для защиты ваших переводов.

Мы рекомендуем использовать Let's Encrypt для шифрования и автоматического обновления сертификатов

Как защитить Apache с помощью Let's Encrypt на Ubuntu 18.04 | DigitalOcean

Поскольку мы приобрели собственный сертификат, мы покажем, как настроить Apache вручную.

Обычно я устанавливаю пакет openssl.

sudo apt-get install openssl

Включите модуль Apache SSL

sudo a2enmod ssl

Создайте папку для сертификата и ключа

sudo mkdir /etc/apache2/ssl

Загрузите следующие файлы в папку

  • CertificateFile Сертификат
  • CertificateKeyFile Закрытый ключ
  • CertificateChainFile Сертификат ретрансляции
Если сертификат реле не установлен, вы получите ошибку при использовании таких команд, как curl.

Редактирование файла конфигурации сайта

sudo vi /etc/apache2/sites-available/your_site.conf

Мы используем постоянное перенаправление для перенаправления HTTP на HTTPS

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_site.your_domain

    Redirect permanent / https://your_site.your_domain/

</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName your_site.your_domain

    DocumentRoot /var/www/your_site

    <Directory /var/www/your_site>
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/your_site-error.log
    CustomLog ${APACHE_LOG_DIR}/your_site-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/your_certificate
    SSLCertificateKeyFile /etc/apache2/ssl/your_key
    SSLCertificateChainFile /etc/apache2/ssl/your_ca_bundle

</VirtualHost>

Вы можете проверить правильность конфигурационного файла с помощью этой команды

sudo apache2ctl configtest
Syntax OK

Не забудьте перезапустить сервер Apache, чтобы все заработало

sudo systemctl restart apache2

Вы можете проверить ошибки конфигурации сертификата с помощью What's My Chain Cert

Какой у меня сертификат цепи?

Конфигурация безопасности для Apache

sudo vi /etc/apache2/apache2.conf

Добавьте следующее в конец файла

# Do not allow .git version control files to be issued
<DirectoryMatch "^/.*/\.git/">
   Order deny,allow
   Deny from all
</DirectoryMatch>

# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
ServerSignature Off

# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
ServerTokens Prod

# Use memory-mapping to read files during delivery
# This memory-mapping sometimes yields a performance improvement. 
# But in some environments, it is better to disable the memory-mapping 
# to prevent operational problems
EnableMMAP Off

# Use the kernel sendfile support to deliver files to the client
# This sendfile mechanism avoids separate read and send operations, 
# and buffer allocations. But on some platforms or within some filesystems, 
# it is better to disable this feature to avoid operational problems
EnableSendfile Off

ServerSignature Off Предотвращает раскрытие версии ОС и Apache для атак хакеров.

EnableMMAP Off

  • На некоторых многопроцессорных системах файлы отображения памяти могут снижать производительность httpd
  • Удаление или усечение файлов может привести к аварийному завершению работы httpd из-за ошибок сегментации

EnableSendfile Off

  • Некоторые платформы могут иметь дефектную поддержку Sendfile, которая не обнаруживается системой компилятора
  • Linux, использующий IPv6 Sendfile, может вызвать ошибки контрольной суммы TCP и выгрузки на некоторых сетевых картах
  • Linux с процессором Itanium Sendfile может не справляться с файлами более 2 ГБ
  • DocumentRoot, смонтированный через NFS или SMB, может не использовать свой собственный кэш

Не забудьте перезапустить сервер Apache, чтобы все заработало

sudo systemctl restart apache2

Добавьте безопасные заголовки HTTP

Включите модуль заголовков Apache

sudo a2enmod headers

Редактирование или добавление .htaccess

sudo vi /var/www/your_site/.htaccess
Установите .htaccess так, чтобы он вступал в силу без перезапуска сервера Apache

Добавьте следующее

<IfModule mod_speling.c>
    CheckCaseOnly on
    CheckSpelling on
</IfModule>

<IfModule mod_headers.c>
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always unset "X-Powered-By"
Header unset "X-Powered-By"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set Content-Security-Policy " \
    default-src 'self'; \
    script-src 'unsafe-inline' *.your_doamin; \
"
Header set Referrer-Policy "no-referrer-when-downgrade"
Header set X-Frame-Options "sameorigin"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
</IfModule>

Set-Cookie

  • HttpOnly делает невозможным доступ javascript к cookies
  • Secure заставляет передавать файлы cookie только в среде HTTPS
Добавьте следующее以 Chrome 為例,在 Application 裡面的 Cookie 可以看的到這些資訊

Строгость-Транспорт-Безопасность

Используется для того, чтобы заставить браузеры использовать HTTPS для подключения к веб-сайтам вместо HTTP.

Content-Security-Policy

Использование CSP может усложнить атаки и предотвратить многие распространенные XSS-атаки, а также является крайне рекомендуемым HTTP-заголовком.

Объявляет набор доверенных белых списков и типов ресурсов (например, JavaScript, CSS, изображения и т.д.), так что браузеры могут загружать ресурсы только из этого белого списка, тем самым предотвращая возможность злоумышленников принести извне ресурсы, содержащие вредоносный код.

Referrer-Policy

"no-referrer-when-downgrade" будет регистрироваться только при переходе с HTTPS на HTTPS.

Проще говоря, это запись о последнем посещенном вами месте, которую можно использовать для повышения конфиденциальности.

X-Frame-Options

"sameorigin" позволяет сайтам с одинаковым происхождением быть встроенными в iframe.

Это используется для того, чтобы гарантировать, что ваш контент не будет злонамеренно внедрен на другие веб-сайты, и избежать атак типа clickjacking.

X-Content-Type-Options

Предотвращает фальсификацию Content-Type и не позволяет браузерам неверно интерпретировать форму файлов.

Обратите внимание, что этот атрибут применяется только к сценарию и стилю.

X-XSS-Protection

"1; mode=block" Включает фильтрацию XSS, чтобы браузер не отображал страницу, если обнаружит XSS-атаку.

Он может быть в значительной степени заменен Content-Security-Policy (CSP), но обеспечивает уровень защиты для браузеров, которые не поддерживают CSP.

Проверки безопасности

Мы можем проверить веб-сайты на наличие вредоносных данных и файлов с помощью сайта проверки Google

Отчет о прозрачности Google

Введите URL-адрес для проверки

Введите URL-адрес для проверки

Проверка SSL-сертификата

Мы можем использовать лаборатории SSL, предоставляемые Qualys, для проверки сертификата

Тест сервера SSL

Введите URL-адрес для проверки

Введите URL-адрес для проверки

Рекомендуется оценка не ниже B, а если возникнут проблемы, вы можете следовать подсказкам для внесения корректировок.

Рекомендуется оценка не ниже B а если возникнут проблемы вы можете следовать подсказкам

Для более продвинутого тестирования веб-безопасности, пожалуйста, обратитесь к моей предыдущей статье

Тест веб-безопасности Burp Suite

Спасибо, что дошли до конца этой статьи, надеюсь, она вам помогла.

Ссылки

  • Проблема потери настроек сертификата эстафеты | Goofy
  • XSS защита - настройка CSP script-src - Темная нить
  • Front End Warrior Basic Coach - X-Frame-Options, CSP frame-ancestors Site Inline Restrictions Implementation - Dark Implementation Thread
  • 10 лучших платформ для тестирования сайтов (SEO, SSL, безопасность, скорость, перенаправление)
  • Заметки о политике безопасности контента (CSP) - HackMD
  • Две директивы в настройках apache EnableMMAP/EnableSendfile 🔁🔁
  • ядро - Apache HTTP Server версии 2.4
  • Добавление безопасности в HTTP-заголовки
  • Day11-Remember to Wear a Helmet (1) - iT Bang Helps:: Помогаем решать проблемы и спасаем день IT-людей вместе
  • Content-Security-Policy - Вопросы информационной безопасности для HTTP-заголовков (2) | DEVCORE Dave Cole
  • Важность правильной реализации HTTP Strict Transport Security на вашем веб-сервере | Qualys Security Blog
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.