Ограничить доступ к веб-сайту по его IP-адресу

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

Ответ заключается в том, чтобы вообще не настраивать netcfg в файле preseed, а делать это в командной строке ядра с высоким и некритичным приоритетом.

Я использовал следующую конфигурацию menu.c32/vesamenu.c32:

label customauto
    menu label ^Automated install - Custom Auto
    kernel debian-installer/amd64/linux
    append auto=true priority=high netcfg/get_hostname?= netcfg/get_domain?=internal.domain preseed/url=tftp://<ip address to tftp server>/preseed.cfg vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet 

Заметки по тестированию :Использование следующего в командной строке ядра приводит к заданному поведению:

netcfg/get_hostname=hostnameустановит в качестве имени хоста системы то, что указано («имя хоста», в данном случае ), и вопрос не задается, даже если приоритет установлен на «высокий».

netcfg/get_hostname?=hostname(обратите внимание на ? и его позиция )установит значение по умолчанию («имя хоста», в данном случае ), но также задайте вопрос с указанным вами значением по умолчанию.

netcfg/get_hostname?=вообще не передаст значения по умолчанию и задаст вопрос. Я не думал, что это будет действительно изначально, но, похоже, это работает в моем тестировании!

То же самое относится и к строке netcfg/get_domain, и я предполагаю, что возникнут любые другие вопросы, но я не проверял другие вопросы, так как это была моя желаемая конфигурация.

В файле preseed я удалил все строки d -i для netcfg, и прямо в самом верху, прежде чем что-либо еще указано, я установил приоритет на критический:

d-i debconf/priority string critical

После завершения установки я убедился, что имя хоста задано правильно, /etc/hosts также настроен правильно -и что все остальные настройки в моем файле preseed были применены правильно, что позволяет мне поверить, что эта конфигурация хороша.

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

0
03.03.2021, 12:18
1 ответ

Это неправильно:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
Redirect / https://www.mysite.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

потому что он перенаправляет все . Вам нужно поместить туда свой 403 Deny. Затем скопируйте Redirect в свой 001-yoursite.confс соответствующим именем сервера. Затем http ://ваш сайт будет перенаправлен на https ://ваш сайт, но http ://IP-АДРЕС не будет принят, потому что будет достигнуто значение по умолчанию. Так будет http://любой другой сайт, как и должно быть.

Тогда вам также нужно добавить сервер по умолчанию в качестве SSL (Я думаю, это будет 000 -default -ssl.conf )с тем же отказом для *:443, так что https ://все, что будет возвращено, если только "независимо" не совпадает с именем вашего сервера, таким образом попадая в 001-yoursite-ssl.conf.

Вам не нужно указывать DocumentRoot , если все, что вы делаете, это выдает 403 Forbidden. И вам, вероятно, не нужно возиться с журналом ошибок и журналом доступа, в любом случае это будет просто трафик ботов (вы можете определить очень минимальный формат журнала доступа _, если он вам действительно нужен -просто исходный IP-адрес и возможно, пользовательский -агент для классификации ботов ).

0
18.03.2021, 22:27

Теги

Похожие вопросы