LINUX基础第十章:系统安全及应用

一.系统安全加固

1.账号安全基本措施

1.1系统账号清理

  • 将非登录用户的Shell设为/sbin/nologin
  • 锁定长期不使用的账号(passwd -l 锁定用户;passwd -u 解锁用户)
  • 删除无用的账号(userdel -r 用户名)
  • 锁定账号文件passwd、shadow(chattr)

chattr +i /etc/passwd /etc/shadow

lsattr /etc/passwd /etc/shadow

1.1.1延伸

中病毒怎么处理------cpu、内存使用率过高

解决办法:1.使用ps、top命令查看这个异常程序,通过进程的pid号,通过proc找到文件具体位置,将其删除;

2.自己新建一个和病毒同名的文件,加上chattr +i 锁定文件(加权限 锁定)

tips:锁定之后再进行解锁的话,可能会掉数据

此时发现删不掉该文件 是因为文件权限被锁定 需要对文件权限进行修改

权限修改是使用chattr -i 减i权限

1.2密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码

vim /etc/login.defs ------适用于新建用户

chage -M 30 lisi ------适用于已有用户

如果使用chage + 用户名 代表使用交互式的修改密码

chage -d 0 用户名 ------表示用户登录时必须进行修改密码

注意:用户新修改的密码与原来的密码太相似也不可以

chage命令可以增强密码安全性

1.3命令历史限制

  • 减少记录的命令条数
  • 注销时自动清空命令历史

vim /etc/profile ------全局配置

1.4终端自动注销

  • 闲置600秒后自动注销

vim ~/.bash_profile

将export 后 PATH修改为TMOUT=600 表示闲置600秒后自动注销

也可以在关机前将历史命令清除(进入vim ~/.bash_logout)

history -c命令是历史命令被清空

历史命令是临时性的 退出重启的话 历史命令还会在的

如果想永久性的清除历史命令进入vim ~/.bashrc输入echo " " > ~/.bashrc

" . " 表示重新读取配置文件

二.使用su命令切换用户

1.用途及用法

  • 用途:Substitute User 切换用户
  • 格式:su 目标用户

2.密码验证

root→任意用户,不验证Miami

普通用户→其他用户,验证目标用户的密码

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
su 与 su-

即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。

超级管理员切普通用户不需要密码

普通用户切超级管理员需要输入密码

普通用户和普通用户之间切换也需要密码

3.限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组中
  • 启用pam_wheel认证模块

pam_rootok.so root用户不需要密码也可以切换用户;如果将其修改为注释(在这一行前加#表示注释)表示root切换到普通用户也需要修改密码

pam_wheel.so 只有wheel组才可以切换用户

启用pam_wheel认证模块

使用gpasswd -a cxk wheel

在Linux系统中,超级管理员的组是在wheel组中;wheel组高于root组

4.查看su操作记录

  • 安全日志文件:/var/log/secure

5.sudo(superuse do)------提权

5.1sudo的含义

允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。

5.2sudo的特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的"检票"系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

3.sudo的用法

visudo = vim /etc/sudoers

visudo 自带语法检查 推荐使用

3.1visudo详解

root:哪个用户要使用命令 如果lisi用户要使用命令则输入lisi@192.168.91.100;zhangsan@192.168.91.200

ALL:哪台主机 可以写域名 也可以写网段192.168.91.100 ;192.168.91.200

(ALL):以谁的方式运行 (ALL)代表以root用户的身份运行

ALL:所有命令;可以指定某些命令

注意注意:生产环境建议把root一行注释 在root行前加#

3.2演示

将lisi可以使用的命令指定为可以使用挂载命令,并且将光驱挂载到/mnt文件夹下

3.2.1在visudo中添加lisi可挂载命令

允许lisi用户在任何场景可以使用上述命令

3.2.2用户lisi通过使用挂载命令成功挂载
3.2.3设置lisi用户使用该命令不需要使用密码

因为visudo命令中设置了5分钟内再次使用命令不需要密码,如果想设置不需要密码直接使用命令,可以执行如下操作:

3.3延伸

%代表组 只要在wheel组中可以使用任何命令

3.3.1取反------哪个命令写在后面 哪个命令生效
3.3.2通配符的引入

问:此时可以执行cat /etc/shadow吗

答:可以执行(通过visudo提权设置中,messages*通配符,其中*表示任意长度字符,从messages结束后第一个空格到shadow结束均用*来表示)

那么如果要限制只使用cat /var/log/messages,而不使用cat /etc/shadow,可以做如下操作

! /usr/bin/cat /var/log/message* * 表示禁止messages后面的写法,表示命令到messages就结束了 在messages后面任意长度字符 空格也是字符 取反之后就可以只使用cat /var/log/messages命令了

3.3.3修改认证时间

sudo -V可以查看详细信息

3.3.4配置日志文件

进入visudo中配置defaults logfile="/data/sudo.log"

可以查看日志文件

3.3.5子目录

子配置文件可以方便管理用户;

延伸:如果有十个项目如何管理

需要写在子配置文件中

主配置可以存放全局配置文件;子配置文件可以存放个性化配置文件

注意:不可以进入visudo将zhangsan的ALL=修改为sudoedit;如果添加sudoedit则表示zhangsan可以进入visudo进行修改信息。加固安全!

3.3.6别名

要写在visudo中

Host_Alias MYHOST:主机组(可以输入域名)

User_Alias MYSERS:用户组

Cmnd_Alias MYCMND: 命令组

主机组内的主机和用户组内的用户可以使用用户组中的命令,可以方便管理

注意:别名格式:必须大写字母,数字可以使用但是不能放在开头

调用的话 输入如下操作

成功

三.PAM安全认证

1.su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2.PAM(Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Liunx服务器普遍使用的认证方式

/usr/lib64/security 文件夹下存放功能模块

/etc/pam.d 文件夹下存放配置文件

/etc/security 文件夹下存放比较复杂的配置文件

1.1PAM的相关文件
  • 包名:pam
  • 模块文件目录:/lib64/security/*.so
  • 特定模块相关的设置文件:/etc/security
  • 应用程序调用PAM模块的配置文件
1.2PAM认证的构成
  • 查看某个程序是否支持PAM认证,可以用ls命令
  • 查看su的PAM配置文件:cat /etc/pam.d/su
  • 每一行都是一个独立的认证过程
  • 每一行可以区分为三个字段:认证类型、控制类型、PAM模块及其参数

第一模块------module-type模块类型

  • Auth 账号的认证和授权
  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
  • Password 用户修改密码时密码复杂度检查机制等功能
  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

type模块是验证哪些功能;auth用户身份验证,账号是否存在;Account限制用户的位置,账户有效性,用户是否在有效期内进行登录;passwd输入密码是否正确 密码的复杂性;Session用户会话期间(相当于网络的会话层,管理会话)这个用户账号可以使用多少资源;-type缺失,有的模块没有安装在本地,不影响验证(后面的模块可能没有)

第二模块------Control控制类型

控制类型也称做Control Flags,用于PAM验证类型的返回结果

  • required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件。(如果失败,最后一定失败,但是会继续进行验证)
  • requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件(如果失败会立即结束验证)
  • sufficient :表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的(验证成功则立即返回,不再继续,否则忽略结果并继续)
  • equired和requisiteoptional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置
  • optional 可选项(显示信息)
  • substack 子模块
  1. required验证失败时仍然继续,但返回Fail
  2. required验证失败则立即结束整个验证过程,返回Fail
  3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息(通常用于session类型)
第三模块------PAM模块及参数

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

PAM认证类型包括四种

认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;

帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等;

密码管理(password management):主要是用来修改用户的密码;

会话管理(session management):主要是提供对会话的管理和记账。控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。

1.2.1Shell模块

功能:检查有效shell

只规定除nologin之外的类型通过

1.2.2securetty模块

功能:只允许root用户在/etc/securetty列出的安全终端上登录

将第一行注释的话,可以使用telnet协议进行远程登录

1.2.3pam_nologin.so 模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录(可以用于日常维护使用)

1.3PAM工作原理

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

总结:

  1. 使用者执行/usr/bin/passwd 程序,并输入密码
  2. passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
  3. 经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
  4. 将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
1.4limit------控制进程占用资源

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

其位置在/etc/security文件夹下

想知道哪些配置文件调用了limit模块vim limits.conf可以查看limit详细信息、nproc:某个用户最多可以打开几个进程

pgrep -l -u 用户名 可以查看用户有多少个进程

目前显示ghd用户已经开启了五个进程,无法开启更多进程

1.4.1ulimit命令

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

|---------|---------------------------|
| 选项 | 含义 |
| -H | 设置硬件资源限制 |
| -S | 设置软件资源限制 |
| -a | 显示当前所有的资源限制 |
| -c size | 设置core文件的最大值.单位:blocks |
| -d size | 设置数据段的最大值.单位:kbytes |
| -f size | 设置创建文件的最大值.单位:blocks |
| -l size | 设置在内存中锁定进程的最大值.单位:kbytes |
| -m size | 设置可以使用的常驻内存的最大值.单位:kbytes |
| -n size | 设置内核可以同时打开的文件描述符的最大值.单位:n |
| -p size | 设置管道缓冲区的最大值.单位:kbytes |
| -s size | 设置堆栈的最大值.单位:kbytes |
| -t size | 设置CPU使用时间的最大上限.单位:seconds |
| -u size | 最大用户进程数 |
| -v size | 设置虚拟内存的最大值.单位:kbytes |

ulimit -a 可以查看调整好的信息状态

1.4.1延伸------压测 ab

可以通过ulimit -n命令将open files调大

ab是httpd tools的测试小工具,需要安装

*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1000000
*                hard    nproc           1000000
*                soft    nofile          1000000
*                hard    nofile          1000000
*                soft    memlock         32000
*                hard    memlock         32000
*                soft    msgqueue        8192000
*                hard    msgqueue        8192000
 
 
 
#limits  生产中建议设置
1.5开关机安全控制
1.5.1调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

可以使用pe(小型的Linux系统) 或者 BIOS中进行密码破解 所以要将BIOS中可以通过硬盘登录引导系统进行关闭

1.5.2GRUB限制
  • 使用grub2-mkpasswd-pdkdf2生成密钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。

在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。

1.6暴力破解密码

Joth the Ripper,简称JR

  • 一款密码分析工具,支持字典式的暴力破解

  • 通过对shadow文件的口令分析,可以检测密码强度

  • 官方网站:http://www.openwall.com/john/

    cd /opt
    tar. zxf john-1.8.0.tar.gz
    #解压工具包

    yum install -y gcc gcc-c++ make
    #安装软件编译工具

    cd /opt/john-1.8.0/src
    #切换到src子目录

    make clean linux-x86-64
    #进行编译安装

    cp /etc/shadow /opt/shadow.txt
    #准备待破解的密码文件

    /opt/john-1.8.0/run/john /opt/shadow.txt
    Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
    Press 'q' or Ctrl-C to abort, almost any other key for status

    #显示目前有两个用户需要进行破解,需要等待时间 如果密码在

    xxx (root)
    xxx (ghd)

    #显示已破解的密码

    2g 0:00:00:16 100% 2/3 0.1222g/s 361.4p/s 367.3c/s 367.3C/s 123456..pepper
    Use the "--show" option to display all of the cracked passwords reliably
    Session completed

    ./john --show /opt/shadow.txt
    root:123::0:99999:7:::
    ghd:123::0:99999:7:::

    2 password hashes cracked, 0 left

    #查看已破解的密码

1.7NMAP------网络端口扫描
  • 一款强大的网络扫描、安全检测工具
  • 官方网站:http://namp.org/
  • Centos7.3光盘中安装包nmp-6.40-7.el7.x86_64.rpm
1.7.1NMAP的常用选项和扫描类型

|-----|------------------------------------------------------------------------------------------------|
| 选项 | 内容 |
| -p | 指定扫描的端口 |
| -n | 禁用反向DNS解析(以加快扫描速度) |
| -sS | TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放 |
| | |
| -sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放 |
| -sF | TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性 |
| -sU | UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢 |
| -sP | ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描 |
| -p0 | 跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描 |

1.7.2NMAP用于发现主机的一些用法

|--------------------------------------|---------------------------------------------|
| 选项 | 内容 |
| -sL | List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现 |
| -sn | Ping Scan 只进行主机发现,不进行端口扫描 |
| -Pn | 将所有指定的主机视作开启的,跳过主机发现的过程 |
| -PS/PA/PU/PY[portlist] | 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现 |
| -PE/PP/PM | 使用ICMP echo, timestamp, and netmask 请求包发现主机 |
| -PO[protocollist] | 使用IP协议包探测对方主机是否开启 |
| -n/-R | -n表示不进行DNS解析;-R表示总是进行DNS解析 |
| --dns-servers<serv1[,serv2],...> | 指定DNS服务器 |
| --system-dns | 指定使用系统的DNS服务器 |
| --traceroute | 追踪每个路由节点 |

1.7.3NMAP扫描端口的一些方法

|----------------------------------|-------------------------------------------------------------|
| 选项 | 内容 |
| -sS/sT/sA/sW/sM | 指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描 |
| -sU | 指定使用UDP扫描方式确定目标主机的UDP端口状况 |
| -sN/sF/sX | 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态 |
| --scanflags <flags> | 定制TCP包的flags |
| -sI <zombiehost[:probeport]> | 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host) |
| -sY/sZ | 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况 |
| -sO | 使用IP protocol 扫描确定目标机支持的协议类型 |
| -b <FTP relay host> | 使用FTP bounce scan扫描方式 |

1.7.4演示
[root@localhost opt]#nmap -sT 127.0.0.1
 
Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-06 15:25 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00023s latency).
Not shown: 995 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
111/tcp   open  rpcbind
631/tcp   open  ipp
10000/tcp open  snet-sensor-mgmt
 
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
[root@localhost opt]#nmap -sU 127.0.0.1
 
Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-06 15:25 CST
 
 
#分别查看本机开放的TCP端口、UDP端口
 
 
[root@localhost opt]#nmap -p 80 192.168.241.0/24
 
Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-06 15:26 CST
Nmap scan report for 192.168.241.1
Host is up (0.00044s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:C0:00:08 (VMware)
 
Nmap scan report for 192.168.241.2
Host is up (0.00014s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:FE:2A:68 (VMware)
 
Nmap scan report for 192.168.241.11
Host is up (0.000048s latency).
PORT   STATE  SERVICE
80/tcp closed http
 
Nmap done: 256 IP addresses (3 hosts up) scanned in 15.33 seconds
 
 
 
##检测192.168.80.0/24网段有哪些主机提供HTTP服务
 
 
[root@localhost opt]#nmap -n -sP 192.168.241.0/24
 
Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-06 15:27 CST
Nmap scan report for 192.168.241.1
Host is up (0.00038s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.241.2
Host is up (0.000078s latency).
MAC Address: 00:50:56:FE:2A:68 (VMware)
Nmap scan report for 192.168.241.11
Host is up.
Nmap done: 256 IP addresses (3 hosts up) scanned in 1.95 seconds
 
 
 
#检测192.168.80.0/24网段有哪些存活主机
1.7.5服务及其端口号

|---------------------------|------|
| 服务 | 端口号 |
| HTTP | 80 |
| HTTPS | 443 |
| Telnet | 23 |
| FTP | 21 |
| SSH(安全登录)、SCP(文件传输)、端口重定向 | 22 |
| SMTP | 25 |
| POP3 | 110 |
| WebLogic | 7001 |
| TOMCAT | 8080 |
| WIN2003远程登录 | 3389 |
| Oracle数据库 | 1521 |
| MS SQL* SEVER数据库sever | 1433 |
| MySQL 数据库sever | 3306 |

四.总结

1.账号基本安全措施

  • 系统账号清理
  • 密码安全控制
  • 命令历史清理
  • 自动注销

2.用户切换域提权

  • su
  • sudo

3.开关机安全控制

  • BIOS引导设置
  • 禁止Ctrl+Alt+Del快捷键
  • GRUB菜单设置密码

4.终端控制

5.John the Ripper工具

6.namp命令

相关推荐
赛德乌漆麻黑哟6 分钟前
FOFA--网络空间资产搜索引擎(常用语法以及拓展)
网络·安全·搜索引擎
Hacker_Oldv1 小时前
iptables网络安全服务详细使用
网络·安全·web安全
xcLeigh1 小时前
网络安全 | 云计算中的数据加密与访问控制
安全·web安全·云计算
不惑_3 小时前
List 集合安全操作指南:避免 ConcurrentModificationException 与提升性能
数据结构·安全·list
老猿讲编程5 小时前
整车厂如何规划构建汽车集成安全团队的软件研发能力
安全·汽车
黑客老陈7 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展
车载诊断技术11 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
brrdg_sefg15 小时前
WEB 漏洞 - 文件包含漏洞深度解析
前端·网络·安全
浏览器爱好者15 小时前
谷歌浏览器的网络安全检测工具介绍
chrome·安全