前言:虽然说linux系统安全,高效,稳定,但如果平时不注意安全优化,也不会安全。本章将介绍账户安全,系统引导和登录的安全,以及弱口令检测,网络扫描工具的使用。

一、账号安全控制

1、系统账号清理

1)以下常见的非登录用户要确保不被人为改动:

[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
2)各种非登录账户中,还有一部分是很少用到的,如news,uucp,games,gopher,这些用户可视为冗余账号,直接删除即可
[root@localhost ~]# useradd uucp
[root@localhost ~]# useradd games
2)若不确定能否被删除,可以暂时锁定
[root@localhost ~]# usermod -L zhangsan                         //锁定账号
[root@localhost ~]# passwd -S zhangsan                          //查看账号状态
zhangsan LK 2018-02-28 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U zhangsan                         //解锁状态
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2018-02-28 0 99999 7 -1 (密码已被锁定。)
2)如果服务器中的账户已经固定,不再进行更改,还可以采用锁定账号配置文件的方法。
使用chattr命令,分别结合+i,-i来锁定、解锁。使用lsattr查看文件锁定情况。
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow           //锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow              //查看锁定的状态
----i--------e- /etc/passwd
----i--------e- /etc/shadow
[root@localhost ~]# useradd user1                               //测试锁定文件是否能创建用户
useradd: cannot open /etc/passwd
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow           //解锁文件
[root@localhost ~]# useradd user1                               //创建用户
[root@localhost ~]# lsattr /etc/passwd /etc/shadow              //查看为解锁的状态
-------------e- /etc/passwd
-------------e- /etc/shadow

2、密码安全控制
1)设置密码有效期为30天

修改配置文件,适合新建立的用户

[root@localhost ~]# vim /etc/login.defs                         //适用于新建的用户
#
PASS_MAX_DAYS   30
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
[root@localhost ~]# chage -M 30 zhangsan                        //适用于已有的zhangsan用户

1)设置用户下次登录时重设密码
[root@localhost ~]# chage -d 0 zhangsan                         //强制要求用户zhangsan下次登陆时重设密码

然后使用张三登录终端

先输入原密码,然后再输入两次新密码,注意复杂性。
 
3、命令历史,自动注销
1)修改配置文件,设置最多纪录200条历史命令,如果纪录太多,容易泄露信息。
Vi  /etc/profile,适用于新登录的用户
[root@localhost ~]# vim /etc/profile
HISTSIZE=200                                       //修改最多记录200条
重启系统或者执行source  /etc/profile使之生效。
 
执行export  HISTSIZE=10适用于当前的账户
[zhangsan@localhost ~]$ export HISTSIZE=10
[zhangsan@localhost ~]$ history
    1  sudo 
    2  sudo zhangsan
    3  cd
    4  export histsize 10
    5  export HISTSIZE 10
    6  exit
    7  sudo ~ zhangsan
    8  export HISTSIZE=10
    9  history
2)当用户退出已登录的bash环境后,清空历史纪录
[zhangsan@localhost ~]$ vim ~/.bash_logout 
# ~/.bash_logout
history -c
clear
然后重启之后重新登录系统,执行history发现没有历史纪录
 
 
1)设置超时时间,指定时间没有任何输入就自动注销。
Vi  /etc/profile,      适用于新登录的用户。
export TMOUT=600        //需要添加
执行export TMOUT=10用于当前用户(为了测试方便,时间调10秒),10秒之内没有任何输入就退出系统。也可以使用unset TMOUT取消设置
 
二、用户切换与提权
1、su命令:用来切换用户,具有该用户的所有权限。
1)su切换用户      
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ 
上图的命令只切换用户身份,不切换用户环境,如果想切换身份的同时切换环境,需要在su后面加“-”,如下图:
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ pwd
/home/zhangsan       
2)允许个别用户使用su命令进行切换,需要将授权使用su命令的用户zhangsan添加到wheel组,修改/etc/pam.d/su认证配置
[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid                                 //把前面的#去掉
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so
重启系统之后使用zhangsan登录,执行su  -  root 可以正常切换,但是使用其他用户提示密码不正确,登录失败。
[zhangsan@localhost ~]$ su - root
密码:
[root@localhost ~]# su - user1
[user1@localhost ~]$ su - root
密码:
su: 密码不正确
2、sudo命令,提升执行权限,可以让普通用户拥有一部分管理权限,又不需要将root用户的密码告诉对方。
1)在配置文件/etc/sudoers中添加授权
例如:授权用户jerry能够执行ifconfig命令修改ip地址,而wheel组的用户不需要验证密码即可执行任何命令,可以执行以下操作。
执行命令:Visudo
user1 localhost=/sbin/ifconfig
%whell ALL=NOPASSWD: ALL
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写)
,分别通过User_Alias、Host_Alias、Cmnd_Alias来进行设置如:
user1 localhost=/sbin/ifconfig
%whell ALL=NOPASSWD: ALL
User_Alias      OPERATORS=user1,lisi
Host_Alias      MAILSVERS=smtp,pop
Cmnd_Alias      PKGTOOLS=/bin/rpm,/usr/bin/yum
OPERATORS       MAILSVRS=PKGTOOLS

1)通过sudo命令测试特权命令
使用user1登录系统,执行/sbin/ifconfig  eth0:0 192.168.1.10,提示失败,权限不够。
[useer1@localhost ~]$ /sbin/ifconfig eth0:0 192.168.1.10
SIOCSIFADDR: 权限不够
SIOCSIFFLAGS: 权限不够
如果在命令前面加上sudo,执行成功
[user1@localhost ~]$ sudo /sbin/ifconfig eth0:0 192.168.1.10
[user1@localhost ~]$ 
三、系统引导和登录控制
1、开关机安全控制
1)调整biso引导控制
将第一引导设备设置为当前系统所在磁盘,禁止从光盘,u盘,网络等引导系统,将bios设置好管理密码。
 
2)禁止ctrl+alt+del重启系统系统
[root1@localhost ~]$ vim /etc/init/control-alt-delete.conf 
#start on control-alt-delete

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"    
重启系统之后,按ctrl+alt+del无法重启系统(在终端中测试)
1)限制更改grub引导参数
首先使用grub-md5-mcypt生成加密的密码
[root@localhost ~]# grub-md5-crypt               //根据提示指定密码
Password: 
Retype password: 
$1$KhOqk/$J2NoMloU58XvJ10jo/TBe1                 //经过加密的密码字符窜
然后修改配置文件,把密文添加到第一个title之前,如下:
[root@localhost ~]# vim /boot/grub/grub.conf 
password --md5 $1$KhOqk/$J2NoMloU58XvJ10jo/TBe1         //添加到第一个title之前
title CentOS (2.6.32-431.el6.x86_64)
重启系统进入grub菜单,如果想修改引导参数,必须先按p输入密码,然后按e才能编辑引导参数
然后按e就可以编辑了


2、终端及登录控制
1)减少开放的tty终端个数,禁用tty1,tty2,tty3
[root@localhost ~]# vim /etc/init/start-ttys.conf
env ACTIVE_CONSOLES=/dev/tty[456]               //修改为456
env X_TTY=/dev/tty1
[root@localhost ~]# vim /etc/sysconfig/init
AUTOSWAP=no
# What ttys should gettys be started on?
ACTIVE_CONSOLES=/dev/tty[456]                   //修改为456
# Set to '/sbin/sulogin' to prompt for password on single-user mode
# Set to '/sbin/sushell' otherwise
SINGLE=/sbin/sushell
注意两个文件都需要更改

2)禁止root用户从tty5和tty6终端登录
[root@localhost ~]# vim /etc/securetty
..... //省略部分内容
#tty5
#tty6
3)禁止普通用户登录,只需要建立/etc/nologin文件即可,如果恢复普通用户登录,删除这个文件即可
Touch  /etc/nologin
然后使用普通用户登录测试