我不是系统管理员,但我必须承担该领域的一些职责。
我们有一个用于开发用途的 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
它必须能够从各种 IP 地址通过端口 443 访问,并且不受任何明确限制。
/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
我认为正在发生的事情是,未经授权的人员试图通过 80 和 443 以外的端口上的 cURL 获取响应,并正在扫描已知的恶意软件或漏洞,并且可能试图通过向服务器发送大量请求来造成缓冲区溢出。
我意识到这可能是信息不足且问题太宽泛,但是:
1)我猜测错误代表具有高端口值的请求,这是否正确?
2)有没有简单的方法可以告诉服务器只有端口 22 和 443 可以接受任何连接?
答案1
不,您的 Apache 并没有像您所察觉的那样监听其他可能被扫描的任意端口。您可以通过比较时间戳error.log
与access.log
时间戳来获取实际使用的请求。
端口[client xx.xx.xx.xx:46917]
是指客户端的源端口。