知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Linux(RHEL5)系统安全常规优化

发布时间:2011-02-27 18:57:50作者:知识屋

 基本安全措施

1.       删除或禁用系统中不使用的用户和组

#  passwd  -l  wang   //禁用账户wang 

#  passwd  -u  wang  //解锁账户wang

 

 

 

#  vi  /etc/shadow    //保存时为  :wq!  因为文件为只读

在密码字符前加两个叹号!

2.       确认程序或服务的登录shell不可用

#  vi  /etc/passwd   //将用户的登录shell改为/sbin/nologin

#  usermod   -s   /sbin/nologin   wang

3.       限制用户的密码有效期(最大天数)

#  vi  /etc/login.defs     //只对新建立的用户有效

PASS_MAX_DAYS    30

#  chage  -M  30  wang  //只对已经存在的wang用户有效

4.       指定用户下次登录时必须更改密码[!--empirenews.page--]分页标题[/!--empirenews.page--]

#  chage   -d  0  wang

#  vi  /etc/shadow

//将shadow文件中wang用户LAST  DAY 域(冒号 :分割的第三列)的值设为0

5.       限制用户密码的最小长度

#  vi  /etc/pam.d/system-auth

password   requisite   pam_cracklib.so   try_first_pass  retry=3   minlen=12

retry  重试时间      minlen   安全级别

6.       限制记录命令历史的条数

#  vi  /etc/profile

HISTSIZE=50   (默认为1000)

#  echo  “history  -c  “  >>  ~/.bash_logout  //注销时清除命令历史记录

7.       设置闲置超时自动注销终端

#  vi   /etc /profile

export   TMOUT=600    //添加此行使用SU切换用户身份

su  [-]  用户名

[-] 区别 :

使用:相当于 - -login,表示使用目标用户的登录shell环境,工作目录,PATH变量等

不使用: 保持原有的用过环境不便

案例说明su的使用方法

允许wang用户可以通过su命令切换为root身份,以便执行管理任务[!--empirenews.page--]分页标题[/!--empirenews.page--]

 

禁止其他用户使用su命令切换用过身份

(1)       将允许用户加入wheel组

#  gpasswd  -a  wang  wheel

#  id  wang  //查看wang用户的附加组

(2)       修改PAM设置,添加pam_wheel认证

#  vi  /etc/pam.d/su

auth   required  pam_wheel.so  use_uid   //去掉该行的#号

(3)       验证su权限

?  使用sudo提升执行权限

1./etc/sudoers配置文件---------visudo

sudo命令提供一种机制,只需要预先在/etc/sudoers配置文件中进行授权,即可以允许特定用户以超级用户(或其他普通用户)的身份执行命令,而该用户不需知道root用户的密码(或其他用户)的密码。常见语法格式如下:

user   MACHINE=COMMANDS

user:  授权指定用户

MACHINE主机:  授权用户可以在哪些主机上使用

COMMANDS命令:授权用户通过sudo调用的命令,多个命令用 , 分隔

/etc/sudoers文件配置中的用户、主机、命令三个部分均为可以自定义别名进行代替,格式如下

User_Alias                 OPERATORS=jerry, tom, tsengyia

Host_Alias                 MAILSERVERS=smtp , pop

Cmnd_Alias               SOFTWARE=/bin/rpm , /usr/bin/yum[!--empirenews.page--]分页标题[/!--empirenews.page--]

2.使用sudo执行命令

sudo  -l  :查看当前用过被授权使用的sudo命令

sudo  -k  :清除timestamp时间戳标记,再次使用sudo命令时需要重新验证密码

sudo  -v  :重新更新时间戳(必要时系统会再次询问用户密码)

案例说明:

因系统管理工作繁重,需要将用户账号管理工作交给专门管理组成员负责

设立组账号 managers ,授权组内的各个成员用户可以添加、删除、更改用户账号

(1)       建立管理组账户  managers

#  groupadd  managers

(2)       将管理员账号,如wang加入managers组

#  gpasswd  -M  wang.nan  managers

(3)       配置sudo文件,针对managers组开放useradd  、 userdel 等用户管理命令的权限

#  visudo

Cmns_Alias      USERADM  =  /usr/sbin/useradd , /usr/sbin/userdel , /usr/sbin/usermod

%managers  localhost = USERADM

(4)       使用wang账号登录,验证是否可以删除他、添加用户

#  su  -  wang#  whoami

#  sudo  -l

#  sudo  /usr/sbin/useradd  user1

#  sudo  /usr/sbin/usermod  -p  “ “  user1[!--empirenews.page--]分页标题[/!--empirenews.page--]

#  sudo  /usr/sbin/userdel  -r  user1

文件和文件系统安全优化文件系统层次的安全优化 

1.       合理规划系统分区

建议划分为独立分区的目录

/boot   :大小建议在200M以上。

/home  :该目录是用户默认宿主目录所在的上一级文件夹,若服务器用户数量较多,通常无法预知每个用户所使用的磁盘空间大小

 

 

 

/var    : 该目录用于保存系统日志、运行状态、用户邮箱目录等,文件读写频繁。占用空间可能会较多

/opt    : 用于安装服务器的附加应用程序及其他可选工具,方便扩展使用

2.       通过挂载选项禁止执行set位程序、二进制程序

使/var分区中程序文件的执行(x)权限失效,禁止直接执行该分区中二进制程序

#  vi  /etc/fstab

/dev/sdc1   /var    ext3    defaults,noexec   1  2

#  mount  -o  remount   /var

如果想要从文件系统层面禁止文件的suid 或 sgid位权限,将上边的noexec改为nosuid即可

3.       锁定不希望更改的系统文件

使用 +i 属性锁定service 、passwd、grub.conf 文件(将不能正常添加系统用户)[!--empirenews.page--]分页标题[/!--empirenews.page--]

#  chattr   +i  /etc/service  /etc/passd  /boot/grub.conf

解除/etc/passwd文件的 +i 锁定属性

#  lsattr   /etc/passwd   //查看文件的属性状态

#  chattr   -i   /etc/passwd

?  应用程序和服务

1.       关闭不必要的系统服务

2.       禁止普通用户执行init.d目录中的脚本

#  chmod  -R  o-rwx  /etc/init.d

#  chmod  -R  750   /etc/init.d

3.       禁止普通用户执行控制台程序

/etc/security/console.apps/目录下每一文件对应一个系统程序,如果不希望普通用户调用这些控制台程序,可以将对应的配置文件移除

#  cd  /etc/security/console.apps/

#  tar  jcpvf  /etc/conhlp.pw.tar.bz2  poweroff   halt   reboot  - - remove

4.       去除程序文件中非必需的set-uid 或 set-gid 附加权限

查找系统中设置了set-uid或set-gid权限的文件,并结合 –exec 选项显示这些文件的详细权限属性

#  find  /  -type  f   perm  +6000   -exec  ls  -lh  { }    ;

去掉程序文件的suid/sgid位权限

#  chmod  a-s  /tmp/back.vim

编写shell脚本,检查系统中新增加的带有suid或者sgid位权限的程序文件[!--empirenews.page--]分页标题[/!--empirenews.page--]

(1)     在系统处于干净状态时,建立合法suid/sgid文件的列表,作为是否有新增可疑suid文件的比较依据

#  find  /  -type  f   -prem  +6000   >  /etc/sfilelist

#  chmod  600  /etc/sfilelist

(2)     建立chksfile脚本文件,与sfilelist比较,输出新增的带suid/sgid属性的文件

#  vi  /usr/sbin/chksfile

#!/bin/bash

OLD_LIST=/etc/sfilelist

for  i  in  ` find  /  -type  -prem  +6000 `

do

grep   -F   “$i”  $OLD_LIST  >  /dev/null

[  $?  -ne  0 ]  &&  ls  -lh  $i

done

#  chmod  700  /usr/bin/chkfile

(3)     执行chkfile脚本,检查是否有新增suid/sgid文件

#  cp   /bin/touch  /bin/mytouch   //建立测试用程序文件

#  chmod  4755  /bin/mytouch

#  chksfile                    //执行程序脚本,输出检查结果

系统引导和登录安全优化文件系统层次的安全优化 

1.       合理规划系统分区

建议划分为独立分区的目录

/boot   :大小建议在200M以上。[!--empirenews.page--]分页标题[/!--empirenews.page--]

/home  :该目录是用户默认宿主目录所在的上一级文件夹,若服务器用户数量较多,通常无法预知每个用户所使用的磁盘空间大小

 

 

 

/var    : 该目录用于保存系统日志、运行状态、用户邮箱目录等,文件读写频繁。占用空间可能会较多

/opt    : 用于安装服务器的附加应用程序及其他可选工具,方便扩展使用

2.       通过挂载选项禁止执行set位程序、二进制程序

使/var分区中程序文件的执行(x)权限失效,禁止直接执行该分区中二进制程序

#  vi  /etc/fstab

/dev/sdc1   /var    ext3    defaults,noexec   1  2

#  mount  -o  remount   /var

如果想要从文件系统层面禁止文件的suid 或 sgid位权限,将上边的noexec改为nosuid即可

3.       锁定不希望更改的系统文件

使用 +i 属性锁定service 、passwd、grub.conf 文件(将不能正常添加系统用户)

#  chattr   +i  /etc/service  /etc/passd  /boot/grub.conf

解除/etc/passwd文件的 +i 锁定属性

#  lsattr   /etc/passwd   //查看文件的属性状态

#  chattr   -i   /etc/passwd[!--empirenews.page--]分页标题[/!--empirenews.page--]

?  应用程序和服务

1.       关闭不必要的系统服务

2.       禁止普通用户执行init.d目录中的脚本

#  chmod  -R  o-rwx  /etc/init.d

#  chmod  -R  750   /etc/init.d

3.       禁止普通用户执行控制台程序

/etc/security/console.apps/目录下每一文件对应一个系统程序,如果不希望普通用户调用这些控制台程序,可以将对应的配置文件移除

#  cd  /etc/security/console.apps/

#  tar  jcpvf  /etc/conhlp.pw.tar.bz2  poweroff   halt   reboot  - - remove

4.       去除程序文件中非必需的set-uid 或 set-gid 附加权限

查找系统中设置了set-uid或set-gid权限的文件,并结合 –exec 选项显示这些文件的详细权限属性

#  find  /  -type  f   perm  +6000   -exec  ls  -lh  { }    ;

去掉程序文件的suid/sgid位权限

#  chmod  a-s  /tmp/back.vim

编写shell脚本,检查系统中新增加的带有suid或者sgid位权限的程序文件

(1)     在系统处于干净状态时,建立合法suid/sgid文件的列表,作为是否有新增可疑suid文件的比较依据

#  find  /  -type  f   -prem  +6000   >  /etc/sfilelist

#  chmod  600  /etc/sfilelist

(2)     建立chksfile脚本文件,与sfilelist比较,输出新增的带suid/sgid属性的文件[!--empirenews.page--]分页标题[/!--empirenews.page--]

#  vi  /usr/sbin/chksfile

#!/bin/bash

OLD_LIST=/etc/sfilelist

for  i  in  ` find  /  -type  -prem  +6000 `

do

grep   -F   “$i”  $OLD_LIST  >  /dev/null

[  $?  -ne  0 ]  &&  ls  -lh  $i

done

#  chmod  700  /usr/bin/chkfile

(3)     执行chkfile脚本,检查是否有新增suid/sgid文件

#  cp   /bin/touch  /bin/mytouch   //建立测试用程序文件

#  chmod  4755  /bin/mytouch

#  chksfile                    //执行程序脚本,输出检查结果

系统引导和登录安全优化开关机安全控制

1.       调整BIOS引导设置

将第一优先引导设备设为当前系统所在硬盘,其他引导设置为Disabled.为BIOS设置管理员密码,安全级别调整为setup

2.       防止用户通过Ctrl+Alt_Del热键重启系统

 

 

 [!--empirenews.page--]分页标题[/!--empirenews.page--]

#  vi  /etc/inittab

# ca : :ctrlaltdel :/sbin/shutdown  -t3  -r  now //注掉该行

#  init  -q  //使配置文件立即生效

?  GRUB引导菜单加密

在grub.conf文件中设置明文密码

#  vi  /boot/grub/grub.conf

password  123456  //仅在需要变更grub引导参数时才需要提供密码

tiltle  Red  Enterprise  Linux  Server  (2.6.18-8.el5)

         root  ( hd0,0 )

password  1234    //进入系统时输入的密码

在grub.conf文件中设置md5加密的密码字符串

#  vi  mima

wang

wang

#  grub-md5-crypt < mima  >> /boot/grub/grub.conf

?  终端登录控制

1.       即时禁止普通用户登录

#  touch  /etc/nologin   //通过/etc/nologin文件即时禁止普通用户登录系统

2.       控制服务器开放的tty终端

#  vi  /etc/inittab


1.       控制允许root用户登录的tty终端

#  vi  /etc/securetty[!--empirenews.page--]分页标题[/!--empirenews.page--]


1.       更改系统登录提示,隐藏内核版本信息

通过修改/etc/issue、/etc/issue.net文件(分别对应本地登录、网络登录)

#  vi  /etc/issue

Welcome  to  server

#  cp  -f  /etc/issue  /etc/issue.net

2.       使用pam_access认证控制用户登录地点

Pam_access认证读取/etc/security/access.conf配置文件,该文件由权限、用户、来源,组成,用冒号进行分隔

权限  :加号 +  或 减号 - ,分别表示允许、拒绝

用户  : 用户名部分,多个用户名用空格分开,组使用@组名的形式表示。ALL表示所有用户

来源  :表示用户从哪个终端或远程主机登录,多个来源地点用空格分开

例:禁止除了root以外的用户从tty1终端登录系统

#  vi  /etc/pam.d/login     //在PAM配置文件login中添加认证支持

account   required   pam_access.so

#  vi  /etc/security/access.conf

-          :   ALL  EXCEPT  root  :  tty1

例:禁止root用户从192.168.1.0/24  、 172.16.0.0/8 网络中远程登录

#  vi  /etc/pam.d/sshd    //在PAM配置文件sshd中添加认证支持

account    required   pam_access.so

#  vi  /etc/security/access.conf[!--empirenews.page--]分页标题[/!--empirenews.page--]

-  :  root  :  192.168.1.0/24  172.16.0.0/8

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜