Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

18.2. Shell 安全

18.2.1. .history 文件

SA的操作记录问题

通过~/.bash_history文件记录系统管理员的操作记录,定制.bash_history格式

			
HISTSIZE=1000
HISTFILESIZE=2000
HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "
export HISTTIMEFORMAT
			
			

看看实际效果

			
$ history | head
    1  2012-02-27-09:10:45 do-release-upgrade
    2  2012-02-27-09:10:45 vim /etc/network/interfaces
    3  2012-02-27-09:10:45 vi /etc/network/interfaces
    4  2012-02-27-09:10:45 ping www.163.com
			
			

18.2.2. sudo 安全问题

/etc/sudoers

			
Cmnd_Alias WEBMASTER = /srv/nginx/sbin/nginx, /srv/php/sbin/php-fpm, !/srv/mysql/bin/*
www localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER

Cmnd_Alias Database = /usr/bin/mysqldump, /srv/mysql/bin/mysql, /u01/oracle/10.x.x/bin/sqlplus
mysql localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER, Database
			
			

使用www用户测试登录,无误后修改SSH配置文件,禁止root登录。

			
vim /etc/ssh/sshd_config
PermitRootLogin no
			
			

然后在测试从www sudo 执行命令, 可能成功启动nginx 与 php-fpm

18.2.3. 临时文件安全

临时文件不应该有执行权限

/tmp

			
/dev/sda3 /tmp ext4 nosuid,noexec,nodev,rw 0 0
			
			

同时使用符号连接将/var/tmp 指向 /tmp

/dev/shm

			
none /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
			
			

18.2.4. 执行权限

以数据库为例,从安全角度考虑我们需要如下更改

			
chown mysql:mysql /usr/bin/mysql*
chmod 700 /usr/bin/mysql*
			
			

mysql用户是DBA专用用户, 其他用户将不能执行mysql等命令。