[摘 要] Linux系统使用越来越广泛,关系Linux的安全越来越受到人们的重视,本文结合笔者在Linux系统安全管理方面的一些经验体会,从账户、密码策略、文件权限,日志管理、远程访问等5个方面,对linux系统安全谈谈自己的体会,供大家参考。
一、引言
随着Internet/Intranet网络的日益普及,Linux作为一个现代的操作系统,正在各个方面得到广泛的应用。Linux在服务器、嵌入式等方面已经取得不俗的成绩,在桌面系统方面,也逐渐受到欢迎。于是Linux的安全问题也逐渐受到人们的重视。
Linux是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux系统,或者盗取Linux系统上的重要信息。因此,详细分析Linux系统的安全机制,找出它可能存在的安全隐患,给出相应的安全策略和保护措施是十分必要的。针对Linux的基本安全防护,笔者这里稍做介绍。
二、Linux系统的安全策略
1.Linux系统的用户账号策略
管理员的工作中,相当重要的一环就是管理账号。在管理 Linux 主机的账号时,一个最重要的方面就是确保每一个UID仅仅使用一次。
另外就是设置有限的登陆次数来预防无休止的登陆攻击,通过编辑/etc/pam.d/system-auth,添加下面两句可以设置账户最多连续登陆5次,超过5次账户将被锁定,只有管理员才能帮助解锁。
auth required pam_tally.so deny=5
account required pam_tally.so
2.密码策略要求
(1)口令时效和口令长度的设置。口令时效和口令长度是一种系统机制,用于强制口令在特定的时间长度后失效。对用户来说,这可能带来了一些麻烦,但是它确保了口令会定期进行更改,是一项很好的安全措施。默认情况下,绝大多数的Linux版本并没有打开口令时效,不过要想打开却非常简单。通过编辑/etc/login.defs,你可以指定几个参数,来设置口令实效和口令长度的默认设定:
PASS_MAX_DAYS99999
PASS_MIN_DAYS 0
PASS_MIN_LEN5
PASS_WARN_AGE7
当设置口令时效的天数为99999时,实际上相当于关闭了口令时效。一般设定为90天或者更短时间来更改一次。PASS_MIN_DAYS参数则设定了在本次密码修改后,下次允许更改密码之前所需的最少天数。PASS_MIN_LEN是指密码设置的最小长度,一般定义为8位以上。PASS_WARN_AGE的设定则指明了在口令失效前多少天开始通知用户更改密码(一般在用户刚刚登陆系统时就会收到警告通知)。
(2)控制密码使用频率。控制适度的密码重用频率,也可以为密码的安全策略提供良好的保护,可以通过编辑/etc/pam.d/system-auth设定密码重用。一般设置重用密码前更换密码的最小次数为4次。
password required pam_unix.so remember=3 use_authtok md5 shadow 或者 password sufficient pam_unix.so remember=3 use_authtok md5 shadow。
3.Linux的基本文件权限要求
Linux中每一个文件都具有特定的属性,主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此正确的文件权限设定是非常重要的。与系统安全关系较为密切的几个文件目录权限设置要求如下表:
4.Linux日志文件管理
日志对于系统安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。因此,保护系统日志安全,不被内部用户或外部入侵者修改或删除显得尤为重要。
在Linux系统中,有三个主要的日志子系统:
连接时间日志——由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计——由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志——由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
Linux的日志文件很多,但是/var/log/wtmp,/var/log/messages,/var/log/faillog(权限设置为600) ,/var/log/secure (如果是Debian,/var/log/auth.log将代替它)最好是存在的。
如果服务器支持很多的用户的话,这些日志文件的大小会很快地增加,在服务器硬盘不是非常充足的情况下,必须采取措施限制日志文件的大小,定期做好日志备份和清除是非常重要的。
5.Linux的远程登录:使用OPENSSH代替FTP和Telnet
我们通常使用的网络传输程序FTP和Telnet等在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,黑客利用嗅探器非常容易截 获这些口令和数据。SSH的英文全称是Secure SHell。通过使用SSH,用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。另外,传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP提供一个安全的“传输通道”。在不安全的网路通信环境中,它提供了很强的验证机制与非常安全的通信环境。SSH(Secure Shell)最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。命令行使用OPENSSH比较麻烦。这里介绍gFTP和OPENSSH整合在一齐,提供一个图形化加密传输方案。gFTP和Windows下的 CuteFTP一样使用非常简单,而且几乎所有的Linux发行版本都带有gFTP,不需要安装就可以使用本论文由无忧论文网整理提供 。Windows下支持SSH的客户端软件不少,推荐使用Putty和Filezilla。
目前很多公司企业对信息安全问题日益重视,完善的信息安全控制架构,先进的管理和技术的结合,才能真正满足公司企业的需要。
参考文献:
[1]王一川 Linux黑客大曝光:Linux安全机密与解决方案[M].清华大学出版社,2002~10~1
[2]汪 辉等:Linux安全最大化(第二版)[M].电子工业出版社, 2002~1~1
[3]前导工作室 Linux安全:入侵防范、检测、恢复[M].机械工业出版社,2002~1~1
本论文由无忧论文网整理提供
Linux操作系统的基础知识并不是很难理解,熟悉掌握基础知识能更好的学习Linux。下面由我为大家整理了Linux操作系统的知识点总结的相关知识,希望对大家有帮助!
Linux操作系统的知识点总结1.操作系统总体介绍
•CPU: 就像人的大脑,主要负责相关事情的判断以及实际处理的机制。
查询指令: cat /proc/cpuinfo
•内存: 大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU进行判断。查询指令: cat /proc/meminfo
物理内存
物理内存,就是我们将内存条插在主板内存槽上的内存条的容量的大小。看计算机配置的时候,主要看的就是这个物理内存
虚拟内存
Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。
关系:windows中虚拟内存和物理内存可能都会被使用,Linux中,只有物理内存使用完了,才会使用虚拟内存
•硬盘: 大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据。
查询指令: fdisk -l (需要root权限)
Linux操作系统的知识点总结2.内存和硬盘的关系
具体命令后面会介绍
Linux操作系统的知识点总结3.操作系统监控命令>单独写一份
•vmstat
•sar
•iostat
•top
•free
•uptime
•netstat
•ps
•strace
•lsof
Linux操作系统的知识点总结4.如何分析操作系统
实际流程: 读数据》数据>硬盘》虚拟内存(swaP)》内存》cpu缓存》执行队列
分析方向,正好相反
Linux操作系统的知识点总结4.各个部分常出现的漏洞
•CPU: 容易出现该类瓶颈的邮件服务器、动态web服务器
•内存: 容易出现该类瓶颈的打印服务器、数据库服务器、静态web服务器
•磁盘I/O: 频繁读写操作的项目
•网络带宽: 频繁大量上传下载项目
Linux操作系统的知识点总结5.linux本身的一些优化
1. 系统安装优化
当安装linux系统时,磁盘划分、 SWAP内存的分配都直接影响系统性能。对于虚拟内存SWAP的设定,现在已经没有了所谓虚拟内存是物理内存两倍的要求,但是根据经验,如果内存较小(物理内存小于4GB),一般设置SWAP交换分区大小为内存的2倍;如果物理内存大约4GB小于16GB,可以设置SWAP大小等于或者略小于物理内存即可;如果内存在16GB以上,原则上可以设置SWAP为0,但最好设置一定大小的SWAP
• 2. 内核参数优化
例如,如果系统部署的Oracle数据库应用,那么就需要对系统共享内存段( kernel.shmmax, kenerl.shmmni, kernel.shmall)、
系统信号量( kernel.sem)、文件句柄( fs.file0max)等参数进行优化设置;如果部署的WEB应用,那么就需要根据web应用特性进行网络参数的优化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、 net.core.somaxconn等网络
内核参数
• 3. 文件系统优化
在linux下可选的文件系统有ext2,、 ext3、 xfs、 ReiserFS
linux标准文件系统是从VFS开始,然后ext、 ext2, ext2是linux上的标准文件系统, ext3是在ext2基础上增加日志形成的。从VFS到ext3,设计思想没有太大变化,都是早期UNIX家族基于超级块和inode的设计理念设计而成。XFS文件系统是SGI开发的一个高级日志文件系统,通过分布处理磁盘请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问,因此XFS极具伸缩性,非常健壮,具有优秀的日志记录功能、可扩展性强、快速写入等优点。ReiserFS在Hans Reiser领导下开发出来的一款高性能的日志文件系统,通过完全平衡树来管理数据,包括文件数据、文件名及日志支持等。与ext2、 ext3相比,最大的优点是访问性能和安全性大幅提升。具有高效、合理利用磁盘空间,先将的日志管理机制,特意的搜寻方式,海量磁盘存储等优点
Linux操作系统的知识点总结5.重点知识
物理内存和虚拟内存
1.如何查看物理内存和虚拟内存?
Top 命令可以查看物理内存和虚拟内存的数值
2.Buffer
是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。
3.Cache
CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度
4.CPU中断
当CPU执行完一条现行指令时,如果外设向CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断,表示CPU不在受理另外一个设备的中断。这时,CPU将寻找中断请求源是哪一个设备,并保存CPU自己的程序计数器(PC)的内容。然后,他将转移到处理该中断源的中断服务程序。CPU在保存现场信息,设备服务(如交换数据)以后,将恢复现场信息。在这些动作完成以后,开放中断,并返回到原来被中断的主程序的下一条指令。
5.上下文切换
上下文切换(Context Switch) 或者环境切换
多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件。
在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。
进程上下文用进程的PCB(进程控制块,也称为PCB,即任务控制块)表示,它包括进程状态,CPU寄存器的值等。
通常通过执行一个状态保存来保存CPU当前状态,然后执行一个状态恢复重新开始运行。
上下文切换会对性能造成负面影响。然而,一些上下文切换相对其他切换而言更加昂贵;其中一个更昂贵的上下文切换是跨核上下文切换(Cross-Core Context Switch)。一个线程可以运行在一个专用处理器上,也可以跨处理器。由单个处理器服务的线程都有处理器关联(Processor Affinity),这样会更加有效。在另一个处理器内核抢占和调度线程会引起缓存丢失,作为缓存丢失和过度上下文切换的结果要访问本地内存。总之,这称为“跨核上下文切换”。
6.进程和线程
进程概念
进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
线程概念
线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一
进程和线程的关系
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
不知道你这个论文要求是什么,给你个建议吧。可以先写操作系统方面的,然后再写Linux操作系统,和其他操作系统进行比较。呵呵。
LINUX跟DOS差不多就是大概了解一下LINUX的结构之后记命令就行了???================================不可误人子弟,,,记得以前也在知道里回答过类似的问题,=======================================================================我个人在这里说一下在学习linux的这几年的一点心得,不敢说有什么成功的经验,但是有很多失败的教训。第一点:我学习linux是在大二的时候。那时候装的发行版本是redhat。可是刚刚开始的时候声卡的驱动装不上,其它比如说显卡,网卡都弄好。但是由于没有声音所以就没坚持用下去。几年后再次弄那个声卡的时候还是弄不上,可是这次的决心比较大,所以查了n多的资料;请教了很多人。终于被我弄好了。---------总结:无论是学习linux还是其它,决心是要摆在很重要的位置的。第二点:前两年的时候,对linux以及gnu的很多开源的东西产生了浓厚的兴趣;所以就开始深入的研究linux。甚至使用linux不久就开始阅读内核代码。可是到今天我还没真正意义上理解内核的结构,以及很多模块的功能,及实现原理。----------总结:不要在错误的时间做错误的事情。具体的讲有那么几层意思:a》不要动不动就去读kernel代码;b》不要太高估自己的能力;c》千万要在有一定知识积累的时候才能去研究更深层次的东西;d》要带的问题去学习,而不是空洞地进行技术研究;研究技术本身是学院派的作风。第三点:linux上面的开源的软件,和linux所包含的开放的精神,文化和内涵;它们是比linux内核更有价值的。--------总结:选择了linux其实也是选择了一种文化,选择了一种信仰;既然把这个选择上升到那么高的层次,那么任何的比较(与其它系统)都是不明智的;至少是不会有很大价值的。第四点:回到问题本身,如何去学习它?我个人认为应该遵循以下的顺序:接触(安装一个发行版本)=》认识(至少了解它能做什么)=》熟悉(用它来完成一些日常的工作)=》理解(在长时间的使用过程中了解为什么linux是这样解决问题的)=》创造(在前面几步的基础上做一些改进,创新)。当然在这样一个过程中有很多的“功课”要做,操作系统方面的知识当然是很重要的;但是不是很急迫,所以可以在后来有基础了再去了解;至于象保护模式也是一样。我个人做了这样一个学习的等级划分:1。重要,紧急:熟悉目录结构,熟悉基本操作命令(注意是基本),文本编辑器的使用(使用vi或者emacs但是不建议都学,因为本人当初就是想都精通,后来惹了不必要的麻烦;现在专心用vi)。2。重要,不紧急:正则表达式,grep,sed,awk,perl,gcc,gdb(其实这些东西的学习是需要很长的过程,但是它的使用又是贯穿整个系统;之所以重要是因为它们很好地体现了linux的精神;之所以不紧急并不是真的不紧急,是因为它们本身就是一个很伟大很复杂的软件需要慢慢消化吸收而不是囫囵吞枣)。3。不重要,紧急:一个绚丽的桌面,一些幽雅的桌面小插件(linux的强大事实上并不在其桌面环境,虽然gnome和kde都非常的幽雅;之所以不重要是相对于其它更重要的东西而言的,而之所以紧急是因为这些东西会在很短的时间内catch住你的心,你的兴趣;而兴趣是支撑你接下去学习过程的最最重要的东西---这一点请相信)。4。不重要,不紧急:将windows上常用的东西移到linux上,比如要在wine上玩wow或者cs(原因是显而易见的,开航母去钓鱼肯定没有划着小船来的有情调)最后我个人的建议是:了解操作系统的组成,工作原理要从了解它上面运行的应用软件开始。了解它上面的应用软件则要通过日复一日地使用它。我不觉得哪一本书能达到你期望的那种效果;但是如果在你坚持使用linux的过程中总是不断地去总结和接受新的东西,那么不要过很久你会发现linux是你的一个很好的助手。
Linux 系统命令
指令名称:chown
使用权限:root
使用方式:chmod [-cfhvR] [--help] [--version] user[:group] file...
说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
把计:
user:新的档案拥有者的使用者 IDgroup:新的档案拥有者的使用者群体(group)-c:若该档案拥有者确实已经更改,才显示其更改动作-f:若该档案拥有者无法被更改也不要显示错误讯息-h:只对于连结(link)进行变更,而非该 link 真正指向的档案-v:显示拥有者变更的详细资料-R:对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help:显示辅助说明--version:显示版本
范例:
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie:
chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport:
chmod -R lamport:users *
名称:cp
使用权限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
把计:
-a 尽可能将档案状态,权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范例:
将档案 aaa 复制(已存在),并命名为 bbb:
cp aaa bbb
将所有的C语言程式拷贝至 Finished 子目录中:
cp *.c Finished
名称:cut
使用权限:所有使用者
用法:cut -cnum1-num2 filename
说明:显示每行从开头算起 num1 到 num2 的文字。
范例:
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字元
test2
this i
cat cd
chmod chown
cp cut
名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3
名称:cd
使用权限:所有使用者
使用方式:cd [dirName]
说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
范例:跳到 /usr/bin/:
cd /usr/bin
跳到自己的 home directory:
cd ~
跳到目前目录的上上两层:
cd ../..
指令名称:chmod
使用权限:所有使用者
使用方式:chmod [-cfvR] [--help] [--version] mode file...
说明:Linux/Unix 的档案存取权限分为三级:档案拥有者,群组,其他。利用 chmod 可以藉以控制档案如何被他人所存取。
把计:
mode:权限设定字串,格式如下:[ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c:若该档案权限确实已经更改,才显示其更改动作
-f:若该档案权限无法被更改也不要显示错误讯息
-v:显示权限变更的详细资料
-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help:显示辅助说明
--version:显示版本
范例 :将档案 file1.txt 设为所有人皆可读取:
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取:
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行:
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取:
chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User,Group,及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可使此程式具有root的权限