C++入侵检测与网络攻防之权限控制以及入侵分析

目录

 

1.基础命令

2.访问的概念

3.文件权限的标记位

4.目录的权限

5.粘着位

6.setuid和setgid

7.acl的设置和删除

8.复习

9.acl的掩码

10.权限判断的依据

11.文件属性

12.特权能力

13.入侵检测--可疑用户

14.入侵检测--自启动服务

15.入侵检测--shell自启动命令

16.入侵检测--命令历史的查看


 

1.基础命令

1 基础命令
    whoami 
        查看我是谁

    id [用户名]
        查看某个用户的id信息,包括用户id,组id,以及所在组别

    passwd [用户名]
        修改某个用户的密码

    useradd [选项] <用户名>
        创建某个用户
        -s /bin/bash 指定使用什么shell 默认是 /bin/sh
        -m  同时创建用户的home目录

2.访问的概念

   userdel [选项]  <用户名>
        删除某个用户
        -r 同时删除home目录等文件

    usermod [选项] <用户名>
        对某个用户属性进行修改
        -G 组1,组2...  设定用户在哪个组
        -aG 组1,组2... 将用户追加到哪些组里边

    chown 用户名[:组名] 文件1 文件2 ....
        修改某个用户的属主和属组

3.文件权限的标记位

2 ugo权限
    
    权限分   rwx
        如果对应的权限是拥有的,标志位1,否则标志位0

    权限标记位
        rwx -> 111 ->十进制的7
        rw- -> 110 ->十进制的6
        -w- -> 010 ->十进制的2

        -rw-r--r-- 1 root root     31168 4月  30 10:10 1.pcap  

        权限标记可以使用 -rw-r--r--  -> 644


        chmod <十进制的标记位数值>  文件  
            修改某个文件的权限为对应的标记位数值
            chmod 777 文件
 

4.目录的权限

      chmod [a|u|g|o][+|-][rwx]  文件
            chmod u+r 文件
                对文件的user组权限添加读权限
            chmod o-w 文件
                对文件的other组权限回收写权限

            chmod a+x 文件
                对文件的所有组都添加可执行权限
 

5.粘着位

3 目录的权限
    
    目录的r权限,就是控制能否获取该目录结构
    目录的w权限,就是控制能否修改该目录结构

6.setuid和setgid

  目录的x权限,就是控制能否进入该目录进行操作的权限  简单认为就是 cd的权限


    正常要读取一个目录,x权限是必须要给的

7.acl的设置和删除

4 目录的粘着位

    需求:一个目录中只有文件的创建者(属主)可以删除该文件,其他用户不能删除
        如果直接给目录other组设置一个w权限,所有用户都可以修改目录的结构,增加文件删除不是自己的文件


    使用粘着位就刚好能够完成这个需求
    使用条件:
        黏着位只能对目录进行设置,对普通文件无效

8.复习

   怎么设置:
        使用chmod

        |s组|u组|g组|o组|

        一般chmod 777 ,其实只修改后面3组
        如果想修改s组,那么就要多添加一位数值

        s组  ->     |set uid | set gid | sticky|  

            如果要设置黏着位,s组应该是 001 -> 十进制的1

            chmod 1777 目录名


        设置了之后再 ls -l 查看 会发现
            drwxrwxr-t 2 test02 test02 4096 5月   8 11:20 testdir     标记位后面是一个t,表示粘着位已经被设置


    一些共享目录可以设置黏着位,保证安全,/tmp ....
    服务器,如果有多个进程同时使用一个目录中的文件,设置这个目录的粘着位

    set uid 
        使用在一些可执行程序,当程序被执行启动一个进程的时候,系统内核就会修改该进程的用户id为该文件的用户id

    set gid 
        使用在一些可执行程序,当程序被执行启动一个进程的时候,系统内核就会修改该进程的组id为该文件的组id

9.acl的掩码

5 acl


    对文件的访问权限根细粒度的划分

    setfacl -m u:username:rwx filename

        -m 表示要对acl进行修改

            u   表示要对某个用户的权限进行修改
            username   指定是哪个用户
            rwx   对应是什么权限

10.权限判断的依据

 itcast 用户的文件1.txt 对 test01这个用户有写的权限, 对test02这个用户有读的权限

        setfacl -m u:test01:w  1.txt
        setfacl -m u:test02:r  1.txt


        设置完权限之后,再使用ls -l 来查看文件的权限,此时,可以看到
        -rw-rw-r--+ 1 itcast itcast 6 5月   8 11:57 1.txt    多了一个+号 ,表示文件的权限不能够使用普通的方式来判断


    如果要设定某个用户组的访问权限
        setfacl -m g:组名:权限  文件名


    查询文件的acl的访问列表
        getfacl 文件名

        # file: 1.txt           文件名
        # owner: itcast         文件的属主
        # group: itcast         文件的属组
        user::rw-               属主拥有的权限
        user:test02:r--         特定用户拥有的权限
        user:test01:-w-         特定用户拥有的权限
        group::r--              属组的用户拥有的权限
        mask::rw-               掩码   
        other::r--              其他用户拥有的权限

    删除acl
        setfacl -x u:用户名
            删除某个用户特定的acl条目


    mask
        设置了mask之后

        # file: 1.txt                                    
        # owner: itcast                                  
        # group: itcast                                  
        user::rw-                                        
        user:test01:rwx                 #effective:r--      test01对于该文件有rwx的权限,生效的权限只有r权限
        group::r--                                       
        mask::r--                                        
        other::r--       

        最终特定的权限要跟mask做按位与,才得到最终的生效的权限

        修改mask的方法
        setfacl -m m:rwx   文件名

        删除mask的方法
        setfacl -x m 文件名


    权限判断依据
        如果用户是文件属主, 按文件属主的权限位判定访问控制
        如果用户不是文件属主, 而是符合ACL中的user项, 则按该项权限位判别且受mask限制。
        如果用户的属组属于group或者ACL中group项, 只要组或者ACL的group项,允许优先且受mask限制。
        否则应用Other的权限。
 

11.文件属性

6 文件属性

    通过设置文件系统,对某个文件设置不可写,任何用户都没办法对其进行修改

    文件系统:管理文件以怎么样的形式存储到物理介质上
    编程我们使用 read/write api就可以对文件进行读写

        ntfs
        ext3
        ext4
        apfs

12.特权能力

 文件系统是依赖物理介质的
    设置了文件系统的属性,连超级管理员都会受限,类似sd卡的开关

    通过 man ext4 可以查看linux下 ext4文件系统可用的属性

    a (append only) 仅允许以追加的方式打开文件(不允许移动、删除文件)
    A (no atime updates)    这个属性不允许更新文件的atime    atime = access time 访问时间
    c (compressed)  启用这个属性时,文件在磁盘上会自动压缩
    d (no dump) 不能使用dump命令备份文件
    D (synchronous directory updates)   设置了文件夹的D属性时,更改会在同步保存在磁盘上
    e (extent format)   它表明,该文件使用磁盘上的块的映射扩展
    i (immutable)   在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件
    j (data journaling) 设置了这个属性时,文件的数据首先保存在日志中,然后再写入文件
    S (synchronous updates) 设置了这个属性时,变更或更改同步保存到磁盘上


    修改文件属性
        chattr +|-|=属性....  文件名

        chattr +i 文件名

    查看文件的属性
        lsattr 文件名


    只有root用户有权限去修改文件属性

13.入侵检测--可疑用户

7 特权能力机制

    将root用户的特权切分出来给予某个可执行程序

    确定当前linux内核拥有多少特权
    cat /proc/sys/kernel/cap_last_cap 
    man capabilities


    对某个文件设置特权

    setcap "特权1,特权2..+ep" 可执行程序

    setcap "CAP_DAC_OVERRIDE+ep" ./cat    给cat程序一个特权,越过权限判断来操作其他文件

14.入侵检测--自启动服务

  查看应用程序的特权
    getcap 应用程序


    回收特权
    setcap -r 应用程序


    常用特权还有CAP_NET_BIND_SERVICE  允许绑定1024以下端口

15.入侵检测--shell自启动命令

8 入侵分析技术
    查看可疑用户

    通过查看/etc/passwd 文件确定哪些用户是有执行shell的能力

    查看该用户最近登录的信息
        lastlog 用户名
            最后一次登录的记录
        last 用户名
            最后n从的登录记录
        lastb 用户名
            最近的失败的登录的记录
        finger hacker
            查看用户的综合信息

16.入侵检测--命令历史的查看

  可疑服务分析

        自启动服务:
            通过systemctl 来查看当前系统自启动的服务有哪些
            systemctl list-unit-files --type=service | grep "enabled"

        定时运行的命令:
            查看 /etc/crontab 最后两列,对应哪个用户执行什么命令


        用户登录就会执行的命令,查看一些bash的配置文件
            非交互/非登录shell: $BASH_ENV(环境变量)
            非交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)
            交互/非登录shell: /etc/bash_bashrc、$HOME/.bashrc
            交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)

    命令历史查看
        history 命令查看当前用户执行过的历史记录
        对应的历史记录文件要看环境变量  HISTFILE   : echo $HISTFILE
        设置历史文件的时间格式: 在 .bashrc 中添加环境变量   export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

 

你可能感兴趣的:(c++)