Linux基线检查与安全加固

2023-11-03

安全加固

Linux安全加固

账户管理

一、口令锁定策略
检查操作步骤

查看配置文件:

more /etc/pam.d/password-auth

查看是否存在如下内容:

auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600

(连续认证5次会锁定账户,锁定300秒,root的话,5次失败,锁定600秒)

基线符合性判定依据

用户连续认证失败次数设置为5次即合规,否则不合规。

安全加固方案

参考配置操作

1.执行备份

cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth_bak

2.修改策略设置,编辑文件

vim /etc/pam.d/password-auth

增加以下内容

auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600

注意:unlock_time和root_unlock_time单位为秒。
在这里插入图片描述
验证成功:
在这里插入图片描述

备注
	PAM通过提供一些动态链接库和一套统一的AP1,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

root下可查看因为验证登录失败的账户

pam_tally2 -u


如果需要解锁的话,需要以root输入

pam_tally2 -u baiyun -r
二、口令生存期
检查操作步骤

查看文件:

more /etc/login.defs

检查如下参数值是否满足要求

PASS_MAX_DAYS用户的密码最长使用天数不大于90

PASS_WARN_AGE #用户的密码到期提前提醒天数为7

基线符合性判定依据

PASS_MAX_DAYS不大于90

PASS_WARN_AGE等于7即合规,否则不合规

安全加固方案

参考配置操作

1.执行备份:

cp -p /etc/login.defs /etc/login.desfs_bak

2.修改策略设置,编辑/etc/login.defs在文件中加入如下内容(存在的话修改,不存在则添加):

PASS_MAX_DAYS 90

PASS_WARN_AGE 7
chage -M 90 -W 7 baiyun

//修改已有用户的口令生存期和过期告警天数

未加固前
在这里插入图片描述

加固后
在这里插入图片描述

三、口令复杂度
检查操作步骤

执行命令:

grep -E '^minlen|^minclass' /etc/security/pwquality.conf

查看是否有返回结果。

基线符合性判定依据

有返回结果且返回结果等于或者大于minlen = 8,minclass =3 即合规,
否则不合规。

安全加固方案

1.执行备份:

cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf_bak

2.执行命令:

authconfig --passminlen=8 --passminclass=3 --update

#至少包含数字、小写字母、大写字母、特殊字符中的三项,且密码长度>=8
3、执行命令

chage -d 0 username

#强制指定的用户下次登录修改密码
在这里插入图片描述

四、检查密码重用是否受限制
检查操作步骤

查看文件:

cat /etc/pam.d/system-auth

找到

password sufficient pam_unix.so 这行,检查未尾是否有 remember参数

基线符合性判定依据

有remember参数且参数的值大于等于5即合规,否则不合规。

安全加固方案

参考配置操作

1.执行备份:

cp -p /etc/pam.d/system-auth

2.执行命令:

vi /etc/pam.d/system-auth

编辑该文件,找到password sufficient pam_unix.so这行在末尾添加remember参数他的值为5,原来的内容不用更改,只在末尾加remember=5即可,他表示禁止使用最近用过的5个密码(已使用过的密码会被保存在 /etc/security/opasswd下面)

未加固前

加固后
在这里插入图片描述

五、检查是否存在除root之外UID为0的用户
检查操作步骤

执行命令:

awk -F: '($3 == 0){ print $1}' /etc/passwd

查看返回值。

基线符合性性判定依据

返回值包括“root”以外的条目,则低于安全要求

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/passwd cp -p /etc/shadow

2、执行命令:

userdel -r username

删除返回值中root除外的其他用户。

或者使用命令:

usermod -u uid username 

为他们分配新的UID

六、禁止存在空密码的帐户
检查操作步骤

执行以下命令查看系统中是否存在空口令账号#

awk -F: '( $2 ==""){ print $1} /etc/shadow
基线符合性性判定依据

执行命令后没有返回值即合规,否则不合规

安全加固方案

参考配置操作
1、为帐户设置满足密码复杂度的密码

#passwd username

服务管理

一、禁止SSH空密码用户登录
检查操作步骤

执行命令:

more /etc/ssh/sshd_config 

查看 PermitEmptyPasswords 配置情况

基线符合性性判定依据

PermitEmptyPasswords 的值设置为no即合规,否则不合规

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

2、执行命令:

vi /etc/ssh/sshd_config

找到 PermitEmptyPasswords 将其设置为no后保存并退出

3、执行命令:

systemctl restrat sshd

重启服务使配置生效

未配置前

这个虽然是no,但是被注释掉了,不生效

在这里插入图片描述
加固后

在这里插入图片描述

二、SSH多次登录失败后锁定用户
检查操作步骤

执行命令:

more /etc/pam.d/sshd

查看是否存在

 auth required pam_tally2.sodeny=5 unlock_time=300 
内容基线符合性性判定依据

存在该行且 deny小于等于5,unlock_time大于等于300,否则不合规

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/pam.d/sshd /etc/pam.d/sshd bak

2、执行命令:

vi /etc/pam.d/sshd 

在文件开头添加一行,内容为

 auth requiredpam_tally2.so deny=5 unlock time=300

如要对root用户也进行限制,在刚添加的内容后继续添加:

even deny_root=5 root_unlock time=1200

重启生效

systemctl restart sshd

未加固
在这里插入图片描述
加固后

三、限制root用户远程登录
检查操作步骤

执行命令:

more /etc/ssh/sshd_config 

查看PermitRootLogin 参数的值

基线符合性性判定依据

PermitRootLogin参数值为no且该行没有被注释即合规,否则不合规

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/ssh/sshd_config /etc/ssh

2、执行命令:

vi /etc/ssh/sshd_config 

找到 PermitRootLogin 将其后方的 yes改为 no 并删除前方的 # 取消该行的注释

3、释执行命令:

systemctl restart sshd

重启服务使其生效

未加固前

在这里插入图片描述

加固后

在这里插入图片描述

四、检查ssh使用的端口
检查操作步骤

执行命令:

more /etc/ssn/sshd_config

查看Port 参数的值

基线符合性性判定依据

Port参数值不是默认值 (22) 且该行没有被注即合规,否则不合规

安全加固方案

参考配置操作

1、执行命令:

vi /etc/ssh/sshd_config 

找到 Port 将其后方的 22 改为其他端口号,然后删除前方的 # 取消该行的注释 (端口号最好挑10000-65535之间的端口号,10000以下容易被系统或一些特殊软件占用)

2、执行命令:

semanage port -a -t ssh_port_t -p tcp 22233

修改后的端口号,将修改后的端口添加到SELinux开放给ssh使用的端口

3、执行命令:

firewall-cmd --zone=public --add-port=22233/tcp --permanent

防火墙放行刚修改的 ssh 端口号

4、执行命令:

systemctl restart sshd;systemctl restart firewalld

重启ssh和防火墙,使配置生效

未加固
在这里插入图片描述

加固后

在这里插入图片描述

五、设置登录超时自动注销
检查操作步骤

执行命令:

more /etc/profile 

查看是否有export TMOUT=180

基线符合性性判定依据

存在export TMOUT且他的值小于等于180即合规,否则不合规

安全加固方案

参考配置操作

1、执行备份 :

cp - p /etc/profile /etc/profile_bak

2、执行命令:

vi /etc/profile

在该文件末尾添加

export TMOUT=180

或者将原来的值修改为180

注意=号前后不要有空格。

权限管理

一、检查默认umask值

补充:

umask 027是一种文件权限掩码,它用于控制新创建的文件和目录的默认权限。umask 027指定了在创建文件和目录时,文件权限将减去2个位的可写权限和一个位的可执行权限。也就是说,如果创建一个新文件,权限将是所有者权限为rw-r-----(所有者可读可写,组可读,其他用户没有任何权限),如果创建一个新目录,权限将是所有者权限为rwxr-x---(所有者可读可写可执行,组可读可执行,其他用户没有任何权限)。
检查操作步骤

执行命令:

more /etc/profile 

查看该文件末尾是否设置umask值

基线符合性性判定依据

/etc/profile文件末尾存在umask 027,则合规,否则为不合规。

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/profile /etc/profile_bak

2、执行命令:

vi /etc/profile

编辑文件,在该文件末尾添加

umask 027

3、执行以下命令让配置生效:

source /etc/profile
二、检查重要目录和文件的权限
检查操作步骤

执行命令:

ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow
/etc/services /etc/ssh/sshd_config 

查看文件权限

基线符合性性判定依据

/etc/passwd文件的权限<=644

/etc/shadow文件的权限<=600

/etc/group文件的权限<=644

/etc/gshadow文件的权限<=600

/etc/hosts.deny文件的权限<=644

/etc/hosts.allow文件的权限<=644

/etc/services文件的权限<=644

/etc/ssh/sshd_config文件的权限<=600

以上条件同时满足则合规,否则不合规

安全加固方案

参考配置提作
1、执行命令:

ls -l /etc/passwd /etc/shadow /etc/group /etc/ashadow/etc/hosts.allow /etc/hostsallow /etc/services /etc/ssh/sshd_config

查看文件权限

2、对不符合要求的文件使用chmod命令修改权限,如

chmod 644 /etc/passwd
三、设置限制可以su为root的用户
检查操作步骤

执行命令:

more /etc/pam.d/su

找到

 auth required pam_wheel.souse_uid 

查看该行是否存在且是否被注释

基线符合性性判定依据
auth required pam_wheel.so use_uid 

存在且未被注释即合规,否则不合规

安全加固方案

参考配置操作

执行备份:

1、

cp - p /etc/pam.d/su /etc/pam.d/su_bak

2、执行命令:

vi /etc/pam.d/su

找到 auth required pam_wheel.souse_uid 删除该行前面的 # 使其生效,如果该行不存在则在文件末尾添加该行。

3、将需要su为root的用户使用命令:

usermod -G wheel username

加入 wheel 组,该用户即可su为root用户。如果需要将某个用户移出wheel组,可使用命令:

gpasswd -d username wheel

日志管理

一、检查rsyslog服务启用状况以及对登录事件的记录

补充:

rsyslog是一个开源的系统日志服务,可用于Linux和Unix系统中收集、存储和处理系统日志。rsyslog可以通过网络协议和文件系统接收来自各种设备和应用程序的日志信息,并将其输出到文件、数据库、远程日志服务器等不同的目标。
检查操作步骤

执行命令:

more /etc/rsyslog.conf

查看authpriv的值

基线符合性性判定依据

authpriv值为authpriv.* /var/log/secure即合规注:/var/log/secure为可变项
,否则不合规

安全加固方案

参考配置操作
1、执行备份:

cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak

2、执行命令:

systemctl enable rsyslog

添加开机自启动

3、执行命令:

systemctl start rsyslog

启动服务
4、执行命令:

vi/etc/rsyslog.conf

查看authpriv值 将其设置为 authpriv.*/var/log/secure#将authpirv 的任何级别的信息记录到/var/log/secure 文件中

5、执行命令:

systemctl restart rsyslog
二、检查是否启用记录定时任务行为日志功能
检查操作步骤

执行命令:

more /etc/rsyslog.conf 

查看 cron 的值

基线符合性判定依据

corn值为cron.* 即合规,否则不合规注: var/log/cron为可变项

安全加固方案

参考配置操作

1、执行备份:

cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak

2、执行命令 :

vi /etc/rsyslog.conf

查看 cron 的值,将其设置为cron.* /var/log/cron# 即将 cron 的任何级别的信息记录到 /ar/log/cron 文件中

3、执行命令:

systemctl restart rsyslog 

重启 rsyslog 使配置生效

合规
在这里插入图片描述

三、查看SSH LogLevel设置是否为INFO

补充:

SSH LogLevel设置为INFO是用来指定在SSH连接建立并进行时记录的信息级别的。INFO级别记录大量有关连接的详细信息,包括身份验证,所使用的密钥,认证的结果等。这些信息对诊断问题和了解连接的详细情况非常有用,但可能会产生大量的日志。因此,在平时使用SSH时,通常将LogLevel设置为更低的级别(如ERROR或WARNING),以避免生成过多的日志,并且只在需要排除连接问题时将其调整为更高的级别。
检查操作步骤

执行命令:more vi /etc/ssh/sshd_config 找到 LogLevel 查看设置的级别是否为INFO

基线符合性性判定依据

LogLevel 的级别是INFO 且该行未被注释即合规,否则不合规

安全加固方案

参考配置操作

1、进行备份

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak(log)

2、执行命令:

vi /etc/ssh/sshd_config 

找到 LogLevel 将其设置为 INFO,如果该行被注释,i还应删掉该行前方的 #

3、执行命令:

systemctl restart sshd

重启ssh服务使其生效

四、是否将 /var/log/messages 文件设置为只可追加

补充:

`isattr`是一个Linux系统中的命令,用于检查指定文件或目录中是否包含扩展属性(extended attributes)。扩展属性是在Linux文件系统上添加的一种元数据形式,可以包含文件或目录的其他信息,例如访问控制列表和文件所有者。
检查操作步骤

执行命令:Isattr /var/log/messages 查看该文件属性第六位是否为a

基线符合性性判定依据

为a即合规,否则不合规

安全加固方案

参考配置操作

执行命令:

lsattr var/log/messages

查看该文件属性第六位是否为a不为a则执行命令:

chattr +a /var/log/messages

将该文件的属性修改为只可追加

未添加只可追加前
在这里插入图片描述
设置只可追加后
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux基线检查与安全加固 的相关文章

  • Xvfb 冻结初始化 GLX 扩展

    我正在尝试运行无头 Xvfb 服务器来捕获 Amazon EC2 micro 上的屏幕截图 但它在 GLX 上陷入了困境 我使用此脚本安装了 GLX Xvfb 和所有库 https gist github com joekiller 414
  • PIL 的 Image.show() 带来*两个*不同的查看器

    在 python shell 中处理图像时 我使用 image show 其中 image 是 Image 的实例 很久以前什么也没发生 但在定义了一个名为 xv 的 Mirage 符号链接后 我很高兴 最近几天 show 将显示 Imag
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu

随机推荐

  • Mockito when函数实现方式

    平时写单测时 对于一些有限制或因当前环境无法访问的接口时 需要用到Mock来为目标接口添加自定义的实现 使其表现出我们希望表现的逻辑 从而不影响单元测试的实现 Mockito是常用的一个类库 使用也比较简单 使用分为注解的方式和直接创建对象
  • docker安装笔记-windows

    docker安装笔记 windows 菜鸟教程 https www runoob com docker windows docker install html 旧版 WSL 的手动安装步骤 https docs microsoft com
  • 关于我不“小心点”开我爸浏览器搜索历史这件事

    今天早上为了给我的小可爱发信息 我拼尽了全身力气使劲刷微信聊天记录 结果把自己的手机电耗尽了 不点破我要用手机做啥 反正不小心背下了老爸的手机查资料 没想到他的浏览器记录还藏着这么多 宝贵 的信息 哈哈哈哈哈 都是些令人大开眼界的东西 我发
  • 【Visual Studio 2019】 实用调试技巧,学会了都说好

    文章目录 前言 一 bug是什么 二 调试是什么 三 调试的基本步骤 四 Debug和Release的介绍 五 windows环境调试介绍 1 调试环境的准备 2 常用快捷键 六 调试的时候查看程序当前信息 1 调试实例 七 如何写出好 易
  • STM32建立工程模板时出现错误:error: #67: expected a “}“

    在MDK5开发环境中使用到标准库建立工程时 常常会出现以下编辑错误error 67 expected a 更改方法 options gt c c gt Preprocessor Symbols gt Define 将STM32F10X MD
  • JAVA-jdk8的API文件下载

    API文件 1 在线API 2 离线API 1 在线API 在线中文API文档 https www matools com api java8 2 离线API API下载地址 https www oracle com java techno
  • windows 系统 cmake 编译 python 使用 boost 库的问题

    使用 cmake 编译跨平台的开源框架 遇到 cmake 编译出错 主要报错是 FindBoost cmake 通过各种输入日志 message 发现有几个地方需要注意 现记录下来 需要修改成自己的boost版本 set RDK BOOST
  • 华为OD机试真题 Java 实现【分界线】【2023Q1 100分】

    一 题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于是将报刊上的字剪切下来 剪拼成匿名信 现在有一名举报人 希望借鉴这种手段 使用英文报刊完成举报操作 但为了增加文章的混淆度 只需满足每个单词中字母数量
  • API 网关基础

    目录 一 网关概述 二 网关提供的功能 三 常见网关系统 3 1 Netflix Zuul 3 2 Spring Cloud Gateway 3 3 Kong 3 4 APISIX 3 5 Shenyu 一 网关概述 API网关是一个服务器
  • [微信官方文档] 小程序-错误码信息与解决方案表

    错误码信息与解决方案表 错误码是通过binderror回调获取到的错误信息 代码 异常情况 理由 解决方案 1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复 1001 参数错误 使用方法错误 可以前往
  • linux:docker /bin/bash作用

    参考 docker run it centos bin bash 后面的 bin bash的作用
  • 【整理一】

    1 说说你对react的理解 有哪些特性 React是一个前端js框架 React高效灵活 声明式设计 使用简单 组件式开发 提高代码的复用率 单向的数据绑定比双向的数据绑定更加安全 2 说说Real diff算法是怎么运作的 1 Diff
  • CrackQL:一款功能强大的图形化密码爆破和模糊测试工具

    关于CrackQL CrackQL是一款功能强大的图形化密码爆破和模糊测试工具 在该工具的帮助下 广大研究人员可以针对密码安全和应用程序安全进行渗透测试 除此之外 CrackQL同时也是一款通用的GraphQL渗透测试工具 它可以控制速率限
  • 积分图(三) - Boxfilter 的实现过程分析

    积分图 三 Boxfilter 的实现过程分析 Boxfilter 快速计算 它可以使复杂度为O MN 的求和 求方差等运算降低到O 1 或近似于O 1 的复杂度 它的缺点是不支持多尺度 Boxfilter 的原理有点类似 Integral
  • 大学应让我们相信各种可能性

    记得刚来学校的时候 导员们便告诉我们今年的学长学姐们找的工作工资有多高 他们保研保上了多么好的学校 有多少人竞赛怎么样怎么样 于是一开始 我们心中的价值取向便成了这些 而我们竟然还很激动 因为我们将来或许也能取得同样的工资 同样的成就 其实
  • python过期了怎么恢复_pycharm过期30天没法用了怎么办?

    用cleanmyMac查看 右键在finder中显示可以找到文件位置 image png Users xxx Library Saved Application State com jetbrains pycharm savedState
  • STL容器之deque

    文章目录 deque容器简介 deque的操作 deque容器简介 deque是 double ended queue 的缩写 和vector一样都是STL的容器 deque是双端数组 而vector是单端的 deque在接口上和vecto
  • TypeScript中的联合类型、类型别名、接口、类型断言

    一 联合类型 在TypeScript中 联合类型 Union Types 是指用 符号将多个类型组合成一个的类型 这种类型可以包含不同的类型 例如字符串 数字或对象 这些不同类型的值可以赋值给联合类型的变量 而在使用这个变量时 需要对不同类
  • Crazy Search 【POJ - 1200】【哈希】

    题目链接 题意 给定一个字符串 其中含有不同的字母数量为m 现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 举个例子 n 3 m 4 字符串 daababac 长度为3的不同的子串分别是 daa aab aba bab bac
  • Linux基线检查与安全加固

    安全加固 Linux安全加固 账户管理 一 口令锁定策略 检查操作步骤 查看配置文件 more etc pam d password auth 查看是否存在如下内容 auth required pam tally2 so deny 5 on