如何在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

时间: 2024-10-31 08:36:19

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

如何在 Ubuntu 上搭建网桥

顾名思义,网桥的作用是通过物理接口连接内部和外部网络.对于虚拟端口或者 LXC/KVM/Xen/容器来说,这非常有用.网桥虚拟端口看起来是网络上的一个常规设备.在这个教程中,我将会介绍如何在 Ubuntu 服务器上通过 bridge-utils (brctl) 命令行来配置 Linux 网桥. 网桥化的网络示例 图 01: Kvm/Xen/LXC 容器网桥示例 (br0) 在这个例子中,eth0 和 eth1 是物理网络接口.eth0 连接着局域网,eth1 连接着上游路由器和互联网. 安装 b

如何在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器

Lighttpd 是一款开源 Web 服务器软件.Lighttpd 安全快速,符合行业标准,适配性强并且针对高配置环境进行了优化.相对于其它的 Web 服务器而言,Lighttpd 占用内存更少:因其对 CPU 占用小和对处理速度的优化而在效率和速度方面从众多 Web 服务器中脱颖而出.而 Lighttpd 诸如 FastCGI.CGI.认证.输出压缩.URL 重写等高级功能更是那些面临性能压力的服务器的福音. 以下便是我们在运行 Ubuntu 15.04 或 CentOS 7 Linux 发行

在ubuntu上搭建交叉编译环境---arm-none-eabi-gcc

最近要开始搞新项目,基于arm的高通方案的项目. 那么,如何在ubuntu上搭建这个编译环境呢? 1.找到相关的安装包:http://download.csdn.net/download/storeage/7858739(我的在这里下的) 2.解压缩包到/home目录下,也可以放到其它地方,随你. 3.打开环境配置脚本:/etc/profile 看到脚本如下: # /etc/profile: system-wide .profile file for the Bourne shell (sh(1

Linux 有问必答:如何在 Ubuntu 上配置网桥

Linux 有问必答:如何在 Ubuntu 上配置网桥 Question: 我需要在我的Ubuntu主机上建立一个Linux网桥,共享一个网卡给其他一些虚拟主机或在主机上创建的容器.我目前正在Ubuntu上使用网络管理器(Network Manager),所以最好>能使用网络管理器来配置一个网桥.我该怎么做? 网桥是一个硬件装备,用来将两个或多个数据链路层(OSI七层模型中第二层)互联,以使得不同网段上的网络设备可以互相访问.当你想要互联一个主机里的多个虚拟机器或者以太接口时,就需要在Linux

如何在 Ubuntu 上使用 Glances 监控系统

如何在 Ubuntu 上使用 Glances 监控系统 Glances 是一个用于监控系统的跨平台.基于文本模式的命令行工具.它是用 Python 编写的,使用 psutil库从系统获取信息.你可以用它来监控 CPU.平均负载.内存.网络接口.磁盘 I/O,文件系统空间利用率.挂载的设备.所有活动进程以及消耗资源最多的进程.Glances 有很多有趣的选项.它的主要特性之一是可以在配置文件中设置阀值(careful小心.warning警告.critical致命),然后它会用不同颜色显示信息以表明

ubuntu-急急急:关于在Ubuntu上搭建xen虚拟化平台

问题描述 急急急:关于在Ubuntu上搭建xen虚拟化平台 请问:我在Ubuntu14.04下安装xen4.4 在安装完后输入指令:sudo xl list会显示出domain0的状态,但是安装完virt-manager 后就没有显示domain0的状态 以及cpu的状态. 我的扣扣452557285 希望有人帮我解答 解决方案 http://blog.chinaunix.net/uid-22566367-id-3129857.html 解决方案二: http://antwei.iteye.co

如何在Ubuntu上找出可用的网络适配器

如何在Ubuntu上找出可用的网络适配器 想知道在Linux中你正在使用的网卡是什么吗? 在Linux中很容易就找出网卡的生产商.打开一个终端并输入下面的额命令: sudo lshw -C network 如果上面的命令不能在sudo下使用,那就别用 sudo 的特权模式.它的输出看上去有点奇怪但是很有用. *-network description: Wireless interface product: BCM4360 802.11ac Wireless Network Adapter ve

如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP

如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP   在Ubuntu上安装LAMP: https://help.ubuntu.com/community/ApacheMySQLPHPhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntuhttp://www.make

Ubuntu上搭建PHP+Mysql+Nginx环境(apt-get方式)

Ubuntu上搭建PHP+Mysql+Nginx环境(apt-get方式) ubuntu版本:Ubuntu 10.04 LTS 1.首先使用apt-get下载Nginx,php教程,mysql教程,phpmyadmin,spawn-fcgi. sudo apt-get install nginx php5-cgi php5-cli mysql-server-5.1 phpmyadmin  spawn-fcgi 期间可能要输入mysql的密码,按照提示一步一步安装就是了. OK后,你在Firefo