Chinaunix首页 | 论坛 | 博客
  • 博客访问: 809968
  • 博文数量: 222
  • 博客积分: 4341
  • 博客等级: 上校
  • 技术积分: 2155
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-16 13:50
个人简介

...

文章分类

全部博文(222)

文章存档

2019年(1)

2016年(9)

2015年(7)

2014年(14)

2013年(11)

2012年(10)

2011年(6)

2010年(25)

2009年(37)

2008年(21)

2007年(81)

我的朋友

分类: 系统运维

2008-11-17 14:31:47

Apache服务器安全配置

隐藏和伪装Apache的版本
修改配置文件/etc/httpd.conf
ServerSignature Off
ServerTokens Prod

安全的目录结构
四个主要目录:
— ServerRoot:保存配置文件(conf子目录)、二进制文件和其他服务器配置文件。
— DocumentRoot:保存Web站点的内容,包括HTML文件和图片等。
— ScripAlias:保存CGI脚本。
— Customlog和Errorlog:保存访问日志和错误日志。

使用专门的用户和用户组

Web目录的访问策略
禁止使用目录索引
修改配置文件httpd.conf:
Options -Indexes FollowSymLinks
Options指令通知Apache禁止使用目录索引。FollowSymLinks表示不允许使用符号链接。

禁止默认访问
Order deny,allow
Allow from all

禁止用户重载
为了禁止用户对目录配置文件(.htaccess)进行重载(修改),可以这样设定:
AllowOverride None

访问控制方法
Apache的access.conf文件负责设置文件的访问权限

order deny,allow
deny from all
allow from pair 192.168.1.0/255.255.255.0

管理Apache服务器访问日志
相关配置文件
$ CustomLog /www/logs/access_log common  #记录对Web站点的每个进入请求#
$ ErrorLog /www/logs/error_log  #记录产生错误状态的请求#


Web服务器日志轮循
用Linux系统自身的日志文件轮循机制logrotate实现日志轮循
将apache的日志文件置于logrotate轮循的目录下, 例如/etc/logroate.d

 

利用Apache自带的日志轮循程序rotatelogs
# compressed logs
$ CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common

$ CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
表示,Apache访问日志被发送给程序rotatelogs;rotatelogs将日志写入/www/logs / secfocus/access_log,并每隔86 400秒(1天)对日志进行一次轮循。轮循以后的文件名为/www/logs/ secfocus/access_log.nnn,这里nnn是开始记录日志的时间。因此,为了将日志按天对齐需要在凌晨00:00启动服务,使得每天轮循得到的日志刚好是完整一天的日志,以提供给访问统计分析程序进行处理。如果是00:00开始生成新的日志,那么轮循得到的日志就是 access_log.0000。

使用在Apache的FAQ中发展已经比较成熟的日志轮循工具cronolog。
首先需要下载和安装cronolog
修改Apache日志配置命令如下所示:

$ CustomLog "|/usr/local/sbin/cronolog /www/logs/secfocus/%w/access_log" combined

添加定时任务如下:
$ 5 0 * * * /bin/mv /www/logs/secfocus/`date -v-1d +\%w`/access_log /www/logs/secfocus/access_log_yesterday

使用php MyVisites分析Apache日志


Apache服务器的密码保护
建立.htpasswd文件

.htaccess文件实现保护

.htaccess文件的内容如下:

authtype basic

authuserfile /usr/home/***/htdocs/.abcname1

authgroupfile /usr/home/***/htdocs/.abcname2

authname information

require valid-user


生成.abcname1文件。

echo > .abcname1

/var/www/bin/htpasswd .abcname1 abc

建立允许访问的组 .htgroup的文本文件,内容如下:

groupname1: username1 username2 username3

groupname2: username1 username3 username4


减少CGI和SSI风险

防范DoS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo “1” > /proc/sys/net/ipv4/tcp_syn_retries
echo “1” > /proc/sys/net/ipv4/tcp_synack_retries

阅读(936) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~