从原理到实践:深入探索Linux安全机制(二)

前言

本文将从用户和权限管理、文件系统权限、SELinux、防火墙、加密和安全传输、漏洞管理和更新等几个Linux安全机制中的重要方面,深入探索其工作原理和使用方法。在当今数字化时代,网络安全问题备受关注,Linux作为广泛应用的操作系统之一,其安全性至关重要。无论你是Linux系统的初学者还是资深管理员,本文都将为你提供宝贵的经验和启发,帮助你在保护网络安全的道路上行稳致远。

Linux

Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。Linux操作系统则是由Linux内核与各种应用程序、工具和库组成的完整操作系统,在其众多的特性中,Linux以其稳定性和安全性而闻名,这首先得益于开源社区的广泛参与和持续改进,其次就是Linux优秀的安全机制,这些保证了其能够提供一个高度稳定和安全的运行环境,事实上在服务器领域、嵌入式系统、超级计算机等多个领域也得到了广泛应用,并拥有庞大的用户群体和开发者社区。

下面将通过两篇文章来,从用户和权限管理、文件系统权限、SELinux、防火墙、加密和安全传输、漏洞管理和更新等几个Linux安全机制中的重要方面,和大家分享一下其工作原理和使用方法:

从原理到实践:深入探索Linux安全机制(一)-CSDN博客

从原理到实践:深入探索Linux安全机制(二)-CSDN博客

防火墙

Linux 内置了防火墙软件,如 iptables 或更现代的 firewalld,用于限制网络流量并保护系统免受恶意访问。

在 CentOS 系统中,默认的防火墙软件是 firewalld。Firewalld 是一个动态的守护进程,用于管理系统的防火墙规则,提供了一种简单而灵活的方式来配置和管理防火墙设置。通过 firewalld,用户可以轻松地定义不同区域、服务和端口的访问规则,以保护系统免受网络攻击。在 CentOS 7 及更新的版本中,firewalld 取代了之前版本中使用的 iptables 作为默认的防火墙管理工具。

其工作原理可以简单概括一下:

  • 数据包过滤:防火墙通过检查进出网络的数据包,根据预定义的规则决定是否允许通过。这些规则通常基于源地址、目标地址、端口号等条件进行匹配。
  • 网络地址转换(Network Address Translation, NAT):防火墙可以执行 NAT,将内部网络的私有 IP 地址转换为公共 IP 地址,从而隐藏内部网络的实际结构,增加安全性。
  • 状态跟踪:防火墙能够跟踪网络连接的状态,识别哪些数据包是属于已建立的连接,以便有效地管理网络流量。
  • 应用层代理:有些防火墙还支持深度数据包检查,能够检查数据包中的应用层信息,如 HTTP 头部,以提供更精细的访问控制。
  • 日志记录:防火墙通常会记录被阻止的连接请求或其他安全事件,以便管理员进行审计和排查问题。

日常工作中如何来管理Linux中的防火墙呢?这里以firewalld举例:

1、启动/停止/重启/检查状态:

启动 firewalld 服务

复制代码
sudo systemctl start firewalld

停止 firewalld 服务

复制代码
sudo systemctl stop firewalld

重启 firewalld 服务

复制代码
sudo systemctl restart firewalld

检查 firewalld 服务状态

复制代码
sudo systemctl status firewalld

2、查询防火墙状态和规则:

检查防火墙状态

复制代码
sudo firewall-cmd --state

列出所有防火墙规则

复制代码
sudo firewall-cmd --list-all

列出已经开放的端口

复制代码
sudo firewall-cmd --list-ports

列出已经允许的服务

复制代码
sudo firewall-cmd --list-services

3、添加/删除/更新规则:

临时开放 8080 端口(仅在当前会话中有效)

复制代码
sudo firewall-cmd --add-port=8080/tcp

永久开放 8080 端口

复制代码
sudo firewall-cmd --permanent --add-port=8080/tcp

删除对 8080 端口的开放规则

复制代码
sudo firewall-cmd --remove-port=8080/tcp

重新加载防火墙规则,使修改生效

复制代码
sudo firewall-cmd --reload

4、管理服务:

临时允许 HTTP 服务(仅在当前会话中有效)

复制代码
sudo firewall-cmd --add-service=http

永久允许 HTTP 服务

复制代码
sudo firewall-cmd --permanent --add-service=http

移除对 HTTP 服务的允许规则

复制代码
sudo firewall-cmd --remove-service=http

重新加载防火墙规则,使修改生效

复制代码
sudo firewall-cmd --reload

5、区域管理:

获取活动区域列表

复制代码
sudo firewall-cmd --get-active-zones

将 eth0 接口设置为 public 区域

复制代码
sudo firewall-cmd --zone=public --change-interface=eth0

加密和安全传输

Linux 支持各种加密技术,如 SSL/TLS、SSH、GPG 等,用于加密通信和数据传输。通过使用加密协议和工具,可以保护敏感数据在传输过程中不被窃取或篡改。

1、SSL/TLS(Secure Sockets Layer/Transport Layer Security):

SSL 和 TLS 是用于在互联网上安全传输数据的加密协议。TLS 实际上是 SSL 的升级版本,目前更为广泛使用。

SSL/TLS 用于在客户端和服务器之间建立加密连接,确保数据在传输过程中得到保护,防止被窃听或篡改。常见用途包括通过 HTTPS 加密传输网页内容、保护电子邮件通信等。

这里以TLS为例,简单和大家分享一下TLS的工作原理是什么?

TLS的主要工作过程是两步(握手阶段和数据传输阶段):

  1. 握手阶段(Handshake):
    1. 客户端向服务器发送一个消息,其中包含支持的加密算法和其他相关信息。
    2. 服务器收到消息后,返回一个消息,确认协商的加密算法,并附带数字证书(Certificate)。
    3. 客户端接收服务器的证书后,验证其有效性(包括证书颁发机构等),然后生成一个随机数,使用服务器的公钥加密后发送给服务器。
    4. 服务器收到客户端加密的随机数后,使用自己的私钥解密,得到客户端生成的随机数,并生成会话密钥(Session Key)。
    5. 握手阶段完成后,双方都拥有了会话密钥,用于后续通信数据的加密和解密。
  2. 数据传输阶段(Data Transfer):
    1. 在握手阶段完成后,客户端和服务器利用协商好的会话密钥对通信数据进行加密和解密。
    2. 数据在传输过程中使用会话密钥进行对称加密,保证数据的机密性。
    3. TLS 还可以提供数据完整性校验和身份验证功能,确保通信双方的真实性和数据的完整性。

2、SSH(Secure Shell):

SSH 是一种用于在计算机网络中安全远程管理和数据交换的协议。它通过加密通道传输数据,防止敏感信息被第三方截取。SSH 可以用于远程登录到服务器、执行命令、传输文件等操作,提供了更安全的替代传统的 Telnet、FTP 等协议。

SSH工作过程可以简单概括如下几个阶段:

  1. 连接建立阶段:
    1. 客户端发起连接请求,服务器响应并开始协商连接参数。
    2. 通过交换支持的加密算法、身份验证方法等信息,双方协商确定安全连接所需的参数。
  2. 身份验证阶段:
    1. 客户端和服务器之间进行身份验证。常见的身份验证方式包括基于密码的身份验证、公钥身份验证等。
    2. 在公钥身份验证中,客户端将自己的公钥发送给服务器,服务器验证客户端的身份并返回一个随机数。
    3. 客户端使用自己的私钥对随机数进行签名后发送给服务器,服务器使用客户端的公钥验证签名,完成客户端身份的确认。
  3. 安全通道建立:
    1. 经过身份验证后,双方开始建立加密通道,用于安全地传输数据。
    2. 通过交换密钥、协商加密算法等,双方生成会话密钥,用于后续通信数据的加密和解密。
    3. 一旦安全通道建立完成,后续的通信数据都将经过加密保护,防止被第三方窃听或篡改。
  4. 数据传输阶段:
    1. 在安全通道建立后,客户端和服务器之间的数据传输将通过会话密钥进行加密和解密。
    2. SSH 还提供了数据完整性校验和压缩等功能,确保数据传输的安全和高效性。

3、GPG(GNU Privacy Guard):

GPG 是一种开源的加密软件,实现了 OpenPGP 标准,用于加密通信和数据。它提供了数字签名、加密和认证功能。GPG 可以用于加密和签名电子邮件、文件,确保数据的机密性和完整性,同时验证数据的来源。

GPG 的工作原理涉及使用非对称加密算法和公钥基础设施来实现加密和签名功能,主要涉及到以下几个关键步骤:

  1. 密钥生成:
    1. 用户使用 GPG 工具生成一对密钥:公钥和私钥。公钥可以自由传播给他人,而私钥则必须保密保存。
  2. 加密数据:
    1. 发送方使用接收方的公钥对要发送的数据进行加密。
    2. 加密后的数据只能使用接收方持有的私钥解密,确保数据在传输过程中的机密性。
  3. 数字签名:
    1. 发送方使用自己的私钥对数据进行签名,生成数字签名。
    2. 接收方使用发送方的公钥验证数字签名的真实性,确保数据的完整性和真实性。
  4. 公钥基础设施(Public Key Infrastructure, PKI):
    1. GPG 使用 PKI 来确保公钥的可信性和安全性。
    2. 用户可以通过信任链和数字证书等机制来验证其他用户的公钥是否可信。
  5. 密钥管理:
    1. GPG 提供了密钥管理功能,用户可以生成、导入、导出和撤销密钥。
    2. 用户可以设置信任级别,管理密钥环等操作来保证密钥的安全和有效性。

漏洞管理和更新

及时更新系统和软件包是保持系统安全的关键步骤。Linux 发行版提供定期的安全更新和漏洞修复,用户应该及时安装这些更新以避免已知漏洞的利用。这一块内容,是提高系统安全性的所有措施方法中最简单、直接、有效的措施,没有之一。

实在想不出,还有什么技巧能比及时发现自己的漏洞并修复,不给坏人以可乘之机,更有用了。如果有,评论区起来讨论。

写在最后

非常感谢你能耐心看完我的这篇文章,希望我的分享对你有所帮助。当然,如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,也方便日后再次查阅。

相关推荐
小狗爱吃黄桃罐头8 分钟前
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介
linux·arm开发·学习
ricky_fan25 分钟前
window下配置ssh免密登录服务器
运维·服务器·ssh
地衣君1 小时前
Ubuntu 配置使用 zsh + 插件配置 + oh-my-zsh 美化过程
linux·运维·ubuntu
2401_858286111 小时前
OS11.【Linux】vim文本编辑器
linux·运维·服务器·编辑器·vim
朱包林1 小时前
day27-shell编程(自动化)
linux·运维·服务器·网络·shell脚本
钢铁男儿1 小时前
一文掌握 Tombola 抽象基类的自动化子类测试策略
运维·自动化
kaede1 小时前
Linux实现线程同步的方式有哪些?
linux·运维·云计算
德先生&赛先生1 小时前
Linux编程:2、进程基础知识
linux
痴人说梦梦中人1 小时前
SwaggerFuzzer:一款自动化 OpenAPI/Swagger 接口未授权访问测试工具
网络安全·渗透测试·自动化·api测试·漏洞利用·信息搜集
子正2 小时前
一键编译包含多个独立模块和应用的工程(linux cmake)
linux·运维·cmake