隐藏Apache版本等敏感信息

$ grep Server /usr/local/httpd/conf/extra/httpd-default.conf|grep -v "#"

修改后如下:

ServerTokens Prod

ServerSignature Off

但是还是会出现apache的字样:

$ curl -I localhost

Server: Apache

彻底隐藏的方法: 在编译前, 修改tar包下的include/ap_release.h文件

#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服务的供应商名称

#define AP_SERVER_BASEPROJECT "Apache HTTP Server"  #服务的项目名称

#define AP_SERVER_BASEPRODUCT "Apache"   #服务的产品名

#define AP_SERVER_MAJORVERSION_NUMBER 2  #主要版本号

#define AP_SERVER_MINORVERSION_NUMBER 4  #小版本号

#define AP_SERVER_PATCHLEVEL_NUMBER  6   #补丁级别

#define AP_SERVER_DEVBUILD_BOOLEAN  0    #...

更改apache的默认用户

$ useradd -M -s /sbin/nologin apache

$ vim /usr/local/httpd/conf/httpd.conf

User apache

Group apache

修改apache日志权限

$ chmod 700 /usr/local/httpd/logs

日志轮询(分割)

$ cd /usr/local/tools

$ wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

$ tar zxf cronolog-1.6.2.tar.gz

$ cd cronolog-1.6.2

$ ./configure

$ make && make install

$ grep CustomLog /usr/local/httpd/conf/httpd.conf

按天轮询(生产环境常见用法,推荐使用。按小时,则文件名再加上 %H):

CustomLog "|/usr/local/sbin/cronolog /usr/local/httpd/logs/access_%Y%m%d.log" combined

ErrorLog  "|/usr/local/sbin/cronolog /usr/local/httpd/logs/error_%Y%m%d.log"

错误页面优雅显示

$ vi /usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs">

    Options Indexes FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    ErrorDocument  /.html  ##新增一行

</Directory>

$ vi /usr/local/httpd/htdocs/404.html

Error: lost page...

mod_rewrite防盗链

##示例: 虚拟主机的配置文件

<VirtualHost *:>

    ServerAdmin @qq.com

    DocumentRoot "/usr/local/httpd/htdocs"

    ServerName www.test.com

    ServerAlias test.com

    CustomLog "|/usr/local/sbin/cronolog /usr/local/httpd/logs/access_%Y%m%d.log" combined

    ErrorLog "|/usr/local/sbin/cronolog /usr/local/httpd/logs/error_%Y%m%d.log"

    <IfModule rewrite_module>

      RewriteEngine On

      RewriteCond %{HTTP_REFERER} !^http://test.com/.*$ [NC]

      RewriteCond %{HTTP_REFERER} !^http://test.com$ [NC]

      RewriteCond %{HTTP_REFERER} !^http://www.test.com/.*$ [NC]

      RewriteCond %{HTTP_REFERER} !^http://www.test.com$ [NC]

      RewriteRule .*\.(gif|jpg|swf)$ http://www.test.com [R,NC]

    </IfModule>

</VirtualHost>

禁止目录浏览: httpd.conf

<Directory "/usr/local/httpd/htdocs">

    Options -Indexes  ##方式1

    Options FollowSymLinks  ##方式2

</Directory>

禁用AllowOverride选项: httpd.conf

apache需要在每个目录中查找.htaccess文件。因此,无论是否真正用到,启用.htaccess都会导致服务器性能的下降。另外,对于每一个请求,都需要读取一次.htaccess文件。

<Directory /usr/local/httpd/htdocs>

        Options none

        AllowOverride None  ##设置为none

        Require all granted

</Directory>

关闭.htaccess文件使用: httpd-default.conf

全部目录权限定义使用httpd.conf中的定义,不使用.htaccess进行定义

#AccessFileName .htaccess  ##注释掉

关闭自带CGI功能: httpd.conf

一般我们不使用apache自带的cgi的功能,如果使用的话,可以用mod_perl模块来替代

修改配置文件, 删掉有关cgi的内容

#ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"

#<Directory "/usr/local/httpd/cgi-bin">

    #AllowOverride None

    #Options None

    #Order allow,deny

    #Allow from all

#</Directory>

禁止PHP解析某个目录: 比如用户的上传文件目录

apache的安全模块

我们需要对apache站点增加一些扩展的安全模块,如:mod_evasive20防DDOS、mod_limitipconn(针对单站点)配置、mod_security2防SQL注入等等之类的工具。

另外,下面是推荐给大家的几个工具。

1、makejail           http://www.floc.net/makejail/

它是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写,他有debian和openbsd的版本。

2、mod-security           http://www.modsecurity.org/

它是apche的一个模块,它不仅可以实现过滤请求和日志审计等功能,而且可以防止SQLInjection和跨站脚本攻击等是个很不错的安全模块。

apache网站架构优化

1.在生产环境中建议将程序页面服务器、图片附件服务器和上传服务器三者的功能尽量分离

2.或在前端负载均衡器通过haproxy/nginx来根据用户请求的目录或扩展名来对后端的服务器发出请求。

优化linux系统内核参数

net.ipv4.tcp_fin_timeout  #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,默认值是60秒。

net.ipv4.tcp_tw_reuse   #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认值为0,表示关闭。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_reuse 0

net.ipv4.tcp_tw_recycle  #表示开启TCP连接中TIME-WAIT sockets的快速回收该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle提示:reuse和recycle两个参数为了防止生产环境下web,squid等time_wait过多设置的。

net.ipv4.tcp_syncookies   #表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,Centos5系列默认值为1,表示开启。因此这个参数也可以不添加。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syncookies,默认为1

net.ipv4.tcp_keepalive_time   #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为10分钟。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_keepalive_time,默认为7200秒。

net.ipv4.ip_local_port_range  #选项用来设定允许系统打开的端口范围。即用于向外连接的端口范围。该参数对应系统路径为:/proc/sys/net/ipv4/ip_local_port_range  32768  61000

net.ipv4.tcp_max_syn_backlog   #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。选项为服务器端用来记录那些尚未收到客户端确认信息的连接请求的最大值。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_syn_backlog

net.ipv4.tcp_max_tw_buckets    #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清楚并打印警告信息。默认为180000,对于Apache、Nginx等服务器来说可以调整低一点,如改为5000-30000,不同业务的服务器也可以给大一旦,比如lvs,squid。上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。此参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_tw_buckets

net.ipv4.tcp_synack_retries   #参数的值决定了内核放弃连续之前发送SYN+ACK包的数量。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries默认值为5

net.ipv4.tcp_syn_retries    #表示在内核放弃建立连接之前发送SYN包的数量。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries 5

net.ipv4.tcp_max_orphans    #选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立连接将立即被复位并打印出警告信息。这个限制这是为了防止简单的Dos攻击,不能过分依靠这个限制甚至认为减少这个值,更多的情况是增加这个值。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_orphans 65536

;

apache功能优化的更多相关文章

  1. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  2. Apache网页优化与安全

    目录 一.Apache网页优化 1.1.概述 1.2.gzip介绍 1.3.Apache的压缩模块 二.网页压缩实验 2.1.检查是否安装mod_deflate模块 2.2.重新编译安装Apache添 ...

  3. Apache网页优化

    目录: 一.Apache网页优化概述 二.网页压缩 三.网页缓存 四.隐藏版本信息 五.Apache防盗链 一.Apache网页优化概述 在企业中,部署Apache后只采用默认的配置参数,会引发网站很 ...

  4. Apache——网页优化与安全

    Apache--网页优化与安全 1.Apache 网页优化概述 2.网页压缩 3.网页缓存 4.隐藏版本信息 5.Apache 防盗链 1.Apache 网页优化概述: 企业中,部署Apache后只采 ...

  5. Apache性能优化、超时设置,linux 重启apache

    在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效.其中调节以下参数Timeout 15 (连接超时 ...

  6. CentOS系统Apache服务器优化详解

    1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...

  7. Apache性能优化总结

    1.介绍 首先要了解Apache采用的MPM(Multi -Processing Modules,多道处理模块),MPM是Apache的核心,它的作用是管理网络连接.调度请求.Apache2.0中MP ...

  8. WeTest功能优化第3期:业内首创,有声音的云真机

    第3期功能优化目录 [云真机远程调试]音频同步传输实现测试有声 [兼容性测试报告]新增视频助力动态定位问题 [云真机远程调试]菜单栏优化助力机型选择 本期介绍的新功能,秉承创造用户需求的理念,在云真机 ...

  9. WeTest功能优化第2期:云真机智能投屏,调试告别鼠标

    第2期功能优化目录 [云真机视频映射]云真机画面本地映射[兼容性测试报告]新增问题机型聚类功能[新增Android9.0]同步上线最新安卓系统 本期介绍的云测产品功能优化,既有重磅级技术突破,也有报告 ...

随机推荐

  1. eclipse 国际化 $NON-NLS-1$ 含义

    一.$NON-NLS-1$ 含义 Eclipse 如果每行代码里有这个字符串:$NON-NLS-1$ 表示:这一行的第一个字符串是不需要国际化的.同理$NON-NLS-2$,$NON-NLS-3$.. ...

  2. iOS中后台运行

    iOS在升级到4.0以后就支持了多任务了.下文将详细介绍一下这个特性. 1.检查设备是否支持多任务 Apple出于性能的考虑,并不是所有的iOS设备升级到iOS4以后都支持多任务,比如iPhone 3 ...

  3. WinForm 读取Excel 数据显示到窗体中

    最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... //读取Excel的帮助类 class SqExcellHelper { publi ...

  4. Android - EditText 注意(缺少字符)

    EditText 注意(缺少字符) 本文地址:http://blog.csdn.net/caroline_wendy EditText使用监听(Listener)addTextChangedListe ...

  5. setOnFocusChangeListener的使用

    类似于文本框里面hint文字在初始化的时候显示或者隐藏的操作,就要用到setOnFocusChangeListener的 首先我认为不是太必要- 毕竟当你输入东西时,默认文字自然会消失 当然假设你执意 ...

  6. UNP学习笔记(第十五章 UNIX域协议)

    UNIX域协议是在单个主机上执行客户/服务器通信的一种方法 使用UNIX域套接字有以下3个理由: 1.UNIX域套接字往往比通信两端位于同一个主机的TCP套接字快出一倍 2.UNIX域套接字可用于在同 ...

  7. vs2010 assistx安装教程

    参照此篇教程. 安装目录你可能找不到,因为那些文件是系统隐藏文件,打开隐藏即可. 然后,将此.exe安装到上面的目录下,然后,还需要进行一个破解,即需要将从网上下载的补丁放进去. 把目录下的VA_X. ...

  8. 云数据库 RDS 版怎么创建数据库和账号MySQL 5.7版

    若要使用云数据库RDS,您需要在实例中创建数据库和账号.对于MySQL 5.7版本的实例,您需要通过RDS控制台创建一个初始账号,然后可以通过数据管理(DMS)控制台创建和管理数据库.本文将主要介绍在 ...

  9. ssh登录慢的解决办法

    ubuntu的ssh登录有点慢,其实是很慢 google了一把,发现可以这样解决: (1)可能是DNS反向解析的问题 对于这样的问题,可以在/etc/ssh/sshd_config 中添加/修改: U ...

  10. shell查看系统基本信息脚本

    #!/bin/bash echo "IP:" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print ...