CodeGym /课程 /Docker SELF /防火墙设置、SELinux和基础ACL规则

防火墙设置、SELinux和基础ACL规则

Docker SELF
第 5 级 , 课程 5
可用

防火墙设置、SELinux和基础ACL规则

1. 第一步:安装和配置防火墙

嗨!今天我们动手实操,应用你白天学到的所有 Linux 安全知识。我们将配置防火墙,评估 SELinux 的功能,还会讲解通过 ACL 管理文件访问的便利性。这次讲座就是你的“练习场地”。该穿上我们的管理员“安全肩章”开干了!

你已经知道,一个好的防火墙就像入口处的保安。他决定能放谁进来,谁得听到“没门!”。首先我们来保护系统,只允许访问 SSH 和 HTTP 服务。

使用 UFW

  1. 检查 UFW 状态。 没安装?那就装一个吧!

    # 检查 UFW
    sudo ufw status
  2. 如果命令提示“防火墙关闭”,那我们得处理一下。

  3. 安装并启用 UFW。

    # 安装(如果有必要的话)
    sudo apt install ufw
    
    # 启用防火墙
    sudo ufw enable
  4. 配置访问。 我们想只允许 SSH(端口22)和 HTTP(端口80),屏蔽其他的一切。逻辑很简单:服务器可不是随便让人进的三星酒店。

    # 允许 SSH
    sudo ufw allow 22
    
    # 允许 HTTP
    sudo ufw allow 80
    
    # 检查配置
    sudo ufw status
  5. 检查结果: 配置完成后,你应该会看到类似这样的:

    Status: active
    To                         Action      From
    --                         ------      ----
    22                         ALLOW       Anywhere
    80                         ALLOW       Anywhere
    

如果你使用 iptables,配置会稍微复杂一些,但逻辑是一样的:创建 SSH 和 HTTP 的规则,屏蔽其他内容。


2. 第2步:使用SELinux

SELinux就像一个严格的老师,它会监督文件和用户在服务器上的行为。它的口号是:“信任,但要验证”。我们来开启SELinux并测试其功能。

开启SELinux

  1. 检查当前状态:

    # 查看SELinux是否开启
    sestatus

    如果模式显示为disabled,就需要通过配置文件开启它。

  2. 通过配置文件开启SELinux:

    SELinux的配置文件位于/etc/selinux/config。用文本编辑器(比如nano)打开它。

    sudo nano /etc/selinux/config
    

    找到这行:

    SELINUX=disabled
    

    修改为:

    SELINUX=enforcing
    

    保存修改并重启系统使更改生效:

    sudo reboot
    
  3. 重启后检查状态。

    系统启动后,再次检查SELinux状态:

    getenforce
    

    如果系统返回Enforcing,恭喜,你正在守护安全!


SELinux与Web服务器的实例

假设你有一个Web服务器,其文件存储在/var/www/html目录中。我们来检查SELinux是如何保护它的。

  1. 查看文件的上下文: SELinux使用上下文来管理访问权限。让我们看看/var/www/html目录有什么上下文。

    ls -Z /var/www/html
    

    示例输出:

    drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
    

    如果有问题,可以临时更改上下文:

    sudo chcon -t httpd_sys_content_t /var/www/html
    
  2. 检查Web服务器工作状态: 修改上下文后,检查服务器是否正常工作,是否有访问错误。


3. 第三步: 使用 ACL 管理权限

ACL (Access Control List) 就像是 "额外的钥匙" 用来管理访问权限。当标准的 rwx 权限不够时,ACL 允许你为特定用户精确设置访问权限。

创建测试目录

我们来创建一个目录 project_dir,并为两个用户 user1user2 配置访问权限。

  1. 创建目录:

    sudo mkdir /project_dir
    
  2. 设置访问权限:

    我们允许 user1 拥有全部访问权限,而 user2 则只有读取权限:

    # user1 全访问权限
    sudo setfacl -m u:user1:rwx /project_dir
    
    # user2 只有读取权限
    sudo setfacl -m u:user2:r-- /project_dir
  3. 检查 ACL:

    # 检查当前权限
    getfacl /project_dir

    输出应该显示你的设置:

    # file: /project_dir
    user::rwx
    user:user1:rwx
    user:user2:r--
  4. 设置默认权限:

    为了让目录中的所有新文件自动继承 ACL 权限,我们设置默认值:

    sudo setfacl -d -m u:user1:rwx /project_dir
    sudo setfacl -d -m u:user2:r-- /project_dir
    

4. 检查最终配置

  1. 防火墙:

    • 确保 SSH 和 HTTP 端口是开放的,其它端口是阻止的。尝试通过 SSH 连接服务器并用浏览器打开网站。
  2. SELinux:

    • 检查文件的上下文,确保 SELinux 正在正确限制访问。
  3. ACL:

    • user1user2 登录,并尝试在目录 /project_dir 中读取和写入文件。

实践任务

  1. 配置防火墙,仅允许 SSH 和 HTTP 访问。
  2. 将 SELinux 设置到 enforcing 模式,并检查 Web 服务器是否正常运行。
  3. 为目录 /project_dir 配置 ACL,使 user1 拥有完全访问权限,而 user2 仅拥有读取权限。
  4. 通过命令 who 检查系统中的活动用户。

这些练习会帮你巩固知识,理解如何将这些知识应用到实际中。而且记住:Linux 中的安全性不仅只是配置,还需要时刻关注细节。加油!

1
Опрос
在Linux中与用户的工作,  5 уровень,  5 лекция
недоступен
在Linux中与用户的工作
在Linux中与用户的工作
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION