Howie's Notes

Machine Learning and Cyber Security

在一般意义上而言,本文 编译与构建 的内容适用于 编译型语言

编译

编译(compile),一般而言是将源代码转换成汇编代码,用以实现这种过程的工具称为编译器(compiler)。但要注意,编译器在同一时刻只能转换一个编译单元,所谓编译单元是指单个的源文件。

编译器一般由相应的编程语言提供。

构建

程序通常由多个编译单元组成,倘若逐个的去编译,这多少显得有点琐碎,因此我们需要一个自动化工具用来从源代码生成用户可以使用的目标文件,而这个工具就是构建系统(build system),构建系统所作的就是构建(build),构建的过程中肯定会调用到编译。从这个意义上来说,构建的范围比编译更广。

现在的很多构建系统也包含了包管理器(package manager)的功能,用以解决项目依赖的问题。

Read more »

帐户与口令

此方面的加固主要为了防止针对帐户的暴力破解。

禁用或删除无用帐户:
使用命令userdel <用户名>删除不必要的帐户,使用参数-r即可删除相应用户的家目录和邮箱目录。
使用命令passwd -l <用户名>锁定不必要的帐户,解锁可使用passwd -u <用户名>

检查特殊帐户:
使用命令awk -F: '($2=="")' /etc/shadow查看空口令帐户,若存在,则使用命令passwd <用户名>为空口令帐户设定密码。
使用命令awk -F: '($3==0)' /etc/passwd查看uid为0的帐户,确认uid为0的帐户只有root帐户。

添加口令策略:
使用命令change -m 0 -M 30 -E 2020-01-01 -W 7 <用户名>修改帐户口令策略,-m表示密码最小使用天数,-M表示密码最大使用天数,-E表示密码到期时间,-W表示密码到期前多少天提醒。或者可以直接编辑/etc/login.defs文件进行修改。

Read more »

基本配置

下面这几项应为每一个使用 Windows 的用户的最最基本安全配置:

  1. 开启 Windows 防火墙
  2. 设置用户帐户控制(UAC)为合适级别
  3. 保持 Windows 更新
Read more »

TCP 全称 Transmission Control Protocol,即传输控制协议,它为调用它的应用程序提供了一种可靠的、面向连接(connection-oriented)的服务。

TCP 连接提供的是全双工服务(full-duplex service),TCP 连接也总是点对点(point-to-point)的。

相比 UDP,TCP 主要多了 2 种服务:可靠数据传输(reliable data transfer)和拥塞控制(congestion control)。

Read more »

HTTPS 确保了客户和服务器之间通信的安全性,具体来说,这种安全性主要包括机密性、完整性和端点鉴别。

信息安全三要素

信息安全三要素即机密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简称 CIA

  • 机密性:仅有发送方和希望的接收方能够理解传输报文的内容。因为窃听者可以截获报文,这必须要求报文在一定程度上进行 加密(encrypted),使截取的报文无法被截获者所理解。机密性的这个方面大概就是通常意义上对于术语 信息安全 的理解。
  • 完整性:或称 报文完整性报文鉴别,即通信双方希望确保其通信的内容在传输过程中未被改变 —— 或者恶意篡改或者意外改动。我们在可靠数据传输和数据链路协议中遇到的 检验和 技术在扩展后能够用于提供这种报文完整性。
  • 可用性:指保证信息确实能为授权使用者所用,即保证合法用户在需要时可以使用所需信息。

除了 CIA 之外,还有一点需要注意,即端点鉴别(end-point authentication),这是指发送方和接收方都应该能证实通信过程所涉及的另一方,以确信通信的另一方确实具有其所声称的身份。

Read more »

HTTP,全称 Hypertext Transfer Protocol,即超文本传输协议。HTTP 定义了 Web 客户向 Web 服务请求 Web 页面的方式,以及服务器向客户传送 Web 页面的方式。HTTP 使用 TCP 作为它的支撑运输协议。

术语

在详细解释 HTTP 之前,应当回顾某些 Web 术语。

Web 页面(Web page)(也叫文档)是由对象组成的。一个对象(object)只是一个文件,诸如一个 HTML 文件、一个 JPEG 图形、一个 Java 小程序或一个视频片段这样的文件,且它们可通过一个 URL 地址寻址。多数 Web 页面含有一个 HTML 基本文件(base HTML file)以及几个引用对象。HTML 基本文件通过对象的 URL 地址引用页面中的其他对象。每个 URL 地址由两部分组成:存放对象的服务器主机名和对象的路径名。

因为 Web 浏览器(Web browser)(例如 Chrome 和 Firefox)实现了 HTTP 的客户端,所以在 Web 环境中我们经常交替使用“浏览器”和“客户”这两个术语。Web 服务器(Web server)实现了 HTTP 的服务器端,它用于存储 Web 对象,每个对象由 URL 寻址。流行的 Web 服务器有 Apache 和 Nginx。

Read more »

环境变量

环境变量,顾名思义由环境变量两部分组成,本质上就是一些变量,每个进程都有一个自己的运行环境,而在这些环境中又有一些定义的变量,Shell 也是如此,同样的,通过 Shell 所运行的命令,相当于从父进程创建了一个子进程,它们共享同样的环境变量。

在 Linux 中,环境变量可以大致分为 Shell 环境变量用户环境变量两大类,不同的 Shell 有不同的 Shell 环境变量,例如 bash 与 Zsh 的 Shell 环境变量就不相同,而用户环境变量通常是由用户自定义的,Shell 环境变量包含了用户环境变量。

在 Linux 中可以使用 declare 命令直接定义 Shell 环境变量,如:

1
2
3
# 定义Shell环境变量A,值为hello,注意等号两边不能有空格
# 按照传统,环境变量一般为全大写
declare A=hello

同样的,在 Linux 中使用 echo 命令即可打印环境变量的值,如:

1
2
3
# 打印A的值,环境变量前需加“$”符号,
# 表示要打印的是环境变量而不是一般字符串
echo $A

值得注意的是,这种定义只对当前终端有效,关闭终端后失效。

常见的 Shell 环境变量有:

  • COLUMNS:当前终端的宽度
  • LINES:当前终端的高度

常见的用户环境变量有:

  • PATH:用以指定命令的搜索目录
  • HOME:用以指定用户的家目录
  • SHELL:用以指定用户的登录 Shell
  • HTTP_PROXY:用以指定终端的 HTTP 代理信息,与下一个变量要同时设置
  • HTTPS_PROXY:用以指定终端的 HTTPS 代理信息
Read more »
0%