Как установить 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
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg

26.01.2023 14:14

Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной функции ngTemplateOutlet.

Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript

26.01.2023 13:19

Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего следующего сайта послужил начальный эпизод "Звездных войн"? 😁

Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot

26.01.2023 09:43

В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .

Начала с розового дизайна
Начала с розового дизайна

25.01.2023 11:01

Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских интерфейсов.

Шлюз в PHP
Шлюз в PHP

25.01.2023 10:51

API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.

14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps

25.01.2023 09:17

проверить тип данных используемой переменной, мы можем просто написать: your_variable=100