方案一
1、金盾
传统的请求模式是,访问一个链接,首先经过的步骤是在DNS服务器上解析这个域名获取源IP地址,这个ip地址就是服务器的实际网络地址。那么我们的第一步防护就是隐藏服务器的真实ip地址,并对所有的请求进行一次筛选,筛选出正常的入流量,剔除不正常的流量防御攻击的产生。 原理结构如下图
金盾模式优点
隐藏了我们源服务器IP地址,ping 我们域名解析到的地址是金盾的地址
所有的请求流量都经过金盾的一次筛选后才会将通过检测部分的流量转发到源服务器进行处理,并将处理的结果返回给客户端
网盾筛选请求流量的时候就区分了哪些流量是用户流量,哪些流量是异常流量。
能实时监控全国各个地区的流量分布,以及各地区的请求次数,以及请求源ip地址,方便我们快速定位攻击源,并找到相应的处理办法。
能通过这些监控数据判定哪些ip是异常ip地址,禁止这些网段的ip访问
2、负载均衡 - 流量分发(SLB)
当访问流量大的时候,一台服务器也许很难支撑住这么大的运算量,那么一台撑不住这么多计算量,就用多台服务器来分摊这部分流量,引导请求进入不同的服务器进行计算解析。这时候我们就加入一个中间件来引导请求流量进入不同的服务器。
域名解析到负载均衡器上负载均衡、负载均衡器收到来自客户端的请求流量后,将请求转发到挂载在负载均衡器下面的服务器集群中(负载均衡器实时监听各服务器的运载性能,优先选择性能较好cpu指数低的那台,也可以通过设置转发权重设置转发概率)。
因请求都是转发到了不同的服务器,那么大家可能就会有一个疑问,我是有状态的请求,即是session会话保持怎么办,我第一次访问的是服务器A,第二次我访问的服务器B,怎么保持这个session会话的有效。
解决办法:
1、设置负载均衡器的会话保持设置(并且需要设置会话保持时间)。
2、采用redis 存储session数据,取消掉默认的采用文件的形式保存session数据
3、所有的服务器读取sessiond数据的数据源不从本地服务器文件上读取,都从redis数据库中读取出来(客户端多次请求域名是不变的,所以只要域名不变,那么在该域名上获取的session_cookie值依然会随请求提交到服务上,服务器收到session_cookie,就会去redis中查询此session_cookie 所对应的session会话数据)
4、数据的一致性:同redis操作session一样,要保持不管访问到了哪台服务器,我获取到的数据都是一样的,这样就需要各个服务器共用一个数据库。
由此,就完成了负载均衡的一个简单简单架构模型
它的优点:
1、同WAF一样,他也可以禁用某些的IP网段地址的访问,但查询IP地址需要通过查询日志获取访问ip段。
2、流量分发
3、采用的是内网请求,速度快,不占用服务器的外网带宽,占用的是内网带宽。(当然也要是你的负载均衡器和服务器在同一个服务区,如果是不同的服务区也是用的公网)
3、OSS 文件存储
这个服务就干一件事情,提供给用户下载静态资源的一个高性能服务,比如我们开发系统中所有的图片、css、js、媒体资源、等其它静态资源都可以向这个地方放置,客户端的请求流量从服务器走的都只是生成一个静态的html,而客户端在解析html文件需要引入的外部静态资源都从OSS上走,不再从服务器上走。
这样做的好处:
1、减小了服务器的公网带宽入流量和出流量(节约了这部分流量可以给更多的用户提供页面下载流量)
2、减小了服务器的I/O读写(服务器供用户下载静态资源也是需要消耗一部分计算性能的,也可以节约出来进行更多的计算)
3、成本也减少了很多(OSS的计费标准和升级服务器带宽的成本具体可以去参考一下性价比)
OSS的好处
1、没有带宽限制(就是不管有多少用户同时访问,都可以提供稳定的服务)
2、有完善的文件管理工具(阿里云有提供可视化的界面操作管理)
4、RDS数据库读写分离(数据库集群)
还有一种情况就是我们开发的应用对数据库的操作比较多,或者也叫迸发量大后对数据库的要求比较大,怎么办呢?
1、做缓存,将一些需要不经常更新,且需要经常使用的数据缓存到本地文件中或者缓存到redis等缓存数据库中(缓存数据库是将数据缓存到内存当中,所以读写速度特别快,如果迸发量大导致数据库内存溢出就比较危险了,所以选择产品的时候要预估自己的预期)
2、增强数据库的读写能力(读写分离)
读写分离的原理本质是主数据库只执行写操作,读操作由读数据库执行,从而达到整体的数据库性能的提升,而数据库之间的数据同步是读数据库每隔n(n>0整数)秒去主库同步数据。
方案二
1、关闭不必要的端口和服务
2、安装杀毒软件或者是防火墙来抵御攻击。
3、定期修改账户密码,尽量设置的复杂些,不要使用弱密码。
4、日常维护的时候要注意,不建议在服务器上安装过多的软件。
5、及时修复漏洞,在有官方安全补丁发布时,要及时更新补丁。
6、设置账户权限,不同的文件夹允许什么账号访问、修改等,同时,重要的文件夹建议增加密码。
7、建议要定期备份数据,当有发现问题时,可以及时替换成正常的文件。
如果服务器已经被入侵,解决方法如下
1、发现服务器被入侵,应立即关闭所有网站服务,暂停至少3小时。
2、下载服务器日志,并且对服务器进行全盘杀毒扫描。
3、Windows系统打上最新的补丁,然后就是mysql或者sql数据库补丁,还有php以及IIS,serv-u就更不用说了,经常出漏洞的东西,还有就是有些IDC们使用的虚拟主机管理软件。
4、关闭删除所有可疑的系统帐号,尤其是那些具有高权限的系统账户!重新为所有网站目录配置权限,关闭可执行的目录权限,对图片和非脚本目录做无权限处理。
5、完成以上步骤后,您需要把管理员账户密码,以及数据库管理密码,特别是sql的sa密码,还有mysql的root密码,要知道,这些账户都是具有特殊权限的,黑客可以通过他们得到系统权限!
6、Web服务器一般都是通过网站漏洞入侵的,你需要对网站程序进行检查(配合上面的日志分析),对所有网站可以进行上传、写入shell的地方进行严格的检查和处理。
版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有