感谢支持
我们一直在努力

Linux入门教程:Linux(RHEL5)系统安全常规优化

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

 基本安全措施
    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.      指定用户下次登录时必须更改密码
    #  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身份,以便执行管理任务
    禁止其他用户使用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
    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
    #  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 文件(将不能正常添加系统用户)
    #  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位权限的程序文件
    (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以上。


/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


? 应用程序和服务


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属性的文件


# 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热键重启系统


# 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


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


– : root : 192.168.1.0/24 172.16.0.0/8

赞(0) 打赏
转载请注明出处:服务器评测 » Linux入门教程:Linux(RHEL5)系统安全常规优化
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏