Linux之apache服务搭建以及浅析web安全

WEB服务器的架设,linux有一个很著名的架构叫lamplinux+apache+mysql+php,就知道apache的分量了。

 

在搭建apache服务钱需要做DNS服务器

DNS的搭建http://wt7315.blog.51cto.com/10319657/1852795

http的详解http://wt7315.blog.51cto.com/10319657/1837595



apache

后台进程:httpd

脚本:/etc/rc.d/init.d/httpd

默认使用端口:80(http)443(https) 

所需RPM包:httpd 

配置路径:/etc/httpd/* 

默认网站存放路径:/var/www/*

优点:免费,稳定,速度快


先安装apache

wKioL1fegRbRABIUAADF3XYxRxM604.png


etc/httpd存放着apache的所有配置文件,/var/www是网页文件存放目录,一般在HTML


wKioL1fegVKCbsZfAABrhWNwheA041.png

vim /etc/httpd/conf/httpd.conf appach的主配置文件

 

httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机3个部分组成。每部分都有相应的配置语句,该文件所有配置语句的语法为“配置参数名称 参数值”的形式。

httpd.conf中每行包含一条语句,行末使用反斜杠“\”可以换行,但是反斜杠与下一行中间不能有任何其他字符(包括空白)

httpd.conf的配置语句除了选项的参数值以外,所有选项指令均不区分大小写,可以在每一行前用“#”号表示注释。 

wKioL1fegXmTf0FYAACgEQGBUB4972.png

如果能看见红色的redhat的测试页面,就证明你的安装没有问题,如果看不见,你就要从新安装,或者调试你的网络了,网页文件默认是放在/var/www/html中的,我们现在就自己去写个网页,简单的测试下

documentRoot 就是定义网站的默认网站存放目录


wKioL1fegZrhJdi6AAAt0ThzKJQ782.png


配置DNS,将地址解析到linux的ip地址(上篇的DNS已经解析过了)


wKiom1fegczwE511AAAkdDLZrGg866.png


 

虚拟目录


每个 Internet服务可以从多个目录中发布。通过以通用命名约定 (UNC) 名、用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上。虚拟服务器可拥有一个宿主目录和任意数量的其它发布目录。其它发布目录称为虚拟目录。

apacheconfig文件中documentRoot 后面的是apache在解析页面时候的根目录,如果在本机上同时存在两个工作目录那么如果不虚拟(alias)目录的话,需要不断修改documentroot的路径,然后重启apache,相当麻烦,解决这个问题的办法之一就是设置虚拟目录


虚拟目录虚拟目录有以下优点。

1)便于访问。

2)便于移动站点中的目录。

3)能灵活加大磁盘空间。

4)安全性好。

5)使用Alias选项可以创建虚拟目录。

 

 
mkdir /var/www/dns/
echo /var/www/dns > /var/www/dns
并在最后加上Alias/dns “/var/www/dns”


/dns是在url里输入的时候起个名字,/var/www/dns/dns名字的具体存放路径,中间的空格是TAB出来的。


wKioL1fegk7BV5G7AAAOV_A1vHE900.png


service httpd restart重启httpd服务并进行测试。


wKiom1fegmXjaOTYAAAV5ENVsPw545.png



虚拟主机

是在一台服务器上运行多个Web站点。

三种设定虚拟主机的方式


基于名称的虚拟主机

只需服务器有一个IP地址即可,所有的虚拟主机共享同一个IP,各虚拟主机之间通过域名进行区分。

但需要新版本的HTTP 1.1浏览器支持。这种方式已经成为建立虚拟主机的标准方式。


基于IP的虚拟主机

需要在服务器上绑定多个IP地址,然后配置Apache,把多个网站绑定在不同的IP地址上,访问服务器上不同的IP地址,就可以看到不同的网站。


基于端口号的虚拟主机

只需服务器有一个IP地址即可,所有的虚拟主机共享同一个IP,各虚拟主机之间通过不同的端口号进行区分。在设置基于端口号的虚拟主机的配置时,需要利用Listen语句设置所监听的端口。

 

 

1.配置基于域名的虚拟主机

创建步骤:

① 注册虚拟主机所要使用的域名

实现域名解析可以有两种方法:

在客户机上通过修改/etc/hosts文件实现。这是一种比较简单的方法,只需在/etc/hosts文件中加入下面两行

172.16.1.117   www. baidu.com

172.16.1.117   www.qq.com

(2) DNS服务器上通过配置DNS实现。

 

wKiom1fegomTd-rCAAAxQeUJCa0431.png


上次的dns配置,已经配置好了百度的域名解析,进行简单的添加和修改,就把qq的域名解析也配置好了。

 

② 创建所需的目录和默认首页文件

/usr目录下创建四个目录,分别用来存放两主机的网页和日志文件。操作如下:

mkdir /var/www/baidu.com
echo “this is www.baidu.com’s web “> / var/www/baidu.com/index.html
 
mkdir /var/www/qq.com
echo “this is www.qq.com’s web “> / var/www/qq.com/index.html


 wKioL1fegvOT3l2IAABBKjGwX18354.png

 

编辑/etc/httpd/conf/httpd.conf配置文件

ServerAdmin

你的地址如果服务器有任何问题将发信到这个地址, 这个地址会在服务器产生的某些页面中出现,例如,错误报告


DocumentRoot

放置服务文档的目录, 默认状态下,所有的请求都以这个目录为基础, 但是直接符号连接和别名可用于指向其他位置。

ServerName sss.dev

允许设置主机名如果与程序获得的不同,主机名将返回客户端(例如,用"www"代替主机真实的名字)。缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里指定IP地址。当ServerName设置不正确的时候,服务器不能正常启动。 





修改配置文件,httpd.conf文件最后添加以下两台虚拟机

wKiom1fegxewryT8AABlej0PBIk876.png


重新启动httpd服务

service  httpd  restart ,进行测试

wKiom1fegzWxVOPVAAAdliwQZIk383.png

wKioL1feg0fx4733AAAaLI0J8Qc922.png


2.基于IP地址的虚拟主机

 

①为一块网卡绑定多个IP地址

cd   /etc/sysconfig/network-scripts
cp  ifcfg-eth0   ifcfg-eth0:0
vim   ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=172.16.102.121



wKioL1feg2ThD0WDAAAuQuj2Ypg397.png


重启网卡服务

wKioL1feg4bSd33DAAC3I4iSfnc378.png


②注册虚拟主机所使用的域名

向基于名称的虚拟主机配置类似,配置DNS服务,将测试的网址分别指向到192.168.1.117192.168.1.18两个IP地址上,当然也可以编辑/etc/hosts文件

wKiom1feg5uwQOYXAAAc39G4xos755.png


③创建web站点根目录和默认首页文件

mkdir  /var/www/ip1 /var/www/ip2
 
 
echo “ this is 172.16.1.117’s  web”>/var/www/ip1/index.html
echo “ this is 172.16.1.118’s  web”>/var/www/ip2/index.html


wKioL1feg7GSxO19AAA_R3_hYWc922.png


④编辑/etc/httpd/conf/httpd.conf配置文件

<VirtualHost  192.168.1.117>  
ServerName    www.ip1.com 
DocumentRoot  /var/www/ip1
</VirtualHost>  
 
<VirtualHost 192.168.1.118> 
ServerName    www.ip2.com 
DocumentRoot   /var/www/ip2
</VirtualHost>


wKiom1fehALRadMMAAA5Nuoq5ew519.png




⑤重新启动httpd服务进行测试

wKiom1fehByiX2rtAAA_OLxcjOM353.png


3.配置基于端口号的虚拟主机

把基于域名的配置完,剩下的两种配置基本也相似


wKioL1fehECStYrGAABT9zGSxtc144.png



编辑配置文件,

保证有以下Listen指令,并配置虚拟主机


wKioL1fehJWzYBHZAAA6rSMTi4M668.png


重启httpd服务测试

wKioL1fenVvjcE8mAABETr5q63o459.png


搭建完web服务,可以使用之外,就该考虑安全性了。

随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上web安全也迅速得到强烈关注。


现状原因

  由于TCP/IP的设计是没有考虑安全问题的,这使得在网络上传输的数据是没有任何安全防护的。攻击者可以利用系统漏洞造成系统进程缓冲区溢出,攻击者可能获得或者提升自己在有漏洞的系统上的用户权限来运行任意程序,甚至安装和运行恶意代码,窃取机密数据。而应用层面的软件在开发过程中也没有过多考虑到安全的问题,这使得程序本身存在很多漏洞,诸如缓冲区溢出、SQL注入等等流行的应用层攻击,这些均属于在软件研发过程中疏忽了对安全的考虑所致。

  用户对某些隐秘的东西带有强烈的好奇心,一些利用木马或病毒程序进行攻击的攻击者,往往就利用了用户的这种好奇心理,将木马或病毒程序捆绑在一些艳丽的图片、音视频及免费软件等文件中,然后把这些文件置于某些网站当中,再引诱用户去单击或下载运行。或者通过电子邮件附件和QQ、MSN等即时聊天软件,将这些捆绑了木马或病毒的文件发送给用户,利用用户的好奇心理引诱用户打开或运行这些文件。

  管理员的配置不当,基于用户输入的一切都是不可靠的,很多的漏洞是管理员设置不当,过滤不严造成,当然,永远没有完美的程序。


web安全的范围太广,出于小白阶段的我也正在学习研究,后面后对每个漏洞进行研究,但是基本上每个网站都存在以下的漏洞。

(1)跨站脚本攻击(XSS)

 XSS攻击,通常指黑客通过“html注入” 篡改了网页,插入了恶意的脚本,从而在用户浏览网页的时候,控制用户浏览器的一种攻击。


最常见的XSS攻击就是通过读取浏览器的Cookie对象,从而发起“cookie劫持”,当前用户的登录凭证存储于服务器的session中,而在浏览器中是以cookie的形式进行存储的,cookie被劫持后,意味着攻击者可以不通过密码而直接登录系统。我们也可以直接在浏览器中输入脚本javascript:alert(document.cookie)来获取当前cookie值。


目前防止“cookie劫持”的方法大致有:a. 输入检查,使用filter来过滤敏感的关键字;b. 将cookie与用户ip地址进行绑定;c. 为cookie植入HttpOnly标识。


(2)SQL注入攻击

http://wt7315.blog.51cto.com/10319657/1828167

http://wt7315.blog.51cto.com/10319657/1841241

关于sql注入,写过两篇很详细的sql注入和sql注入神器sqlmap的介绍。

Sql注入的的两个关键条件:第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。


根据上面两个关键条件,系统为防止sql注入使用了以下方法:


第一:使用预编译语句,这也是防御sql注入最有效的方法,完全摒弃代码的直接拼接所带来的危险。

第二:关闭web服务器的错误回显功能,这样可以防止攻击者对系统进行攻击后,通过回显的详细错误信息对攻击内容进行调整,对攻击者提供极大的便利。我们在项目的web.xml文件中添加以下示例代码:


第三:数据库自身使用最小权限原则,系统程序不使用最高权限的root对数据库进行连接,而是使用能满足系统需求的最小权限账户进行数据库连接,而且多个数据库之间使用不同的账户,保证每个数据库都有独立对应的账户。


(3)文件上传漏洞


文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过脚本文件获得了执行服务器端命令的能力,这样将会导致严重的后果。而本系统内涉及到大量的图片格式文件上传,因此对于上传问题的处理非常谨慎,并尽可能的达到安全标准。


本系统主要通过对上传文件详细的格式验证:


第一步:通过后缀名来简单判断文件的格式。

第二步:通过读取文件的前两个字符进行对比,例如png格式图片的前两个字符为8950,而jpg格式的图片前两个字符为ffd8。

第三步:如果上传的为图片,则获取相应的高度和宽度,如果存在相应的宽度和高度则可认为上传的是图片。


文中若有错误,请多包含,后面会针对web安全漏洞的每个漏洞进行解析,当然自己也会加强学习。

本文出自 “罹殇” 博客,请务必保留此出处http://wt7315.blog.51cto.com/10319657/1853791

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
1、路由配置 路由是互联网络的核心,没有路由的网络如同一座孤岛,掌握路由的配置是IT人员的必备技能。 例如:现在有三台主机需要通信,其中A和B在同一网段,C在另一网段,这两个网段有三个路由相隔,如何实现他们之间的通信呢? 主机A:IP=192.168.1.100/24 主机B:IP=192.168.1.63/24 主机C:IP=10.2.110.100/16 R1的接口0:IP=192.168.1.1/24,接口1:IP=110.1.24.10/24 R2的接口0:IP=110.1.24.20/24,接口

linux下使用quagga配置ospf协议 - 2016-09-12 18:09:22

环境:三台redhat6.5(VM虚拟机) 一、ospf协议 OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。 PS:这里不过多讲解ospf协议,可在网上自行查找学习 二、配置 首先下载安装软件包,其他yum源以及网络配置就不再介绍了,三

远程桌面排错(已解决) - 2016-09-12 18:09:20

最近遇到了一个比较棘手的问题,用户远程桌面无法连接,我的博文中之前也写到了一篇远程桌面排错,但是这次的和之前的大不相同 = = 原因排查步骤 1)首先当然是查看报错,这个是我自己机器上截图的,报错信息都一样 2)首先查看服务器是否开启了远程访问 3)查看目标是否可以ping通 4)查看服务是否正常启动 5)如果要正常远程到目标必须可以telnet到目标的远程端口,默认为3389,这个端口不通,我们之前已经将防火墙关闭了 6)本机上telnet 127.0.0.1 3389,这么做的话可以排除外界因素的干扰
随着php脚本语言使用的普及,目前webserice服务大部分都在用nginx+(php-fpm)的结构,了解了其工作过程后才可以在各个方面想办法做调整优化和故障排查,从以下几点总结一下这种模型。 一、nginx 和 php-fpm 的关系和分工 nginx 是 web 服务器, php-fpm 是一个 PHPFastCGI 进程管理器,两者遵循 fastcgi 的协议进行通信, nginx 负责静态类似 html 文件的处理, php-fpm 负责 php 脚本语言的执行,这么设计的目的是为了解耦前端
数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值 32G 。你需要通过一些办法释放掉表空间或者扩容表空间来解决问题。 一般当系统中大量使用分区表,而针对分区表清除数据,是不会释放表空间的,必须把分区 drop 掉,才会释放空间。 下面我们具体了解一下这三个命令: 一、delete 1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在re
最近有一个服务器升级的项目,得知用户需求是03服务器上的文件、DNS、DHCP要迁移到Server 2012上,文件服务器最重要的当然是保留权限的设置,DHCP和DNS服务器实现迁移相对来说很简单 于是我便模拟了以下环境先进行测试,项目完成之后再做总结 = = 环境介绍 DC 192.168.124.250 Migration 192.168.124.251(Server 2012 R2 Datacenter,将03的服务器迁移到此服务器) FDDS 192.168.124.252(Server 2003
CentOS6中关于网络配置的命令有很多,本文将介绍几个平时最长用的几个命令,以及网卡IP地址的配置和简单路由配置。 1、经常使用的查看IP地址命令为 ifconfig,不跟参数的情况下默认查看所有已启用的网卡信息,如下图所示: 如果想查看具体某块网卡信息,则可以在ifconfig后面跟上网卡设备,如只查看eth0的信息则执行:ifconfig eht0 即可。 禁用某块网卡:结合down命令可以禁用某块网卡,如要禁用eth0网卡,则执行:ifconfig eth0 down 即可,这种禁用只是临时性的,
为Windows Server 2012 R2指定授权服务器 在Windows Server 2008 R2的终端服务中,可以手动指定授权服务器,而在Windows Server 2012 R2中,默认只能通过"远程桌面连接服务"管理器,指定授权服务器,而要使用远程桌面连接服务管理器,则需要安装一系列的组件,但大多数的时候,我们只是想配置一台"远程桌面会话主机",不想要安装"远程桌面网关服务"、"远程桌面Web代理"这些组件,那么,有没有办法和Windows Server 2008 R2一样,为Windo
移除VMware View桌面中孤立的主机与桌面池 在使用VMware View桌面的过程中,如果由于多种因为(例如重新安装了vCenter Server)导致View桌面池丢失,想要在View Administrator中删除这些孤立的虚拟机与桌面池,可以使用如下的方法。 图1-1 停留在"正在删除" 图1-2 停止在"正在删除" 1 登录View Composer删除孤立虚拟机 进入View Composer的服务器,打开View Composer安装位置,复制该路径,如图1-3所示。默认情况下,此路
今天发现有一台线上的服务器内存报警,最近报警发现有好几次了,慎是恼火,想一探究竟,看了一下是一台16G内存的服务器,free 了一下看了一下确实是没有多少内存可用了,再看了一下都跑了一些什么应用,结果发现只跑了一个数据库跟一个跨服,当时心里就感觉16G内存不可能用完, [root@hqg-222-99.logs]#psaux|awk'{sum=sum+$6};END{printsum/1024"M"}'4363.01M才使用了4g多一点#也可以通过这段在网上找到的脚本查看#/bin/bashforPROC