实验过程(要求截图): 启动Apache2 操作目的 启动Apache2 操作步骤 1、启动Apache2服务 service apache2 start 2、查看Apache2服务状态 service apache2 status 3、查看apache2版本 apache2 -v 隐藏版本信息 操作目的 隐藏Apache版本信息 加固方法 1、查看Apache配置文件/etc/apache2/conf-available/security.conf ServerSignature Off #屏蔽回显错误中的敏感信息 ServerTokens Prod #隐藏HTTP头部回显的版本信息 2、修改Apache配置文件/etc/apache2/conf-available/security.conf,改回默认配置: ServerSignature On ServerTokens OS 禁止目录遍历 操作目的 防止直接访问目录时由于找不到默认主页列出目录下文件 加固方法 查看Apache配置文件/etc/apache2/apache2.conf <Directory "/var/www/ "> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 删除Indexes即可实现。 禁止Apache访问Web目录之外的任何文件 操作目的 禁止Apache访问Web目录之外的任何文件。 加固方法 1、参考配置操作 编辑apache2.conf配置文件,“vim /etc/apache2/apache2.conf” <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 备注 1、Options: 设置目录特性 ALL:所有特性有效(缺省状态) None:所有目录特性无效 FollowSymLinks:允许浏览器访问文档根目录外的文档 ExecCGI:允许目录下执行CGI程序 Indexes:允许浏览器在没有index.html时显示目录 2、AllowOverride:设置配置文件覆盖 None:.htaccess文件完全忽略 ALL:使用.htaccess文件内的指令覆盖规则 3、Require:目录访问权限(2.4版本) require all denied:拒绝所有 require all granted:允许所有 require host xxx 允许某个IP/HOST 监听地址 操作目的 服务器有多个IP地址时,只监听提供服务的IP地址和端口 检查方法 查看Apache配置文件/etc/apache2/ports.conf 加固方法 修改Apache配置文件/etc/apache2/ports.conf,设置只监听80端口 Listen 80 运行权限设置 操作目的 为apache设置一个最小的权限的用户来运行 检查方法 查看Apache配置文件/etc/apache2/apache2.conf 加固方法 修改Apache配置文件/etc/apache2/apache2.conf,可以自定义一个较小权限的用户和组。 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} 禁用CGI 操作目的 如果服务器上不需要运行CGI程序,建议禁用CGI 加固方法 编辑配置文件/etc/apache2/conf-available/serve-cgi-bin.conf,把cgi-bin目录的配置和模块注释掉。 # <IfDefine ENABLE_USR_LIB_CGI_BIN> # ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # <Directory "/usr/lib/cgi-bin"> # AllowOverride None # Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # Require all granted </Directory> # </IfDefine> 日志审核 操作目的 检查Apache是否记录了错误信息和访问信息 检查方法 查看Apache配置文件/etc/apache2/apache2.conf 1、错误日志 ErrorLog logs/error_log #存放诊断信息和处理请求中出现的错误 LogLevel warn #设置错误日志中的信息的详细程度 2、访问日志 CustomLog logs/access_log common #记录服务器所处理的所有请求 LogFormat "%h %l %u %t \"%r\" %>s %b" common #设置日志格式 加固方法 添加ErrorLogFormat “[%t] [%I] [pid %P] %F: %E: [client %a] %M”LogLevel修改为notice 备注 LogLevel:控制登录到error_log的消息的数量。可能的值包括:7-调试(DEBUG)、6-信息(INFO)、5-通知(NOTICE)、4-警告(WARNING)、3-错误(ERR)、2-临界失败(CRIT)、1-警戒【必须 处理】(ALERT)、0-致命(EMERG)。 自定义错误信息 操作目的 自定义Apache返回的错误信息 检查方法 查看Apache配置文件/etc/apache2/conf-available/localized-error-pages.conf,检查是否使用ErrorDocument自定义错误信息 加固方法 修改Apache配置文件/etc/apache2/localized-error-pages.conf,自定义错误信息,可以设置返回指定字符串,文件或重定向地址,如下: ErrorDocument 500 "The server made a boo boo." ErrorDocument 404 /missing.html ErrorDocument 402 http://www.example.com/subscription_info.html 常见错误代码: 403 禁止访问;404 找不到页面;500是服务器内部错误 10、关闭TRACE 操作目的 防止TRACE方法被访问者恶意利用 加固方法 修改Apache配置文件/etc/apache2/apache2.conf,添加“TraceEnable Off” 注:适用于Apache 2.0以上版本i 备注 Trace是http请求中的一个方法,用此方法服务器会将客户端请求的消息原样返回给客户端,用作测试。 11、DDOS防御 操作目的 DDOS防御 加固方法 修改Apache配置文件/etc/apache2/apache2.conf: Timeout 10 KeepAlive On keepAliveTimeout 15