首页 > 代码库 > Linux服务器加固
Linux服务器加固
一、信息安全防护的目标
*保密性,Confidentiality
*完整性,Integrity
可用性,Usability
可控制性,Controlability
不可否认性,Non-repudiation
二、安全防护环节
物理安全:各种设备/主机、机房环境
系统安全:主机或设备的操作系统
应用安全:各种网络服务、应用程序
网络安全:对网络访问的控制、防火墙规则
数据安全:信息的备份与恢复、加密解密
管理安全:各种保障性的规范、流程、方法
网络&系统漏洞检测工具
X-Scan 、 Fluxay流光….
Nessus 、 OpenVAS
三、LINUX系统加固
1、阻止普通用户关机
[root@svr1 ~]# cd /etc/security/console.apps/
[root@svr1 console.apps]# mkdir -m 700locked
[root@svr1 console.apps]# mv halt reboot powerofflocked/
2、设置bob用户密码过期时间:
[root@localhost locked]# useradd bob
[root@localhost locked]# echo 123456 |passwd --stdin bob //给bob用户设置密码
[root@localhost ~]# chage -m 1 -M 90 -W 5 -I 3 -E 2014-03-15 bob
//密码最少使用时间为1 天,密码最多使用时间为90天,密码过期警告时间为5天,密码失效后3天锁定帐户,2014年3月15日 bob用户过期
[root@localhost ~]#chage -l bob //查看bob用户密码有效期信息
3、强制alice用户下次登录必须立即修改密码
[root@localhost ~]# chage -d 0 alice //设置下次alice用户登录时必须改密码
[root@localhost ~]#chage -E2014-05-01 alice //设置alice用户 2014年5月1日该账户过期
4、帐号锁定操作。每步到底做了什么?
/etc/shadow //密码存放
方法1:
[root@localhost ~]# passwd -l alice //锁定用户,用户将不能登录
[root@localhost ~]# passwd -S alice //大S查看锁定
[root@localhost ~]# passwd -u alice //解锁
注意: -f 强制解锁,并更改新密码
方法2:
[root@localhost ~]# usermod -L alice 锁定
[root@localhost ~]# usermod -U alice 解锁
5、强制定期修改密码
配置文件/etc/login.defs 对新建的用户有效
每新建一个用户都具有以下的配置
主要控制属性
PASS_MAX_DAYS 90 //密码最长使用时间改为90天
PASS_MIN_DAYS 1 //密码最少使用时间改为1天
PASS_MIN_LEN 5 //密码的最短长度5
PASS_WARN_AGE 5 //密码快到期的警告时间5天
6、设置最大历史命令条目数
# history //查看历史命令
# vim /root/.bash_history //历史命令默认存放在账户家目录.bash_history里,默认存1000条
# vim /etc/profile
HISTSIZE=1000 //在这可修改默认存储历史命令数,一般不修改或改低,记录历史命令容易泄露命令和操作
7、SUID
SUID:如果一个命令文件设置了SUID,而且其他用户具有x权限,那么当其他用户在执行命令时,它在执行期间就具备了属主的权限。
(1)分别以root和bob用户执行 ls /root有什么结果;改变ls的权限 chmod 4755 /bin/ls,再 用bob执行ls /root有什么结果?为什么
答:bob没权限打开/root ,改变ls权限后,bob用户可以打开/root
# ll /bin/ls
-rwxr-xr-x.1 root root 117024 10月17 2013 /bin/ls
# chmod 4755 /bin/ls
# ll /bin/ls
-rwsr-xr-x. 1 root root 117024 10月 17 2013 /bin/ls
(2)执行chmod 755 /usr/bin/passwd后,bob修改自己的密码,还能修改么?(不能)为什么
(3)执行chmod 4755 /bin/touch后,bob创建一个文件,查看文件的属主是谁,为什么会有这样的结果?
答:属主是root ,属组是bob 。
8、/etc/fstab中的defaults是挂载选项,它包含哪些选项。如果把一个目录挂载为只读文件系统?
9、文件加锁、解锁
EXT3 EXT4的文件属性控制
chattr +/- i/a
+ //增加权限
- //减权限
i //不可变,不可任何人更改,只可读
a //仅可追加
把/etc/hosts变成绝对只读文件
chattr +i /etc/hosts // 把/etc/hosts 变成绝对只读文件,任何人包括root也无权限写入更改
lsattr /etc/hosts // 查看/etc/hosts 权限
把/etc/hosts变成只能追加内容的文件
chattr +a /etc/hosts // 仅可追加改动,不可直接更改
echo -e “192.168.10.2\yy.tarena.com\yy” >> /etc/hosts //仅可追加改动
# chattr +i /etc/passwd //锁定passwd文件,就不能再添加用户了
引导和登录控制
10、允许启用哪些tty终端
配置文件/etc/sysconfig/init
ACTIVE_CONSOLES=/dev/tty[1-6] //默认1-6, 可以改成1-3 2-5 等等
立即禁止普通用户登录
touch /etc/nologin // 在/etc下创建一个nologin空文件就OK,就能禁止普通用户登录
rm -rf /etc/nologin //删掉nologin空文件,普通用户就可以登录了
只允许root从指定的几个终端登录
配置文件/etc/securetty //不想root从那个终端登录,就删掉那个终端
11、防止系统版本信息泄漏
vim /etc/issue //物理访问服务器的时候,防止系统版本泄露,可以把里面内容改掉
vim /etc/issue.net // 用Telnet 网络连接时,把显示系统版本信息更改掉 防泄露
12、禁止Ctrl+Alt+Del重启
[root@svr1 ~]# vim/etc/init/control-alt-delete.conf 1
# start on control-alt-delete
exec /sbin/shutdown -r now .. ..
13、grub加密码 ( 限制在启动时改grub参数进入单用户模式 )
[root@svr1 ~]# grub-md5-crypt //给grub引导加md5加密密码
Password:
Retype password:
$1$tt3gH1$8nZtL70J/Gv/dAaUm/1 //用md5给grub引导生成的加密密码,然后把这个密码写在/boot/grub/grub.conf 配置文件里
[root@svr1 ~]# vim/boot/grub/grub.conf
default=0 //系统启动顺序0代表最先启动,要是双系统或多系统,0的系统会成为默认启动
timeout=20 //要是多个系统情况下,在20秒内用户没有干扰,那么默认启动0那个系统
password--md5 $1$tt3gH1$8nZtL70J/Gv/dAaUm/1 //给grub引导加密码,放在title 上面那么也等于给单用户模式加了密码,放在title 下面是单独给该系统加密
splashimage=(hd0,0)/grub/splash.xpm.gz //背景图片,不用管
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
root (hd0,0) //内核文件所在分区
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro.. ..// kernel指定内核,ro代表以只读方式启动
initrd /initramfs-2.6.32-358.el6.x86_64.img //初始化内存盘在什么位置
title windows 7 //双系统给win 7写的启动顺序
rootnoverify (hd0,2)
makeactive
chainloader +1
14、用户切换与提权
su 创建非登陆shell (只切换用户,不切换环境变量)
su - 创建登陆shell (切换用户,同时切换环境变量)
14.1、sudo 授权普通用户命令
管理员需要让tom和alice管理用户的创建、删除、修改、设置密码操作。但是又不能把root密码告诉他们。
里面直接加入:
# visudo //用 vi 打开sudo ,好处是会做语法检查,提示错误
User_Alias USERADMINS = tom, alice
Cmnd_Alias USEROP = /usr/sbin/useradd,/usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd....
USERADMINS ALL=(ALL) USEROP
[root@localhost ~]# su - tom
[tom@localhost ~]$ sudo useradd zhangsan //命令前加sudo就能调用
[tom@localhost ~]$ sudo -l //tom可通过sudo -l查看自己能使用那些命令
解释:
User_Alias(为固定格式) USERADMINS(自己起的别名) = tom,alice (这两个用户属于USERADMINS )
Cmnd_Alias(为固定格式) USEROP(自己起得别名)=后边的命令都属于 USEROP这个别名,(用which查询命令的绝对路径)
USERADMINS(这里边的用户) ALL=(ALL) USEROP(可以执行这里变命令)USERADMINS的人可以执行USEROP的命令
注意:
98 root ALL=(ALL) ALL
99 tom ALL=(ALL) ALL //tom用户可以在所有机器上以管理员的身份执行
所有命令,只要在前面加个sudo并输入tom密码就可以了,可是这样不安全,不建议这样设置 因为管理员能干的事情tom都能干了
15、初始化操作系统
# touch /.unconfigured //在/下建立.unconfigured 然后重启,会初始化系统一些参数配置
# reboot
查看运行级别
# who -r
运行级别 52014-03-22 18:01
开启或关闭服务级别
ntsysv - -level 35 //开启或关闭35级别
ntsysv - -level 235 //开启或关闭235级别
设置绝对只读 //任何人都没有写权限
chattr +i /etc/shadow //任何人都没有写权限,不能改变该文件
chattr -i /etc/shadow //撤销只读
lsattr /etc/shadow 查看该目录权限
chattr +a /etc/shadow //仅可追加写入 不能直接更改
unix2dos dos2unix //两个命令的 文本换行命令
其它:
1)工作环境中(为了安全起见):
重启时最好用:showdown -r now
删除用户时不要加-r: userdel user01
2)将上个命令替换为另一个命令
如:
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# ^ls^vim 相当于 #vim /etc/sysconfig/network-scripts/ifcfg-eth0
3)vim 里:大写C→从光标处,删除到行尾,并且进入编辑模式
维护服务器时,最好用一个普通用户登录,因为root用户权限太大,防止误操作
本文出自 “Dave-技术博客” 博客,请务必保留此出处http://davewang.blog.51cto.com/6974997/1859211
Linux服务器加固