Linux系统安全加固常规优化

用户帐号安全优化

 

1. 删除或禁用系统中不必要的用户和组。

passwd -l  username (禁用用户)

 

2. 确认程序或服务器用户的登录Shell不可用

[root@master script]# vim /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

3. 限制用户密码的有效期

针对已存在的用户:

chage -M 30 zhangsan  //30天有效天数;

针对新建的用户:

vim /etc/login.defs

PASS_MAX_DAYS   30  

 

4. 指定用户下次登录必须修改密码

chage -d 0 zhangsan

 

5. 限制密码的最小长度

通过修改PAM(Pluggable Authentication Module 可拔插认证模块)机制修改密码最小长度限制,强制提高用户自设密码的安全强度(太短或太简单将设置不成功)。

[root@master script]# vim /etc/pam.d/system-auth

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=12 type=

 

6. 限制记录命令历史的条数

修改所有用户的命令历史记录条数

vim /etc/profile

HISTSIZE=100   //条数自己定义。

 

7. 设置空闲超时时间自动注销终端

将全局的闲置超时时间设为600秒,用户重新登录后生效。

vim /etc/profile

export TMOUT=600  //需要手动添加。

 

8. 使用su切换用户身份

语法:su [-] 用户名

其中的“-”相当于“--login”,表示使用目标用户的SHELL环境。

pam_wheel模块默认提供了一个用户组wheel用于使用su功能,只要将授权许可的用户加入wheel组,并设置当使用su命令时必须通过pam_wheel模块认证,可以实现控制使用su的用户。

[root@master ~]# gpasswd -a zhangsan wheel
Adding user zhangsan to group wheel

[root@master ~]# vim /etc/pam.d/su

auth           required        pam_wheel.so use_uid    //去掉这行的注释。

这样就实现了普通用户除了zhangsan外,其它用户不能使用su命令切换身份!

 

9. 使用sudo提升执行权限

sudo命令提供了一种机制,只需要预先在/etc/sudoers配置文件中进行授权,既可以允许特定的用户以超级用户(或其它普通用户)的身份执行命令,而该用户不需要知道超级用户(或其它普通用户)的密码。

/etc/sudoers配置文件,默认权限440,通常使用visudo进行编辑。如果使用vi,则保存文件的时候需要使用“w!”。其配置行语法:user  MACHINE=COMMANDS

user:授权指定用户和组(“%组名”)

MACHINE:授权用户可以在哪些主机上使用。一般情况,使用默认localhost即可。

COMMANDS:通过sudo调用的命令,填写对应命令的完整路径,多个以“,”分隔。

PS:执行命令列表可以使用通配符“*”,取反符号“!”。

/etc/sudoers文件配置中用户、主机、命令均可以自定义别名进行代替,格式:

User_Alias        OPERATORS=zhangsan,lisi,wangwu

Host_Alias        MACHINES=host1,host2

Cmnd_Alias        COMMANS=/bin/rpm, /sbin/*, !/sbin/ifconfig eth0

粗体字为关键字,红色为自定义的别名(必须大写),后面为具体的内容。

 

若需要授权用户不需要密码验证即可使用sudo执行命令,可以结合NOPASSWD:

Cmnd_Alias      NETWORK=/sbin/route, /sbin/ifconfig, /bin/ping
zhangsan        ALL=NETWORK
ceshi           ALL=(NETWORK)   NOPASSWD:NETWORK

启用sudo日志功能:

① visudo

Defaults logfile = "/var/log/sudo"   //添加此内容到Defaults处;

②vim  /etc/rsyslog.conf

local2.debug                     /var/log/sudo    //最下面添加一行;

③重启日志服务

[root@master ~]# /etc/init.d/rsyslog restart   //Cetnos 6.X后syslog被rsyslog替代;

普通用户执行命令查看日志:

[root@master ~]# tail /var/log/sudo
Jul  5 14:56:30 : ceshi : command not allowed ; TTY=pts/2 ; PWD=/home/ceshi ;
USER=root ; COMMAND=/sbin/ifconfig

 

文件和文件系统安全优化

 

文件系统层次的安全优化

1. 合理规划分区

2. 通过挂载选项禁止执行set位程序、二进制程序

noexec选项可用于禁止直接执行分区中的程序文件;nosquid选项可用于从文件系统层面禁止文件的suid或sgid位权限。

3. 锁定不希望更改的系统文件

使用chattr +i 属性,文件将不能修改;

 

应用程序和服务

1. 关闭不需要的系统服务;

2. 禁止普通用户执行init.d目录中的脚本(chmod -R 750  /etc/init.d/)

3. 禁止普通用户执行控制台程序

consolehelper(控制台助手),管理着一批系统程序,并允许普通用户执行调用,这个过程对用户来说是透明的。普通用户执行halt、reboot、poweroff、等控制台程序时,通常不需要提供root密码,如果不需要普通用户调用这些程序,可以移除。

[root@master ~]# cd /etc/security/console.apps/
[root@master console.apps]# tar jcpvf conhlp.pw.tar.bz2  poweroff halt reboot --remove

4. 去除程序文件中非必要的set-uid或set-gid附加权限

 

系统引导和登录安全

1. 调整BIOS当前系统磁盘为第一启动项

2. 防止用户通过“Ctrl+Alt+Del”热键重启系统

以前的系统修改: vim /etc/inittab注释文件中ctrlaltdel行

现在需要:vim /etc/init/control-alt-delete.conf 注释掉里面的内容即可。

3. GRUB引导菜单加密

明文的只需加password   12341即可,这里我说下密文的方法。

[root@master ~]# grub-md5-crypt   //生成密文密码串
Password:
Retype password:
$1$oi.en1$wWH/NntT0GPYVxqk24Koh.

[root@master ~]# vim /boot/grub/grub.conf

……………

hiddenmenu
password --md5 $1$oi.en1$wWH/NntT0GPYVxqk24Koh.
title CentOS (2.6.32-358.el6.x86_64)

…………省略部分

 

终端及登录控制

  1. 即时禁止普通用户登录

当服务器正在备份或调试维护工作时,可能不希望再有新的用户登录,这时候,只要简单的建立/etc/nologin文件即可。login程序会检测该文件是否存在,存在则拒绝普通用户登录系统(root用户不受限制),删除该文件或重启恢复。

2. 控制服务器开放的tty终端

[root@master ~]# vim /etc/init/start-ttys.conf

env ACTIVE_CONSOLES=/dev/tty[1-6]  //此行的1-6  是你要开启终端的范围;

注:早些的系统是/etc/inittab文件中设置。

3. 控制允许root用户登录的tty终端

编辑/etc/securetty文件,注释或删除对应的行即可。

4. 更改系统的登录提示,隐藏内核版本信息

修改本地登录(/etc/issue)、网络登录(/etc/issue.net)文件实现。

5. 使用pam_access认证控制用户登录地点

pam_access认证读取/etc/security/access.conf文件,格式:权限:用户:来源

权限:“+”表示允许,“-”表示拒绝;

用户名:多个用户名用空格隔开,组则用“@组名”的形式表示。“ALL表示所有用户。

来源:多个源用空格隔开, 可以使用tty1、127.0.0.1、192.168.1.0/24等形式表示。

禁止用户从网络中登录,需要在pam配置文件sshd中添加认证支持:

account      required    pam_access.so

 

 

如果大家还有其它常规优化的补充,希望给予评论,谢谢啦。

 

你可能感兴趣的:(linux,服务器,安全加固,系统优化)