发布时间: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 # vi /etc/securetty[!--empirenews.page--]分页标题[/!--empirenews.page--] 通过修改/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
1. 控制允许root用户登录的tty终端
1. 更改系统登录提示,隐藏内核版本信息
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能