Linux系统安全基础应用
一、基本安全
1、账号安全
将非登录用户的Shell设为/sbin/nologin,
锁定长期不使用的账号,
删除无用的账号
锁定账号文件passwd、shadow
锁定文件并查看状态
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
—-i——– /etc/passwd
—-i——– /etc/shadow
解锁文件并查看状态
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
————- /etc/passwd
————- /etc/shadow
2、密码安全
设置密码有效期
要求用户下次登录时修改密码
适用于新建用户:
[root@localhost ~]# vi /etc/login.defs
……
PASS_MAX_DAYS 30
适用于已有用户:
[root@localhost ~]# chage -M 30 lisi
强制在下次登录时更改密码
[root@localhost ~]# chage -d 0 zhangsan
3、命令历史、自动注销
命令历史限制
减少记录的命令条数
注销时自动清空命令历史
[root@localhost ~]# vi /etc/profile
……
HISTSIZE=200
[root@localhost ~]# vi ~/.bash_logout
……
history -c
clear
终端自动注销:
闲置600秒后自动注销
[root@localhost ~]# vi ~/.bash_profile
……
export TMOUT=600
4、su命令的控制
用途及用法
用途:Substitute User,切换用户
格式:su – 目标用户
密码验证
root 到à 任意用户, 不验证密码
普通用户 à
其他用户,验证目标用户的密码
限制使用su命令的用户
启用pam_wheel认证模块
将允许使用su命令的用户加入wheel组
[root@localhost ~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
……
[root@localhost ~]# gpasswd -a tsengyia wheel
tsengyia
正在将用户“tsengyia”加入到“wheel”组中
查看su操作记录
安全日志文件:/var/log/secure
[root@localhost ~]# tail /var/log/secure
……
May 13 18:05:51 mail su: pam_unix(su-l:session): session opened for user root by tsengyia(uid=1006)
May 13 18:07:34 mail su: pam_unix(su-l:session): session opened for user jerry by tsengyia(uid=1006)
5、使用sudo机制提升权限
用途及用法
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
密码验证
初次执行sudo命令时,验证当前用户的密码
不需验证目标用户的密码
[root@localhost ~]# sudo -u jerry /bin/touch /tmp/test.file
[root@localhost ~]# ls -l /tmp/test.file
-rw-r–r– 1 jerry jerry 0 07-12 05:39 /tmp/test.file
使用-u 选项指定目标用户,缺省则为root
配置sudo授权
visudo 或者 vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
[root@localhost ~]# visudo
……
%wheel ALL=NOPASSWD: ALL
jerry localhost=/sbin/ifconfig
syrianer localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
mike localhost=PKGTOOLS
查看sudo操作记录
需启用 Defaults logfile 配置
默认日志文件:/var/log/sudo
[root@localhost ~]# visudo
……
Defaults logfile = ”/var/log/sudo”
查询授权的sudo操作
sudo -l
二、开关机安全控制
1、BIOS安全
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
2、禁止Ctrl+Alt+delete重新启动机器命令
修改/etc/inittab文件,将“ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。然后重新设置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:
# chmod -R 700 /etc/rc.d/init.d/*
这样便仅有root可以读、写或执行上述所有脚本文件。
3、GRUB菜单安全
未经授权禁止修改启动参数,未经授权禁止进入指定系统。
密码设置方式(grub.conf):password 明文密码串
password –md5 加密密码串
密码记录的位置:全局部分(第一个“title”之前)
系统引导部分(每个“title”部分之后)
使用grub-md5-crypt获得加密字串:
[root@localhost ~]# grub-md5-crypt
Password:
Retype password:
$1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/
修改grub.conf文件,添加密码记录:
[root@localhost ~]# vi /boot/grub/grub.conf
……
password –md5 $1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-194.el5.img
三、终端登陆安全
1、登陆信息
系统登陆信息保存在/etc/issue、/etc/issue.net 文件夹中,包括操作系统类型、内核版本等。
一种思路注释掉相关文件中的信息,如下:
#Thiswilloverwrite/etc/issueateveryboot.So,makeanychangesyou
#wanttomaketo/etc/issuehereoryouwilllosethemwhenyoureboot.
#echo\”\”>/etc/issue
#echo\”$R\”>>/etc/issue
#echo\”Kernel$(uname-r)on$a$(uname-m)\”>>/etc/issue
#cp-f/etc/issue/etc/issue.net
#echo>>/etc/issue
然后,进行如下操作:
#rm-f/etc/issue
#rm-f/etc/issue.net
#touch/etc/issue
#touch/etc/issue.net
另一只思路修改登陆信息来欺骗攻击者:
本机登录提示:/etc/issue
网络登录提示:/etc/issue.net
[root@localhost ~]# vi /etc/issue
Microsoft Windows Server 2008 R2
2、登录终端设置
减少tty终端开放的个数:
通过修改初始化配置文件/etc/inittab,可以减少开放的tty终端个数。
只允许4.、5、6可以登陆
[root@localhost ~]# vi /etc/inittab
……
# Run gettys in standard runlevels
#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
[root@localhost ~]# init q //重新加载配置文件
Root用户登陆:
还有一种思路/etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取, 其格式是一个被允许的名字列表,您可以编辑/etc/securetty且注释掉如下的行
#tty1
#tty2
#tty3
#tty4
#tty5
#tty6
这时,root仅可在tty1终端登录。
普通用户登陆:
建立/etc/nologin文件禁止普通用户登录
删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin
[root@localhost ~]# rm -rf /etc/nologin
四、防止攻击
1、阻止ping如果没人能ping通您的系统,安全性自然增加了。
为此,可以在/etc/rc.d/rc.local
文件中增加如下一行:
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
2、防止IP欺骗
编辑host.conf文件并增加如下几行来防止IP欺骗攻击。
orderbind,hosts
multioff
nospoofon
3.防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:
*hardcore0
*hardrss5000
*hardnproc20
然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。
sessionrequired/lib/security/pam_limits.so
上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。
经过以上的设置,你的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。