我们知道[M$]的windows是漏洞百出,但是大部分时候我们都在忍受,因为widows的易用
性使我们很难舍弃它这个千疮百孔的东东。但是随着Linux内核的不断升级和图形交互界
面的不断完善,越来越多的人开始尝试使用Linux这个对他们来说还相当新奇的OS.但是
事实上并没有东西是十全十美的,除了系统本身的因素之外,很多人为的原因都会造成
这个许多人认为比Ms Windows安全的OS变得不安全。在接下来,我们会讨论在安装了一
个Linux后在安全方面应该注意的一些基本的方面。嘿嘿!!!!!!
我将会从六个方面介绍linux的安全,第一个是用户帐号,好,废话少说,我们马上开始
。
Linux的的所有管理功能都由单个帐号享有,它就是root,说白了就相当于win2k的admin
istrator帐号,叫法不同罢了。
Root使你能够对所有资源做最大的调整,你还可以有权直接允许或拒绝单个用户,一部
分用户或所有用户的的访问。Root可以控制用户访问权限及其用户存放文件的位置,还
可以控制用户可以访问哪些资源,以及用户如何得知哪些资源可以被访问。
很多人都奇怪,为什么自己需要除了root之外的令一个帐号,难道不可以直接使用root
吗??答案是很明确的,绝对不要把root使用于个人目的,除非在有绝对必要的情况下
,比如说系统恢复等。为何要这么做呢?首先,如果你拥有root的绝对使用权,文件和
访问控制对你来说没有任何意义,你可以在任何时间对他们进行改动。但是,如果对这
种权利进行滥用则会造成不必要的损失。其次,如果你直接使用root则会把你的系统暴
露在无法预测的安全威胁之下。
接下来我将把帐号的创建和管理分四部分来讨论
帐号策略
一般来说一个帐号包含两个要素:一是授权登陆,另一是授权访问。
授权登陆是用户的一种特权,是不可以随意授权的。如果你为用户提供重要服务的同时
而又不赋予他们shell访问访问权限,那就别授予。Shell访问是指用户用户利用远程te
lnet访问服务器的本地shell,这是不太好的事情,会招致很多麻烦。比如说恶意shell
用户可以使用远程攻击文件和服务。
如果在建立linux网络时必须授予用户shell访问权,可以采取以下措施减少隐患
单独设立一台机器用于shell访问,使此机器仅做shell用途
不在此机上安装任何多余的服务
备份系统,最好系统恢复的准备
不合其它机器建立信任关系
转移二进制文件到no setuid方式挂装的分区,把重要文件系统分放不同分区
充分保证日志的使用性,保证记录日志,重定向日志储存。
帐号结构
一个帐号应该包括
;有效的用户名;和密码
;主目录
;shell访问权
当用户登陆linux时,linux会核对passwd文件,以确定正确与否。
Passwd文件包含着帐户号的条目,它存放于/etc/passwd。
我们来分析一个帐号条目
gouy2k(用户名):x(经过加密的密码):0(用户ID):0(组ID):Wokao(真实姓名):/home/gou
y2k(用户主目录):/bin/bash(用户shell)
在创建帐号时,你的自动帐号管理工具会创建一些目录,包括新用户的主目录,一般是
/home/user.
3.添加和删除用户
首先是添加用户,有以下几种方式
使用命令行工具
我们可以使用adduser命令
$adduser username
然后我们运行$passwd password来设置密码为password
另外是adduser可以自动设置一些值,包括UID,GID等。
要注意的是如果你安装了隐藏套件,则最好把linux用户密码存放在别处。因为它会暴露
用户口令给一般用户。
使用图形方式
比如说很流行的linuxconf,这里就不做详细说明,请参看关于其介绍文章。
手动编辑/etc/passwd来添加用户
对于初学者来说,这种方法不推荐,因为不太安全,嘿嘿。
当手动编辑时可以使用vipw.
然后是删除用户
如果没有使用口令shadow,则可以把用户条目从/etc/passwd删除,然后把用户主目录删
除(/home/username)。不过从/etc/passwd删除用户条目时记住用vipw,删除用户目录
时键入
rm -r /home/username.
当使用了口令隐藏则必须使用userdel来删除用户
$ /user/sbin/userdel username
4.处理特殊帐号
我在上面说过了,root是不可以随便使用的,但是为了达到使用root来管理系统的目的
,我们可以使用su命令。
Su可以是你使用别人的用户ID和组ID来运行shell,但要知道真确的密码。只要运行
$su
就可以暂时变成root,但linux会提示输入密码。
当我们需要授权其它用户以root身份运行某些命令时我们可以使用sudo命令。
——————————————————————————————————
当然,密码是和帐号不可分割的,当我们需要登陆linux时,口令是很重要的,尤其是允
许远程登陆的linux服务器,密码则显得尤其重要,如果没有密码的保障,其它的一切安
全措施都会显得脆弱。
要做到真正保障密码的安全,我们可以采取以下措施
安装shadow
设计有效的口令策略
加强系统抵抗口令攻击的能力
(转载请著名作者和出处)
Linux安全概述2——用户访问
By gouy2k
www.s8s8.net
Linux安全机制的一个重要组成部分就是访问控制,就是指通过root来定制用户的访问权限。我们可以通过对用户分组来加强访问控制。由于一个组织往往划分为若干个部门,而相同部门的用户可能访问相同的文件,所以linux允许你把用户按照组来划分。这样,当对文件或目录设置访问权限时没必要对每个用户都设置,大多数情况下,这种设置可以按组进行,
在linux下可以建立访问权限来限制用户访问文件和目录的范围。有3种基本的访问权限类型
读:允许用户读指定文件
写:允许用户修改指定文件
执行:允许用户执行指定的文件或者cd进入指定目录
可以用以下符号表达访问权限
r-读
w-写
x-执行
如果确定文件或目录的访问权限类型,使用ls -l命令做长格式列表,我们以一个gouy2k的peal脚本为例子,最左边可以看出其访问权限类型:
-rwxrwxr-x 1 gouy2k gouy2k 45 Apr 20 20:33 xxx.pl
访问权限包括10个字符
-(目录或文件) rwx(所有者访问权限) rwx(组权限) r-x(其它所有用户权限)
第一个字符表明访问权限的资源类型
前三个字符表明所有者访问权限
接下来三个字符表示组成员访问权限
作后三个字符表示系统中其它成员的访问权限
可以用chmod命令来设置这些权限
为单个用户设置文件目录或访问权限,可以使用三个运算符
- 删除访问权限
+增加访问权限
=设置访问权限
使用字符(r,w,z)来为文件或目录设置访问权限是方法之一
r 添加或删除读访问权限
w添加或删除写访问权限
x添加或删除执行访问权限
为控制chmod所编辑的权限属于用户,组,还是其它用户,可以分别使用u,g或修改符,此时只需在访问权限操作前添加响应的修改符
比如说,从文件的组成员删除访问写权限,可以用下面语法:
$ chmod g -w filename
还有一种八进制的设置文件访问权限的方法,此时可以一起使用多个八进制值来设施最终的访问权限集合。
当使用八进制的时候,可以把它们加到一起,最后得到一个表示所要设置的访问权限的数。不过一般没有这么复杂,你可以使用一个简便的方法设置所有者,组成员和其它用户设置访问权限:
0=没有任何权限
1=执行
2=写
3=写和执行
4=读
5=读和执行
6=读和写
7=所有访问权限
举个例子
chomd 761 mylog.cgi
此时说明:
所有者有全部权限(7)
组成员有读写权限(6)
其它成员只能读(1)
要注意的是,上面关于设置访问权限的的讨论可能会让你认为你必须为所有文件设置访问权限。但并非如此,在安装过程中,linux会处理系统文件访问权限,然而,这些设置往往不准确,有时默认设置会把访问权限设置的过于严格,但更多时候会设置的不够严格。在这种情况下就会引起安全问题。
有两种具有特殊访问权限的文件
SGID(设置组ID)
SUID(设置用户ID)
设置了SGID和SUID访问权限的文件比较特殊,因为即使其它用户执行它们,也会拥有所有权限。也就是说设置为SUIDroot的程序,即使是普通用户在使用,他也是作为root来运行的。因此,要特别注意SGID和SUID的安全问题。
如果攻击者利用了SUID root程序的弱点,他就及可能得到root权限。
只要键入
find / -perm 4000
就可以找到SUID文件
这些文件与系统的维护和配置有关。
其它可能带来安全隐患的的文件是那些没有有效所有者和组的文件。这些文件可能会危及系统安全。要找到这些文件可以输入 find / -nouser或find / -nogroup
接下来让我们看一下如何预防SUID和SGID攻击
很少有程序必须设定为SUID,对于一定要由此必要的程序来说,可以让它们自称一组
确保重要的SUID脚本不可写
对于并非绝对需要设置为SUID的SUID程序,可以改变它们的访问权限
对于没有用的SUID程序,删除它们
Linux安全概述3——linux日志
By gouy2k
www.s8s8.net
如果你是linux的初级用户,你很可能不熟悉linux日志。简单的说,日志就是操作系统或应用程序记录所发生的时间并保存这些记录供日后使用的过程。日志可以提供以下的记录:
l 程序是否出错,以及出错的时间和原因
l 谁使用了程序,以及使用的时间
l 程序的UID和PID
l 程序是否按要求的方式执行了任务
日志最重要的一个功能就是用于安全问题方面的功能.他将保存攻击者攻击者的行为记录。
日志在linux下的应用很普遍,被广泛应用与操作系统,应用程序以及协议级别。大多数linux服务会把日志信息输出到标准的甚至是共享的日志文件中。
这些日志大部分都位于/var/log.接下来我们来认识一下以下的文件以及工具
lastlog
lastlog跟踪用户登陆的情况,可以解释为:
lastlog格式化并打印最后的登陆日志/var/log/lastlog.它打印登陆名,端口,和最后的登陆时间。默认情况下将以UID顺序打印lastlog条目。
默认时,lastlog报告列于/etc/passwd的所有用户
[gouy2k@ssmetana log]$ lastlog
也可以使用-u命令行单独挑选特定的用户
$lostlog ?u ?user
lasrlog从/var/lag/lastlog中抽取的信息。但不象其它日志,lastlog中的条目仅是临时信息。因此应该采取措施每天保存。
Last
Last是报告最后的用户信息。解释为:
Last搜索整个/var/log/wump文件来显示改文件创建以来的用户登陆和注册的信息列表。
它报告的数据包括:
l 用户
l 登陆中端
l 在指定会话期的ip地址
l 日期和实间
l 会话持续时间
[gouy2k@smetana log]$ last
我们也可以抽取特定的相关用户
[gouy2k@smetana log]$ last root
last还支持多命令选项
-a 选项指定last应该在最后一字段显示主机名
-d 指定last不仅显示目标主机名,也显示其ip地址
-n 指定last因该输出的行数
-num 指定last应该输出的行数
-R 指定last应在输出中省略的主机字段
-x 指定last应显示系统重新引导和运行级别变化的信息
当然,last最重要的一个用处是在于安全方面的价值,它可以帮你调查入侵事件。我们可以使用last命令扑捉入侵者的真实ip和进程。
当然,入侵者不是笨蛋,它们相当清楚/var/log/lastlog和/var/log/wtmp可以暴露它们的行踪。因此它们会利用一些sweeper和cleaner来清楚这些日志。
比如说:utclean, cloak,wzap等等。
为了防止这些高手窜改你的日志,我们还得有两手准备。就是至少使用一种第三方日志工具。好处是第一,知道你运用了特殊日志工具的人不多。第二,这类工具的独立倒出自己的日志。
或者还可以隔离日志防止窜改。比如建立独立的日志服务器。不过代价比较高哦,呵呵。
Xferlog
用以记录ftp文件传输,解释为:
xferlog文件包含有ftp服务器守护程序ftpd(8)所生成的日志信息。改文件通常位于/usr/adm下,但通过ftpd(8)中的选项可以将它位于任何位置。
输出字段包包括:
l 当前时间
l 文件传输持续时间
l 远程主机信息
l 被传输文件大小
l 文件名称
l 传输类型
l 发生的任何特殊操作
l 传输方向
l 访问模式
l 用户名
l 服务
l 认证方式
l 认证用户id
用以下命令实现
[root@pointy gouy2k]# more /var/log/xferlog
httpd日志
Apache服务器日志进程httpd,通常保存在/var/log/httpd/apach下的两个文件
Access_log 保存有一般的访问信息:谁连接乐服务器,何时,何种方式,执行乐那些操作
其保存下列值
l 访问者ip
l 事件发生日期时间
l 命令或请求
l 状态码
命令格式为 $more access_log
Error_log 保存访问错误
其保存有下列字段
l 日期和时间
l 错误类型
l 产生原因
l 服务
l 采取措施
命令格式为 $more error_log
Apache允许使用LogFormat指令定制httpd日志,这里不做详细解释。
Samba
如果系统位于多操作系统环境,我们就可能会运行samba服务器软件来维持同windows同类的协调性,在检查系统时应该检查samba日志。这是日常管理必要的。
RedHat 7.x的samba日志位于/var/log/samba目录,有三个日志文件
1. log.mb-netbios服务日志。如果把samba作为wins服务器用,那么你就应该偶尔检查一下改文件。
2. log.smb-samba服务器的一般日志。在这里可以检查失败的连接尝试以及其它问题。
3. log.hostname-这是针对计算机而生成的日志。如果有机器设法建立一个对你的服务器的连接,系统就会为这台机器生车工一个日志文件。
要注意的是,根据系统配置的不同,你可能回注意到在samba目录下积累乐一堆workstion.log文件。如果远程机器设法连接到你的计算机并浏览乐可用的共享,系统就会生成一个日志文件。然而,这并不意味那台机器可以访问任何共享。在访问被拒绝的情况下,你就回看到为那台机器所创建的包括access denied信息的日志文件就越积越多。如果你不想看多这些烦人的日志,那么可以在samba服务器级别来堵住这些烦人的地址的通信。要达到这个目的,可以在smb.conf文件中使用hosts allow或hosts deny命令。
关于系统和内核的消息
系统和内核的消息由两个程序负责处理:
syslogf-记录许多程序都使用的日志类型。Syslogd所扑捉的典型值包括程序名,工具类型,优先级和储存记录消息。
Klogd-截取并记录内核消息。
要查看这两个日志的运行,必须借助于/var/log/messages
Linux安全概述4--入侵检测
By gouy2k
www.s8s8.net
目前在计算机安全领域一门相对新的东西正在发展,它就是入侵检测(instrusion detection),入侵检测存在的目的就是检测已经发生的和正在进行的攻击
,甚至可以采取一定步骤来组织这些攻击进一步发展。许多入侵检测即使采取的的措施就是分析计算机日志,其他的方法则是通过分析网络通讯来检测正在
进行的攻击的特征信息。
入侵检测是使用自动化和智能化工具来实时检测入侵的一种操作。这种工具被称为入侵检测系统,也就是我们经常见到的IDS.(instrusion detection
system). 目前存在的入侵检测系统大致上可以分为两种:
1.基于规则的系统:依赖于以知的攻击方式以及攻击特征的库和数据库而工作的。当进入的通信满足特定的条件或规则时,它就被视为企图入侵。基于规则
的系统的主要缺点是它依赖于信息的及时性,就是必须及时更新攻击数据库。另外,有时这种入侵检测的存在规则制定的可靠性问题。
2.自动适应性系统:这种系统采用了更高级的技术,包括AI(人工智能),不仅仅可以识别以知攻击的特征,还能进行自行学习。但缺点就是比较贵。呵呵
在基于规则的入侵检测系统中,存在两种方式:主动方式和被动方式。
在主动凡是中,入侵检测工具实际上是监听网络的通信,一旦注意到可疑的活动,系统就回采取措施。
在被动方式中,入侵检测工具则是监视日志记录。一旦注意到可疑的活动,系统就回采取措施
这样看起来可能区别不大,但是实际上是很不同的,被动方式仅仅比日志记录多了一个步骤。它可以提醒你,但是是有延迟的。而主动方式则允许你在攻击
者发动攻击时作出响应。
实际上仅需协同标准的linux工具你就可以实现一个被动式模型。比如说:
1.使用logsurfer来监视日志中的某些预定的,有威胁的活动。指示当logsurfer发现这样的活动时就触发
2.编制一个脚本,它添加攻击者的地址到host.deny,这样tcpd就会拒绝它们以后的连接
当然,上面这个是一种相当原始的方法。如果攻击者经常更换其源地址,则~~~~~,不用说了吧。
但主动方式也有它的缺点。其中之一就是它们是资源密集型的方式。这就造成了两个问题,一是这类系统固有的交换性造成的,一是硬件和软件的局限性造
成的。
首先,如果攻击者知道你运行主动式ids,他就可以做多个假设。第一,你的ids在遇到相同攻击时会采取相同的措施,他就会从不同的地址发动多个实例来攻
击你的主机,他可以实施进程饱和攻击,而且很有可能使你的ids崩溃或失去工作能力。
第二,由于受到系统硬件的限制,你可能被迫选择通信分析而不是内容分析。通信分析所耗费的系统资源较少,因为你处理的是数据包首而不是内容。这样
可以防范许多攻击,但绝对不是全部。有大量攻击特征是隐藏在数据包内容之中的,因此简单的通信分析是足以检测到它们的。
最后,两种方式都不是百分百精确的,都会产生错误的入侵报告。这可能造成很严重的后果。比如说之前系统管理人员看到很多错误的入侵警报,然后漠视
这些,然后再有依次是真正的入侵,后果会如何,可想而知。
下面介绍一些linux下的入侵检测工具
1. Snort
是基于libpcap的数据包过滤器,嗅觉器和日志记录器。snort是基于规则的入侵检测工具,采用了主动和被动两种方式工作。它实时监听网络通讯并把通讯
同定义的规则匹配,当发现匹配情况时,会执行以下操做之一:
警告你检测到的通讯
记录检测到的通讯
忽略检测到的通讯
要构建一个规则,必须提供以下要求:
匹配发生时的行动记录
协议
源地址
源端口
目标ip
目标端口
附加选项
2.蜂鸟系统(hmming bird system)
它是一个很复杂的工具箱,用于大型网络的入侵检测。
它能够使你在多个主机之间分配安全信息和入侵检测信息,因此可用于检测各种复杂的攻击。攻击者现在可以使用各种复杂攻击来隐藏他们的活动,把活动
从多个源地址散布到多台主机。由于这类攻击的日志记录通常没有合成一体,所以很难精确定位识别。 hummer工作于跨主机的环境,可以作为一个潜在的解
决方案。它可以把主机划分为层次结构和组,并减少分析中的模糊因素。
3.MON
是一个功能强大,复杂的,分布式入侵检测工具,可以监视整个网络。
简单的说,mon的工作过程是:
主进程在一台中心机器上运行,并在那里收集,整理并报告其他主机的子进程所接受的数据
在其他主机中,运行着客户子进程。这些进程向中心mon主机报告异常
在所有主机上,mon运行着各种代理来执行不同的维护,诊断和入侵检测任务