安全:
硬件、系统、应用程序、网络
硬件安全:损坏、断电、寿命、被盗
系统安全:权限(文件系统)、用户登录验证、木马、实时关心漏洞的补丁
进程的权限称为:euid和egid
权限:
mount挂载选项:mount -o 指定属性
defaults:rw,suid,dev,exec,auto,nouser,async
rw、ro:是否可写
suid、nosuid:是否能使用suid权限
dev、nodev:是否可以使用设备文件
主从设备号:主(major number)定义驱动,从(minor number)定义第几个设备
yum install kernel-doc
内核文档:less /usr/share/doc/kernel-doc-2.6.18/Documentation/devices.txt
查看设备文件的主从设备号:ll /dev/
创建设备文件:mknod /dev/sda5 b 8 5
exec、noexec:执行权限是否可用
auto、noauto:开机是否自动挂载
acl、noacl:是否支持facl
mount命令查看分区支持的属性
sudo:以管理员身份,不用输入管理员密码,不是所有命令都能使用,需要授权
修改sudo配置文件对用户授权:visudo会对语法检查
配置文件:vim /etc/sudoers
pam身份验证:
pam手册:firefox /usr/share/doc/pam-0.99.6.2/html/Linux-PAM_SAG.html
pam日志:/var/log/secure
PAM:可插入式验证模块
查看pam:ldd /usr/sbin/sshd | grep pam
pam模块存放位置:ls /lib/security/
修改服务支持的pam:vim /etc/pam.d/sshd ls /etc/pam.d/
第一列为验证类型:auth、account 用户名密码、除用户名密码以外对登录起决定性作用的(time,network等) 决定是否可以验证成功
password、session 用户修改密码时和会话
第二列为验证条件:required //必要条件(必须满足)不会返回错误,会继续检查下面的条件
requisite //必要条件,但会返回错误,不会再检查下面相同的验证类型
sufficient //充分条件,会忽略错误,但成功后停止验证
optional //对最终结果无影响
include //后面跟文件,引入公共的文件
第三列为匹配的模块或文件等
实例:
1、设置root用户不能在那些终端登录:
删除/etc/securetty文件中的某个终端即可
2、设置登录的环境变量:/etc/security/pam_env.conf
3、/etc/pam.d/system-auth文件中
auth pam_unix.so //验证用户名和密码
account pam_unix.so //验证用户过期等策略
4、pam_nologin.so 配置上此模块后,只要/etc/nologin文件存在,则非root用户不可登录
5、pam_rootok.so 判断当前用户身份模块
6、在/etc/pam.d/login配置文件中添加上下面的认证模块后:
auth required pam_access.so
就可以在/etc/security/access.conf文件中设置某些用户可以登录的终端
-:root:tty1
在/etc/pam.d/vsftpd文件中配置上pam_access.so模块后,可控制不能登录ftp的终端
7、pam_echo.so模块可给用户提供友好提示等,经常应用在ftp、ssh、passwd等中
用法:session optional pam_echo.so file=存放提示文件的路径
8、pam_time.so此模块可以控制登录的时间
配置文件:/etc/security/time.conf
login;tty;user;Al1100-1830
/etc/pam.d/login:account requisite pam_time.so debug(可选)
9、pam_tally.so模块可让用户错误登录几次以上就锁定多长时间
auth required pam_tally.so deny=3 nulock_time=20
10、pam_limits.so模块可以控制用户使用的系统资源(可用于对磁盘,内存,进程等限制)
session required pam_limits.so
配置文件:/etc/security/limits.conf
pam+mysql+vsftp:
使vsftp的虚拟用户存在mysql中,并通过pam来做认证:
先安装yum install mysql-devel
解压pam认证模块:tar xvzf pam_mysql-0.7RC1.tar.gz
进入解压目录: pam_mysql-0.7RC1编译
./configure --with-openssl
make && make install
安装完成后会在/usr/lib/security/目录下产生pam_mysql.so模块文件
做一个连接:ln -s /usr/lib/security/pam_mysql.so /lib/security/pam_mysql.so
注意:如果在编译前已经安装好mysql则会直接生成在/lib/security/目录下
创建一个必要的本地用户:useradd -s /sbin/nologin virtual
登录mysql创建库和表:
create database vsftpd;
create table users(username varchar(20) not null,password varchar(40) not null,primary key(username)) type=myisam;
insert into users values('vu1','123');
让本地用户能读取表中内容:
grant select on vsftpd.users to virtual@localhost identified by '123456';
flush privileges;
配置vsftpd的pam认证:
vim /etc/pam.d/vsftpd_mysql
auth required pam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=0
account required pam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=0
配置vsftpd配置文件:vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd_mysql
guest_enable=YES //开启虚拟用户功能
guest_username=virtual //指定虚拟用户使用的系统用户
virtual_use_local_privs=YES //此处为YES时,虚拟用户使用与本地用户相同的权限,为NO时,使用匿名帐户的权限
重启vsftpd服务