• PAM


    安全:

    硬件、系统、应用程序、网络

    硬件安全:损坏、断电、寿命、被盗
    系统安全:权限(文件系统)、用户登录验证、木马、实时关心漏洞的补丁

    进程的权限称为: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服务

  • 相关阅读:
    webstorm快捷键大全
    Js的reduce()方法
    利用 c# linq 实现多个数据库的联合查询
    微信小程序支付接入注意点
    ubuntu所有php扩展php-7.0扩展列表
    ubuntu 16.04 php 安装curl方法
    Ubuntu下配置Apache开启HTTPS
    Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....
    Mac下如何用SSH连接远程Linux服务器
    C#的dapper使用
  • 原文地址:https://www.cnblogs.com/super-sos/p/8906565.html
Copyright © 2020-2023  润新知