6. 深入Linux安全世界:构建坚不可摧的系统屏障

本章目录

    • 前言
    • 6.1 理解Linux安全模型
      • 深入了解文件权限
        • 权限位详解:
        • 修改文件权限:
      • 绘制示例图:文件权限的结构
    • 6.2 用户账户的安全设置
      • 查看系统中的用户
        • 示例解释:
      • 管理用户的安全策略
    • 6.3 防火墙与网络安全性
      • 常用iptables规则
        • 1. **只允许特定IP访问SSH服务**
        • 2. 限制连接速率
      • 简单网络流量防火墙结构示意图:
    • 6.4 数据加密技术
      • 使用GPG进行文件加密
        • 1. 生成密钥对
        • 2. 加密文件
        • 3. 解密文件
      • 数据加密的流程示意图:
    • 6.5 SELinux和AppArmor入门
      • 常见SELinux命令
        • 1. 查看SELinux的状态
        • 2. 切换SELinux模式
      • AppArmor:轻量级的程序防护
    • 6.6 安全日志分析与入侵检测
      • **使用fail2ban防止暴力破解**
        • 1. 安装fail2ban
        • 2. 配置监控SSH服务
    • 结语


前言

在现代网络世界,系统安全已经成为不可忽视的议题,尤其是Linux系统以其强大的定制能力和广泛应用场景,被企业广泛采用。然而,再坚固的城墙也需要合理的建造与维护。

这篇博客从Linux安全的各个方面详细展开,不仅深入探讨了每一个安全主题,还通过丰富的命令和实际案例帮助读者掌握实现技巧。让我们从 理解Linux安全模型 开始,逐步打造一个稳固、安全的系统。


6.1 理解Linux安全模型

Linux的安全模型建立在三个关键支柱之上:

  1. 用户与权限:分为超级用户(root)、普通用户和用户组。
  2. 文件系统权限:基于rwx的权限系统。
  3. 增强安全模块:如SELinux和AppArmor。

深入了解文件权限

文件权限由三组rwx标志构成,分别表示文件拥有者、用户组和其他用户的权限。下面我们详细分析权限位的含义。

$ ls -l
-rwxr-x--x 1 bob staff 4096 Dec 24 14:30 script.sh
权限位详解:
标志 说明
r 读(read)
w 写(write)
x 执行(execute)
- 无权限
修改文件权限:

使用chmod命令可以轻松更改权限。

# 给文件所有者添加写权限
$ chmod u+w script.sh

# 移除组用户的执行权限
$ chmod g-x script.sh

绘制示例图:文件权限的结构

以下是一幅展示文件权限结构的示意图:

      Owner        Group       Others
       rwx         r-x          --x
script.sh

6.2 用户账户的安全设置


查看系统中的用户

查看当前系统中的所有用户,可以检查/etc/passwd文件:

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bob:x:1001:1001::/home/bob:/bin/bash
示例解释:
  • 用户名(如bob)。
  • 密码(通常已被x替代,密码存储在/etc/shadow)。
  • 用户ID(如1001)。

管理用户的安全策略

  • 禁用密码登录:修改/etc/ssh/sshd_config文件,将PasswordAuthentication设置为no

    $ sudo nano /etc/ssh/sshd_config
    PasswordAuthentication no
    
  • 限制用户登录时间:可以通过pam_time.so模块限制。

编辑/etc/security/time.conf文件,限制用户只能在工作日的9:00至18:00访问系统。

login;*;bob;Al0900-1800

6.3 防火墙与网络安全性


常用iptables规则

1. 只允许特定IP访问SSH服务

限制仅允许192.168.1.50访问SSH:

$ sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.50 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 22 -j DROP

模拟运行iptables -L后看到的输出:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.1.50         anywhere             tcp dpt:ssh
DROP       tcp  --  anywhere             anywhere             tcp dpt:ssh
2. 限制连接速率

防止暴力破解攻击,每分钟最多允许10次SSH连接:

$ sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 10/min -j ACCEPT

简单网络流量防火墙结构示意图:

+---------------------+
| Incoming Traffic    |
+---------------------+
        |
        v
+---------------------+
| iptables ruleset    |
+---------------------+
        |
   +----------+
   | Allowed  |----> Accepted
   +----------+
        |
   +----------+
   | Blocked  |----> Dropped
   +----------+

6.4 数据加密技术

使用GPG进行文件加密

GPG是一种强大的文件加密工具。以下是具体操作步骤:

1. 生成密钥对
$ gpg --gen-key
2. 加密文件

将文件secret.txt加密为secret.txt.gpg

$ gpg -c secret.txt
3. 解密文件

解密并输出到原文件:

$ gpg secret.txt.gpg

数据加密的流程示意图:

+----------------+        +----------------+
| Original File  | -----> |  Encrypted     |
|  (secret.txt)  |        |  File (.gpg)   |
+----------------+        +----------------+
                               |
                               v
+----------------+        +----------------+
| Decrypted File | <----- |  Encrypted     |
|  (secret.txt)  |        |  File (.gpg)   |
+----------------+        +----------------+

6.5 SELinux和AppArmor入门


常见SELinux命令

1. 查看SELinux的状态
$ sestatus
SELinux status:                 enabled
Current mode:                   enforcing
2. 切换SELinux模式

将SELinux设置为许可模式(Permissive):

$ sudo setenforce 0

AppArmor:轻量级的程序防护

列出当前系统中的AppArmor配置:

$ sudo aa-status

示例输出:

9 profiles are loaded.
6 profiles are in enforce mode.

6.6 安全日志分析与入侵检测


使用fail2ban防止暴力破解

Fail2ban是一种基于日志的入侵防御系统。

1. 安装fail2ban
$ sudo apt install fail2ban
2. 配置监控SSH服务

编辑/etc/fail2ban/jail.local文件,启用SSH规则:

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
bantime = 600

结语

Linux安全是一个需要精雕细琢的领域,从基础的账户管理到复杂的防火墙规则,每一步都需要技术人员精心规划和操作。希望通过本文,读者不仅能够掌握相关技术,还能在日常工作中灵活应用,真正构建一个安全、可靠的Linux系统。


你可能感兴趣的:(Linux概览,linux,安全,运维,服务器,ubuntu,unix,c++)