在Ubuntu上部署LAMP并运行一个防攻击、SSL加密的网站

     0评论

本文是我根据自己的建站经验总结的,详细列出快速准备好一台可用的Web服务器的步骤,包括部署LAMP环境,在Apache上配置虚拟主机、屏蔽黑名单、安装SSL证书等。按照这个步骤,你可以很快地运行起一台复合现代标准的基本服务器。文章最后提供一键脚本的下载,不过运行前请先阅读本文,大致了解其执行的任务。

安装LAMP环境

# 安装Apache2和Mysql apt install apache2 mysql-server # 安装PHP以及PHP与Apache、Mysql合作所需模块/组件 apt install php7.0 libapache2-mod-php7.0 php7.0-mysql # 安装常用的php扩展 apt install php7.0-curl php7.0-json php7.0-cgi php7.0-mbstring php7.0-gd php7.0-xml

配置对恶意访问的屏蔽

站点运行后,会有一些漏洞扫描程序、恶意爬虫不断来访,会增加网站压力以及安全隐患,为尽可能减少这类骚扰、攻击,需要做一些防护。这里推荐使用apache-ultimate-bad-bot-blocker,一直在更新,并且对服务器增加的负担很小。其原理是载入一些黑名单,来访者的IP/User-Agent/Referer等在黑名单里时,返回403错误。

安装

# 设置变量 dir=/etc/apache2/custom.d path=https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d # 准备配置文件的目录 mkdir $dir # 下载相关配置 wget $path/globalblacklist.conf -O $dir/globalblacklist.conf wget $path/whitelist-ips.conf -O $dir/whitelist-ips.conf wget $path/whitelist-domains.conf -O $dir/whitelist-domains.conf wget $path/blacklist-ips.conf -O $dir/blacklist-ips.conf wget $path/bad-referrer-words.conf -O $dir/bad-referrer-words.conf wget $path/blacklist-user-agents.conf -O $dir/blacklist-user-agents.conf

设置自动更新

# 准备自动更新的脚本 vim /usr/local/bin/update_apache_blocker.sh # 脚本内容: #! /bin/sh wget https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/raw/master/Apache_2.4/custom.d/globalblacklist.conf -O /etc/apache2/custom.d/globalblacklist.conf service apache2 reload exit 0 # 为脚本添加执行权限 chmod +x /usr/local/bin/update_apache_blocker.sh # 添加定时任务 crontab -e 00 22 * * * /usr/local/bin/update_apache_blocker.sh # 检查定时任务 crontab -l

配置虚拟主机

# 准备虚拟主机文件 cp 000-default.conf 001-vps123.top.conf # 编辑配置文件,修改ServerName、ServerAlias等,并引入apache-ultimate-bad-bot-blocker的配置 vim 001-vps123.top.conf # 准备网站目录和测试文件 mkdir /var/www/html/topvps echo "Coming soon!" > /var/www/html/topvps/index.php

更改主机名

为避免Apache错误:”Could not reliably determine the server’s fully qualified domain name”,需要设置主机名。

echo "ServerName localhost" | tee /etc/apache2/conf-available/servername.conf a2enconf servername

安装SSL证书

安装支持Letsencrypt的客户端,这里用官方推荐的certbot

apt-get update apt-get install software-properties-common add-apt-repository ppa:certbot/certbot apt-get update apt-get install python-certbot-apache

如果不打算安装支持通配符的域名证书,运行

certbot --apache

如果要使用支持通配符的域名证书,使用下面的方案,相对麻烦些,要添加一条域名TXT记录,申请完后要手动安装证书

# 申请证书 # 以下命令执行完后需要等待很长时间后进行一个确认工作,为避免SSH会话过期,请在tmux或screen中运行 certbot certonly -d *.vps123.top --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory # 添加TXT记录,例如vps123.top申请证书时添加的记录为: key: _acme-challenge.vps123.top value: -nvybUDdTki3U_TGHoAvPYanFF79_LSrLv34x11S6iU # 验证TXT记录,下面两条命令均可, dig -t txt _acme-challenge.vps123.top @8.8.8.8 nslookup -q TXT vps123.top # 确认第一条命令中的会话

启动服务器

# 开启SSL a2enmod ssl # 开启rewrite a2enmod rewrite # 检查配置 apache2ctl configtest # 重启服务器 service apache2 restart

参考资料

-- EOF --

本文最后修改于5年前 (2019-05-10)

差评不太行一般挺好非常不错 (1 votes, average: 5.00 out of 5)
读取中...
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址