我有在Ubuntu的Linux上安装的Apache 2.2.22服务器。
我在端口443上创build了一个虚拟主机,我希望所有的telnet指示都能在访问日志中列出。
所以例如,如果我telnet到端口443上的端口,我什么也没有写,它会在几秒钟后断开连接,然后在访问日志中显示一个指示。
192.168.1.140 - - [15/Jul/2013:11:40:19 +0300] "-" 408 0 "-" "-"
但如果我telnet端口443,键入一些垃圾文本,它断开我我看到没有迹象表明我试图连接的访问日志。
这是我在Apacheconfiguration文件中的访问日志指令:
CustomLog ${APACHE_LOG_DIR}/apache-ssl-access.log combined
我怎么才能修复它,即使当我telnet到该端口和键入垃圾,我仍然会看到有人试图连接的迹象?
我有reqtimeout模块启用。
谢谢。
原因是连接到端口443分两步处理。 第一个是SSL协商。 为了这个工作,客户端需要说有效的SSL。 第二步是实际的HTTP。 访问日志中只logging第二步。
因为,当你telnet时,你没有做一个成功的SSL协商,你永远不会到达第二步。
如果您只想validation日志是否按devise工作,则应该使用openssl s_client -connect your.server.name:443而不是telnet。 这将打开一个SSL会话到您的服务器。
如果你想logging甚至中止的连接,你可以添加
<IfModule mod_ssl.c> ErrorLog /var/log/apache2/ssl_engine.log LogLevel debug </IfModule>
到SSL虚拟主机。 如果你有很多的SSLstream量,这将成为一个巨大的日志; 我已经看到在设置这个小时之后磁盘已经满了。
你不能直接在Apache中这样做。 它不会将垃圾logging到error.log中。
但是,您可以创build一个防火墙规则,将日志事件生成到您的系统日志! 例如,首先创build一个新的防火墙链来做日志logging:
iptables -N LOGGER iptables -A LOGGER -j LOG --log-prefix 'New Connection: ' --log-level 4 iptables -A LOGGER -j ACCEPT
通过设置,您现在需要做两件事情:首先,告诉防火墙让所有数据包build立连接,而不需要logging。 其次,logging一切:
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -j LOGGER
而已!