综合实例一+基于linux平台的WEB安全技术研究.docx
- 文档编号:17776672
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:56
- 大小:6.75MB
综合实例一+基于linux平台的WEB安全技术研究.docx
《综合实例一+基于linux平台的WEB安全技术研究.docx》由会员分享,可在线阅读,更多相关《综合实例一+基于linux平台的WEB安全技术研究.docx(56页珍藏版)》请在冰点文库上搜索。
综合实例一+基于linux平台的WEB安全技术研究
摘要:
根据网络安全的“木桶理论”,网络安全是由若干“木板”元素的安全决定,因此本文就Linux平台下WEB服务器的各个安全元素进行分析并给出其增强安全的技术方法。
从而构建一个稳定的WEB的安全防护体系。
关键词:
LINUX,APACHE,PHP,MYSQL,安全,防火墙,入侵检测技术
ABSTRACT:
Accordingtonetworksecurity"buckettheory",networksecurityisanumberof"wood"elementofthesecuritydecisions,sothisWEBserverontheLinuxplatformtoanalyzethevarioussecurityelements,andgivenitsenhancedsecuritytechnologyandmethods.TobuildastablesystemofsecurityprotectionWEB
Keywords:
Linux;Apache;Php;Mysql;security;firewall;intrusiondetectiontechnology
前言
随着Internet/Intranet网络的快速发展,采用Linux操作系统作为网络服务器的用户越来越多,其一因为Linux系统时开放源代码的免费软件;其二因为较之微软的Windows网络操作系统而言,Linux系统具有更好的稳定性、高效性和安全性。
目前流行的LAMP组合是Linux操作系统,Apache网络服务器,MySQL数据库,PHP、Perl或者Python编程语言的缩写。
在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得更加普遍。
并且它们为了改善不同组件之间的协作,已经创建了某些扩展功能。
目前,几乎在所有的Linux发布版中都默认包含了这些产品。
Linux、Apache、MySQL和Perl、PHP或者Python语言,这些产品共同组成了一个强大的Web应用程序平台。
作为开源软件的组合,LAMP最大的优势就是它的开放性。
对开发人员来说,开放程度越高,其可选择东西也就越多,去描述需求的逻辑结构就很自由。
下面就以LAMP组合为例,分别研究Linux系统、Apache网络服务器、MySQL数据库和PHP脚本语言的安全防护。
第一章LAMP的安全模型
1.1LAMP简介
Linux+Apache+Mysql+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
1.2LAMP的优势
灵活性:
既没有技术上的限制也没有许可证的限制。
这允许你能够以适合你的方式灵活地构建和部署应用程序,而不是以你正在使用的技术的提供商规定的方式。
个性化:
LAMP组件是开源软件,已经建立了大量的额外的组件和提供额外功能的模块,能够让你个性化设置组件和功能以便满足你的需求。
容易开发:
用LAMP组件开发极其简单,代码通常非常简洁,甚至非程序员也能够修改或者扩展这个应用程序,同时也给专业的程序员提供了各种高级的特性。
容易应用:
大多数主机服务都把基于LAMP的环境作为标准,应用程序也不需要编译,在新的主机上部署一个应用程序就像拷贝一个应用软件那样容易。
安全:
由于是开源软件,大量的程序员关注这些软件的开发,问题通常能够很快地修复,不需要昂贵的技术支持合同。
经过大量的用户和团体组织多年来的使用,LAMP技术是安全和稳定的。
成本低廉:
LAMP组件都是开源软件,只要遵循GPL协议,可以自由获得和免费使用,极大降低了部署成本。
1.3模型图的设计
根据网络安全的木桶理论,设计中把lamp安全模型划分为lamp安全、防火墙及入侵二个主要的模块,将其中的各项安全尽可能考虑周全并切实实施,才能保证整个web平台的高效稳定性。
图1.0安全lamp模型
1.4模型的分析
模型的划分原则:
首先在实现Linux系统安全的基础,搭建安全的apache,PHP,mysql服务器,构成一个内部安全的web平台,然后再结合防火墙与入侵检测技术加固整个web平台外部安全性,形成一个内外结合的稳定,安全lamp系统模型。
1.5模型的实现
1.5.1Linux系统的安全防护
Linux系统作为LAMP组合的基础,它的安全关系到整个系统的稳定,尽管Linux在功能上、价格上和性能上都有很多优势,但是作为开放式的操作系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入Linux系统,或者盗取Linux系统上的重要信息。
因此需要我们仔细地设定Linux的各种系统功能,并且加上必要的安全措施。
一般来说对它的安全防护体系主要包括一下几个方面:
保护账户的安全
试用最新的系统核心
取消不必要的服务
日志管理
共同防御,确保安全
1.5.2Apache服务器的安全防护
安装最新的补丁
隐藏Apache的版本号及其他敏感信息
确保Apache以其自身的用户账号和组运行
确保Web根目录之外的文件没有提供服务
关闭目录浏览
关闭CGI执行程序,多重选项。
1.5.3MySQL数据库安全防护
MySQL数据库是跨平台的关系型数据库,同时又是具有客户机/服务器体系结构的分布式数据库管理系统。
用户可以利用很多语言编写访问数据库。
大部分Linux发行版都已经集成了MySQL作为标准的数据库软件,所以需让它运行得更加安全。
root口令管理
限制拥有process权限的用户范围
不要把file权限给所有用户
由于篇幅所限,本文不再深入讨论有关Mysql数据方面的安全。
1.5.4PHP服务器安全防护
PHP是一种功能强大的语言和解释器,无论是作为Web服务器的模块方式运行还是作为单独的CGI程序运行,都能访问文件、执行命令或者在服务器上打开链接,而这些特性都使得PHP运行时必须特别注意安全。
以安全模式运行PHP
关闭PHP的错误显示
限制PHP脚本的运行目录
使用PHP加密技术
1.5.5防火墙与入侵检测设计
防火墙作为系统的第一道防线,其主要作用是监控可信任网络和不可信任网络之间的访问通道,可在内部与外部网络之间构成一道防护屏障,拦截来自外部的绯法访问并阻止内部信息的外泄,用Linux+iptables做防火墙具有很高的灵活性和稳定性,而设置一个好的安全规则并严格实施,是配置一个好的防火墙必备条件。
入侵检测技术的作用是监控网络和计算机系统是否出现被入侵或滥用的征兆。
经过不断发展和完善,作为监控和识别攻击的标准解决方案,IDS系统已经成为安全防备系统的重要组成部分。
Linux平台下入侵检测的工具软件,如snort,它是一款轻量级且易于使用的工具,可以独立运行,也可以与psad和iptables一起使用。
根据系统需求灵活应用,建立安全的IDS系统。
第二章Linux系统的安全配置
2.1Linux操作系统简介
由于Linux操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎。
随着Linux操作系统在我国的不断普及,有关的政府部门更是将基于Linux开发具有自主版权的操作系统提高到保卫国家信息安全的高度来看待,因此我们不难预测今后Linux操作系统在我国将得到更快更大的发展。
虽然Linux与UNIX很类似,但它们之间也有一些重要的差别。
对于众多的习惯了UNIX和WindowsNT的系统管理员来讲,如何保证Linux操作系统的安全将面临许多新的挑战。
2.2版本选择与安装
2.2.1安装redhatAS4.0操作系统
在安装该版本的Linux系统时候,需要充分考虑各个磁盘分区的安全性,分别为不同的应用安装单独的主分区,将关键的分区设置为只读,这样将大大提高文件系统的安全。
(1)磁盘分区安全问题:
Linux的文件系统可以分成几个主要的分区,每个分区分别进行不同的配置和安装,一般情况下要把根目录(/)、引导目录(/boot)、用户目录(/home)、临时目录(/tmp)、/usr/local和/var目录分开到不同的磁盘分区,这样会保证如果某些目录遭到攻击或破坏不会波及到其他重要的目录,而且各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃.
(2)分区方案表
虚拟机的linux系统目前有12G的空间可用:
空间容量
配置说明
根目录/
3G
引导目录/boot
120MB
包含了操作系统的内核和正常启动系统的文件,把/boot单独分区,使主要的其它分区出现了问题,系统依然能够启动。
交换目录/Swap
512M
作为交换分区,推荐大小为内存的两倍,本机的内存为256M,所以分配为512M
用户目录/home
2G
该空间主要存放用户的个人文件
临时目录/tmp
1G
存放大量的临时文件和碎片,对于多用户系统或者网络服务器是必要的。
当用户对系统进行了错误的操作,因为文件系统的这一部分仍然还承受着读写操作,它通常会比其它的部分更快地发生问题。
所以文件系统的其它部分仍然是安全的.
软件目录/usr
3G
该分区是Linux系统存放软件的地方,应将最大空间分给它
日志目录/var
2G
/var分区是数据变化频繁,存放系统日志分区,也是LINUXredhatAS4.0的WEB目录默认存放位置,如/var/www/html.
(3)fdisk-l查看分区信息,如图1.1所示。
图1.1分区情况
2.3Linux系统安全问题
(1)篡改Root密码
如果不给Grub设置口令,那么就等于root用户的密码可以被随意更改,因为攻击者可以通改Grub的引导参数,从而进入单用户模式直接修改root密码。
所以作为一个安全的系统,给Grub设置密码是十分必要的。
(2)用户权限问题
对不同的用户必须要分类管理,赋予不同的操作权限,而对于那些不设密码的用户,必须要禁止,这样可以防止攻击者利用此途径进入系统。
通过查看/etc/passwd文件可以检查用户名与密码的对应关系。
(3)口令文件安全
在Linux系统下的/etc/passwd文件,是以明文方式存放密码的,这就给系统的安全性带来了很大的隐患。
用chattr命令给的文件加上不可更改属性,从而防止非授权用户获得权限。
(4)Su命令安全
通过系统的su命令,普通用户在知道root用户密码的前提下可以转化为root用户,这给系统的安全带来很大的隐患。
为了防止此类问题的发生,可以禁用su命令。
增强系统安全性
(5)系统信息泄露
默认情况下,当你登录Linux系统的时候,会显示出相关的系统信息,这样会给攻击者利用,提高其入侵的成功率。
我们可以编辑相关的文件来隐藏系统的信息。
(6)DoS攻击
DoS攻击是指攻击者通过消耗受害网络的带宽,消耗受害主机的系统资源,发掘编程缺陷,提供虚假路由或DNS信息,使被攻击目标不能正常工作。
为了防范此类的攻击,我们可以对系统所有的用户设置资源限制。
2.4linux系统安全策略
2.4.1给BIOS设置密码
Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。
这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。
2.4.2设置grub启动口令
grup负责引导主集中的操作系统,其安全性设置至关重要(从grup或lilo引导开始,可以进入single模式,修改root密码)
第一步:
设置文件/boot/grub/grub.conf,在passwword后面加入设置的密码。
第二步:
重新返回引导界面,根据提示,按要求输入用户名和密码。
2.4.3为LILO增加开机口令
LILO是代表Linux加载程序,在/etc/lilo.conf.anaconda文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。
第一步:
编辑lilo.conf.anaconda文件(vi/etc/lilo.conf.anaconda),在/etc/lilo.conf.anaconda文件中添加两个选项:
restricted,password。
并在password选项后面添加要设定的密码,这样系统在启动lilo时就要求通过密码验证。
第二步:
通过编辑lilo.conf.anaconda文件,可以知道在lilo中,口令是以明码的方式存放的,存在一定的安全隐患,所以要把/etc/lilo.conf.anaconda文件的权限设置为:
只允许root用户读取。
[root@localhost/]#chmod0600/etc/lilo.conf.anaconda.
第三步:
为了防止非法更改lilo.conf.anaconda文件,可以使用“chattr”命令把"/etc/llilo.conf.anaconda"文件无法变动。
[root@localhost/]#Chattr+i/etc/lilo.conf.anacoda
2.4.4用户与口令设置
(1)用户安全:
在Linux系统中,系统将输入的用户名存放在/etc/passwd文件中。
能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程序。
还要杜绝不设口令的帐号存在。
可以通过查看/etc/passwd文件发现。
例如,存在的用户名为test的帐号,没有设置口令,则在该文件中存在第二项为空:
test:
:
100:
9:
:
/home/test:
/bin/bash。
应将该类帐号删除或者设置口令。
(2)用户口令:
在/etc/passwd文件中是以明文方式存放密码的,这就给系统的安全性带来了很大的隐患。
用chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。
[root@localhost/]#chattr+i/etc/passwd
[root@localhost/]#chattr+i/etc/shadow
[root@localhost/]#chattr+i/etc/group
[root@localhost/]#chattr+i/etc/gshadow
(3)修改一些系统帐号的Shell变量:
系统中存在一些默认的账号,例如uucp,ftp和news等,有一些仅仅需要FTP功能的帐号,一定不要给他们设置/bin/bash或者/bin/sh等Shell变量。
编辑/etc/passwd文件,输入以下命令,将它们的Shell变量置空.
[root@localhost/]#usermod–s/dev/nulluucp
[root@localhost/]#usermod–s/dev/nullftp
[root@localhost/]#usermod–s/dev/nullnews
(4)设置口令最小长度和最短使用时间
编辑/etc/login.defs文件中PASS_MIN_DAYS选项,修改参数为30天,PASS_MIN_LEN选项。
设置为长度为8。
2.4.5取消普通用户的控制台访问权限
使用命令rm -f /etc/security/console.apps/
2.4.6控制root登录tty设备
“/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。
编辑securetty文件(vi/etc/securetty)注释掉(在这一行的开头加上#号)不想让root登录的tty设备
2.4.7禁止普通用户su为root用户
su(SubstituteUser替代用户)命令允许你成为系统中其他已存在的用户,如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su文件,并添加下面的行:
authrequired/lib/security/$ISA/pam_wheel.so.group=isd
这表示只有isd组的用户可以执行su命令成为root用户。
2.4.8隐藏系统信息
设置登陆时候不要显示操作系统和版本信息,首先编辑"/etc/rc.d/rc.local"文件,在下面显示的这些行前加一个“#”,把输出信息的命令注释掉或者备份后清空。
然后删除"/etc"目录下的“”和"issue"文件:
[root@localhost/]#rm–f/etc/issue
[root@localhost/]#rm–f/etc/
2.4.9阻止ping
防止任何人ping你的系统,提高系统的安全性。
[root@localhost/]#echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all1>/proc/sys/net/ipv4/icmp_echo_ingnore_all
2.4.10防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。
如最大进程数和内存使用数量等。
第一步:
编辑/etc/security/limits.conf,并添加以下内容:
[root@localhost/]#vi/etc/security/limits.conf
[root@localhost/]#hardcore0
[root@localhost/]#hardrss5000
[root@localhost/]#hardnproc20
第二步:
然后必须编辑/etc/pam.d/login文件检查,检查sessionrequired/lib/security/pam_limits.so是否存在。
没有就自己添加上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。
2.4.11特别的帐号
禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。
在终端上打入下面的命令删掉下面的用户。
[root@localhost/]#userdeladm
[root@localhost/]#userdellp
[root@localhost/]#userdelsync
[root@localhost/]#userdelshutdown
[root@localhost/]#userdelhalt
[root@localhost/]#userdelmail
如果你不用sendmail服务器,procmail.mailx,就删除这个帐号。
[root@localhost/]#userdelnews
[root@localhost/]#userdeluucp
[root@localhost/]#userdeloperator
[root@localhost/]#userdelgames
如果你不用Xwindows服务器,就删掉这个帐号。
[root@localhost/]#userdelgopher
[root@localhost/]#userdelftp
如果你不允许匿名FTP,就删掉这个用户帐号。
打入下面的命令删除组帐号
[root@localhost/]#groupdeladm
[root@localhost/]#groupdellp
[root@localhost/]#groupdelmail
如不用Sendmail服务器,删除这个组帐号
[root@localhost/]#groupdelnews
[root@localhost/]#groupdeluucp
[root@localhost/]#groupdelgames
如你不用XWindows,删除这个组帐号
[root@localhost/]#groupdeldip
[root@localhost/]#groupdelpppusers
[root@localhost/]#groupdelpopusers
2.4.12经常更新及安装补丁
由于各种linux厂商的分版不同,所以先访问redhat相关主页获取信息 ftp:
//–Fvh文件名可用up2date命令直接更新.
第三章Apache安全分析与配置
3.1 Web服务器软件Apache简介
随着网络技术的普及、应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一。
原有的客户端/服务器模式正在逐渐被浏览器/服务器模式所取代。
本章将介绍Web服务器的工作原理以及面临的主要威胁,并结合linux平台搭配安全的Web服务器。
3.1.1.Apache的工作原理
客户端与服务器的通信过程简述如下:
(1)客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。
根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。
(2)Web服务器收到请求后,将客户端要求的页面内容返回到客户端。
如果出现错误,那么返回错误代码。
(3)断开与远端Web服务器的连接。
3.1.2 Apache服务器面临的安全问题
为了保护Web服务器不被恶意攻击和破坏,第一步就是要了解和识别它所面临的安全风险,Apache服务器主要面临的安全问题如下:
(1)显示版本信息
通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。
在默认情况下,系统会把Apache版本模块都显示出来,这样无疑是给黑客提供了重要的消息,防止此类的信息泄露,可以通过修改apache的配置文件。
(2)拒绝服务攻击
这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。
这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。
(3)被攻击者获得root权限的安全缺陷
该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。
杜绝此类安全隐患可以为Apache使用配置专门的用户和用户组,并限制其权限。
(4)防止非法用户访问
黑客通过匿名用户来攻击apache服务器,这样使得web服务器难以追踪到黑客的真实身份,不利于进行反攻击及安全防范策略的实施,Apache自带用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 实例 基于 linux 平台 WEB 安全技术 研究