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

  本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。

  Apache2是许多安装的Linux发行版使用的默认Web服务器。它不是对所有环境来说唯一可用的Web服务器,也不是最佳的Web服务器,但是它适合许多使用场景。在安装过程中,系统可能会询问你哪个Web服务器要自动重新配置。选择“apache2”即可。

  安装Apache2

  使用下面这个命令,安装Apache2及其他库。

?


1

$ 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)的安全规则要求正确的时间戳机制。

?


1

2

3

$ sudo apt-get -y install openntpd tzdata

$ sudo dpkg-reconfigure tzdata

$ sudo service openntpd restart



  禁止AppArmor冲突

  虽然AppArmor这个套件的确提供了一层额外的安全,但在我看来,需要为每个系统创建自定义配置文件。这不是本教程所探讨的内容。所以眼下,我们会禁用AppArmor,防止与任何默认的配置发生冲突。

?


1

2

3

$ sudo /etc/init.d/apparmor stop

$ sudo update-rc.d -f apparmor remove

$ sudo apt-get remove apparmor apparmor-utils

  注意:如果是生产环境下的Web服务器,不建议禁用AppArmor。如果有些人想创建自定义的AppArmor配置文件,请参阅官方说明文档(http://wiki.apparmor.net/index.php/Documentation)。

  阻止分布式拒绝服务(DDoS)攻击

  DDoS攻击是一种分布式拒绝服务攻击。有一个Apache模块可以阻止这类攻击。

?


1

2

3

$ sudo apt-get -y install libapache2-mod-evasive

$ sudo mkdir -p /var/log/apache2/evasive

$ sudo chown -R www-data:root /var/log/apache2/evasive

  把下面这个命令添加到mod-evasive.load的末尾处。

?


1

2

3

4

5

6

7

8

$ sudo nano /etc/apache2/mods-available/mod-evasive.load DOSHashTableSize 2048

DOSPageCount 20 # 请求同一页面的最大数量

DOSSiteCount 300 # 同一侦听器上同一客户端IP请求任何对象的总数量

DOSPageInterval 1.0 # 页面数量阈值的间隔

DOSSiteInterval 1.0   # 站点数量阈值的间隔

DOSBlockingPeriod 10.0 # 客户机IP被阻止的时间段

DOSLogDir “/var/log/apache2/evasive

DOSEmailNotify admin@domain.com

  阻止Slowloris攻击

  还有一个Apache模块可以阻止Slowloris攻击,不过模块名称取决于你使用的Ubuntu的具体版本。如果是Ubuntu 12.10或以后版本:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

$ sudo apt-get -y install libapache2-mod-qos

然后,检查qos.conf中的配置:

$ sudo nano /etc/apache2/mods-available/qos.conf

## 服务质量方面的设置

# 处理来自多达100000个不同IP的连接

QS_ClientEntries 100000

# 只允许每个IP仅50条连接

QS_SrvMaxConnPerIP 50

# 活动TCP连接的最大数量限制在256条

MaxClients 256

# 当70%的TCP连接被占用时,禁用保持活动连接状态

QS_SrvMaxConnClose 180

# 最小请求/响应速度(拒绝阻塞服务器的慢速客户端,即slowloris保持连接开启,不提出任何请求):

QS_SrvMinDataRate 150 1200

# 并限制请求标题和主体(注意,这还限制了上传和发帖请求):

# LimitRequestFields 30

# 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地址。

?


1

2

3

4

5

6

$ sudo apt-get -y install libapache2-mod-spamhaus

$ sudo touch /etc/spamhaus.wl Append the config to apache2.conf

$ sudo nano /etc/apache2/apache2.conf

MS_METHODS POST,PUT,OPTIONS,CONNECT

MS_WhiteList /etc/spamhaus.wl

MS_CacheSize 256

  重启Apache装入新模块

  $ sudo service apache2 restart

  现在Web服务器已安装完毕,并在正常运行。将Web浏览器指向你的域,即可看到证明你一切正常的默认消息。作为最后的检查机制,运行下面这个命令,看看你的服务器有没有任何错误信息。要是有错误信息,你需要上谷歌搜索一下,立马解决这些错误。

  $ sudo tail -200 /var/log/syslog

(0)

相关推荐

  • 在Ubuntu上搭建网桥的方法

    作为一个 Ubuntu 16.04 LTS 的初学者.如何在 Ubuntu 14.04 和 16.04 的主机上搭建网桥呢?顾名思义,网桥的作用是通过物理接口连接内部和外部网络.对于虚拟端口或者 LX ...

  • 如何在Ubuntu下搭建tftp服务器(最简单的安装配置)

    今天开始调试arm的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...

  • 如何在Ubuntu下搭建tftp服务器

    今天开始调试arm的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...

  • 如何在Ubuntu上安装软件

    作为一名Linux新手,你希望能安装所需要的程序,但又不懂得如何操作?本文将为你介绍在最近版本的Ubuntu上安装程序的方法. 步骤 01 除非你使用离线软件库,否则请连接上互联网. 利用图形化界面进 ...

  • 如何在Ubuntu上安装最新的Git版本?|最强指南

    在LTS系统上,软件的稳定性至关重要,这就是为什么Ubuntu 18.04和其他发行版经常提供较旧但稳定的软件版本的原因,该版本经过发行版的良好测试.往往git版本过旧,本文将介绍如何安装最新版GIT ...

  • 如何在Ubuntu上开启SSH服务

    SSH 是为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.如果没有开启ssh无法进行远 ...

  • Ubuntu上提交本地文件到指定的svn 服务器的方法

    将自己本地文件或文件夹上传到指定的svn服务器的方法 操作方法 01 在本地电脑上新建一个文件夹 >mkdir 文件路径/文件夹名 如:>mkdir myfile 02 进入到新建的文件夹 ...

  • Linux上架设支持JSP+PHP的Web服务器

    近年来Linux在服务器市场占有比例日渐攀升,除了缘于Linux的免费和安全性之外,还因为Linux上的应用服务日益丰富。大部分常见的服务都在Linux上有了较好的解决方案。而对于Intenet上应用 ...

  • Ubuntu 11.0下配置Web服务器详细教程[ 图文]

    近日,有消息爆出Linux桌面已经趋于“死亡”,众多Linux爱好者感到失望,但令人可喜的是Linux在服务器领域表现却尤为喜人,据IDC数据显示,部署了Linux系统的服务器占到20%的市场份额。其 ...