Moke|墨客

 找回密码
 立即注册
搜索
查看: 9713|回复: 0

如何在Ubuntu上搭建一台安全的Apache Web服务器?

[复制链接]

3636

主题

0

回帖

3681

积分

超级版主

Rank: 8Rank: 8

积分
3681
发表于 2016-5-9 14:29:43 | 显示全部楼层 |阅读模式



                   本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。
  Apache2是许多安装的Linux发行版使用的默认Web服务器。它不是对所有环境来说唯一可用的Web服务器,也不是最佳的Web服务器,但是它适合许多使用场景。在安装过程中,系统可能会询问你哪个Web服务器要自动重新配置。选择“apache2”即可。
  安装Apache2
  使用下面这个命令,安装Apache2及其他库。
?
            
[size=1em]1

            
            [size=1em]            [size=1em]$ sudo apt-get -y install apt-get install apache2 apache2.2-common apache2-doc  apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5  php5-common php5-gd php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec  php-pear php-auth php5-mcrypt mcrypt libapache2-mod-suphp libopenssl-ruby  libapache2-mod-ruby
            
            
  更新时区(TimeZone)和检查正确时间
  为了减小共享数据或镜像数据方面的混淆,所有服务器在运行时都应该尽可能接近同步状态。一些加密密钥管理系统需要准确的时间。最后,就企业服务器而言,《萨班斯-奥克斯利法案》(Sarbanes-Oxley)和《健康保险可携性及责任性法案》(HIPAA)的安全规则要求正确的时间戳机制。
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
            [size=1em]            [size=1em]$ sudo apt-get -y install openntpd  tzdata
            [size=1em]$ sudo dpkg-reconfigure  tzdata
            [size=1em]$ sudo service openntpd  restart
            
            
  禁止AppArmor冲突
  虽然AppArmor这个套件的确提供了一层额外的安全,但在我看来,需要为每个系统创建自定义配置文件。这不是本教程所探讨的内容。所以眼下,我们会禁用AppArmor,防止与任何默认的配置发生冲突。
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
            [size=1em]            [size=1em]$ sudo /etc/init.d/apparmor stop
            [size=1em]$ sudo update-rc.d -f apparmor  remove
            [size=1em]$ sudo apt-get remove apparmor  apparmor-utils
            
            
  注意:如果是生产环境下的Web服务器,不建议禁用AppArmor。如果有些人想创建自定义的AppArmor配置文件,请参阅官方说明文档(http://wiki.apparmor.net/index.php/Documentation)。
  阻止分布式拒绝服务(DDoS)攻击
  DDoS攻击是一种分布式拒绝服务攻击。有一个Apache模块可以阻止这类攻击。
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
            [size=1em]            [size=1em]$ sudo apt-get -y install libapache2-mod-evasive
            [size=1em]$ sudo mkdir -p /var/log/apache2/evasive
            [size=1em]$ sudo chown -R www-data:root /var/log/apache2/evasive
            
            
  把下面这个命令添加到mod-evasive.load的末尾处。
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
[size=1em]4

            
[size=1em]5

            
[size=1em]6

            
[size=1em]7

            
[size=1em]8

            
            [size=1em]            [size=1em]$ sudo nano /etc/apache2/mods-available/mod-evasive.load DOSHashTableSize 2048
            [size=1em]DOSPageCount 20 # 请求同一页面的最大数量
            [size=1em]DOSSiteCount 300 #  同一侦听器上同一客户端IP请求任何对象的总数量
            [size=1em]DOSPageInterval 1.0 # 页面数量阈值的间隔
            [size=1em]DOSSiteInterval 1.0   # 站点数量阈值的间隔
            [size=1em]DOSBlockingPeriod 10.0 # 客户机IP被阻止的时间段
            [size=1em]DOSLogDir “/var/log/apache2/evasive”
            [size=1em]DOSEmailNotify  admin@domain.com
            
            
  阻止Slowloris攻击
  还有一个Apache模块可以阻止Slowloris攻击,不过模块名称取决于你使用的Ubuntu的具体版本。如果是Ubuntu  12.10或以后版本:
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
[size=1em]4

            
[size=1em]5

            
[size=1em]6

            
[size=1em]7

            
[size=1em]8

            
[size=1em]9

            
[size=1em]10

            
[size=1em]11

            
[size=1em]12

            
[size=1em]13

            
[size=1em]14

            
[size=1em]15

            
[size=1em]16

            
[size=1em]17

            
[size=1em]18

            
[size=1em]19

            
[size=1em]20

            
[size=1em]21

            
[size=1em]22

            
[size=1em]23

            
[size=1em]24

            
[size=1em]25

            
            [size=1em]            [size=1em]$ sudo apt-get -y install libapache2-mod-qos
            [size=1em]然后,检查qos.conf中的配置:
            [size=1em]
            [size=1em]$ sudo nano /etc/apache2/mods-available/qos.conf
            [size=1em]## 服务质量方面的设置
            [size=1em]
            [size=1em]#  处理来自多达100000个不同IP的连接
            [size=1em]
            [size=1em]QS_ClientEntries 100000
            [size=1em]# 只允许每个IP仅50条连接
            [size=1em]
            [size=1em]QS_SrvMaxConnPerIP 50
            [size=1em]#  活动TCP连接的最大数量限制在256条
            [size=1em]
            [size=1em]MaxClients 256
            [size=1em]#  当70%的TCP连接被占用时,禁用保持活动连接状态
            [size=1em]
            [size=1em]QS_SrvMaxConnClose 180
            [size=1em]#  最小请求/响应速度(拒绝阻塞服务器的慢速客户端,即slowloris保持连接开启,不提出任何请求):
            [size=1em]
            [size=1em]QS_SrvMinDataRate 150 1200
            [size=1em]#  并限制请求标题和主体(注意,这还限制了上传和发帖请求):
            [size=1em]
            [size=1em]# LimitRequestFields  30
            [size=1em]# QS_LimitRequestBody  102400
            
            
  注意:如果你运行12.04之前的Ubuntu版本,改而使用下面这个命令:
  $ sudo apt-get -y install libapache2-mod-antiloris
  检查antiloris.conf中的配置
  $ sudo nano /etc/apache2/mods-available/antiloris.conf
  # 每个IP地址处于READ状态的最大并行连接数量
  IPReadLimit 5
  阻止DNS注入攻击
  Spamhaus这个模块使用域名系统黑名单(DNSBL),目的是为了阻止通过Web表单实现的垃圾邮件转发,防止URL注入攻击,阻止来自机器人程序的http  DDoS攻击,通常保护服务器,远离已知的恶意IP地址。
?
            
[size=1em]1

            
[size=1em]2

            
[size=1em]3

            
[size=1em]4

            
[size=1em]5

            
[size=1em]6

            
            [size=1em]            [size=1em]$ sudo apt-get -y install libapache2-mod-spamhaus
            [size=1em]$ sudo touch /etc/spamhaus.wl Append the config to  apache2.conf
            [size=1em]$ sudo nano /etc/apache2/apache2.conf
            [size=1em]MS_METHODS  POST,PUT,OPTIONS,CONNECT
            [size=1em]MS_WhiteList /etc/spamhaus.wl
            [size=1em]MS_CacheSize  256
            
            
  重启Apache装入新模块
  $ sudo service apache2 restart
  现在Web服务器已安装完毕,并在正常运行。将Web浏览器指向你的域,即可看到证明你一切正常的默认消息。作为最后的检查机制,运行下面这个命令,看看你的服务器有没有任何错误信息。要是有错误信息,你需要上谷歌搜索一下,立马解决这些错误。
  $ sudo tail -200 /var/log/syslog
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 

 

快速回复 返回顶部 返回列表