在现代网络世界,系统安全已经成为不可忽视的议题,尤其是Linux系统以其强大的定制能力和广泛应用场景,被企业广泛采用。然而,再坚固的城墙也需要合理的建造与维护。
这篇博客从Linux安全的各个方面详细展开,不仅深入探讨了每一个安全主题,还通过丰富的命令和实际案例帮助读者掌握实现技巧。让我们从 理解Linux安全模型 开始,逐步打造一个稳固、安全的系统。
Linux的安全模型建立在三个关键支柱之上:
rwx
的权限系统。文件权限由三组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
查看当前系统中的所有用户,可以检查/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
)。禁用密码登录:修改/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
限制仅允许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
防止暴力破解攻击,每分钟最多允许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
+----------+
GPG是一种强大的文件加密工具。以下是具体操作步骤:
$ gpg --gen-key
将文件secret.txt
加密为secret.txt.gpg
:
$ gpg -c secret.txt
解密并输出到原文件:
$ gpg secret.txt.gpg
+----------------+ +----------------+
| Original File | -----> | Encrypted |
| (secret.txt) | | File (.gpg) |
+----------------+ +----------------+
|
v
+----------------+ +----------------+
| Decrypted File | <----- | Encrypted |
| (secret.txt) | | File (.gpg) |
+----------------+ +----------------+
$ sestatus
SELinux status: enabled
Current mode: enforcing
将SELinux设置为许可模式(Permissive):
$ sudo setenforce 0
列出当前系统中的AppArmor配置:
$ sudo aa-status
示例输出:
9 profiles are loaded.
6 profiles are in enforce mode.
Fail2ban是一种基于日志的入侵防御系统。
$ sudo apt install fail2ban
编辑/etc/fail2ban/jail.local
文件,启用SSH规则:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
bantime = 600
Linux安全是一个需要精雕细琢的领域,从基础的账户管理到复杂的防火墙规则,每一步都需要技术人员精心规划和操作。希望通过本文,读者不仅能够掌握相关技术,还能在日常工作中灵活应用,真正构建一个安全、可靠的Linux系统。