当前位置: 首页 > news >正文

应用及安全

目录

一、PAM 安全认证及配置
        1.1配置 su 命令的认证
        1.2PAM 配置文件结构
二、账号和密码安全管理
        2.1账号管理
        2.2系统账号清理
        2.3密码安全控制
        2.4密码重设示例
        2.5参考命令
三、命令历史限制
        3.1设置命令历史记录条数
        3.2自动清除命令历史记录
        3.4终端自动注销
        3.5结论
四、Linux 系统安全管理:PAM 安全认证
        4.1什么是 PAM
        4.2PAM 的工作原理
        4.3PAM 配置文件结构​​​​​​​
        4.4PAM 认证模块的控制标记
        4.5实际应用
        4.6结论
五、Linux 系统安全管理:使用 sudo 提升权限
        5.1什么是 sudo
        5.2sudo 配置文件 /etc/sudoers
        5.3sudo 常用参数
        5.4实例:配置 sudo 提权
        5.5使用别名简化 sudo 配置
        5.6启用 sudo 操作日志
        5.7验证 sudo 配置
        5.8总结
六、如何确保服务器的开关机安全
        6.1 物理环境安全防护
        6.2 限制更改GRUB引导参数
        6.3终端登录安全控制
        6.4系统弱口令检测
        6.5总结
七、使用Nmap进行网络端口扫描与安全管理
        7.1 网络协议基础
        7.2 安装Nmap
        7.3.基本Nmap扫描类型
        7.4实例演示
        7.5禁用与启用Ping
        7.6 PAM模块防止暴力破解
        7.7 使用netstat查看网络状态
        ​​​​​​​7.8总结


一、PAM 安全认证及配置

PAM(Pluggable Authentication Modules,可插拔认证模块)是 Linux 系统中用于管理认证的一个灵活机制。PAM 配置文件位于 /etc/pam.d/ 目录下,每个文件对应一个服务或命令的认证设置。

1.1配置 su 命令的认证

默认情况下,所有用户都可以使用 su 命令切换到其他用户。这带来了一定的安全风险,因为恶意用户可以反复尝试其他用户(如 root)的登录密码。通过配置 pam_wheel 认证模块,可以限制只有特定组(如 wheel 组)的用户才能使用 su 命令。

配置步骤

  1. 编辑 /etc/pam.d/su 文件

    vim /etc/pam.d/su
  2. 修改内容: 默认情况下,文件内容可能如下:

    # auth       sufficient   pam_rootok.so
    # auth       required     pam_wheel.so use_uid

    配置文件的每一行是一个独立的认证过程,它们按从上往下的顺序依次由 PAM 模块调用。以下是几种配置状态的解释:

    a) 默认状态plaintext auth sufficient pam_rootok.so # auth required pam_wheel.so use_uid - 允许所有用户使用 su 命令进行切换。

    b) 两行都注释plaintext # auth sufficient pam_rootok.so # auth required pam_wheel.so use_uid - 所有用户可以使用 su 命令,但 root 用户切换到其他用户需要输入密码。

    c) 开启第二行plaintext # auth sufficient pam_rootok.so auth required pam_wheel.so use_uid - 只有 root 用户和 wheel 组内的用户可以使用 su 命令。

    d) 注释第一行,开启第二行plaintext # auth sufficient pam_rootok.so auth required pam_wheel.so use_uid - 只有 wheel 组内的用户可以使用 su 命令,root 用户也被禁用。

  3. 将用户添加到 wheel

    gpasswd -a zhangsan wheel
    • 添加用户 zhangsanwheel 组中。

  4. 确认 wheel 组成员

    grep wheel /etc/group
    • 确认 wheel 组的成员列表。

  5. 启用 pam_wheel 认证

    #%PAM-1.0
    auth sufficient pam_rootok.so
    auth required pam_wheel.so use_uid
    • 未加入到 wheel 组的其他用户将无法使用 su 命令,尝试进行切换时将提示“拒绝权限”。

  6. 切换用户测试

    • 使用 su 命令切换用户的操作会记录到 /var/log/secure 文件中,可以根据需要进行查看。

1.2PAM 配置文件结构

PAM 配置文件中的每一行由四部分组成:

  1. 模块类型

    • auth:对用户身份进行识别。

    • account:对账号各项属性进行检查。

    • password:使用用户信息来更新数据。

    • session:定义登录前及退出后所要进行的会话操作管理。

  2. 控制标记

    • required:该行及所涉及模块的成功是用户通过鉴别的必要条件。

    • requisite:与 required 相似,但失败会立即返回错误。

    • sufficient:该行及所涉及模块验证成功是用户通过鉴别的充分条件。

    • optional:即使该行所涉及的模块验证失败用户仍能通过认证。

    • include:调用其他 PAM 配置文件。

  3. 模块名称

    • 默认在 /lib64/security/ 目录下,如 pam_wheel.so

  4. 模块参数

    • 传递给模块的参数,可以有多个,之间用空格分隔开。

实例说明

以下是一个 PAM 认证过程的实例:

auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth required pam_deny.so

用户通过 PAM 模块进行认证的过程:

  • 用户1:成功通过所有 auth 模块的认证。

  • 用户2:在 pam_unix.so 认证失败,因此最终认证失败。

  • 用户3:通过 pam_unix.so 认证,但失败于 pam_deny.so

  • 用户4:成功通过所有 auth 模块的认证。

二、账号和密码安全管理

在 Linux 系统中,账号和密码安全管理是确保系统安全的重要措施之一。以下是一些常见的操作和配置方法。

2.1账号管理

2.1.1锁定和解锁账号

锁定账号

usermod -L zhangsan  # 锁定账号 zhangsan
passwd -S zhangsan   # 查看账号状态
passwd -l zhangsan   # 锁定用户账户

解锁账号

usermod -U zhangsan  # 解锁账号 zhangsan
passwd -u zhangsan   # 解锁用户账户

删除无用账号

userdel -r 用户名  # 删除无用的账号,并删除用户的主目录

锁定账号配置文件

使用 chattr 命令锁定或解锁账号配置文件,防止账号配置文件被修改:

chattr +i /etc/passwd /etc/shadow  # 锁定文件
lsattr /etc/passwd /etc/shadow     # 查看文件锁定状态
chattr -i /etc/passwd /etc/shadow  # 解锁文件

测试文件是否锁住:

useradd lisi  # 查看是否能添加用户

2.2系统账号清理

查找使用 /sbin/nologin 作为登录 shell 的用户

grep "/sbin/nologin$" /etc/passwd

修改用户的登录 shell

usermod -s /sbin/nologin 用户名

2.3密码安全控制

编辑 /etc/login.defs 文件

vi /etc/login.defs

设置密码有效期:

PASS_MAX_DAYS 30  # 设置密码有效期为30天

设置最小密码修改间隔:

PASS_MIN_DAYS 0  # 密码最小修改间隔为0天

设置密码最小长度:

PASS_MIN_LEN 5  # 密码最小长度为5

设置密码到期警告天数:

PASS_WARN_AGE 7  # 密码到期前7天开始警告

使用 chage 命令设置密码时限

设置用户密码最大有效期:

chage -M 30 lisi  # 设置lisi用户的密码最大有效期为30天

强制用户下次登录时重设密码:

chage -d 0 zhangsan  # 强制zhangsan下次登录时重设密码

查看用户密码到期信息

chage -l zhangsan
chage -l lisi

2.4密码重设示例

当密码过期时,用户会被强制要求在下次登录时更改密码,具体操作如下:

登录提示:

WARNING: Your password has expired.
You must change your password now and login again!

用户更改密码:

(当前) UNIX 密码:
新的 密码:
无效的密码:密码未通过字典检查 - 它基于字典单词
新的 密码:
无效的密码:密码未提供
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2.5参考命令

锁定文件

chattr +i /etc/passwd /etc/shadow

解锁文件

chattr -i /etc/passwd /etc/shadow

查看文件锁定状态

lsattr /etc/passwd /etc/shadow

 

三、命令历史限制

        在 Linux 系统中,命令历史记录可以帮助用户追溯以前执行的命令,但在某些情况下(如安全或隐私需要),我们可能希望限制命令历史的记录和保存。

3.1设置命令历史记录条数

3.1.1为新登录用户设置历史记录条数

编辑 /etc/profile 文件(适用于所有用户):

vim /etc/profile

添加以下行:

HISTSIZE=18

3.1.2为当前用户设置历史记录条数

编辑用户的 ~/.bashrc 文件:

vim ~/.bashrc

添加以下行:

export HISTSIZE=15

使配置生效:

source ~/.bashrc

验证效果:

history

确认 history 命令只显示最近的 15 条记录。

3.1.3临时清除历史记录

清除当前 session 的历史记录:

history -c

3.1.4永久清除历史记录

清空 .bash_history 文件:

echo " " > ~/.bash_history

3.2自动清除命令历史记录

3.2.1配置自动清除命令历史记录

在用户的 ~/.bashrc 文件中添加:

echo '' > ~/.bash_history

3.2.2每次用户登出时清除历史记录

编辑 /etc/skel/.bash_logout 文件,确保新用户创建时包含该配置:

vim /etc/skel/.bash_logout

添加以下行:

rm -f $HOME/.bash_history

3.3.3环境变量的读取顺序

用户登录顺序

用户登录时,首先加载 ~/.bash_profile 文件。

~/.bash_profile 中通常配置加载 ~/.bashrc 文件:

if [ -f ~/.bashrc ]; then. ~/.bashrc
fi

3.4终端自动注销

为了防止用户长时间闲置在终端,可以设置自动注销时间。

3.4.1设置自动注销时间

编辑 /etc/profile 文件(适用于所有用户):

vim /etc/profile

添加以下行:

export TMOUT=600  # 闲置600秒后自动注销

使配置生效:

source /etc/profile

为当前用户设置自动注销时间:

export TMOUT=600

取消自动注销:

unset TMOUT

3.4.2登出时清除历史记录

编辑用户的 ~/.bash_logout 文件:

vim ~/.bash_logout

添加以下行:

history -c
clear

通过以上配置和操作,能够有效地管理 Linux 系统的命令历史记录和终端自动注销,确保系统安全和用户隐私。

3.5结论

        在 Linux 系统中,通过合理配置账号和密码管理策略、限制命令历史记录以及设置终端自动注销时间,可以显著提升系统的安全性和用户隐私保护。这些措施在企业环境和个人使用中都具有重要的实际意义。

 

四、Linux 系统安全管理:PAM 安全认证

        在 Linux 系统中,确保系统的安全性是至关重要的。PAM(Pluggable Authentication Modules)提供了一种灵活和可定制的认证机制,使得系统管理员可以根据需要配置和管理各种服务的认证方式。

4.1什么是 PAM

        PAM 是 Linux 系统中的可插拔认证模块,允许系统管理员灵活地配置和管理各种服务的认证方式。PAM 的可插拔性并不意味着它是一个物理上的设备(如外部设备或 U 盘),而是指其可配置、可定制的特性。通过编辑配置文件,管理员可以定制某个服务的认证模块,实现灵活高效的用户级认证。

4.1.1以 .so 结尾的模块是什么?

        这些模块是动态函数库模块。当一个服务运行时,会将认证过程交给 PAM,PAM 读取相应的配置文件,然后根据配置调用适当的 PAM 认证模块来实现认证功能。如果认证不成功,用户将无法访问该服务。

4.2PAM 的工作原理

PAM 认证的基本流程可以分为以下几个步骤:

  1. 确定服务:首先确定哪个服务需要进行认证。

  2. 加载配置文件:加载该服务对应的 PAM 配置文件,通常位于 /etc/pam.d/ 目录下。

  3. 调用认证模块:根据配置文件中的指示,调用相应的 PAM 认证模块,这些模块通常位于 /lib64/security/ 目录下。

具体来说,PAM 认证遵循以下顺序:服务 -> 配置文件 -> 认证模块

  • 服务:用户访问服务器时,某个服务程序会接收到用户的请求。

  • 配置文件:该服务会查找并加载对应的 PAM 配置文件。

  • 认证模块:根据配置文件中的内容,服务会调用相应的 PAM 认证模块,进行安全认证。

如果认证成功,用户将被允许访问该服务;如果认证失败,用户将被拒绝访问。

4.3PAM 配置文件结构

PAM 配置文件中的每一行都是一个独立的认证过程,包含以下四个字段:

4.3.1认证类型

  • auth:对用户身份进行识别,如提示输入密码。
  • account:检查账号属性,如是否允许登录系统。
  • password:用于修改用户密码。
  • session:管理会话,如记录登录信息。

4.3.2控制标记

  • required:模块必须成功,失败则整个认证失败,但要继续执行其他模块。
  • requisite:模块必须成功,失败则立即返回失败,终止认证过程。
  • sufficient:模块成功则立即返回成功,忽略其他模块,失败则继续执行其他模块。
  • optional:模块的成功与否无关紧要,通常用于 session 类型。
  • include:表示在验证过程中调用其他的 PAM 配置文件。

模块名称:指定使用的 PAM 模块,如 pam_unix.so

模块参数:传递给模块的参数,可以有多个,之间用空格分隔。

以下是一个示例配置文件 /etc/pam.d/su

#%PAM-1.0
auth       sufficient   pam_rootok.so
auth       required     pam_wheel.so use_uid

4.3.3示例解释

  • auth sufficient pam_rootok.so:如果调用者是 root 用户,则认证立即成功。

  • auth required pam_wheel.so use_uid:只有 wheel 组的用户才可以使用 su 命令。

4.4PAM 认证模块的控制标记

PAM 的控制标记决定了各个模块的执行顺序和结果处理方式:

required

解释:表示该行及所涉及模块的成功是用户通过鉴别的必要条件。如果失败,不会立刻返回失败,而是继续执行其他模块,所有此类型的模块都执行完毕后再返回失败。

举例:如同面试时,面试官虽然对某个问题的回答不满意,但仍然继续面试,最后才决定结果。

requisite

解释:与 required 类似,但如果该模块失败,则立即返回失败,终止认证过程。

举例:如同面试时,只要有一个问题回答不上来,面试官立即宣布面试失败。

sufficient

解释:如果该模块成功,则立即返回成功,忽略后续的模块;如果失败,继续执行其他模块。

举例:如同面试时,如果有关系背景,只要回答上来某个关键问题,就直接通过面试。

optional

解释:表示该行及所涉及模块的成功与否无关紧要,通常用于 session 类型的模块。

举例:如同面试时,某个问题的回答仅作参考,不影响最终结果。

include

解释:表示在验证过程中调用其他的 PAM 配置文件。

举例:如同面试时,某个问题需要引用其他人的评价来辅助判断。

4.5实际应用

通过配置 PAM,可以限制 su 命令的使用。例如,只有 wheel 组的用户才能使用 su 命令:

将用户添加到 wheel 组:

gpasswd -a username wheel

修改 /etc/pam.d/su 文件:

auth       sufficient   pam_rootok.so
auth       required     pam_wheel.so use_uid

验证配置:

su - anotheruser  # 尝试切换用户

4.6结论

        Linux 系统的安全管理需要多方面的努力,通过灵活配置 PAM 安全认证,可以显著提升系统的安全性。PAM 提供了一种高效、灵活的认证机制,允许管理员根据需要对服务进行细粒度的认证控制,从而确保系统和用户数据的安全。通过深入理解和正确配置 PAM 模块,可以有效地防止未经授权的访问,保护系统的完整性和机密性。

五、Linux 系统安全管理:使用 sudo 提升权限

        在 Linux 系统中,确保系统的安全性和管理的便捷性是至关重要的。使用 su 命令可以方便地切换为另一个用户,但前提是必须知道目标用户的密码。这对于生产环境中的 Linux 服务器来说,每多一个人知道特权密码,其安全风险也就增加一分。那么有没有一种折中的办法,既可以让普通用户拥有部分管理权限,又不需要将 root 用户的密码告诉他们呢?答案是肯定的,使用 sudo 命令就可以提升执行权限。本文将详细介绍 sudo 的使用方法和配置。

5.1什么是 sudo

sudo(superuser do)命令允许普通用户在不泄露 root 密码的情况下执行特权命令。管理员可以预先进行授权,指定哪些用户可以以超级用户(或其他用户)的身份执行哪些命令。

5.2sudo 配置文件 /etc/sudoers

/etc/sudoers 文件是 sudo 的配置文件,用于定义哪些用户可以在哪些主机上以谁的身份执行哪些命令。该文件的默认权限为 440,因此需要使用 visudo 工具进行编辑。虽然也可以用 vi 进行编辑,但保存时必须执行 :w! 命令来强制操作,否则系统将提示为只读文件而拒绝保存。

5.2.1sudoers 文件的基本格式

user MACHINE=COMMANDS
  • user:可以是一个具体的用户名,也可以是一个用户组(使用 %组名 表示)。

  • MACHINE:主机名,通常设置为 ALL 代表所有主机。

  • COMMANDS:用户被允许执行的命令的完整路径,多个命令之间以逗号 , 分隔。

5.3sudo 常用参数

  • -l:列出用户在主机上可用的和被禁止的命令。

  • -v:验证用户的时间戳。

  • -u:指定以某个用户执行特定操作。

  • -k:删除时间戳,下一个 sudo 命令要求用户提供密码。

5.4实例:配置 sudo 提权

5.4.1案例一:用户 wangliu 可以使用 useradd 和 usermod 命令

  1. 编辑 sudoers 文件:

    visudo
  2. 添加以下配置:

    wangliu ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod
  3. 验证配置:

    su - wangliu
    sudo /usr/sbin/useradd tom

5.4.2案例二:用户 Tom 可以临时创建网卡

  1. 编辑 sudoers 文件:

    visudo
  2. 添加以下配置:

    Tom ALL=(root) NOPASSWD:/usr/sbin/ifconfig
  3. 验证配置:

    su - Tom
    sudo /usr/sbin/ifconfig ens33:0 192.168.1.11/24

5.5使用别名简化 sudo 配置

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名,通过关键字 User_AliasHost_AliasCmnd_Alias 来进行设置。

5.5.1案例一:定义用户别名、主机别名和命令别名

  1. 编辑 sudoers 文件:

    visudo
  2. 添加以下配置:

    Host_Alias MYHOSTS = kgc,localhost
    User_Alias MYUSERS = zhangsan,wangwu,lisi
    Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
    MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
  3. 解释:

  • MYHOSTS 定义了主机别名,包含 kgclocalhost
  • MYUSERS 定义了用户别名,包含 zhangsanwangwulisi
  • MYCMNDS 定义了命令别名,包含 /sbin/ 目录下的所有命令,但排除了 rebootpoweroffinitrm 命令。

5.5.2案例二:用户别名和命令别名的综合使用

  1. 编辑 sudoers 文件:

    visudo
  2. 添加以下配置:

    User_Alias USERADMIN = wangliu,%wangliu,%useradmin
    Cmnd_Alias USERADMINCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
    USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
  3. 解释:

  • USERADMIN 定义了用户别名,包含 wangliu 用户和 wangliuuseradmin 两个用户组。
  • USERADMINCMND 定义了命令别名,包含 useraddusermoduserdelpasswd 命令,但排除了 passwd root
  • USERADMIN 在所有主机上可以无密码执行 USERADMINCMND 别名下的命令。

5.6启用 sudo 操作日志

为了更好地审计和追踪 sudo 操作,可以启用 sudo 操作日志。

  1. 编辑 sudoers 文件:

    visudo
  2. 添加以下配置:

    Defaults logfile="/var/log/sudo"
  3. 解释:

  • 该配置将 sudo 的操作日志记录到 /var/log/sudo 文件中。

5.7验证 sudo 配置

  1. 使用 sudo -l 查看当前用户获得的 sudo 授权:

    sudo -l
  2. 通过 sudo 执行特权命令:

    sudo /sbin/ifconfig ens33:0 192.168.1.11/24

5.8总结

        通过合理配置 sudo,可以在不泄露 root 密码的情况下,灵活地为普通用户分配特权命令的执行权限。这不仅提高了系统的安全性,还使得管理更加方便和高效。通过定义别名和启用操作日志,可以进一步简化配置和加强审计,确保系统的安全性和可追溯性。对于初学者,理解 sudo 的基本概念和配置方法是迈向 Linux 系统管理的重要一步。

六、如何确保服务器的开关机安全

在互联网环境中,大部分服务器是通过远程登录进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、安全的管控制度时,防止其他用户的非授权介入就变得尤为重要。本文将详细介绍如何确保服务器的开关机安全,包括物理安全防护、GRUB引导参数的限制、更改终端登录安全控制、以及系统弱口令检测等方面的内容。

6.1 物理环境安全防护

服务器的物理环境安全防护至关重要:

  • 机箱和机柜保护:确保机箱完好,机柜锁闭,防止非授权人员接触硬件设备。

  • 人员进出控制:严格控制机房的人员进出,只有授权人员才能进入机房。

  • 硬件设备接触:限制对硬件设备的现场接触,防止设备被非法操作或破坏。

6.2 限制更改GRUB引导参数

修改GRUB引导参数可以修复系统问题,但如果任何人都能修改GRUB引导参数,对服务器的安全构成极大威胁。为此,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

6.2.1设置GRUB菜单密码步骤:

  1. 生成加密密码

    grub2-mkpasswd-pbkdf2

    按提示输入并确认密码,生成的PBKDF2加密字符串会被用于GRUB配置。

  2. 备份配置文件

    cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
    cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
  3. 修改配置文件: 编辑/etc/grub.d/00_header文件,添加以下内容:

    cat << EOF
    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.<加密字符串>
    EOF
  4. 生成新的GRUB配置文件

    grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统进入GRUB菜单时,按e键需要输入账号和密码才能修改引导参数。

6.3终端登录安全控制

为了增强终端登录的安全性,限制root只在安全终端登录,并且在需要时禁止普通用户登录。

6.3.1限制root只在安全终端登录:

编辑/etc/securetty文件,注释掉不需要的终端,例如:

#tty4

禁止普通用户登录:

当服务器进行备份或调试时,可以暂时禁止普通用户登录:

touch /etc/nologin

删除/etc/nologin文件或重启主机后恢复正常。

使用last命令显示用户或终端登录情况:

last

6.4系统弱口令检测

检测系统中的弱口令可以有效提高安全性。使用John the Ripper工具进行弱口令检测。

6.4.1安装和使用John the Ripper:

  1. 下载和解包

    tar zxvf john-1.8.0.tar.gz -C /opt/
  2. 安装编译环境

    yum install gcc gcc-c++ -y
    cd /opt/john-1.8.0/src
    make clean linux-x86-64
  3. 添加测试用户并准备文件

    useradd zhangsan
    passwd zhangsan
    cp /etc/shadow /root/shadow.txt
  4. 运行John the Ripper

    cd /opt/john-1.8.0/run
    ./john /root/shadow.txt
    ./john --show /root/shadow.txt
  5. 使用字典文件检测弱口令

    ./john --wordlist=./password.lst /root/shadow.txt

通过上述步骤,可以有效检测并处理系统中的弱口令,提升系统安全性。

6.5总结

        确保服务器的开关机安全涉及多个方面,包括物理环境安全防护、限制GRUB引导参数、更改终端登录安全控制、以及系统弱口令检测。通过实施这些措施,可以大大减少服务器被非授权用户介入的风险,提升服务器的整体安全性。

七、使用Nmap进行网络端口扫描与安全管理

        网络端口扫描是网络安全评估的重要步骤。通过Nmap,可以检测网络中开放的端口和服务,从而识别潜在的安全风险。本文将详细介绍Nmap的使用方法及相关的网络安全管理措施,适合初学者。

7.1 网络协议基础

在开始使用Nmap之前,了解一些基本的网络协议是非常重要的:

  • SYN (synchronous 建立联机)

  • ACK (acknowledgement 确认)

  • PSH (push 传送)

  • FIN (finish 结束)

  • RST (reset 重置)

  • URG (urgent 紧急)

        每个TCP包都包含顺序号码(Sequence number)和确认号码(Acknowledge number),这些字段用于确保数据的有序传输和确认。

7.2 安装Nmap

首先,确保Nmap已安装在你的系统中:

rpm -qa | grep nmap
yum install -y nmap

7.3.基本Nmap扫描类型

Nmap支持多种扫描类型,每种类型适用于不同的检测需求:

  • -sS,TCP SYN 扫描(半开扫描):发送SYN数据包,如果收到SYN/ACK响应包,就认为端口开放。

    nmap -sS <target>
  • -sT,TCP 连接扫描:建立完整的TCP连接,确认端口是否开放。

    nmap -sT <target>
  • -sF,TCP FIN 扫描:发送FIN数据包,开放的端口会忽略,关闭的端口会回应RST数据包。

    nmap -sF <target>
  • -sU,UDP 扫描:探测目标主机提供的UDP服务。

    nmap -sU <target>
  • -sP,ICMP 扫描:类似于ping检测,快速判断目标主机是否存活。

    nmap -sP <target>
  • -P0,跳过ping检测:直接扫描目标主机,适用于对方不响应ICMP请求的情况。

    nmap -P0 <target>

7.4实例演示

下面是一些具体的Nmap使用实例:

  • 扫描本地主机的常用TCP端口:

    nmap -sT 127.0.0.1
  • 扫描本地主机的常用UDP端口:

    nmap -sU 127.0.0.1
  • 使用ICMP扫描判断主机是否存活:

    nmap -sP 127.0.0.1
  • 跳过ping检测,扫描一个网段:

    nmap -P0 192.168.10.0/24
  • 扫描特定端口(如文件共享服务端口):

    nmap -p 139,445 192.168.4.100-200

7.5禁用与启用Ping

临时禁用Ping:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

启用Ping:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

永久禁用Ping: 编辑/etc/sysctl.conf文件,添加或修改以下行:

net.ipv4.icmp_echo_ignore_all = 1

刷新配置:

sysctl -p

7.6 PAM模块防止暴力破解

通过PAM模块,可以防止暴力破解登录: 编辑/etc/pam.d/sshd,在第一行下面添加:

auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

参数说明:

  • deny:指定最大认证错误次数。

  • unlock_time:锁定多长时间(秒)。

  • even_deny_root:锁定root用户。

  • root_unlock_time:root用户锁定时间。

手动解除锁定: 查看某用户错误登录次数:

pam_tally2 --user <username>

清空某用户错误登录次数:

pam_tally2 --user <username> --reset

7.7 使用netstat查看网络状态

netstat命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息:

netstat -natp   # 查看正在运行的使用TCP协议的网络状态信息
netstat -naup   # 查看正在运行的使用UDP协议的网络状态信息

常用参数:

  • -n:以数字形式显示主机地址和端口。

  • -r:显示路由表信息。

  • -a:显示所有活动的网络连接信息。

  • -l:显示处于监听状态的网络连接及端口信息。

  • -t:查看TCP相关信息。

  • -u:查看UDP相关信息。

  • -p:显示与网络连接相关联的进程信息(需要root权限)。

7.8总结

        通过使用Nmap和其他工具,可以有效地检测和管理网络端口,确保网络安全。同时,结合PAM模块和netstat命令,可以进一步加强系统的安全性。希望这篇博客能帮助初学者快速掌握这些基本的网络安全技能。

 

 

相关文章:

应用及安全

目录 一、PAM 安全认证及配置 1.1配置 su 命令的认证 1.2PAM 配置文件结构二、账号和密码安全管理 2.1账号管理 2.2系统账号清理 2.3密码安全控制 2.4密码重设示例 2.5参考命令三、命令历史限制 3.1设置命令历史记录…...

字节流和字符流的相关知识

目录 1. Writer1.1 写两行数据1.2 换一种方式1.3 追加数据1.4 写很多数据&#xff0c;记得要清一下缓存1.5 用数组、字符串写入 2. Reader2.1 读个文件2.2 读取字符2.3 读取数据到数组2.4 复制文件 3. InputStream4. OutputStream5. 参考链接 1. Writer Writer类是Java.io包中…...

LLM意图识别器实践

利用 Ollama 和 LangChain 强化条件判断语句的智能提示分类 ❝ 本文译自Supercharging If-Statements With Prompt Classification Using Ollama and LangChain一文&#xff0c;以Lumos工具为例&#xff0c;讲解了博主在工程实践中&#xff0c;如何基于LangChain框架和本地LLM优…...

常见的反爬手段和解决思路(爬虫与反爬虫)

常见的反爬手段和解决思路&#xff08;爬虫与反爬虫&#xff09; 学习目标1 服务器反爬的原因2 服务器长反什么样的爬虫&#xff08;1&#xff09;十分低级的应届毕业生&#xff08;2&#xff09;十分低级的创业小公司&#xff08;3&#xff09;不小心写错了没人去停止的失控小…...

Stable Diffusion【真人模型】:人像光影摄影极限写实真实感大模型

大家好&#xff0c;我是极客菌 今天和大家分享一个基于SD1.5的真人大模型&#xff1a;人像光影摄影极限写实真实感大模型。 该模型具有以下特点&#xff1a; 真实肤感&#xff08;在面部肌理和皮肤肌理上均有加强学习&#xff0c;拒绝ai出图假的问题&#xff09; 永不脱妆&a…...

java实现图片添加水印

文章目录 前言一、工具类WatermarkUtil二、工具类介绍2.1 图片来源类型2.2 水印类型2.3 读取本地图片2.4 读取网络图片2.5 水印处理2.6 添加水印 三、测试添加水印总结 前言 给图片添加水印是一个很常见的需求&#xff0c;一般是用来防盗用。比如我们csdn上面写的文章中&#…...

CSS规则——font-face

font-face 什么是font-face&#xff1f; 想要让网页文字千变万化&#xff0c;仅靠font-family还不够&#xff0c;还要借助font-face&#xff08;是一个 CSS 规则&#xff0c;它允许你在网页上使用自定义字体&#xff0c;而不仅仅是用户系统中预装的字体。这意味着你可以通过提…...

【单片机毕业设计选题24034】-基于STM32的手机智能充电系统

系统功能: 系统可以设置充电时长&#xff0c;启动充电后按设置的充电时长充电&#xff0c;充电时间到后自动 停止充电&#xff0c;中途检测到温度过高也会结束充电并开启风扇和蜂鸣器报警。 系统上电后&#xff0c;OLED显示“欢迎使用智能充电系统请稍后”&#xff0c;两秒钟…...

[C++][数据结构][图][中][图的遍历][最小生成树]详细讲解

目录 1.图的遍历1.广度优先遍历2.深度优先遍历 2.最小生成树1.Kruskal算法2.Prim算法 1.图的遍历 给定一个图G和其中任意一个顶点 v 0 v_0 v0​&#xff0c;从 v 0 v_0 v0​出发&#xff0c;沿着图中各边访问图中的所有顶点&#xff0c;且每个顶 点仅被遍历一次 “遍历”&…...

退市新规解读—财务类强制退市

一、退市风险警示&#xff1a;第一年触及相关指标 上市公司最近一个会计年度触及下列退市风险指标之一&#xff0c;公司股票或存托凭证被实施退市风险警示(*ST)&#xff1a; 第1项 组合类财务指标 仅发行A股或B股&#xff0c;最近一个会计年度或追溯重述后最近一个会计年度 …...

小程序的生命周期使用方法和应用场景

小程序生命周期 初始化&#xff08;App Launch&#xff09; • 触发时机&#xff1a;小程序首次启动时。 • 主要事件&#xff1a;onLaunch。 • 功能与适用场景&#xff1a; • 全局数据初始化&#xff1a;设置应用的全局状态和变量。 • 登录状态检查&#xff1a;判断用户是…...

什么是C++模块化系统?C++20的模块化系统。

C20引入的模块化系统是一种新的代码组织和编译机制&#xff0c;它旨在替代传统的头文件机制&#xff0c;提供更好的代码组织、更快的编译速度和更强的封装性。模块化系统的主要目标包括&#xff1a; 减少编译时间&#xff1a;通过减少冗余的头文件解析和宏定义传播&#xff0c…...

智慧校园-档案管理系统总体概述

智慧校园档案管理系统&#xff0c;作为教育信息化进程中的重要一环&#xff0c;它运用现代信息技术的力量&#xff0c;彻底改变了传统档案管理的面貌&#xff0c;为学校档案资源的收集、整理、存储、检索与利用开辟了全新的途径。这一系统全面覆盖学生、教职工、教学科研及行政…...

文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题

三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作)&#xff0c;当仅使用按秩合并时&#xff0c;需要 Ω(mlgn) 的时间。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在并查集&#xff08;Union-Find&#xff09;数…...

逻辑回归梯度推导

逻辑回归是一种广泛使用的分类算法&#xff0c;用于估计一个事件发生的概率。它是线性回归的扩展&#xff0c;通过sigmoid函数将线性回归的输出映射到[0, 1]区间&#xff0c;从而用于分类任务。 在逻辑回归中&#xff0c;我们使用对数似然损失函数&#xff08;log-likelihood l…...

Python 使用函数输出一个整数的逆序数

在Python中&#xff0c;你可以定义一个函数来输出一个整数的逆序数。这里有一个简单的实现方法&#xff1a; def reverse_integer(x):# 检查输入是否为整数if not isinstance(x, int):raise ValueError("Input must be an integer")# 将整数转换为字符串&#xff0c…...

【Linux】Wmware Esxi磁盘扩容

目录 一、概述 1.1 磁盘分区概念 1.2 LVM概念 二、扩容步骤 二、报错 一、概述 1.1 磁盘分区概念 在 Linux 中&#xff0c;每一个硬件设备都映射到一个系统的文件&#xff0c;对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文…...

树莓派4B_OpenCv学习笔记15:OpenCv定位物体实时坐标

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日学习 OpenCv定位物体实时位置&#xff0c;代码来源是…...

MySQL之如何定位慢查询

1、如何定位慢查询 1.1、使用开源工具 调试工具&#xff1a;Arthas 运维工具&#xff1a;Promethuss、Skywalking 1.2、MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数&#xff08;long_query_time&#xff0c;单位&#xff1a;秒&#xff0c;默认10秒&#x…...

Open3D 删除点云中重复的点

目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份   构造重叠区域   合并点云获得重叠点 2、主要…...

填报志愿选专业是兴趣重要还是前景重要?

进行专业评估&#xff0c;找到一个适合自己的专业是一件非常困难的事情。在进行专业选择时&#xff0c;身上理想化色彩非常严重的人&#xff0c;会全然不顾及他人的劝阻&#xff0c;义无反顾的以兴趣为主&#xff0c;选择自己热爱的专业。一些较多考虑他人建议&#xff0c;能听…...

python开发基础——day9 函数基础与函数参数

一、初识函数(function) 编程函数!数学函数&#xff0c;里面的是逻辑&#xff0c;功能&#xff0c;而不是套公式 编程函数的作用实现特定操作的一段代码 你现在请客&#xff0c;每个人都点同样的一份吃的&#xff0c;请100个人 1.薯条 2.上校鸡块 3.可乐 那…...

STM32——使用TIM输出比较产生PWM波形控制舵机转角

一、输出比较简介&#xff1a; 只有高级定时器和通用寄存器才有输入捕获/输出比较电路&#xff0c;他们有四个CCR&#xff08;捕获/比较寄存器&#xff09;&#xff0c;共用一个CNT&#xff08;计数器&#xff09;&#xff0c;而输出比较功能是用来输出PWM波形的。 红圈部分…...

第十五章 集合(set)(Python)

文章目录 前言一、集合 前言 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 一、集合 set {1, 2, 3, 4}...

面试-javaIO机制

1.BIO BIO&#xff1a;是传统的javaIO以及部分java.net下部分接口和类。例如&#xff0c;socket,http等&#xff0c;因为网络通信同样是IO行为。传统IO基于字节流和字符流进行操作。提供了我们最熟悉的IO功能&#xff0c;譬如基于字节流的InputStream 和OutputStream.基于字符流…...

在.NET Core中,config和ConfigureServices的区别和作用

在.NET Core中&#xff0c;config和ConfigureServices是两个不同的概念&#xff0c;它们在应用程序的启动和配置过程中扮演着不同的角色。 ConfigureServices&#xff1a;这是ASP.NET Core应用程序中的一个方法&#xff0c;位于Startup类的内部。它的作用是配置依赖注入(DI)容器…...

App Inventor 2 如何实现多个定时功能?

1、可以使用多个“计时器”组件。 2、也可以用一个计时器&#xff0c;定时一分钟。也就是一分钟就会触发一次事件执行&#xff0c;定义一个全局数字变量&#xff0c;在事件中递增&#xff0c;用逻辑判断这个变量的值即可完成多个想要定时的任务(о∀о) 代码块请参考&#xf…...

技术驱动的音乐变革:AI带来的产业重塑

&#x1f4d1;引言 近一个月来&#xff0c;随着几款音乐大模型的轮番上线&#xff0c;AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点&#xff0c;还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视&#xff0…...

重生之我要学后端0--HTTP协议和RESTful APIs

http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP&#xff08;超文本传输协议&#xff09;是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下&#xff1a; 客户端请求&#xff08;Request&#xf…...

深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络

文章目录 一、前言二、卷积操作2.1 填充&#xff08;padding&#xff09;2.2 步长2.3 输出特征图尺寸计算2.4 多通道卷积 三、池化操作四、Lenet-5及CNN结构进化史4.1 Lenet-5 一、前言 卷积神经网络–AlexNet(最牛)-2012 Lenet-5-大规模商用&#xff08;1989&#xff09; 二、…...

AI Infra简单记录

向量数据库的作用 1. 在AI大模型训练过程中&#xff0c;向量数据库可以有效提升数据检索、特征提取等任务的效率。 2、在AI大模型推理过程中&#xff0c;向量数据库为大模型提供外挂知识库&#xff0c;提升模型时效性与准确性&#xff0c;提供缓存能力&#xff0c;减少调用开…...

三英战吕布 | 第5集 | 温酒斩华雄 | 竖子不足与谋 | 三国演义 | 逐鹿群雄

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第5️⃣集《三英战吕布》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台…...

【C语言】自定义类型:结构体

目录 1. 结构体类型的声明 1.1. 结构的一般声明 1.2. 结构的特殊声明 2. 结构体变量的创建和初始化 3. 结构体的自引用 4. 结构体内存对齐 4.1. 对其规则&#xff08;面试考点&#xff09; 4.2. 为什么存在内存对齐&#xff1f; 4.2.1. 平台原因&#xff08;移植…...

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法&#xff0c;它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…...

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为&#xff1a;在写某些代码的时候&#xff0c;仓库中有些文件夹&#xff0c;只提交了文件夹名称到…...

单例模式---线程安全实现

文章目录 1.单例模式的特点&#x1f60a;2.单例模式两种实现&#x1f923;&#x1f917;&#x1f60a;2.1 饿汉式2.2 懒汉式 3.传统单例模式的线程安全问题4.解决方法4.1静态局部变量4.2加锁4.3双重检查锁&#xff08;DCL&#xff09;4.4pthread_once 1.单例模式的特点&#x1…...

Agent技术在现代软件开发与应用中的探索

一、引言 随着计算机科学的快速发展&#xff0c;Agent技术作为人工智能和分布式计算领域的重要分支&#xff0c;已经渗透到软件开发的各个方面。Agent技术通过赋予软件实体自主性和交互性&#xff0c;使得软件系统能够更加智能、灵活地响应环境变化和用户需求。本文将对Agent技…...

c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功

关键字extern的作用 这个很常见的都知道是定义一个外部变量或函数&#xff0c;但并不是简单的建立两个文件&#xff0c;然后在用extern 定义在另一个非最初定义变量的文件里 区分文件和编译运行的文件 例如&#xff0c;一个文件夹里有文件a.c和文件b.c,在sublime text中直接…...

时序数据中的孤立野点、异常值识别及处理方法

目录 参考资料 对时序数据做差分&#xff1b; 参考资料 [1] 离群点&#xff08;孤立点、异常值&#xff09;检测方法 2017.6&#xff1b;...

JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇

JetBrains PyCharm 2024是一款功能强大的Python集成开发环境(IDE)&#xff0c;专为提升开发者的编程效率和体验而设计。这款IDE不仅继承了前代版本的优秀特性&#xff0c;还在多个方面进行了创新和改进&#xff0c;为Python开发者带来了全新的工作体验。 JetBrains PyCharm 20…...

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式

电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相&#xff08;通常为三相&#xff09;交流电以驱动牵引电机&#xff0c;并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构&#xff0c;这有望实现&#xff1a; 快速充电 – 在相同…...

《逆向投资 邓普顿的长赢投资法》

接下来跟大家一起学习《逆向投资 邓普顿的长赢投资法》。邓普顿被誉为20世纪最伟大的选股人之一&#xff0c;我非常确信林奇在他的《战胜华尔街》里也提到了邓普顿&#xff0c;可惜实在想不起来林奇是怎么形容邓普顿的。 邓普顿拥有70多年的投资生涯&#xff0c;在他晚年时曾总…...

C++中main函数的参数、返回值分别什么意思?main函数返回值跟普通函数返回值一样吗?

在C中&#xff0c;main函数是程序的入口点&#xff0c;即程序开始执行的地方。main函数可以有两种形式的签名&#xff08;signature&#xff09;&#xff1a; 标准的main函数&#xff0c;不接受任何参数&#xff0c;也不返回任何值&#xff1a; int main() {// 代码... }带有参…...

Java程序员学习Go开发Higress的WASM插件

Java程序员学习Go开发Higress的WASM插件 契机 ⚙ 今年天池大赛有higress相关挑战&#xff0c;研究一下。之前没搞过go&#xff0c;踩了很多坑&#xff0c;最主要的就是tinygo打包&#xff0c;多方寻求解决无果&#xff0c;结论是tinygo0.32go1.19无法在macos arm架构下打包。…...

Python入门-基本数据类型-数字类型

数字类型是指表示数字或者数值的数据类型。在Python语言中&#xff0c;数字类型有整型(int)、 浮点型(float)、复数型(complex)&#xff0c;对应数学中的整数、小数和复数&#xff0c;此外还有一种特殊 的整型&#xff0c;即布尔型(bool)。本节将对这4种数字类型进行详细介绍。…...

小程序web-view无法打开该页面的解决方法

问题&#xff1a;开发者工具可以正常打开&#xff0c;正式上线版小程序使用 web-view 组件测试时提示&#xff1a;“无法打开该页面&#xff0c;不支持打开 https://xxxxxx&#xff0c;请在“小程序右上角更多->反馈与投诉”中和开发者反馈。” 解决方法&#xff1a;需要配…...

海外媒体发稿:媒体宣发套餐的作用分享-华媒舍

一、神奇媒体宣发套餐 神奇媒体宣发套餐是一项专业的多媒体宣传推广服务&#xff0c;旨在帮助企业、个人快速提升品牌知名度和曝光度。它通过全面覆盖主流媒体、社交网络以及各大网络平台&#xff0c;将您的宣传信息传递给广泛的受众群体&#xff0c;实现全方位、多角度的宣传…...

【R语言】plot输出窗口大小的控制

如果需要输出png格式的图片并设置dpi&#xff0c;可采用以下代码 png("A1.png",width 10.09, height 10.35, units "in",res 300) 为了匹配对应的窗口大小&#xff0c;在输出的时候保持宽度和高度一致即可&#xff0c;步骤如下&#xff1a; 如上的“10…...

【shell脚本实战案例】数据磁盘初始化

文章目录 一、案例应用场景二、案例需求三、案例算法四、代码实现五、实现验证 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能与您在此邂逅&#xff0c;真是缘分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留…...

1.7 计算机体系结构分类

Flynn分类法 CISC与RISC...

Flask 数据创建时出错

当我们在使用 Flask 创建数据时遇到错误&#xff0c;可能有多种原因&#xff0c;包括代码错误、数据库配置问题或依赖项错误。具体情况我会总结成一篇文章记录下&#xff0c;主要是归类总结一些常见的解决方法和调试步骤&#xff0c;帮助大家解决问题&#xff1a; 1、问题背景 …...

02:vim的使用和权限管控

vim的使用 1、vim基础使用1.1、vim pathname 2、vim高级用法2.1、查找2.2、设置显示行号2.3、快速切换行2.4、 行删除2.5、行复制粘贴 3、权限管理3.1、普通用户和特权用户3.2、文件权限表示 vim是Linux中的一种编辑器&#xff0c;类似于window中的记事本&#xff0c;可以对创建…...

重生之我要学后端01--后端语言选择和对应框架选择

编程语言 后端开发通常需要掌握至少一种编程语言。以下几种语言在后端开发中非常流行&#xff1a; Java&#xff1a;广泛用于企业级应用程序。Python&#xff1a;因其易学性和强大的库支持&#xff08;如Django和Flask&#xff09;而受欢迎。Node.js&#xff08;JavaScript&a…...

GAMES104:04游戏引擎中的渲染系统1:游戏渲染基础-学习笔记

文章目录 概览&#xff1a;游戏引擎中的渲染系统四个课时概览 一&#xff0c;渲染管线流程二&#xff0c;了解GPUSIMD 和 SIMTGPU 架构CPU到GPU的数据传输GPU性能限制 三&#xff0c;可见性Renderable可渲染对象提高渲染效率Visibility Culling 可见性裁剪 四&#xff0c;纹理压…...

【C++】相机标定源码笔记- RGB 相机与 ToF 深度传感器校准类

类的设计目标是为了实现 RGB 相机与 ToF 深度传感器之间的高精度校准&#xff0c;从而使两种类型的数据能够在同一个坐标框架内被整合使用。这在很多场景下都是非常有用的&#xff0c;比如在3D重建、增强现实、机器人导航等应用中&#xff0c;能够提供更丰富的场景信息。 -----…...

Spring Boot整合RocketMQ实现延迟消息消费

导包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version></dependency>添加配置信息 application配置文件 # rocketMq地址 rocketmq.name…...

2种动力配置,标配48英寸大屏,全新雷克萨斯LM马来西亚上市

近日,从海外媒体报道获悉,雷克萨斯正式宣布在马来西亚市场上市全新雷克萨斯LM。据悉,新车推出LM350h 和LM500h两款车型,售价分别为1,228,000 马来西亚林吉特 与1,468,000 马来西亚林吉特 (折合人民币约226.80万元)。外观上,全新雷克萨斯LM依旧承袭雷克萨斯最新一代家族设计…...

再破记录!东风风神L7无补能2162.8公里往返穿越羌塘

想象一下驰骋在高速公路上,周围是辽阔的羌塘无人区,一望无际的荒野,野生动物自由穿梭,神秘而充满挑战。这条路就是传说中的216国道,无疑是最无人居住的地区道路。从新疆民丰到西藏改则,800公里无人区没有加油站,这是对车辆极限性能和团队冒险精神的双重考验!最近,在这…...

新款捷尼赛思G80内外升级,6月1日正式上市

最新消息,新款捷尼赛思G80将于6月1日开幕的大湾区车展正式上市。该车预售价已公布,豪华版与旗舰版车型分别定价为33.58万元和45.68万元。新款捷尼赛思G80在设计上进行了全面升级。其“勇者之徽”阔型格栅与“灵感之翼”LED大灯组相得益彰,不仅提供了更精密的光源控制,还展现…...

15.99万起奇瑞风云T9开启预售,这是不得不知道的几点

奇瑞风云T9正式开启了预售,此次公布的是120km长续航版的预售价格,预售区间为15.99-19.99万元。那么新车有哪些亮点呢?一起来看下。紧凑型SUV价格给你7座布局奇瑞风云T9官方给它的定位是紧凑型SUV,但它的车身尺寸其实并不小,车身尺寸为4795/1930/1738mm,轴距为2770mm。这个…...

2024 年 5 个 GO REST API 框架

什么是API&#xff1f; API是一个软件解决方案&#xff0c;作为中介&#xff0c;使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值&#xff1a; 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码&#xff1b;这些是为移动开…...

网络应用层之(1)DHCPv6协议

网络应用层之(1)DHCPv6协议 Author: Once Day Date: 2024年5月26日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-C…...