Apache的安全配置
- 格式:docx
- 大小:20.73 KB
- 文档页数:7
Apache服务器安全配置基线中国移动通信有限公司管理信息系统部2012年 04月备注:1.若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表格。
目录第1章概述 (4)1.1目的 (4)1.2适用范围 (4)1.3适用版本 (4)1.4实施 (4)1.5例外条款 (4)第2章日志配置操作 (5)2.1日志配置 (5)2.1.1审核登录 (5)第3章设备其他配置操作 (6)3.1访问权限 (6)3.1.1禁止访问外部文件 (6)3.2防攻击管理 (6)3.2.1错误页面处理 (7)3.2.2目录列表访问限制 (7)3.2.3拒绝服务防范 (8)3.2.4删除无用文件 (8)3.2.5隐藏敏感信息 (9)3.2.6Apache账户安全* (9)3.2.7限制请求消息长度 (10)第4章评审与修订 (11)第1章概述1.1目的本文档规定了中国移动通信有限公司管理信息系统部门所维护管理的Apache服务器应当遵循的安全性设置标准,本文档旨在指导系统管理人员进行Apache服务器的安全配置。
1.2适用范围本配置标准的使用者包括:服务器系统管理员、应用管理员、网络安全管理员。
本配置标准适用的范围包括:中国移动总部和各省公司信息化部门维护管理的Apache 服务器系统。
1.3适用版本2.0.x、2.2.x版本的Apache服务器。
1.4实施本标准的解释权和修改权属于中国移动集团管理信息系统部,在本标准的执行过程中若有任何疑问或建议,应及时反馈。
本标准发布之日起生效。
1.5例外条款欲申请本标准的例外条款,申请人必须准备书面申请文件,说明业务需求和原因,送交中国移动通信有限公司管理信息系统部进行审批备案。
第2章日志配置操作2.1日志配置2.1.1审核登录第3章设备其他配置操作3.1访问权限3.1.1禁止访问外部文件3.2防攻击管理3.2.1错误页面处理3.2.2目录列表访问限制3.2.3拒绝服务防范3.2.4删除无用文件3.2.5隐藏敏感信息3.2.6Apache账户安全*3.2.7限制请求消息长度范文范例指导参考第4章评审与修订本标准由中国移动通信有限公司管理信息系统部定期进行审查,根据审视结果修订标准,并颁发执行。
Apache下关于虚拟主机的配置关于虚拟主机的概述:配置虚拟主机主要应用场景:多站点访问,一个服务器放置了多个站点服务。
主要的三种配置方法:1、基于IP 2、基于端口3、基于主机名步骤详解:1.虚拟主机使用的话,必须将中心服务关闭,在/etc/httpd/conf/httpd.conf文件里,将DocumentRoot一行注释掉来关闭中心服务。
2.可以在httpd.conf文件最后面直接添加虚拟主机的配置内容,也可以在/etc/httpd/conf.d/下面创建一个自己的配置文件,如:my.conf文件。
3.my.conf文件配置详解1)基于IP配置<VirtualHost 192.168.0.112:80>ServerName DocumentRoot "/www/"</VirtualHost><VirtualHost 192.168.0.113:80>ServerName DocumentRoot "/www/"</VirtualHost>以上2个虚拟主机配置的IP分别为192.168.0.113和192.168.0.112,端口同为80端口。
这样在浏览器分别输入不同的ip或域名时就会访问到不同的站点。
Tips:如果只有一块网卡可以同过ipaddr add 192.168.0.112 dev eth0来添加辅助ip。
如果是域名方式访问,还需要在windows和linux下的hosts文件里面自行添加域名解析。
关于辅助ip的设置:ipaddr add 192.168.0.112/24 dev eth0这是为网卡设置一个辅助ip。
假如一个网卡的ip地址为192.168.0.22,执行上面的命令,在用ifconfig 查看,会发现有两个ip地址,而192.168.0.22称为主地址(Primary IP address),而192.168.0.112称为辅助地址(secondary IP address),一块网卡是允许有多个IP地址的,所以就算再多添加几个secondary IP 也是合法行的。
Linux下Apache的安装与配置⼀、编译安装1、解决依赖关系⼆、后续操作1、启动httpd两种⽅法:第⼀种、/usr/local/apache/bin/apachectl start第⼆种⽅法:先修改http.pid⽂件位置打开配置⽂件增加⼀⾏vim /etc/httpd/httpd.conf 增加PidFile “/var/run/httpd.pid”为了启动httpd更加⽅便,#!/bin/bash## httpd Startup script for the Apache HTTP Server## chkconfig: - 85 15# description: Apache is a World Wide Web server. It is used to serve \# HTML files and CGI.# processname: httpd# config: /etc/httpd/conf/httpd.conf# config: /etc/sysconfig/httpd# pidfile: /var/run/httpd.pid# Source function library.. /etc/rc.d/init.d/functionsif [ -f /etc/sysconfig/httpd ]; then. /etc/sysconfig/httpdfi# Start httpd in the C locale by default.HTTPD_LANG=${HTTPD_LANG-"C"}# This will prevent initlog from swallowing up a pass-phrase prompt if# mod_ssl needs a pass-phrase from the user.INITLOG_ARGS=""# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server# with the thread-based "worker" MPM; BE WARNED that some modules may not# work correctly with a thread-based MPM; notably PHP will refuse to start.# Path to the apachectl script, server binary, and short-form for messages.apachectl=/usr/local/apache/bin/apachectlhttpd=${HTTPD-/usr/local/apache/bin/httpd}prog=httpdpidfile=${PIDFILE-/var/run/httpd.pid}lockfile=${LOCKFILE-/var/lock/subsys/httpd}RETVAL=0start() {echo -n $"Starting $prog: "LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONSRETVAL=$?echo[ $RETVAL = 0 ] && touch ${lockfile}return $RETVAL}stop() {echo -n $"Stopping $prog: "killproc -p ${pidfile} -d 10 $httpdRETVAL=$?echo[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}}reload() {echo -n $"Reloading $prog: "if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; thenRETVAL=$?echo $"not reloading due to configuration syntax error"failure $"not reloading $httpd due to configuration syntax error"elsekillproc -p ${pidfile} $httpd -HUPRETVAL=$?fiecho}# See how we were called.case "$1" instart)start;;stop)stop;;status)status -p ${pidfile} $httpdRETVAL=$?;;restart)stopstart;;condrestart)if [ -f ${pidfile} ] ; thenstopstartfi;;reload)reload;;graceful|help|configtest|fullstatus)$apachectl $@RETVAL=$?;;*)echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1esacexit $RETVAL将以上代码加⼊到vim /etc/init.d/httpd中⽽后为此脚本赋予执⾏权限:chmod +x /etc/rc.d/init.d/httpd加⼊服务列表:chkconfig --add httpd给3,5启动chkconfig --level 3,5 httpd on最后加路径将 export PATH=$PATH:/usr/local/apache/binvim /etc/profile.d/httpd.sh完成后重新登录就可以了。
APACHE安装配置说明⼀、软件下载⼆、环境检查# rpm -qa|grep zlibzlib-devel-1.2.3-3zlib-1.2.3-3# rpm -qa|grep sslopenssl-devel-0.9.8b-10.el5openssl-0.9.8b-10.el5如果需要依赖包,安装其对应的devel包即可,此处仅⽤到zlib和ssl。
另,如果有httpd包,要先卸载掉或停⽌其服务。
三、编译安装1、针对安装⽬的的说明(来⾃INSTALL⽂件)如果是开发者则使⽤此选项,--with-included-apr利于连接apache的代码或者是调试apache,其消除了由于版本或者编译中跟APR或者APR-util代码产⽣的不匹配;如果从⼦版本编译apache,要先运⾏buildconf(需要Python,GNU autoconf和libtool),然后运⾏configure。
发⾏包不⽤。
如果要在FreeBSD5.4之前编译时包含apache的threaded MPM,需要使⽤--enable-threads和--with-mpm 参数在Mac上编译⼦版本,要使⽤GNU Libtool 1.4.2及以上版本2、关于SSL加密和正则表达式(来⾃⽂件README)Apache2.0及以上版本在⽬录modules/ssl/下包含了mod_ssl模块⽤于配置和监听ssl⽹络接⼝的连接。
(另外,⼀些apr-util版本在⽬录srclib/apr-util/ssl/下提供了ssl⽹络接⼝)带有单词crypto的包的名字,可能包含openssl加密库的⽬标代码。
如果apache的加密功能不理想或者要排除再重分配,则可以使⽤包的名字包含nossl的发布包。
Apache使⽤PCRE包包含的正则表达式。
3、对configure参数的说明配置帮助表:-h, --help显⽰帮助信息display this help and exit--help=short ⽤short参数将只显⽰正在运⾏的当前脚本的选项,⽽不能列出适⽤于Apache配置脚本所运⾏的外部配置脚本的选项display optionsspecific to thispackage--help=recursive 使⽤recursive参数将显⽰所有程序包的简短描述display the shorthelp of all theincluded packages-V, --version显⽰版本display version information and exit-q, --quiet, --silent不显⽰checking……信息do notprint`checking...' messages--cache-file=FILE在指定⽂件中存储测试结果cache test results in FILE [disabled]-C, --config-cache 在⽂件config.cache中存储测试结果alias for `--cachefile=config.cache'-n, --no-create configure脚本运⾏结束后不输出结果⽂件,常⽤于正式编译前的测试。
Apache常用模块和参数1Apache服务配置指令1.1基本配置命令AccessFileName语法AccessFileName filename默认值AccessFileName .htaccess作用域server config, virtual host此命令是针对目录的访问控制文件的名称;AddDefaultCharset语法AddDefaultCharset On|Off|charset默认值AddDefaultCharset Off作用域server config, virtual host, directory, .htaccess用于指定默认的字符集,在HTTP的回应信息中,若在HTTP头中未包含任何关于内容字符集类型的参数时,此指令指定的字符集添加到HTTP头中,此时将覆盖网页文件中通过META 标记符所指定的字符集.默认字符集为: AddDefaultCharset UTF-8 若显示中文时出现乱码,解决方法是将字符集设置为GB2312,即: AddDefaultCharset GB2312DefaultType语法DefaultType MIME-type默认值DefaultType text/plain作用域server config, virtual host, directory, .htaccess服务器不知道文件类型时,用缺省值通知客户端;DocumentRoot设置Apache提供文件服务的目录;ErrorDocument设置当有问题发生时,Apache所做的反应;ForceType此指令强制所有匹配的文件被当作在MIME-type中指定的Content-Type来伺服。
比如说,如果您有一个包含大量GIF文件的目录,可您又不想全都为它们加上".gif"扩展名的话,您可以这样做:型的扩展名。
你可以通过使用"None"覆盖任何ForceType设置:<IfModule>使用不包含在Apache安装中的模块的命令Include包含其它的配置文件Listen默认值:80Listen命令告诉服务器接受来自指定端口或者指定地址的某端口的请求,如果listen仅指定了端口,则服务器会监听本机的所有地址;如果指定了地址和端口,则服务器只监听来自该地址和端口的请求Options控制某个特定目录所能使用的服务器功能;其值有:None:表示只能浏览,FollowSymLinks:允许页面连接到别处,ExecCGI:允许执行CGI,MultiViews:允许看动画或是听音乐之类的操作,Indexes:允许服务器返回目录的格式化列表,Includes:允许使用SSI。
apache2 实用安装与配置1.Apache 的安装Apache 的安装无外乎两种方式: 源代码安装和DEB包安装。
这两种安装类型各有特色,DEB包安装不需要编译,而源代码安装则需要先配置编译再安装,DEB包安装在一个固定的位置下,选择固定的模块,而源代码安装则可以让你选择安装路径,选择你想要的模块。
本文主要介绍DEB安装方式。
系统:GNU/Linux Debian/etchApache当前版本: 2.0.55-41.1 1. 安装:使用以下命令安装:tony@tonybox:~$sudo aptitude updatetony@tonybox:~$sudo aptitude install apache2 apache2-utils其中apache2-utils提供了我们在配置维护过程中非常有用的一些工具安装完成后,可以使用下面的命令启动Apache 服务:tony@tonybox:~$ sudo /etc/init.d/apache2 start停止Apache服务则是:tony@tonybox:~$ sudo /etc/init.d/apache2 stop也可以只接用kill 命令强制杀死apache2进程tony@tonybox:~$ sudo killall apache2如有需要, 可以通过rcconf来控制是否在系统启动是加载Apache 服务启动完成后打开浏览器, 使用URL http://localhost/ 来访问已经启动的Apache服务器, 服务器将会将会跳转到http://localhost/apache2-default/, 向浏览器返回一个Apache安装成功的页面.注: 这取决于/etc/apache2/sites-available/default 配置文件中, 是否取消了RedirectMatch ^/$ /apache2-default/行的注释1.22. 配置文件说明在Debian下, 安装完成后, 软件包为我们提供的配置文件位于/etc/apache2目录下:tony@tonybox:/etc/apache2$ ls -ltotal 72-rw-r--r-- 1 root root 12482 2006-01-16 18:15 apache2.confdrwxr-xr-x 2 root root 4096 2006-06-30 13:56 conf.d-rw-r--r-- 1 root root 748 2006-01-16 18:05 envvars-rw-r--r-- 1 root root 268 2006-06-30 13:56 httpd.conf-rw-r--r-- 1 root root 12441 2006-01-16 18:15 magicdrwxr-xr-x 2 root root 4096 2006-06-30 13:56 mods-availabledrwxr-xr-x 2 root root 4096 2006-06-30 13:56 mods-enabled-rw-r--r-- 1 root root 10 2006-06-30 13:56 ports.conf-rw-r--r-- 1 root root 2266 2006-01-16 18:15 READMEdrwxr-xr-x 2 root root 4096 2006-06-30 13:56 sites-availabledrwxr-xr-x 2 root root 4096 2006-06-30 13:56 sites-enableddrwxr-xr-x 2 root root 4096 2006-01-16 18:15 ssl其中apache2.conf为apache2服务器的主配置文件, 查看此配置文件, 你会发现以下内容# Include module configuration:Include /etc/apache2/mods-enabled/*.loadInclude /etc/apache2/mods-enabled/*.conf# Include all the user configurations:Include /etc/apache2/httpd.conf# Include ports listingInclude /etc/apache2/ports.conf# Include generic snippets of statementsInclude /etc/apache2/conf.d/[^.#]*有此可见, apache2 根据配置功能的不同, 对配置文件进行了分割, 这样更利于管理conf.d下为配置文件的附加片断,默认情况下, 仅提供了charset 片断,tony@tonybox:/etc/apache2/conf.d$ cat charsetAddDefaultCharset UTF-8如有需要我们可以将默认编码修改为GB2312, 即文件的内容为: AddDefaultCharset GB2312httpd.conf是个空文件magic文件中包含的是有关mod_mime_magic模块的数据, 一般不需要修改它.ports.conf则为服务器监听IP和端口设置的配置文件,tony@tonybox:/etc/apache2$ cat ports.confListen 80mods-available目录下是一些.conf和.load 文件, 为系统中可以使用的加载各种模块的配置文件, 而mods-enabled目录下则是指向这些配置文件的符号连接, 从配置文件apache2.conf 中可以看出, 系统通过mods-enabled目录来加载模块, 也就是说, 系统仅通过在此目录下创建了符号连接的mods-available 目录下的配置文件来加载模块。
Apache 配置一、安装Apache下载地址:/1. 安装Apache# tar zxvf httpd-2.2.11.tar.gz# cd httpd-2.2.11# ./configure --prefix=/usr/local/apache --enable-so//编译时加上加载模块参数--enable-so# make# make install2. 配置系统启动时自动启动Apache服务。
# vi /etc/rc.d/rc.local//在rc.local上加入一行/usr/local/apache/bin/apachectl –k start。
二、配置Apache1. 修改httpd.conf文件# vi /usr/local/apache/conf/httpd.conf1)设置根目录的路径根目录是指Apache存放配置文件和日志文件的目录,配置参数为ServerRoot,默认位于“/u sr/local/apache”。
命令如下:2)设置监听IP地址及端口号默认侦听本机所有IP地址的TCP80端口,命令如下:Listen 80用户也可以按自己的需求,使用多个Listen语句在多个地址和端口上侦听客户端请求。
比如:Listen 192.168.99.9:80Linsten 172.16.0.20:80803)设置系统管理员E-m ail使用ServerAdmin参数设置管理员E-m ail,比如管理员的Email地址为root@guoxuemin. cn:4)设置服务器主机的名称参数ServerName用来设置服务器的主机名称,如果没有域名则填入服务器的IP地址,比如服务器的IP地址为192.168.99.9:5)设置主目录的路径用户可以使用参数Document Root配置服务器主目录默认路径,比如,主目录路径为:6)设置默认文件Apache的默认文件名为index.ht ml,可以使用Directory Index参数来配置,比如,将ind ex.php设置为默认文件名:7)测试:打开浏览器,输入地址:http://192.168.99.9,可以打开站点了:2. 配置目录权限使用<Directory 目录路径>和</Directory>设置目录的权限。
《组网技术》 第06课1.教学目的:使学生熟练掌握Linux环境常规与高级WEB服务和配置、验证方法。
使学生了解Linux环境LAMP及HTTPS相关知识2.教学内容:⑴Apache 常规服务器的配置⑵站点配置后的一般检测步骤和方法⑶Apache 高级服务器的配置⑷LAMP模型⑸实现HTTPS3.内容难点:配置Apache 虚拟主机Apache访问控制与安全网站4.学习要求:理解Web服务器的概念,正确建立和配置WEB 服务器。
在客户端检验WEB 服务器。
5.教学纲要㈠ Apache服务器非图形工具配置方法从上一讲中Apache服务器图形工具配置方法中可以知道,Apache服务器的核心配置文件是/etc/httpd.conf/conf/httpd.conf。
httpd.conf是Apache服务器中最核心的配置文件,大部分的设置都是通过该文件来完成的。
httpd.conf文件的内容非常多,其中包含很多的注释与说明,用来告诉读者可以提供哪些功能以及用法等。
从下图中Apache服务器图形工具配置的界面可以领略到httpd.conf文件的内容。
还有一些隐性的设置不能从中解读到。
主要的几种配置参数①Apache服务器根目录设置字段ServerRoot本字段用来设置Apache服务器的配置文件、错误文件和日志文件的存放目录。
默认情况下为:ServerRoot "/etc/httpd"可以根据需要进行修改。
②Apache服务器客户端连接数限制字段MaxClients<IfModule prefork.c>StartServers 8MinSpareServers 5MaxSpareServers 20ServerLimit 256MaxClients 256MaxRequestsPerChild 4000</IfModule>③设置主机名称字段ServerNameServerName字段定义服务器名称和端口号,用以标明自己的身份。
Apache配置详解Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。
主站点的配置(基本配置)(1) 基本配置:ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。
其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。
PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。
Listen 80 #服务器监听的端口号。
ServerName :80 #主站点名称(网站的主机名)。
ServerAdmin admin@ #管理员的邮件地址。
DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。
以下是对主站点的目录进行访问控制:<Directory "/mnt/web/clusting">Options FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all</Directory>在上面这段目录属性配置中,主要有下面的选项:Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:ExecCGI: 在该目录下允许执行CGI脚本。
FollowSymLinks: 在该目录下允许文件系统使用符号连接。
Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。
SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。
其它可用值和含义请参阅:/Apache/ApacheManual/mod/core.html#options AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):None: 当AllowOverride被设置为None时。
Apache的各种优化以及安全配置详解简介:Apache所运⾏的硬件环境都是对性能影响最⼤的因素,即使不能对硬件进⾏升级,也最好给Apache⼀个单独的主机以免受到其他应⽤的⼲扰。
各个硬件指标中,对性能影响最⼤的是内存,对于静态内容(图⽚、JavaScript⽂件、css⽂件等)。
它决定了Apache可以缓存多少内容,它缓存的内容越多,在硬盘上读取内容的机会就会越少,⼤内存可以极⼤提⾼静态站点的速度;对动态⾼负载站点来说,每个请求保存的时间更多⼀些,Apache的mpm模块会为每个请求派⽣出相应的进程或线程分别处理,⽽进程或线程的数量与内存的消耗近似成正⽐,因此增⼤内存对提⾼动态站点的负载和运⾏速度也极为有利。
其次是硬盘的速度,静态站点尤为突出,Apache不断的在读取⽂件并发送给相应的请求,硬盘的读写是极其频繁的;动态站点也要不断的加载web程序(php等),⼀个请求甚⾄要读取⼗⼏个⽂件才能处理完成,因此尽可能的提⾼硬盘速度和质量对提⾼Apache的性能是有积极意义的。
最后CPU和⽹络,CPU影响的是web程序执⾏速度,⽹络影响流量⼤⼩。
⼀、Apache的⼏种⼯作模式以及调优Apache HTTP服务器被设计为⼀个强⼤的、灵活的能够在多种平台以及不同环境下⼯作的服务器。
这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫做⼯作模式。
1.Prefork(⼀个⾮线程型的):其主要⼯作⽅式是:当Apache服务器启动后,mpm_prefork模块会预先创建多个⼦进程(默认为5个),每个⼦进程只有⼀个线程,当接受到客户端的请求后,mpm_prefork模块再将请求转交给⼦进程处理,并且每个⼦进程同时只能⽤于处理单个请求。
如果当前的请求数将超过预先创建的⼦进程数时,mpm_prefork模块就会创建新的⼦进程来处理额外的请求。
这样客户端的请求就不需要在接受后等候⼦进程的产⽣。
中国移动公司--A p a c h e安全配置规范S p e c i f i c a t i o n f o r A p a c h eC o n f i g u r a t i o n i n C h i n a M o b i l e版本号:1.0.0╳╳╳╳-╳╳-╳╳发布╳╳╳╳-╳╳-╳╳实施中国移动通信有限公司网络部-目录-1. 范围 (1)2. 规范性引用文件 (1)2.1. 内部引用 (1)2.2. 外部引用 (2)3. 术语、定义和缩略语 (2)4. Tomcat Web服务器安全配置要求 (2)4.1. 账号管理及认证授权要求 (3)4.1.1. 账号安全要求 (3)4.1.2. 口令安全要求 (3)4.1.3. 授权安全要求 (3)4.2. 日志安全要求 (3)4.3. IP协议安全要求 (4)4.4. 设备其他安全要求 (4)5. 编制历史 (7)前言为了贯彻安全三同步的要求,在设备选型、入网测试、工程验收以及运行维护等环节,明确并落实安全功能和配置要求。
有限公司组织部分省公司编制了中国移动设备安全功能和配置系列规范。
本系列规范可作为编制设备技术规范、设备入网测试规范,工程验收手册,局数据模板等文档的依据。
本规范是该系列规范之一,明确了中国移动各类型设备所需满足的通用安全功能和配置要求,并作为本系列其他规范的编制基础。
本标准起草单位:中国移动通信集团公司网络部、中国移动通信集团山东有限公司网络部。
本标准解释单位:同提出单位。
本标准主要起草人:王自亮、周智、曹一生、陈敏时。
1.范围本规范适用于中国移动通信网、业务系统和支撑系统的Apache服务器。
本规范明确了Apache服务器安全配置方面的基本要求。
2.规范性引用文件2.1. 内部引用本规范是在《中国移动设备通用设备安全功能和配置规范》(以下简称《通用规范》)各项设备配置要求的基础上,提出的Apache安全配置规范。
以下分项列出本规范对《通用规范》设备配置要求的修订情况。
网站安全配置指南第1章网站安全基础概念 (4)1.1 网站安全的重要性 (4)1.2 常见网站攻击手段 (4)1.3 网站安全防护策略 (4)第2章服务器安全配置 (5)2.1 操作系统安全设置 (5)2.1.1 系统更新与补丁管理 (5)2.1.2 账户与权限管理 (5)2.1.3 服务与进程管理 (5)2.1.4 文件系统安全 (5)2.1.5 日志管理 (5)2.2 网络安全配置 (5)2.2.1 网络架构安全 (5)2.2.2 防火墙配置 (6)2.2.3 VPN与远程访问 (6)2.2.4 网络隔离与VLAN (6)2.3 硬件防火墙与入侵检测系统 (6)2.3.1 硬件防火墙部署 (6)2.3.2 入侵检测系统(IDS) (6)2.3.3 入侵防御系统(IPS) (6)2.3.4 安全设备管理 (6)第3章数据库安全配置 (6)3.1 数据库安全策略 (6)3.1.1 数据库安全概述 (6)3.1.2 数据库安全策略制定原则 (6)3.1.3 数据库安全策略实施 (7)3.2 数据库用户权限管理 (7)3.2.1 用户权限管理概述 (7)3.2.2 用户账号管理 (7)3.2.3 权限分配 (7)3.2.4 权限回收 (7)3.3 数据库备份与恢复 (7)3.3.1 备份策略 (7)3.3.2 备份操作 (8)3.3.3 恢复策略 (8)3.3.4 异地容灾 (8)第4章 Web服务器软件安全配置 (8)4.1 Apache安全配置 (8)4.1.1 保证Apache版本更新 (8)4.1.2 禁用不必要的模块 (8)4.1.3 配置文件权限 (8)4.1.5 禁止目录列表 (8)4.1.6 配置SSL/TLS (9)4.1.7 配置安全头 (9)4.2 Nginx安全配置 (9)4.2.1 更新Nginx版本 (9)4.2.2 禁用不必要的模块 (9)4.2.3 配置文件权限 (9)4.2.4 限制请求方法 (9)4.2.5 禁止目录列表 (9)4.2.6 配置SSL/TLS (9)4.2.7 设置安全头 (9)4.3 IIS安全配置 (9)4.3.1 更新IIS版本 (9)4.3.2 管理权限控制 (9)4.3.3 禁用不必要的功能 (10)4.3.4 配置文件权限 (10)4.3.5 限制请求方法 (10)4.3.6 禁止目录浏览 (10)4.3.7 配置SSL/TLS (10)4.3.8 添加安全头 (10)第5章网站程序安全 (10)5.1 网站开发安全原则 (10)5.1.1 最小权限原则 (10)5.1.2 数据验证与过滤 (10)5.1.3 安全编码规范 (10)5.1.4 错误处理与日志记录 (10)5.2 代码审计与漏洞修复 (10)5.2.1 代码审计 (11)5.2.2 漏洞修复 (11)5.2.3 安全测试 (11)5.3 网站安全开发框架 (11)5.3.1 选择安全框架 (11)5.3.2 框架安全配置 (11)5.3.3 第三方组件安全 (11)第7章认证与授权安全 (11)7.1 用户认证安全策略 (11)7.1.1 多因素认证 (11)7.1.2 账户锁定策略 (11)7.1.3 用户权限管理 (12)7.2 密码安全策略 (12)7.2.1 密码复杂度要求 (12)7.2.2 密码定期更换 (12)7.2.3 密码加密存储 (12)7.3.1 OAuth 2.0 (12)7.3.2 单点登录 (12)7.3.3 单点登录异常处理 (12)第8章网站安全防护技术 (13)8.1 防SQL注入攻击 (13)8.1.1 原理与危害 (13)8.1.2 防护措施 (13)8.2 防跨站脚本(XSS)攻击 (13)8.2.1 原理与危害 (13)8.2.2 防护措施 (13)8.3 防跨站请求伪造(CSRF)攻击 (13)8.3.1 原理与危害 (13)8.3.2 防护措施 (14)第9章安全监控与日志分析 (14)9.1 网站安全监控策略 (14)9.1.1 监控目标 (14)9.1.2 监控手段 (14)9.1.3 监控流程 (14)9.2 系统日志与审计 (15)9.2.1 日志管理 (15)9.2.2 审计策略 (15)9.2.3 日志分析与监控 (15)9.3 安全事件应急响应 (15)9.3.1 应急响应流程 (15)9.3.2 应急响应措施 (15)9.3.3 应急响应团队 (16)第10章网站安全合规与培训 (16)10.1 网站安全合规性检查 (16)10.1.1 合规性要求概述 (16)10.1.2 安全合规性检查流程 (16)10.1.3 合规性检查内容 (16)10.2 安全意识培训 (17)10.2.1 培训目标 (17)10.2.2 培训对象 (17)10.2.3 培训内容 (17)10.2.4 培训方式 (17)10.3 安全运维管理制度建设与实践 (17)10.3.1 管理制度概述 (17)10.3.2 安全运维管理制度内容 (17)10.3.3 安全运维实践 (18)第1章网站安全基础概念1.1 网站安全的重要性在当今互联网高速发展的时代,网站已成为企业、及个人信息传播的重要平台。
Apache服务器走到那里,unix/linux就跟到那里,这足以说明在WEB服务器领域Apache的优良性能与市场占有率这今天互联网的大环境下,web服务已经成为公司企业必不可少的业务,大多数的安全问题也跟随而来,攻击重点也转移为web攻击,许多web与颇有价值的客户服务与电子商业活动结合在一起,这也是吸引恶意攻击重要原因。
先来了解下web所面临的安全风险HTTP拒绝服务攻击攻击者通过某些手段使服务器拒绝对http应答,这使Apache对系统资源(cup时间与内存)需求巨增,最终造成系统变慢甚至完全瘫痪,Apache服务器最大的缺点是,它的普遍性使它成为众矢之的,Apache服务器无时无刻不受到DoS攻击威胁,主要有下边几种1.数据包洪水攻击一种中断服务器或本地网络的方法是数据包洪水攻击,它通常使用internet控制报文协议(ICMP,属于网络层协议)包或是udp包,在最简单的形式下,这些攻击都是使服务器或网络负载过重,这意味这攻击者的网络速度必须比目标主机网络速度要快,使用udp包的优势是不会有任何包返回到黑客的计算机(udp效率要比tcp高17倍),而使用ICMP包的优势是攻击者能让攻击更加富与变化,发送有缺陷的包会搞乱并锁住受害者的网络,目前流行的趋势是攻击者欺骗服务器,让其相信正在受来自自身的洪水攻击2.磁盘攻击这是一种很不道德的攻击,它不仅影响计算机的通信,还破坏其硬件,伪造的用户请求利用写命令攻击目标计算机硬盘,让其超过极限,并强制关闭,结局很悲惨3.路由不可达通常DoS攻击,集中在路由器上,攻击者首先获得控制权并操纵目标机器,当攻击者能更改路由表条目时候,会导致整个网络无法通信,这种攻击很阴险,隐蔽,因为网络管理员需要排除的网络不通原因很多,其中一些原因需要详细分辨4.分布式拒绝服务攻击这也是最具有威胁的DDoS攻击,名称很容易理解,简单说就是群欧,很多客户机同时单条服务器,你会发现你将伤痕累累,Apache服务器特别容易受到攻击,无论是DDos还是隐藏来源的攻击,因为Apache无处不在,特别是为Apache特意打造的病毒(特选SSL蠕虫),潜伏在许多主机上,攻击者通过病毒可以操纵大量被感染的机器,对特定目标发动一次浩大的DDoS攻击,通过将蠕虫散播到大量主机,大规模的点对点攻击得以进行,除非你不提供服务,要不然几乎无法阻止这样的攻击,这种攻击通常会定位到大型的网站上。
缓冲区溢出,这种攻击很普遍,攻击者利用CGI程序编写一些缺陷程序偏离正常的流程,程序使用静态的内存分配,攻击者就可以发送一个超长的请求使缓冲区溢出,比如,一些perl编写的处理用户请求的网关脚本,一但缓冲区溢出,攻击者就可以执行恶意指令非法获取root权限如果Apache以root权限运行,系统上一些程序的逻辑缺陷或缓冲区溢出漏洞,会让攻击者很容易在本地系统获取linux服务器上的管理者权限,在一些远程情况下,攻击者会利用一些以root身份执行的有缺陷的系统守护进程来取得root权限,或利用有缺陷的服务进程漏洞来取得普通用户权限,以远程登陆,进而控制整个系统。
这边这些都是服务将会遇到的攻击手段,下边来说,如何打造安全的Apache服务器如果你能遵守下边这些建议,那么你将得到一台相对安全的apache服务器一:勤打补丁你必须要相信这个是最有用的手段,缓冲区溢出等漏洞都必须使用这种手段来防御,勤快点相信对你没有坏处在http:上最新的changelog中都写有:bug fix ,security bug fix 的字样,做为负责任的管理员要经常关注相关漏洞,及时升级系统添加补丁。
使用最新安全版本对加强apache至关重要二:隐藏和伪装Apache的版本打乱攻击者的步骤,给攻击者带来麻烦,相信是管理员愿意看到的。
软件的漏洞信息和版本是相关的,在攻击者收集你服务软件信息时候给与迷惑是个不错的选择,何况版本号,对攻击者来说相当与GPS定位一样重要默认情况,系统会把apache版本模块都显示出来(http返回头),如果列举目录的话,会显示域名信息(文件列表正文),去除Apache版本号的方法是修改配置文件,找到关键字,修改为下边ServerSignature offServerTokens prod通过分析web服务器类型,大致可以推测操作系统类型,win使用iis,linux普遍apache,默认的Apache配置里没有任何信息保护机制,并且允许目录浏览,通过目录浏览,通常可以得到类似“apache/1.37 Server at Port 80”或“apache/2.0.49(unix)PHP/4.3.8”的信息通过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来,如果不行的话,可能是提示信息被编译在程序里了,要隐藏需要修改apache的源代码,然后重新编译程序,以替换内容编辑ap_release.h文件,修改"#define AP_SERVER_BASEPRODUCT""Apache"""为"#define AP_SERVER_BASEPRODUCT""Microsoft-IIS/5.0""编辑os/unix/os.h文件修改"#define PLATFORM""Unix"""为"#define PLATFORM"'Win32"修改完成后,重新编译,安装apache,在修改配置文件为上边做过的,再次启动apache后,用工具扫描,发现提示信息中已经显示为windows操作系统了顺便说下,现在这个论坛,就有点不太讲究,这是论坛错误的返回信息,看了有点汗地感觉Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g Server at Port 80这个等于告诉恶意用户很多有用信息,虽然说不算开了门,但等于被告诉了门在那里,还是相当危险的三:建立安全的目录结构apache服务器包括四个目录结构ServerRoot #保存配置文件,二进制文件与其他服务器配置文件DocumentRoot #保存web站点内容,包括HTML文件和图片等ScripAlias #保存CGI脚本Customlog 和 Errorlog #保存日志和错误日志建议的目录结构为,以上四种目录相互独立并且不存在父子逻辑关系注:ServerRoot目录只能为root用户访问DocumentRoot目录应该能够被管理web站点内容的用户访问和使用apache服务器的apache用户与组访问ScripAlias目录应该只能被CGI开发人员和apache用户访问Customlog 和 Errorlog只能被root访问下边是一个安全目录结构的事例+-------/etc/|| +----/http (ServerRoot)| +----/logs (Customlog 和 Errorlog)|+-------var/www|| +---/cgi-bin (ScripAlias)| +---/html (DocumentRoot)这样的目录结构是比较安全的,因为目录之间独立,某个目录权限错误不会影响到其他目录四:为apache使用专门的用户与组按照最小特权的原则,需要给apache分配一个合适的权限,让其能够完成web 服务注:最小特权原则是系统安全中最基本的原则之一,限制使用者对系统及数据进行存取所需要的最小权限,保证用户可以完成任务,同时也确保被窃取或异常操作所造成的损失必须保证apache使用一个专门的用户与组,不要使用系统预定的帐户,比如nobody用户与nogroup组因为只有root用户可以运行apache,DocumentRoot应该能够被管理web站点内容的用户访问和使用apache服务器的 apache用户与组访问,例如,希望“test”用户在web站点发布内容,并且可以以httpd身份运行apache服务器,可以这样设定groupadd webteamusermod -G webteam testchown -R httpd.webteam /www/htmlchmod -R 2570 /www/htdocs只有root能访问日志,推荐这样的权限chown -R root.root /etc/logschown -R 700 /etc/logs五:web目录的访问策略对于可以访问的web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表禁止使用目录索引:apache在接到用户对一个目录的访问时,会查找DirectoryIndex指令指定的目录索引文件,默认为index.html,如果该文件不存在,那么apache会创建动态列表为用户显示该目录的内容,这样就会暴露web站点结构,因此需要修改配置文件禁止显示动态目录索引,修改httpd.confOptions -Indexes FollowSymLinksOptions指令通知apache禁止使用目录索引,FollowSymLinks表示不允许使用符号连接。
禁止默认访问:要的安全策略必须要禁止默认访问的存在,只对指定的目录开放权限,如果允许访问/var/www/html目录,使用如下设定Order deny,allowAllow from all禁止用户重载:为了禁止用户对目录配置文件(htaccess)进行重载(修改),可以这样设定AllowOverride None六:apache服务器访问控制apache的access.conf文件负责设置文件的访问权限,可以实现互联网域名和ip 地址的访问控制如允许192.168.1.1到192.168.1.254的主机访问,可以这样设定order deny,allowdeny from allallow from pair 192.168.1.0/255.255.255.0七:apache服务器的密码保护.htaccess文件是apache上的一个设置文件,它是一个文本文件,.htaccess文件提供了针对目录改变配置的方法既通过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以作用于此目录和子目录。
.htaccess的功能包括设置网页密码,设置发生错误时出现的文件,改变首业的文件名(如,index.html),禁止读取文件名,重新导向文件,加上MIME类别,禁止目录下的文件等。