在Linux系统中,很多人觉得“开源系统天生安全”,或者“我的服务器没什么敏感数据,不用太担心”。但实际上,Linux系统虽然安全系数高,但若忽视基础安全配置,同样会面临被攻击的风险。比如弱密码、开放不必要的端口、未及时更新系统补丁等,都可能让服务器沦为“肉鸡”。本文就从初学者角度出发,聊聊Linux系统安全的基础防护策略,帮你快速建立安全意识。
一、账户安全:从源头筑牢“入口”防线¶
服务器的“大门”是用户账户,一旦账户被攻破,系统所有数据都可能面临威胁。这是最基础的安全点,也是初学者最容易忽视的。
1. 使用强密码+避免共享账户¶
- 密码复杂度:密码不要用简单的“123456”“password”,要包含大小写字母、数字和特殊符号(比如
Passw0rd!)。可以用pwgen工具生成随机密码(如果没有,直接手动设置即可)。 - 避免共用账户:每个管理员或用户必须有独立账户,不要用同一个账户登录不同服务器。比如,开发人员用
dev_user,运维用ops_user,避免多人共用root账户(root权限过高,一旦被攻破,系统彻底失控)。
2. 限制权限:最小权限原则¶
- 禁止直接用root操作:日常工作用普通用户,需要提权时用
sudo(比如sudo yum install 软件)。root账户默认不允许直接登录(除非必要),且仅在紧急修复时使用。 - 删除默认/测试账户:系统安装后可能自带默认用户(比如
nobody)或测试账户(比如test),及时删除或重命名:userdel test(删除用户,-r参数可同时删除家目录)。
3. 用SSH密钥登录代替密码(关键!)¶
- 为什么? 密码登录容易被暴力破解(比如黑客用工具跑字典),而密钥登录更安全。
- 操作步骤:
1. 本地生成密钥对(比如Windows用PuTTYgen,Linux/Mac直接ssh-keygen);
2. 将公钥(id_rsa.pub)复制到服务器~/.ssh/authorized_keys,并设置权限:chmod 600 ~/.ssh/authorized_keys;
3. 禁用服务器密码登录:编辑/etc/ssh/sshd_config,把PasswordAuthentication yes改成no,重启sshd服务。
二、文件权限:保护数据不被“乱改”或“偷看”¶
Linux通过“权限”控制谁能读写、执行文件或目录。如果权限配置错误,即使账户安全,也可能被人篡改或窃取数据。
1. 理解权限表示:rwxr-xr-x是什么?¶
- 权限用3组字母表示:
所有者(Owner)、组(Group)、其他用户(Other)的权限。 r(Read):读,数值4;w(Write):写,数值2;x(Execute):执行,数值1。- 例子:
rwxr-xr-x表示:所有者可读写执行,组和其他用户仅可读可执行。
2. 最小权限原则:只给必要的权限¶
- 关键文件/目录权限:比如系统核心文件
/bin、/etc,权限应设为drwxr-xr-x(目录用d开头,执行权限x对目录是进入权限)。 - 用户家目录:普通用户家目录(
/home/user)权限默认700(只有自己能读写执行),不要设成777(任何人都能改,极度危险!)。 - 修改权限命令:
- 改所有者:
chown user:group 文件名(比如chown root:root /etc/passwd); - 改权限:
chmod 755 文件名(所有者读写执行,组和其他用户读执行)。
三、防火墙:只开“必要的门”,关“多余的窗”¶
Linux防火墙用于拦截非法访问,只开放服务器需要的端口(比如Web的80/443,SSH的22),其他端口默认拒绝。
1. 基础防火墙工具:iptables(CentOS/RHEL)或firewalld(CentOS 7+/Ubuntu)¶
- iptables(简单版):
- 查看当前规则:
iptables -L; - 开放22(SSH)和80/443(Web)端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许Web
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许HTTPS
iptables -P INPUT DROP # 其他所有端口默认拒绝
- firewalld(更简单):
- 开放SSH服务:
firewall-cmd --add-service ssh --permanent; - 查看开放服务:
firewall-cmd --list-services; - 永久生效后重启:
firewall-cmd --reload。
2. 绝对不要开放的危险端口¶
- 如Telnet(23)、FTP(21)、MySQL(3306)等默认端口(除非必要),用SFTP(22/2222)代替FTP,用HTTPS代替Telnet。
四、系统更新:堵住“已知漏洞”的后门¶
很多攻击利用的是系统已知漏洞(比如Apache的Log4j漏洞),及时更新系统补丁能直接修复这些漏洞。
1. 定期更新系统¶
- CentOS/RHEL:
sudo yum update(更新软件包),sudo yum upgrade(更新内核); - Ubuntu/Debian:
sudo apt update && sudo apt upgrade; - 重要:更新后重启服务器(
sudo reboot),避免内核版本不匹配。
2. 禁用不安全服务¶
- 系统默认可能开启FTP、Telnet等旧服务(不安全),用
systemctl禁用:
systemctl disable telnet-server # 禁用Telnet服务
systemctl stop telnet-server # 停止当前运行的Telnet
五、日志监控:发现“异常入侵”的痕迹¶
日志是追踪服务器异常的“眼睛”,记录了谁登录、做了什么操作。定期查看日志能及时发现入侵或误操作。
1. 关键日志工具¶
- 系统日志:
journalctl -xe(查看最近系统日志,-x显示解释); - 登录日志:
last(查看最近登录记录,last reboot看重启时间); - SSH登录日志:
grep "Failed password" /var/log/auth.log(检查是否有暴力破解尝试)。
2. 异常日志的常见信号¶
- 短时间内多次失败的密码登录;
- 非工作时间的异常文件修改(比如
/etc/passwd被改); - 陌生用户ID或组出现(
/etc/group里多了奇怪条目)。
总结:基础防护的“黄金法则”¶
Linux安全没有“一劳永逸”,但掌握以下核心策略,足以应对90%的基础威胁:
1. 账户安全:强密码、最小权限、密钥登录;
2. 文件权限:700(家目录)、644(普通文件)、系统文件600;
3. 防火墙:只开必要端口,默认拒绝其他;
4. 系统更新:定期补丁,禁用旧服务;
5. 日志监控:每天看登录和系统日志,发现异常及时排查。
安全是“持续”的过程,而非“一次性”配置。从今天起,先检查你的服务器是否还在用弱密码、开放不必要端口?行动起来,筑牢Linux服务器的安全基础吧!