首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | linux相关 | linux认证 | 下载中心 | 专题
oklinux
 系统管理:中文环境 系统管理 桌面应用 内核技术 Linux基础:安装配置 常用命令 经验技巧 软件应用 Linux数据库:Mysql POSTGRE
 网络管理:网络安全 网络应用 Linux服务器 编程开发:PHP CC++ Python Perl SHELL 嵌入式开发 | PHP基础 PHP技巧 PHP应用 PHP文摘
 首页 linux资讯动态 Linux专题 | 其他Unix Linux解决方案 硬件相关 Linux认证 企业应用 Apache | 相关下载:软路由 参考手册 开发工具
 → 当前位置:首页>linux相关>其他unix>正文

UNIX系统下的用户限制

OKLinux www.oklinux.cn 2007-04-22 来源:oklinux收集整理 pinkfirex 收藏本文

摘要

  本文将讨论在Linux系统中,系统管理员如何对远程用户和本地用户进行限制。限制用户能够进行的操作,能够降低系统遭受内部攻击的的风险。

  在传统的UNIX系统中,用户的限制是由文件的权限、密码和其它标准的UNIX访问控制完成的。燃而,除此之外还需要更为严格的用户限制,以便能够对用户进行保护以及保护系统不受淘气用户的破坏。本文将讨论在Linux系统中,系统管理员如何对远程用户和本地用户进行限制。限制用户能够进行的操作,能够降低系统遭受内部攻击的的风险。但是,对root用户的权限限制不在本文的讨论范围之内,感兴趣的人可以参考利用capability特征保护系统的安全。

1.用户限制的目标

  对于用户限制,不同的环境有不同的目标,需要不同的工具实现。例如,限制不经意的用户使用UNIX shell和防止熟练攻击者利用SUID程序进行攻击是不同的。而且,不同程度的限制可能需要不同的环境,例如只允许使用某些用户或者只拒绝使用某些程序。

2.文件的权限

  我们首先从最弱的限制--UNIX权限开始。在大多数情况下,这已经足够。通过设置权限,我们可以控制哪些可执行文件可以让用户使用。除了那些允许非信任用户执行的程序,其它的程序都不应该是随便哪个用户都可以执行的;所有用户可写的分区,例如:/tmp和/home,都应该使用noexec参数加载(man mount)。做到这些,基本可以保证系统的安全。noexec参数能够阻止用户下载或者建立自己的可执行程序。如果一部分用户需要比较高的权限,我们可以把这些用户集中到一个特殊的用户组,把程序设置为允许这个组执行。通过Linux文件系统的属性(attribute),例如:immutable、append-only等,还可以对root权限进行控制,详细请参考文件系统安全-EXT2文件系统的属性

3.使用PAM进行权限限制

  另外一种简单(比较脆弱)的限制可以通过Linux系统资源限制实现。限制用户能够使用的系统资源,可以阻止恶意用户通过一些卑劣的手段,例如:fork大量的进程、填充垃圾文件,实现消耗系统的资源(磁盘空间、内存以及CPU时间等)的目的。Linux的插入式认证模块(Pluggable Authentication Module))能够用来进行系统资源限制。本文我们将只是进行一般性的讨论,详情请参考Securing and Optimizing Linux: RedHat Edition - A Hands-on Guide、 Using Pam。

  PAM的用户限制文件一般是/etc/security/limits.conf,其语法如下所示:

  domain type item value

  每个域的意义如下表:

domain
可以是:

· 一个用户名;

· 一个用户组名,语法为@group,例如:@nixe0n;

· 还可以是统配符*,表示所有的用户

type
有两种类型:

· hard:由超级用户和系统内核所做的硬性限制,普通用户无权修改;

· soft:用户可以根据需要,在hard的限制范围内修改被限制的资源,可以看作是默认设置;

item
被限制的项目包括:

· core:限制core文件的大小(以KB为单位);

· data:进程数据段的最大值(以KB为单位);

· fsize:文件的最大值(以KB为单位);

· memlock:最大的加锁内存空间(单位KB);

· nofile:打开文件的最大数量;

· rss:RSS(Resident Set Size)的最大值(单位KB);

· 最大的栈值(以KB为单位);

· cpu:最大的CPU时间;

· nproc:用户的最大进程数量;

· as:地址空间限制;

· maxlogs:这个用户最大的登录数;

· priority:用户进程的优先级;


  例如:

# EXAMPLE /etc/security/limits.conf file:

# =======================================

#

* soft core 0

* hard rss 10000

* hard nproc 20

  这个配置文件设置用户core文件的大小是0,用户可以根据需要修改;每个进程RSS最大是10000KB;最多可以运行20个进程。

  下面这个文件是针对特殊用户组foo所做的一些限制:

@foo hard core 0

@foo hard rss 2000

@foo hard nproc 200

@foo hard fsize 100000

@foo hard nofile 100

@foo hard cpu 10

@foo hard priority 5

  然后,需要在/etc/pam.d/login文件中加入以下条目,才能是限制生效:

session required /lib/security/pam_limits.so

  实际上,PAM可以实现更细粒度的显示,详情请参考RedHat技术白皮书:Enhanced Console Access。

4.受限shell

  bash本身也有一定的限制功能,就是通过其(受限shell)restricted shell功能,所做的限制包括:阻止用户改变目录和环境变量;重定向输出;使用绝对路径运行命令;使用exec命令和其它一些操作。如果bash是以rbash为名启动,或者使用-r选项运行,它就称为受限shell。受限shell能够使系统环境更好控制。如果启动受限shell,以下操作将被禁止:

使用cd命令切换目录;
设置或者取消SHELL、PATH、ENV或者BASH_ENV环境变量;
以绝对路径运行命令;
使用绝对路径指定的文件名作为内置命令.的参数;
使用绝对路径指定的文件名作为内置命令hash的参数;
在启动时,从shell环境导入函数的定义;
在启动时,解析SHELLOPTS的值;
使用
>、>|、<>、>&、&>和>>

等重定向操作重定向输出;

使用exec命令使其它的命令代替当前shell;
使用-f和-d选项打开/关闭内置命令;
对内置命令使用-p选项;
关闭受限模式。
  下面我们实际试验一下:

#adduser nixe0n

#passwd nixe0n

#ln -s /bin/bash /bin/rbash

#echo "/bin/rbash">>/etc/shells

#chsh -s /bin/rbash nixe0n

#cd ~nixe0n

#su nixe0n

$

  然后,执行:

  $cd /

  就会出现以下错误:

  rbash: cd: restricted

5.chroot

  另外一种限制方式是通过chroot,把用户限制在一个指定的目录。这种方式确实能够提供一定程度的安全性,如果不能获得root权限,用户将无法脱离监狱环境。因此,为了阻止用户获得chrooted目录之外目录的访问权,应该慎重选择监狱环境内的应用程序。

6.结论

  本文我们讨论了Linux系统对用户的几种限制方式,除了以上这些方式,还可以使用Linux内核的capability特性,详情请参考利用capability特性加强Linux系统的安全性。具体的使用要根据实际情况的需要,既要考虑系统的安全性,又要顾及到是否给用户造成不便。
上一篇:solaris9.0下更改IP!   下一篇:linux下netconfig
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
·solaris9.0下更改IP!
·linux下netconfig
·Freebsd 下 mount 一个 iso 文件的方法
·solaris初级管理员指南
·使用FreeBSD的SNMP+MRTG网络流量分析
·freebsd 教育网 ports 加速
·freebsd安装与配置
·freebsd桌面被我搞坏又修好了
·FreeBSD的相关资源
·HP-UX下EMS的使用说明
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
站内搜索
阅读排行榜
·Gentoo 2005.1 完整的USE
·Linux基础认识 理解GNU/Li
·让 UNIX 和 Linux 一起工
·Solaris中文语言包问题终
·UNIX 派生系统:NetBSD 入
·Solaris 10实现安全Kerber
·用串口线安装solaris
·AIX下邮件服务器Donimo的
·Solaris的启动和初始化过
·Freshrpms.net资源介绍以
最新文章
·FreeBSD下vim的安装
·Linux应用技巧之有问有答
·怎样让您的Linux操作系统
·Linux系统下以太网卡的安
·Linux防火墙配置入门必学
·菜鸟必读 Linux系统的字型
·教你配置Linux系统安全管
·freebsd手工配置网络
·HP-UX下EMS的使用说明
·freebsd桌面被我搞坏又修
·freebsd 教育网 ports 加
·Freebsd 下 mount 一个 is
·solaris9.0下更改IP!
·linux下netconfig
·solaris初级管理员指南

设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2007 All rights reserved OKLinux.Cn 版权所有
合作联系 QQ:18743986 Email:arlan8005#163.com