У меня есть приложение Django, размещенное на AWS.Я использую Elastic Beanstalk и использую файл .ebextensions/django.config
для ввода всех своих пользовательских настроек на стороне сервера.
У меня настроено ALLOWED_HOSTS
, чтобы, если кто-нибудь попытается подключиться к моему сайту из недопустимого заголовка узла, он получитзаблокирован ... Django.
Я получаю все виды писем с сообщениями об ошибках Django, на которых написано Invalid HTTP_HOST header: 123.456.789
.- по сути, боты / сканеры пытаются подключиться и / или загрузить вредоносный контент.
Я бы хотел заблокировать эти плохие запросы на стороне сервера, так как кажется, что этот дополнительный уровень блокировки более безопасен, и я нене нравится получать все электронные письма.
В Django docs они пишут, что «[они рекомендуют] настроить ваш веб-сервер, чтобы он проверял заголовки входящих HTTP-хостов».Я хотел бы сделать это в моем .ebextensions/django.config
файле.
Вот мой текущий .ebextensions/django.config
файл:
container_commands:
01_migrate:
command: "python manage.py migrate --noinput"
02_collectstatic:
command: "python manage.py collectstatic --noinput"
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: myapp/wsgi.py
aws:elasticbeanstalk:container:python:staticfiles:
/static/: static/
files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000644"
owner: root
group: root
content: |
WSGIApplicationGroup %{GLOBAL}
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</If>
Header always set Referrer-Policy no-referrer
Header always set Strict-Transport-Security "max-age=14400; includeSubdomains;"
Я полагаю, что это все настройки Apache.Я нашел этот SO-ответ на эту тему, в котором написано "Чтобы отклонять запросы без набора HOST, вы можете использовать:"
SetEnvIfNoCase Host .+ VALID_HOST
Order Deny,Allow
Deny from All
Allow from env=VALID_HOST
Однако я не уверен в том, что делает этот код (и если это то, что мне нужно), и как перевести его в .ebextensions.
В конечном итоге я хотел бы выяснить, что я могу добавить в свой файл .ebextensions, чтобы он проверял заголовки HTTP_HOST, прежде чем они достигнут Django.