LNMP指的是一个基于Centos/Debian编写的NGINX、PHP、MySQL、PHPmyadmin、eaccelerator集成的一键安装包。可以在VPS、独立的(云)主机上轻松地安装生产环境。
Linux:一套免费试用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。代表linux版本有:
NGINX:一个高性能的HTTP和反向代理服务器,也是一个IMAP/pop3/SMTP代理服务器。
PHP:一种在服务端执行的嵌入HTML文档的脚本语言。
MySQL:一个关系型数据库管理系统(RDBMS)。
PHPmyadmin:一个以PHP为基础和web-base方式架构在网站主机上的MySQL的数据库管理工具,能让管理者可用web接口管理MySQL数据库。
eaccelerator:一个自由开源的PHP加速器,优化和动态内容缓存,提高PHP脚本的缓存性能,使PHP脚本在编译的状态下,对服务器的开销几乎完全消除。能使PHP程序代码执效提高1-10倍。
lnmp简化版原理:
fastcgi工作原理:
php-fpm工作原理:
php-fpm采用master/worker架构设计,由两个进程模块:master、worker
//请求锁
FCGI_LOCK(req->listen_socket);
req->fd = accept(listen_socket, (struct sockaddr *)&sa, &len);
//释放锁
FCGI_UNLOCK(req->listen_socket);
简化版的源码安装步骤:(省去PHP加速、nginx优化、linux内核优化等步骤)
MySQL源码包下载--》解压--》预编译--》编译安装--》MySQL服务进程用户创建--》添加环境变量--》初始化数据库--》设置MySQL密码--》PHP源码包下载--》解压--》预编译--》编译安装--》修改配置文件--》创建php-fpm服务守护用户--》启动php-fpm服务--》下载nginx源码包--》解压--》预编译--》编译安装--》添加环境变量--》检查nginx配置文件--》启动nginx服务--》网页访问服务器IP--》''welcome to nginx''
快速版源码安装步骤:(自动配置系统环境以及安装服务)
下载一键安装包--》解压--》执行./install.sh--》选择数据库版本--》设置数据库的root密码--》确认是否开启innoDB引擎--》选择PHP版本--》确认选择的定制软件版本--》按Enter--》等待约20~30分--》出现enjoy it字符串--》网页访问服务器IP--》''welcome to nginx''
**一般web小型集群简图:**
流量不高,用于开发测试上线,两台主机做LNMP架构足够应付。同时可以使用nginx+keepalived模式,实现高可用,haproxy可以弥补nginx四层的大流量连接。
**中小型集群简图:**
单独将两台LVS调度做为负载均衡调度器,保证7X24高可用负载对外服务。使用两台或多台VM作为Tomcat做web的调用,一台宕机,还有另一台做备份对外持续服务。数据库单独做双主模式,可以同读写,数据实时同步。
**中型web服务集群:**
将站点目录单独提出,web集群的VM可以通过内网的方式访问共享目录并挂载在VM本地。增加从数据库做读操作,减少主数据库的压力。
大型web集群:
web的vm集群自动扩充主机,加入监控集群,目的在监控所有服务器的是否有异常,以图形化方式在网页上显示,实时监控,实现异常告警。站点目录服务器做自动扩容等等
从小型到大型集群,架构要支撑的流量也会逐渐增加,所以中小型的时候需要开始准备自动化扩容和扩充主机以支撑大流量高并发。
iptables:
优点:
例如:为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃.
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables除了信息包过滤等之外,还有SQL注入,XSS、CSRF、DDoS等是无法防护的,所以防护也需要升级。
防护功能
1.1 网络层防护
1)DDOS×××
2)Syn Flood
3)Ack Flood
4)Http/HttpS Flood(CC×××)
5)慢速×××1.2 应用层防护和功能
1)URL黑白名单
2)HTTP协议规范(包括特殊字符过滤、请求方式、内容传输方式,例如:multipart/form-data,text/xml,application/x-www-form-urlencoded)
3)注入×××(form和URL参数,post和get)
- > SQL注入防御
- > LDAP注入防御
- > 命令注入防护(OS命令,webshell等)
- > XPath注入
- > Xml/Json注入
4)XSS×××(form和URL参数,post和get,现阶段分为三类×××:存储式(危害大,也是一种流行方式),反射式、基于Dom的XSS)
5)目录遍历(Path Traversal)
6) form表单数据验证和表单篡改和注入(表单验证银行卡、数据、日期等)
7)认证管理和会话劫持(cookie加密:防护会话劫持,包括cookie超时)。
8)内容过滤(这儿强调上传内容过滤post form和get 参数,主要应用论坛)
9)Web服务器漏洞探测(apache版本等隐藏,站点隐藏)
10)爬虫防护(基于SRC IP,周期判断访问数,爬虫白名单除外)
11)CSRF(Cross-site request forgery)(WAF采用token方式处理能够解决)
12)篡改(包括盗链)(WAF周期爬服务器网页,进行对比验证,如果篡改发现篡改,Client访问WAF网页)
13)Web服务器漏洞扫描(模拟×××,判断缺陷,自动配置对应规则)
14)cache加速(静态页面优化,PDF,图片等,需要周期映像)
16)错误码过滤(探测服务,及其目录结构)
17)站点转换(URL rewrite)
18)发现×××锁定(发现×××,锁定用户)
19)查杀毒
20)加密传输(http -> https转化,即client-waf之间通过https,waf与server之间http)。
21)URL ACL(URL匹配一些规则)。1.3 防止Web信息泄露
1)银行卡(信用卡、借记卡)、社保卡、驾照等,采用覆盖和隐藏两种方式。
2)敏感词过滤、Web中关键词(政治敏感词、技术关键词等)。
3)防止文件泄露(word、pdf等扩展文件及其关键词),Web服务器上的文件。
1.4 nginx上能做的防护功能
把软件防火墙嵌入在硬件中,一般的软件安全厂商所提供的硬件防火墙便是在硬件服务器厂商定制硬件,然后再把linux系统与自己的软件系统嵌入。(Symantec的SGS便是DELL+Symantec的软件防火墙)这样做的好处是linux相对Windows的server相对安全。这样做的理由是由于ISA必须装在Windows操作系统下,微软的操作系统相对不安全,本身安全存在隐患的系统上部署安全策略相当于处在亚安全状态,是不可靠的。在兼容性方面也是硬件防火墙更胜一筹,其实软件防火墙与硬件防火墙的主要区别就在于硬件。
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些×××,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊×××。最后,它可以禁止来自特殊站点的访问,从而防止来自不明***者的所有通信。但是硬件防火墙一般用在内部网络上,
对于公司网络安全来说,防火墙起的是关键性的作用,只有它,才可以防止来自互联网上永不停止的各种威胁。防火墙的选择对远程终端连接到中心系统获取必要资源或完成重要任务的影响也非常大。当选择基于硬件的防火墙时,以确保企业实现投资、安全性和生产力的最大化,应当考虑以下十个方面的因素:
数据库防火墙
数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。
数据库防火墙通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。
数据库防火墙面对来自于外部的***行为,提供SQL注入禁止和数据库虚拟补丁包功能。
集群架构部署完整过程:https://blog.51cto.com/leoheng/2148772
转载于:https://blog.51cto.com/leoheng/2150758