防火墙设置、SELinux和基础ACL规则
1. 第一步:安装和配置防火墙
嗨!今天我们动手实操,应用你白天学到的所有 Linux 安全知识。我们将配置防火墙,评估 SELinux 的功能,还会讲解通过 ACL 管理文件访问的便利性。这次讲座就是你的“练习场地”。该穿上我们的管理员“安全肩章”开干了!
你已经知道,一个好的防火墙就像入口处的保安。他决定能放谁进来,谁得听到“没门!”。首先我们来保护系统,只允许访问 SSH 和 HTTP 服务。
使用 UFW
检查 UFW 状态。 没安装?那就装一个吧!
# 检查 UFW sudo ufw status
安装并启用 UFW。
# 安装(如果有必要的话) sudo apt install ufw # 启用防火墙 sudo ufw enable
配置访问。 我们想只允许 SSH(端口22)和 HTTP(端口80),屏蔽其他的一切。逻辑很简单:服务器可不是随便让人进的三星酒店。
# 允许 SSH sudo ufw allow 22 # 允许 HTTP sudo ufw allow 80 # 检查配置 sudo ufw status
检查结果: 配置完成后,你应该会看到类似这样的:
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere
如果命令提示“防火墙关闭”,那我们得处理一下。
如果你使用 iptables
,配置会稍微复杂一些,但逻辑是一样的:创建 SSH 和 HTTP 的规则,屏蔽其他内容。
2. 第2步:使用SELinux
SELinux就像一个严格的老师,它会监督文件和用户在服务器上的行为。它的口号是:“信任,但要验证”。我们来开启SELinux并测试其功能。
开启SELinux
检查当前状态:
# 查看SELinux是否开启 sestatus
如果模式显示为
disabled
,就需要通过配置文件开启它。通过配置文件开启SELinux:
SELinux的配置文件位于
/etc/selinux/config
。用文本编辑器(比如nano
)打开它。sudo nano /etc/selinux/config
找到这行:
SELINUX=disabled
修改为:
SELINUX=enforcing
保存修改并重启系统使更改生效:
sudo reboot
重启后检查状态。
系统启动后,再次检查SELinux状态:
getenforce
如果系统返回Enforcing,恭喜,你正在守护安全!
SELinux与Web服务器的实例
假设你有一个Web服务器,其文件存储在/var/www/html
目录中。我们来检查SELinux是如何保护它的。
查看文件的上下文: 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
检查Web服务器工作状态: 修改上下文后,检查服务器是否正常工作,是否有访问错误。
3. 第三步: 使用 ACL 管理权限
ACL (Access Control List) 就像是 "额外的钥匙" 用来管理访问权限。当标准的 rwx
权限不够时,ACL 允许你为特定用户精确设置访问权限。
创建测试目录
我们来创建一个目录 project_dir
,并为两个用户 user1
和 user2
配置访问权限。
创建目录:
sudo mkdir /project_dir
设置访问权限:
我们允许
user1
拥有全部访问权限,而user2
则只有读取权限:# user1 全访问权限 sudo setfacl -m u:user1:rwx /project_dir # user2 只有读取权限 sudo setfacl -m u:user2:r-- /project_dir
检查 ACL:
# 检查当前权限 getfacl /project_dir
输出应该显示你的设置:
# file: /project_dir user::rwx user:user1:rwx user:user2:r--
设置默认权限:
为了让目录中的所有新文件自动继承 ACL 权限,我们设置默认值:
sudo setfacl -d -m u:user1:rwx /project_dir sudo setfacl -d -m u:user2:r-- /project_dir
4. 检查最终配置
防火墙:
- 确保 SSH 和 HTTP 端口是开放的,其它端口是阻止的。尝试通过 SSH 连接服务器并用浏览器打开网站。
SELinux:
- 检查文件的上下文,确保 SELinux 正在正确限制访问。
ACL:
- 用
user1
和user2
登录,并尝试在目录/project_dir
中读取和写入文件。
- 用
实践任务
- 配置防火墙,仅允许 SSH 和 HTTP 访问。
- 将 SELinux 设置到
enforcing
模式,并检查 Web 服务器是否正常运行。 - 为目录
/project_dir
配置 ACL,使user1
拥有完全访问权限,而user2
仅拥有读取权限。 - 通过命令
who
检查系统中的活动用户。
这些练习会帮你巩固知识,理解如何将这些知识应用到实际中。而且记住:Linux 中的安全性不仅只是配置,还需要时刻关注细节。加油!
GO TO FULL VERSION