Linux操作系统的安全策略及相关知识
Linux操作系统的安全策略及相关知识
Linux操作系统同样会受到很多网络病毒攻击。下面由学习啦小编为大家整理了Linux操作系统的安全策略及相关知识,希望对大家有帮助!
Linux操作系统的安全策略及相关知识
1. Linux系统的基本安全机制介绍
1.1 Linux系统的用户帐号
用户帐号是用户的身份标志,由用户名和口令组成。用户名存放在/etc/passwd文件 中,口令以加密的形式存放在/etc/shadow文件中。在正常情况下,这些口令和其他信息 由操作系统保护,能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程 序。但是如果配置不当或在一些系统运行出错的情况下,这些信息很可能被非法用户得 到,带来安全隐患。
1.2 Linux的文件系统权限
Linux文件系统的安全如同其它系统一样主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限,主要有只读,可写,可执行,允许SUID,允许SGID等。在这里我们需要注意,权限为SUlD和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,非法用户很容易发现这种情况,如果加以利用就会给系统造成极大危害。
1.3 Linux的系统日志文件
Linux的日志文件用来记录整个操作系统使用状况。下面介绍一下几个重要的系统日志文件:a. /var/log/1astlog文件。此文件中记录最后登录系统的用户登录时间,是否登录成功等信息。管理员登录后可以用lastlog命令查看文件中记录的所用帐号的最后登录时问,再与自己的用机记录对比一下就可以发现该帐弓是否被非法用户盗用。 b. /var/log/secure文件。记录系统自开通以来所有用户的登录时间和地点,可以给系统管理员提供更多的参考,c. /var/log/wtmp文件。此文件可以用last命令查看历史上登录到系统的用户的登录时间和注销时间等信息,删除这个文件可以清除系统登录信息,然后系统会生成新的登录信息。
2. Linux系统安全漏洞介绍
本章主要简述Linux系统常见安全漏洞,让读者对Linux安全有一个简单的认识并增强管理员在系统安全领域上的忧患意识,更好地维护系统。
2.1口令和帐号安全漏洞
非法用户往往通过破解帐号口令来进行系统的攻击,植入木马程序来达到目的。
2.2端口漏洞
非法用户通过探测工具扫描到利于自己攻击的端口后进行相应的破解,达到攻击目的。比如Web端口80,ftp端口,snmp端口,sendmail端口等。
2.3远程过程调用(RPC)
RPC是一个远程工具,它允许在一台计算机上的程序运行在另一个远程计算机上。RPC所引起的最大的威胁是它的执行权限,通常情况下它不需要执行严格授权就可以运行,这使得非法用户可以很容易的访问根(管理员)用户帐户。在系统上RPC常常处于激活状态,因此,RPC对于大多数情况下的Linux系统来说是一个潜在的威胁。
2.4 Sendmail
Sendmail作为邮件传输代理,它的广泛使用意味着老版本或者未打补丁的版本中已知的安全漏洞将成为非法用户们的共同目标。
2.5明文服务
Sniffer攻击是最常见的攻击,Sniffer程序是一种利用以太网的特性把网络适配卡置为杂乱模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。而事实上许多Linux服务,如FTP对于会话的任何部分,即使是登录信息也不加密,这使得这种常见攻击实施起来更容易。Tcpdump程序将显示所有的明文传输过程,非法用户能够使用这个工具来查看安全漏洞。TcpDump是Linux中强大的网络数据采集分析工具之一。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
2.6简单网络管理协议(SNMP)
SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。攻击者通过SNMP一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,来达到获取重要信息的目的。
3. 攻击Linux服务器的四种级别
随着Linux企业应用的扩展,有大量的用户使用Linux操作系统。Linux系统的安全性能受到越来越多的关注,本章根据Linux系统受到攻击的程度通过级别形式列出,并提出不同的解决方案。 对Linux系统攻击的定义是:攻击是一种旨在妨碍,损害,削弱,破坏Linux系统安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏Linux系统。对Linux系统攻击有许多种类,本文从攻击深度的角度由浅入深来详细阐述。
攻击级别一:服务拒绝攻击(DoS)
DoS (Denial of Service)攻击其中文含义是拒绝服务攻击,这种攻击行动使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。非法用户不正当地采用标准协议或连接方法,向攻击的服务发出大量的讯息,占用及超越受攻击服务器所能处理的能力,使它当(Down)机或不能正常地为用户服务。由于DoS攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,DoS也就成为了流传最广,最难防范的攻击方式。在这些 DoS 攻击方式中,又可以分为下列几种:
a.TCP Syn Flooding:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。在每个TCP建立连接时,都要发送一个带SYN标记的数据包,如果在服务器端发送应答包后,客户端不发出确认,服务器会等待到数据超时,如果大量的带SYN标记的数据包发到服务器端后都没有应答,会使服务器端的TCP资源迅速枯竭,导致正常的连接不能进入,甚至会导致服务器的系统崩溃。这就是TCP SYN Flooding攻击的过程。TCP Syn 攻击是由受控制的大量客户发出 TCP 请求但不作回复,使服务器资源被占用,再也无法正常为用户服务。服务器要等待超时(Time Out)才能断开已分配的资源。
b.Smurf
非法用户采用 ICMP(Internet Control Message Protocol RFC792)技术进行攻击。常用的ICMP有 ping 。首先非法用户找出网络上有哪些路由器会回应 ICMP 请求。然后用一个虚假的 IP 源地址向路由器的广播地址发出讯息,路由器会把这讯息广播到网络上所连接的每一台设备。这些设备又马上回应,这样会产生大量讯息流量,从而占用所有设备的资源及网络带宽,而回应的地址就是受攻击的目标。例如用600K bit/sec 流量的ICMP echo (ping)包广播到50 台设备,产生 50 个 ping 回应,便产生 12M bit/sec流量。这些流量流向被攻击的服务器,便会使这服务器瘫痪。ICMP Smurf 的袭击加深了ICMP的泛滥程度,导致了在一个数据包产生成千的ICMP数据包发送到一个根本不需要它们的主机中去,传输多重信息包的服务器用作Smurf 的放大器。
c.Fraggle:
基本概念及做法像 Smurf, 但它是采用UDP echo讯息。阻挡“拒绝服务”的攻击的常用方法之一是:在网络上建立一个过滤器(filter)或侦测器(sniffer),在信息到达网站服务器之前阻挡信息,过滤器会侦察可疑的攻击行动。如果某种可疑行动经常出现,过滤器能接受指示,阻挡包含那种信息,让网站服务器的对外连接线路保持畅通。
攻击级别二:本地用户获取了他们非授权的文件的读写权限
本地用户是指在本地网络的任一台机器上有口令,因而在某一驱动器上有一个目录的用户。本地用户获取到了他们非授权的文件的读写权限的问题是否构成危险很大程度上要看被访问文件的关键性。任何本地用户随意访问临时文件目录(/tmp)都具有危险性,它能够潜在地铺设一条通向下一级别攻击的路径。
级别二的主要攻击方法是:非法用户诱骗合法用户告知其机密信息或执行任务,有时非法用户会假装网络管理人员向用户发送邮件,要求用户给他系统升级的密码。由本地用户启动的攻击几乎都是从远程登录开始。对于Linux系统,最好的办法是将所有shell账号放置于一个
单独的机器上,也就是说,只在一台或多台分配有shell访问的服务器上接受注册。这可以使日志管理,访问控制管理,释放协议和其他潜在的安全问题管理更容易些。还应该将存放用户CGI的系统区分出来。这些机器应该隔离在特定的网络区段,也就是说,根据网络的配置情况,它们应该被路由器或网络交换机包围。其拓扑结构应该确保硬件地址欺骗也不能超出这个区段。
攻击级别三:远程用户获得特权文件的读写权限
第三级别的攻击能做到的不只是核实特定文件是否存在,而且还能读写这些文件。造成这种情况的原因是:Linux系统配置中出现这样一些弱点:即远程用户无需有效账号就可以在服务器上执行有限数量的命令。密码攻击法是第三级别中的主要攻击法,损坏密码是最常见的攻击方法。密码破解是用以描述在使用或不使用工具的情况下渗透网络,系统或资源以解锁用密码保护的资源的一个术语。用户常常忽略他们的密码,密码政策很难得到实施。非法用户有多种工具可以击败技术和社会所保护的密码。主要包括:字典攻击(Dictionary attack),混合攻击(Hybrid attack),蛮力攻击(Brute force attack)。一旦非法用户拥有了用户的密码,他就有很多用户的特权。密码猜想是指手工进入普通密码或通过编好程序的正本取得密码。防范第三级别的攻击的最好的防卫方法便是严格控制进入特权,即使用有效的密码。主要包括密码应当遵循字母,数字,大小写(因为Linux对大小写是有区分)混合使用的规则。使用像“!”或“@”或“#”这样的特殊字符也会添加复杂性。例如采用"Passw0rd",在它后面添加“!”(Passw0rd!),这样您就拥有了一个相当有效的密码。
攻击级别四:远程用户获得根权限
第四攻击级别是最致命的攻击。表示攻击者拥有Linux系统的根,超级用户或管理员许可权,可以读,写并执行所有文件。
攻击级别四主要攻击形式是TCP/IP连续偷窃,被动通道听取和信息包拦截。TCP/IP连续偷窃,被动通道听取和信息包拦截,是为进入网络收集重要信息的方法,不像拒绝服务攻击,这些方法有更多类似偷窃的性质,比较隐蔽不易被发现。一次成功的TCP/IP攻击能让非法用户阻拦两个团体之间的交易,提供中间人袭击的良好机会,然后非法用户会在不被受害者注意的情况下控制一方或双方的交易。通过被动窃听,非法用户会操纵和登记信息,把文件送达,也会从目标系统上所有可通过的通道找到可通过的致命要害。非法用户会寻找联机和密码的结合点,认出申请合法的通道。信息包拦截是指在目标系统约束一个活跃的听者程序以拦截和更改所有的或特别的信息的地址。信息可被改送到非法系统阅读,然后不加改变地送回给非法用户。
TCP/IP连续偷窃实际就是网络嗅探,如果确信有人接了嗅探器到自己的网络上,可以去找一些进行验证的工具。这种工具称为时域反射计量器(Time Domain Reflectometer,TDR),TDR对电磁波的传播和变化进行测量。将一个TDR连接到网络上,能够检测到未授权的获取网络数据的设备。对于防范嗅探器的攻击最好的方法是:
a.安全的拓扑结构:
嗅探器只能在当前网络段上进行数据捕获,这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。
b.会话加密:
不用特别地担心数据被嗅探,而是要想办法使得嗅探器不认识嗅探到的数据。这种方法的优点是明显的,即使攻击者嗅探到了数据,这些数据对他也是没有用的。
Linux操作系统安全策略实例详解
本人所负责的一个项目中16台xSeries 服务器Red Hat Enterprise Linux 6 系统遭到非法用户的攻击,本章着重讲述非法用户如何利用安全漏洞攻击系统以及针对Linux系统安全漏洞如何做安全配置。
1实例介绍
项目前期准备中,用户发现Red Hat Enterprise Linux 6系统无法登陆,上报给IT服务部门。经过系统管理员对系统日志message.log和secure.log分析得出结论,非法用户首先使用探测工具ping到服务器的外网地址,其次通过ssh默认端口22破译root口令,最后当破解成功后登录系统进行操作,在退出系统同时删除日志中所记录的所有操作,给我们分析非法用户究竟做了什么动作带来很大困难,从当前的系统检查看,非法用户修改了root密码,且修改了系统帐号部分配置文件。
附A:查看系统是否遭到攻击的命令
#lastb | awk '{print }'|sort|uniq -c|sort -n
附B:系统日志secure.log节选
“Jan 26 13:57:59 RH65Test sshd[28330]: Failed password for invalid user kormoci from 61.142.106.34 port 56074 ssh2” “Jan 31 01:49:02 RH65Test sshd[12978]: Failed password for root from 36.39.246.121 port 42740 ssh2”
补充:Linux操作系统的安全配置
针对上述实例出现的安全漏洞,我们有针对性地主要从密码策略,用户设置,如何开放服务,系统补丁,验证方式等方面进行系统的安全配置,以到达使Linux系统更安全,稳定。
密码策略:
a.设定最小密码长度为8位
b.密码要求有大小写字母,数字和特殊字符的组合方式(请参看第三章攻击级别三)
c.不使用用户名作为密码的一部分或者全部
d.每90天更改一次密码
e.帐户不能重复使用最近8次(含8次)内已使用的密码
f.帐户登录次数设定为6次,一旦超过6次,则锁定帐户。在本案例中,我们看到非法用户尝试登录次数最多达到了4681次,因此通过设定用户尝试登录次数大大地提高了安全性。
用户设置:
a.禁止root通过SSH端口直接登录
b.创建管理用户’itadmin’并赋予sudo权限。sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。
c.修改/etc/sudoers文件,使得普通用户通过sudo获取root权限。
d.设定自动注销帐号时间为10分钟。如果用户在离开系统之前忘记注销帐户或者没有关闭终端窗口,那将会带来很大的安全隐患,应该让系统自动注销。通过修改账户中“TMOUT”参数,实现用户的终端在一个指定的时间内一直空闲时自动注销。
服务管理:
在Linux系统的服务管理方面,如果想做到服务的最好安全,其中主要的就是升级服务本身的软件版本,另外一个就是关闭系统不使用的服务,做到服务最小化。
a.非法用户惯用通过频繁地使用ping命令方式来攻击服务器,即使攻击未遂也会导致网络堵塞,降低传输效率,为了避免此类恶意的网络攻击,我们关闭ping服务。
b.针对第二章提到的常见安全漏洞4和6,我们需要关闭sendmail和snmp服务。
c.修改SSH默认端口22为20022,增大非法用户破解SSH端口的难度。
系统补丁:
搭建yum服务器,便于将必要的安全补丁升级到最新版本。
验证方式:
Linux默认的远程登录方式通常是SSH,而SSH默认使用的验证方式是密码,在本案例中我们针对密码验证方式配置的安全策略,不过为了更加安全,或者说从根本上杜绝非法用户的攻击,我们也可以采用Public Key认证方式。Public Key(非对称,asymmetric)认证使用一对相关联的Key Pair(一个公钥Public Key,一个私钥Private Key)来代替传统的密码(或我们常说的口令,Password)。顾名思义,Public Key是用来公开的,可以将其放到SSH服务器自己的帐号中,而Private Key只能由自己保管,用来证明自己身份。使用Public Key加密过的数据只有用与之相对应的Private Key才能解密。这样在认证的过程中,Public Key拥有者便可以通过Public Key加密一些东西发送给对应的Private Key拥有者,如果在通信的双方都拥有对方的Public Key(自己的Private Key只由自己保管),那么就可以通过这对Key Pair来安全地交换信息,从而实现相互认证。