Я не системный администратор, но мне приходится брать на себя некоторые обязанности в этой сфере.
У нас есть сервер Debian 9 Stretch для разработки.
Linux xxxxxx 4.9.0-9-amd64 # 1 SMP Debian 4.9.168-1 + deb9u2 (2019-05-13) x86_64 GNU / Linux
Он должен быть доступен через порт 443 с различных IP-адресов без каких-либо четких ограничений.
Текущее содержимое /etc/apache2/sites-enabled/000-default.conf
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
В корне документа у нас есть .htaccess с требуемым действующим пользователем и только один пользователь с паролем из 16 символов.
AuthUserFile /var/www/.htpasswd
AuthName "Admin"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
В /var/log/apache2/error.log я вижу ряд таких ошибок:
[Sun Mar 29 22:09:11.933648 2020] [php7:error] [pid 23376] [client 122.14.200.206:46917] script '/var/www/html/wuwu11.php' not found or unable to stat
Я думаю, что происходит то, что неавторизованные лица пытаются получить ответы через cURL на портах, отличных от 80 и 443, и сканируют известные вредоносные программы или уязвимости, а также, возможно, пытаются создать переполнение буфера путем наводнения сервера запросами.
Я понимаю, что это может быть недостаточно информации и слишком широкий вопрос, но:
1) Верно ли мое предположение, что ошибки представляют собой запросы с высокими значениями портов?
2) Есть ли простой способ сообщить серверу, что только порты 22 и 443 могут принимать любые соединения?
Нет, ваш Apache не прослушивает дополнительные произвольные порты, которые можно просканировать, как вы это поняли. Вы можете получить фактический запрос, сравнив error.log
отметки времени с access.log
отметки времени.
Порт на [client xx.xx.xx.xx:46917]
относится к исходный порт на стороне клиента.