总结:文件/etc/modsecurity/modsecurity.conf SecRuleRemoveByID 981405行已经停止工作,我不知道为什么。
我pipe理一个在AWS上运行的虚拟Ubuntu主机,其操作系统版本是14.04.5 LTS。 除了基本的分配之外,还有less量的软件包被安装。 这些包括ntp , ssmtp , mailutils , apache2* , oracle-java8*和postgresql*包。 截至昨天,所有可用的软件包升级都已安装。
所以,主机正在运行一个mod_security的Apache web服务器。 我正在使用mod_security规则的默认设置,一些规则被注释掉了。 /etc/modsecurity/modsecurity.conf的内容是(删除了空行和注释):
SecRuleEngine On SecRequestBodyAccess On SecRule REQUEST_HEADERS:Content-Type "text/xml" \ "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML" SecRequestBodyLimit 13107200 SecRequestBodyNoFilesLimit 131072 SecRequestBodyInMemoryLimit 131072 SecRequestBodyLimitAction Reject SecRule REQBODY_ERROR "!@eq 0" \ "id:'200001', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2" SecRule MULTIPART_STRICT_ERROR "!@eq 0" \ "id:'200002',phase:2,t:none,log,deny,status:44, \ msg:'Multipart request body failed strict validation: \ PE %{REQBODY_PROCESSOR_ERROR}, \ BQ %{MULTIPART_BOUNDARY_QUOTED}, \ BW %{MULTIPART_BOUNDARY_WHITESPACE}, \ DB %{MULTIPART_DATA_BEFORE}, \ DA %{MULTIPART_DATA_AFTER}, \ HF %{MULTIPART_HEADER_FOLDING}, \ LF %{MULTIPART_LF_LINE}, \ SM %{MULTIPART_MISSING_SEMICOLON}, \ IQ %{MULTIPART_INVALID_QUOTING}, \ IP %{MULTIPART_INVALID_PART}, \ IH %{MULTIPART_INVALID_HEADER_FOLDING}, \ FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'" SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \ "id:'200003',phase:2,t:none,log,deny,msg:'Multipart parser detected a possible unmatched boundary.'" SecPcreMatchLimit 1000 SecPcreMatchLimitRecursion 1000 SecRule TX:/^MSC_/ "!@streq 0" \ "id:'200004',phase:2,t:none,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'" SecResponseBodyAccess On SecResponseBodyMimeType text/plain text/html text/xml SecResponseBodyLimit 524288 SecResponseBodyLimitAction ProcessPartial SecTmpDir /tmp/ SecDataDir /tmp/ SecAuditEngine RelevantOnly SecAuditLogRelevantStatus "^(?:5|4(?!04))" SecAuditLogParts ABIJDEFHZ SecAuditLogType Serial SecAuditLog /var/log/apache2/modsec_audit.log SecArgumentSeparator & SecCookieFormat 0 SecUnicodeMapFile unicode.mapping 20127 Include "/usr/share/modsecurity-crs/*.conf" Include "/usr/share/modsecurity-crs/base_rules/*.conf" Include "/usr/share/modsecurity-crs/optional_rules/*.conf"
加上一些SecRuleRemoveByID指令在最后,没有跟随他们。
直到几天前,这个设置工作正常,但是本周,我已经开始看到mod_security拒绝http请求,它触发了SecRuleRemoveByID伪指令SecRuleRemoveByID 981405应该已经失效的规则SecRuleRemoveByID 981405 。 为了使Apache正常工作,我必须编辑基本规则文件,以注释SecRuleRemoveByID先前禁用的规则。
我不知道为什么会发生这种情况。 没有人编了很久的mod_securityconfiguration文件。 有没有人有任何想法?
附加信息,以防万一它有用。 apache包的版本是:
apache2 2.4.7-1ubuntu4.18 apache2-bin 2.4.7-1ubuntu4.18 apache2-data 2.4.7-1ubuntu4.18 apache2-utils 2.4.7-1ubuntu4.18 libapache2-mod-evasive 1.10.1-2 libapache2-mod-security2 2.7.7-2 libapache2-modsecurity 2.7.7-2
所有这些的状态是“ii”。 至less9天没有升级。
我确实遇到了oracle-java8*包的问题; 自动执行的安全关键软件包更新两天前因为这些而失败。 我通过手动卸载这些来解决这个问题。 命令sudo apt-get update和sudo apt-get upgrade ; 并手动重新安装oracle-java8*包。 (这需要互动接受许可证,这可能会导致原来的问题。)他们的版本现在(所有状态是“ii”):
oracle-java8-installer 8u151-1~webupd8~0 oracle-java8-set-default 8u151-1~webupd8~0 oracle-java8-unlimited-jce-policy 8u151-1~webupd8~0
命令sudo apache2ctl -S的输出是(与configuration文件的域名和名称改变):
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:444 the.domain.name (/etc/apache2/sites-enabled/first.conf:2) *:445 the.domain.name (/etc/apache2/sites-enabled/second.conf:2) *:443 the.domain.name (/etc/apache2/sites-enabled/third.conf:2) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/etc/apache2/syslog:local1" Mutex ssl-cache: using_defaults Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults Mutex ssl-stapling: using_defaults Mutex proxy: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG Define: MODSEC_2.5 Define: MODSEC_2.7 User: name="www-data" id=33 Group: name="www-data" id=33