• linux系统 ----------------------------------第十一节 linux的系统安全及应用


                                                                                                                        Linux系统安全及应用

    一 系统账号的清理

    (1)     将非登陆用户的shell设为 /sbin/nologin有三种方法

    方法一;usermod -s

    方法二;chsh命令 交互式修改

    方法三;chsh -s

    Useradd +用户 创建用户 usermod +用户 修改用户属性

    Userdel +用户 删除用户

    二 锁定长期不使用的账号

    方法一 passwd -l (锁定用户的密码) passwd -u (解锁用户的密码)passwd -S (查看用户状态)

    方法二 usermod -L (锁定用户的密码)usermod -U (解锁用户的密码)

    若用passwd -l 锁定用户密码,用命令 usermod -U 解锁用户密码必须输入两次(usermod-U)命令解锁

    三 锁定用户的文件 /etc/passwd /etc/shadow

    加I锁    命令 chattr +i /etc/passwd /etc/shadow

    解i锁    命令 chattr -i /etc/passwd /etc/shadow

    查看状态 命令 lsattr  /etc/passwd /etc/shadow

    I锁锁定用户以后普通用户和超级用户只能读不能写

     加a锁与解a锁与上面i锁类似只不过是加上a锁以后只能追加内容,不能修改内容。

    三 修改某个已存在用户的密码有效期

    方法一 chage -M 天数 用户名

    方法二 passwd -x 天数 用户名

    四 设置今后添加用户时的默认密码的有效期

    Vim编辑 /etc/login.defs

    修改 PASS_MAX_DAY后边的值

    五  要求用户下次登陆时修改密码

    命令 chage -d 0 用户名

    六 命令历史限制

    (1)   减少历史的命令条数

    方法一 1 vi编辑/etc/profile文件,修改HISTSIZE后面的数值。

    2修改完之后输入命令source /etc/profile 使/etc/profile配置文件生效,

    此时全局生效

    方法二 export HISTSIZE的数值。仅当前用户环境下生效

    /etc/profile 全局系统变量都放在这个文件之下

    Export (全局生效)

    (1)     注销时自动清空历史命令

    方法 ;vi编辑宿主下目录下的.bash_logout文件添加history -c

     七 终端自动注销

      方法一 vi编辑/etc/profile文件 添加 TMOUT=数值

             Source /etc/profile 是配置文件/etc/profile生效 此时全局生效

      方法二 export TMOUT=数值   仅当前用户下生效

    八 更改端口号

    Vi 编译/etc/ssh/sshd_config 修改port的数值

    二                                        su命令

    作用:切换用户
    su 目标用户 切换账号,之前的进程并没消失;环境变量不改变
    (exit也可用Ctrl+d操作,退出用户)
    su - 目标用户 以普通用户的初始环境切换成普通用户,环境变量会重置成普通用户环境变量
    su -c 临时切换到某一个用户,执行一个命令,执行完,自动返回当前用户;切换到一个shell,执行一个命令,然后退出所切换的用户环境
    su -m 切换用户时,不重置用户环境
    su -s 若/etc/shell允许,则运行指定的shell
    su命令常用在/etc/rc.local
    # vim  /etc/rc.local
    su  - 用户 -c 命令  实现以普通用户实现进程,安全操作,表示仅限在xx用户下启动的服务命令脚本
    查看su操作记录
    安全日志文件:/var/log/secure
    # tar /var/log/secure|less
    sudo命令
    su命令的缺点:在使用su命令时,不指定用户名默认切换至root用户,需要经常输root用户密码,但实际生产中root密码是不可以被广泛告知的。如果需要执行root用户才有权限的命令,需要通过sudo命令或wheel组的设置来实现
    sudo的配置文件 /etc/sudoers
    sudo命令
    -l 列出用户在主机上可用的和被禁止的命令:当配置好sudo权限规则后,可用这个参数来查看授权情况
    -v 验证用户的时间戳,当用户运行sudo,输入用户的密码后,在短时间内可以不用输入口令直接进行sudo操作;用-v可以跟踪最新的时间戳
    -u指定以某个用户身份执行特定的命令操作,chensiqi ALL=(ALL) /bin/cp
    -k同-K,删除时间戳,下一个sudo命令要求提供密码,前提是该用户授权中不能有NOPASSWD参数。时间戳默认5分钟也会失效。
    配置sudo授权(激活sudo)
    方法一:# visudo 或# vim /etc/sudoers 修改,只有root用户才能使用
    在root这一行下面,按照root的格式,对benet进行授权
    visudo授权配置中,ALL的表示:
    第一个ALL:IP地址 
    第二个ALL:主机别名
    第三个ALL:限制的命令
    visudo  -c    检查sudo配置文件是否有错误
    sudo 授权命令
    默认设置为首次执行时,需输入当前用户的登陆密码,5分钟内再次执行sudo命令式则无需再输入密码。
    设置IP地址权限

     # visudo
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=       ALL 
    单独授权某个命令
    在第三个ALL上操作(绝对路径)
     # visudo
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=       /sbin/fdisk
     此时,只有sudo fdisk这个命令可以使用(因为只有fdisk被授权)
    授权多个命令
    在第三个ALL上操作(绝对路径),用逗号“,”分隔。
    # visudo 
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=       /sbin/fdisk,/bin/ls

     

    批量授权(存在优先级,先输入允许操作的命令(绝对路径),在输入不允许操作的命令(绝对路径))
    对benet用户授权/sbin/下所有目录,除了/sbin/reboot命令 
     # visudo 
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=(ALL)       /sbin/*,! /sbin/reboot
    批量授权,排除多个命令权限,用“,! ”分隔
    若为! /sbin/fdisk /dev/sda 表示不允许/sbin/fdisk执行/dev/sda*
    让一个普通用户自己分区,但禁止该用户采取任何破坏系统的操作(将A盘进行分区会破坏系统)
    # visudo 
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=(ALL)       /sbin/*,! /sbin/reboot,! /sbin/fdisk /dev/sda*
     不允许/sbin/fdisk 执行/dev/sda*,但由于授予/sbin/所有前线,则可以对其他盘进行分区
    对普通用户授权:只看日志 
    # visudo 
    在“root     ALL=(ALL)      ALL”行下,输入
     benet        192.168.232.136=(ALL)       /bin/cat /var/log/messages*
    !!!但是“看”的命令不仅仅是cat,还有more、less、head、tail、tac、sed、awk等,需要将它们全部授权(绝对路径)。

    查看sudo操作记录
    先# visudo 添加“Defaults logfile=/var/log/sudo”,再# cat /var/log/sudo

     

     

  • 相关阅读:
    MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
    MyBatis学习总结(三)——优化MyBatis配置文件中的配置
    MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
    MyBatis学习总结(一)——MyBatis快速入门
    web开发工具IDE
    mysql可视化管理工具
    mysql慢查询
    optimize table
    yii2 安装
    JavaScript中将JSON的字符串解析成JSON数据格式
  • 原文地址:https://www.cnblogs.com/yunweizongjian/p/9855632.html
Copyright © 2020-2023  润新知