В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить 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
Загрузите следующие файлы в папку
Если сертификат реле не установлен, вы получите ошибку при использовании таких команд, как 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
Какой у меня сертификат цепи?
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
EnableSendfile Off
Не забудьте перезапустить сервер Apache, чтобы все заработало
sudo systemctl restart apache2
Включите модуль заголовков 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>
Используется для того, чтобы заставить браузеры использовать HTTPS для подключения к веб-сайтам вместо HTTP.
Использование CSP может усложнить атаки и предотвратить многие распространенные XSS-атаки, а также является крайне рекомендуемым HTTP-заголовком.
Объявляет набор доверенных белых списков и типов ресурсов (например, JavaScript, CSS, изображения и т.д.), так что браузеры могут загружать ресурсы только из этого белого списка, тем самым предотвращая возможность злоумышленников принести извне ресурсы, содержащие вредоносный код.
"no-referrer-when-downgrade" будет регистрироваться только при переходе с HTTPS на HTTPS.
Проще говоря, это запись о последнем посещенном вами месте, которую можно использовать для повышения конфиденциальности.
"sameorigin" позволяет сайтам с одинаковым происхождением быть встроенными в iframe.
Это используется для того, чтобы гарантировать, что ваш контент не будет злонамеренно внедрен на другие веб-сайты, и избежать атак типа clickjacking.
Предотвращает фальсификацию Content-Type и не позволяет браузерам неверно интерпретировать форму файлов.
Обратите внимание, что этот атрибут применяется только к сценарию и стилю.
"1; mode=block" Включает фильтрацию XSS, чтобы браузер не отображал страницу, если обнаружит XSS-атаку.
Он может быть в значительной степени заменен Content-Security-Policy (CSP), но обеспечивает уровень защиты для браузеров, которые не поддерживают CSP.
Мы можем проверить веб-сайты на наличие вредоносных данных и файлов с помощью сайта проверки Google
Отчет о прозрачности Google
Введите URL-адрес для проверки
Мы можем использовать лаборатории SSL, предоставляемые Qualys, для проверки сертификата
Тест сервера SSL
Введите URL-адрес для проверки
Рекомендуется оценка не ниже B, а если возникнут проблемы, вы можете следовать подсказкам для внесения корректировок.
Для более продвинутого тестирования веб-безопасности, пожалуйста, обратитесь к моей предыдущей статье
Тест веб-безопасности Burp Suite
Спасибо, что дошли до конца этой статьи, надеюсь, она вам помогла.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.