【专题】Linux 安全相关

2010-03-27 topic linux security

介绍 Linux 中与安全相关的内容,例如 SSH、SELinux 等,当然,也包括了一些安全相关基本的概念,例如加密算法、TLS 等等,这里作为一个专题介绍一些常见概念。

Linux Security Logo

Linux

这里介绍 Linux 相关的安全操作。

  • PAM 将鉴权、授权、密码管理等功能抽象成一个框架,方便用户使用。
  • SELinux 同样是 Linux 中的一种强制存取控制的实现。
  • Capabilities 在 Linux 2.2 之后引入,将 root 用户的权限细分为不同的领域,可以分别启用或禁用。
  • PGP 一个基于公钥加密体系的加密软件。
  • libgcrypt 非常成熟的加密算法库,简单介绍其使用方法。

其它

SSH

Linux Security Logo

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现,一种命令行的远程登录工具,使用加密的远程登录实现,可以有效保护登录及数据的安全,同时提供了安全的文件传输功能。

这里主要介绍 SSH 一些常见的操作。

  • 功能简介 简单介绍 OpenSSH 以及 SSH 相关的内容。
  • 密钥管理 服务端会保存自己的公私钥,客户端每次链接时会确认是否为上次记录主机。
  • 证书登录 相比常规的用户密码、公私钥方式来说,OpenSSH 的证书使用较少,这里单独介绍。
  • 端口转发 关于一些常见的端口转发的设置,如本地转发、远程转发、动态转发等。
  • 便捷登录 用来配置一些常见的设置,简化登陆方式,也包括 ssh-agent 基本使用。
  • 安全审计 详细介绍 SSH 相关的审计方式。
  • 协议详解 详细介绍一些与 SSH 协议相关的内容。
  • 常用技巧 包括环境变量配置、双因子验证、SCP 使用等。

代码示例

  • GoLang源码解析 官方提供了标准的 SSH 相关协议,支持服务端和客户端使用,这里介绍常用实现,以及部分源码解析。
  • Python 在 Python 中通过 Paramiko 三方包用来访问 SSH 服务是比较 Pythonic 的方案。

参考

协议

与 SSH 相关的底层协议。

  • RFC4251 Protocol Architecture
  • RFC4252 Authentication Protocol 授权方式,包括公钥、密码、主机用户等。
  • RFC4253 Transport Layer Protocol 通讯协议,需要经过协商、密钥交换等。
  • RFC4254 Connection Protocol 核心协议,包括 Session、Channel 。

TLS/SSL

Transport Layer Security, TLS 传输层安全是 Secure Sockets Layer, SSL 安全套接层的继任者,说白了,就是在 TCP 层上层增加了一层加密处理,来保证上层信息传输的安全,其中 HTTPS 是在 HTTP 基础上添加了 TLS 层。

如下是 TLS/SSL 的版本演化时间。

   SSL1.0     SSL2.0  SSL3.0  TLS1.0  TLS1.1  TLS1.2  TLS1.3
-----+-----------+------+-------+-------+-------+-------+----->
 unpublished   1995   1996    1999    2006    2008    2018

Transport Layer Security, TLS 前身是 Secure Sockets Layer, SSL,SSL 最初的几个版本 (SSL 1.0、SSL 2.0、SSL 3.0) 由网景公司开发,然后从 3.1 开始被 IETF 标准化并改名,然后有 TLS1.0、TLS1.1、TLS1.2 以及 TLS1.3 几个版本,其中 TLS1.3 经过了长时间的讨论,其改动较大。

其中 SSL1.0 从未公开过,而 SSL2.0 和 SSL3.0 都存在安全问题,不推荐使用,而最新的 TLSv1.3 版本详细可以参考 RFC8446

基本概念

PKI

公钥基础设施 (Public Key Infrastructure, PKI) 是网络安全建设的基础与核心,这里详细介绍其使用方法。

OpenSSL

TLS 协议的实现有多种,如 OpenSSL、GnuTLS、PolarSSL 等等,使用最为广泛的是 OpenSSL 。

  • 自签名证书 可以用来模拟 CA 颁发证书的过程,通常在公司内部使用。
  • 常用命令 一些命令使用方式,包括编译安装、证书、服务端、客户端等。
  • C 语言调用 主要介绍 C 语言中的 OpenSSL 库使用方式。

参考

其它

  • DVWA 基于 PHP+MySQL 编写的一套用于漏洞检测和教学的程序。

认证鉴权

基本是围绕认证、鉴权、凭证基本概念在讨论,也就是解决我是谁?我能干什么?依据是什么?

认证 (Authentication) 用做身份验证,验证你是谁,主要是登录;鉴权 (Authorization) 来判断某人是否具有某个权限,作为限制访问使用;使用认证、鉴权的基础是通过凭证 (Credentials) 标记访问者的身份、权利等,常见的如会话 ID、JWT Token、SSH 密钥等。

  • 权限管理 介绍与权限相关的基本概念,例如 RBAC、Token 等等。
  • 单点登录 允许在单次登陆之后可以访问其它相关网站。
  • Casbin 一个强大开源访问控制实现,支持 RBAC、ACL 等等。