Linux系统安全基础知识

来源:互联网 发布:淘宝做什么生意好赚钱 编辑:程序博客网 时间:2024/06/05 08:50

基本的系统安全
物理安全和登录安全
禁用root登录和sudo
可插拔认证模块(PAM)
基于PAM的口令安全和口令策略
基于PAM的访问控制


1、基本的系统安全

安全的磁盘布局
使用挂装选项提高文件系统的安全性
查找并取消文件/目录的非必要的特殊权限
避免安装不必要的软件包
配置软件包更新的Email通知
关闭不必要的服务
关闭IPv6的内核功能


1) 、安全的磁盘布局

1、如果是新安装系统,对磁盘分区应考虑安全性: 
1)根目录(/)中必须包括 /etc、/lib、/bin、/sbin,即不能在此四个目录上使用独立的分区或逻辑卷
2)除了 根目录(/)、/boot 和 SWAP 之外您应该根据自己的需要尽量分离数据到不同的分区或逻辑卷
     即根目录(/)、用户目录(/home)、临时目录(/tmp)和/var目录应分开到不同的磁盘分区; 
   
3)建议创建独立的 /usr、/var、/tmp、/var/tmp 文件系统
4)根据日志管理需要,您可能应该创建独立的 /var/log、/var/log/audit 文件系统
5)若所有普通用户数据存储在本机,您还应该创建独立的 /home 文件系统
6)若系统对外提供大量服务(如Web虚拟主机等),应该创建独立的 /srv 文件系统

以上各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃;  


2 )、提高文件系统的安全性


常用如下三个挂装参数提高文件系统的安全性
noexec:不允许在本分区上执行二进制程序,即防止执行二进制程序但允许脚本执行
nodev:不解释本分区上的字符或块设备,即防止用户使用设备文件
nosuid:不允许在本分区上执行 SUID/SGID 的访问
例如:


3 )、去除非必要的特殊权限

1)查找系统中权限为SUID/SGID 的文件:# find / -xdev 1 -ls
2)查找指定目录/dir下的所有用户可写的设置了粘着位(sticky-bit)的目录   :# find /dir -xdev -type d perm0002a!perm10001 -ls

使用 chmod命令去除文件或目录的非必要的特殊权限

chmodu-s  

chmod g-s

chmod o-t


3)对于/tmp和/var目录所在分区,大多数情况下不需要有suid属性的程序,所以应为这些分区添加nosuid属性;
  方法一:修改/etc/fstab文件,添加nosuid属性字。例如:
  /dev/hda2 /tmp ext2 exec,dev,nosuid,rw 0 0
  方法二:如果对/etc/fstab文件操作不熟,建议通过Linuxconf程序来修改。
  运行Linuxconf程序;
  选择”File systems”下的”Access local drive”;
  选择需要修改属性的磁盘分区;
  选择”No setuid programs allowed”选项;
  根据需要选择其它可选项;
  正常退出。(一般会提示重新mount该分区)


4)
限制具有SUID权限标志的程序数量,具有该权限标志的程序以root身份运行,是一个潜在的安全漏洞,当然,有些程序是必须要具有该标志的,象passwd程序。



4 ) 、检查重要的文件权限


1)查找指定目录/dir下的所有用户 可写的文件:# find /dir -xdev -type f -perm -0002 -ls
2)查找指定目录/dir下的非有效用户或有效组的文件:# find /dir -xdev nouseronogrouphkFDqkoGxqescpPKVt8/I1   # 添加此行 
 
进入所选择的系统前需要口令验证,passwd 配置语句位于引导参数部分(每个“title”部分之后) 
 
title CentOS (2.6.18-194.32.1.el5) 
    root (hd0,0) 
    kernel /boot/vmlinuz-2.6.18-194.32.1.el5 ro root=LABEL=/ 
    initrd /boot/initrd-2.6.18-194.32.1.el5.img 
    password –md5
-ls

3)使用 chmod命令修改权限:#chmodo-w  

4)使用 chown命令修改文件属主或组:#chownUSER:GROUP 


5 )、避免安装不必要的软件包

在安装过程中仅仅安装必要的软件包,使用如下命令查找、删除不必要的软件包:

# yum list installed

# yum remove PackageName

通常服务器无需运行X系统,尤其是被托管的服务器。在系统运行过程中,可以安装需要的软件包:

# yum install PackageName

6 )、软件包的更新

保持系统中软件包的更新极为重要,当软件的编制者发现软件的漏洞之后将对其进行修复,修复后的软件包就会发布到相应的yum仓库中
软件包的更新的方法:
    1)启用 yum-updated       2)服务编写 cron 脚本

7 ) 、关闭不必要的服务

cd /etc/init.d #进入到系统init进程启动目录
在这里有两个方法,可以关闭init目录下的服务,

一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时候找不到这个服务的启动文件。

二、使用chkconfig系统命令来关闭系统启动等级的服务。

注:在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。



使用chkcofig命令来关闭不使用的系统服务 (level前面为2个减号)要想在修改启动脚本前了解有多少服务正在运行,输入:

ps aux | wc -l

然后修改启动脚本后,重启系统,再次输入上面的命令,就可计算出减少了多少项服务。越少服务在运行,安全性就越好。另外运行以下命令可以了解还有多少服务在运行:

netstat -na --ip

批量方式先停止服务


批量方式先停止服务

for i in acpid anacron apmd atd auditd autofs avahi-daemon avahi-dnsconfd bluetooth cpuspeed cups dhcpd firstboot gpm haldaemon hidd ip6tables ipsec isdn kudzu lpd mcstrans messagebus microcode_ctl netfs nfs nfslock nscd pcscd portmap readahead_early restorecond rpcgssd rpcidmapd rstatd sendmai
l setroubleshoot snmpd sysstat xfs xinetd yppasswdd ypserv yum-updatesd ;do service $i stop;done

关闭启动服务

for i in acpid anacron apmd atd auditd autofs avahi-daemon avahi-dnsconfd bluetooth cpuspeed cups dhcpd firstboot gpm haldaemon hidd ip6tables ipsec isdn kudzu lpd mcstrans messagebus microcode_ctl netfs nfs nfslock nscd pcscd portmap readahead_early restorecond rpcgssd rpcidmapd rstatd sendmai
l setroubleshoot snmpd sysstat xfs xinetd yppasswdd ypserv yum-updatesd ;do chkconfig $i off;done

以下为手动方式及解释,执行批量方式后不需再执行了

chkconfig --level 345 apmd off ##笔记本需要chkconfig --level 345 netfs off ## nfs客户端chkconfig --level 345 yppasswdd off ## NIS服务器,此服务漏洞很多chkconfig --level 345 ypserv off ## NIS服务器,此服务漏洞很多chkconfig --level 345 dhcpd off ## dhcp服务chkconfig --level 345 portmap off ##运行rpc(111端口)服务必需chkconfig --level 345 lpd off ##打印服务chkconfig --level 345 nfs off ## NFS服务器,漏洞极多chkconfig --level 345 sendmail off ##邮件服务, 漏洞极多chkconfig --level 345 snmpd off ## SNMP,远程用户能从中获得许多系统信息chkconfig --level 345 rstatd off ##避免运行r服务,远程用户可以从中获取很多信息chkconfig --level 345 atd off ##和cron很相似的定时运行程序的服务注:以上chkcofig 命令中的3和5是系统启动的类型,以下为数字代表意思0:开机(请不要切换到此等级)1:单人使用者模式的文字界面2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能4:某些发行版的linux使用此等级进入x windows system5:某些发行版的linux使用此等级进入x windows system6:重新启动

如果不指定–level 单用on和off开关,系统默认只对运行级3,4,5有效

chkconfig cups off #打印机chkconfig bluetooth off # 蓝牙chkconfig hidd off # 蓝牙chkconfig ip6tables off # ipv6chkconfig ipsec off # vpnchkconfig auditd off #用户空间监控程序chkconfig autofs off #光盘软盘硬盘等自动加载服务chkconfig avahi-daemon off #主要用于Zero Configuration Networking ,一般没什么用建议关闭chkconfig avahi-dnsconfd off #主要用于Zero Configuration Networking ,同上,建议关闭chkconfig cpuspeed off #动态调整CPU频率的进程,在服务器系统中这个进程建议关闭chkconfig isdn off #isdnchkconfig kudzu off #硬件自动监测服务chkconfig nfslock off #NFS文档锁定功能。文档共享支持,无需的能够关了chkconfig nscd off #负责密码和组的查询,在有NIS服务时需要chkconfig pcscd off #智能卡支持,,如果没有可以关了chkconfig yum-updatesd off #yum更新chkconfig acpid offchkconfig autofs offchkconfig firstboot offchkconfig mcstrans off #selinuxchkconfig microcode_ctl offchkconfig rpcgssd offchkconfig rpcidmapd offchkconfig setroubleshoot offchkconfig xfs offchkconfig xinetd offchkconfig messagebus offchkconfig gpm off #鼠标chkconfig restorecond off #selinuxchkconfig haldaemon offchkconfig sysstat offchkconfig readahead_early offchkconfig anacron off

需要保留的服务

crond , irqbalance , microcode_ctl ,network , sshd ,syslog

因为有些服务已运行,所以设置完后需重启

chkconfig/*

语法:chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset]

补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

参数:

 --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。 --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。 --level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕*/






1)使用 ntsysv 或 chkconfig 管理工具,可以编写自己的脚本文件关闭不必要的服务:
#!/bin/bash
0 0
原创粉丝点击