3155 字
16 分钟

Linux安全管理命令和技巧

2026-02-01
浏览量 加载中...

Linux安全管理命令和技巧#

安全管理概述#

Linux系统以其稳定性和安全性著称,但这并不意味着它不需要安全管理。相反,作为系统管理员,必须采取一系列措施来确保Linux系统的安全。本文将介绍Linux安全管理中常用的命令和技巧,帮助系统管理员提高系统的安全性。

用户和权限管理#

用户管理#

查看用户信息#

Terminal window
# 查看当前用户
whoami
id
# 查看所有用户
cat /etc/passwd
getent passwd
# 查看系统用户
cat /etc/passwd | grep -E '^(root|nobody|daemon|bin|sys|sync|games|man|lp|mail|news|uucp|proxy|www-data|backup|list|irc|gnats|nobody|systemd-network|systemd-resolve|syslog|messagebus|_apt|lxd|uuidd|dnsmasq|landscape|pollinate|sshd|systemd-timesync):'
# 查看登录用户
w
who
users

管理用户#

Terminal window
# 创建用户
useradd username
# 创建用户并设置密码
useradd -m username && passwd username
# 删除用户
userdel username
# 删除用户及其主目录
userdel -r username
# 修改用户属性
usermod -s /bin/zsh username
usermod -d /new/home/dir username
# 锁定用户
usermod -L username
# 解锁用户
usermod -U username

密码管理#

密码策略#

Terminal window
# 查看密码策略
cat /etc/login.defs
# 编辑密码策略
sudo nano /etc/login.defs
# 设置密码复杂度(使用pam_pwquality)
cat /etc/security/pwquality.conf
sudo nano /etc/security/pwquality.conf

密码管理命令#

Terminal window
# 修改密码
passwd
# 修改其他用户密码
passwd username
# 锁定密码
passwd -l username
# 解锁密码
passwd -u username
# 清除密码
passwd -d username
# 查看密码状态
passwd -S username
# 强制用户下次登录时修改密码
passwd -e username

权限管理#

文件权限#

Terminal window
# 查看文件权限
ls -l file.txt
# 修改文件权限
chmod 644 file.txt
# 修改目录权限
chmod 755 directory/
# 递归修改权限
chmod -R 755 directory/
# 使用符号模式修改权限
chmod u+rwx file.txt
chmod g+rx file.txt
chmod o-rwx file.txt

文件所有者#

Terminal window
# 修改文件所有者
chown user file.txt
# 修改文件所有者和组
chown user:group file.txt
# 递归修改所有者
chown -R user:group directory/

文件属性#

Terminal window
# 查看文件属性
lsattr file.txt
# 设置文件属性
chattr +i file.txt # 设置不可修改属性
chattr +a file.txt # 设置只追加属性
chattr +u file.txt # 设置可恢复属性
# 清除文件属性
chattr -i file.txt
chattr -a file.txt
chattr -u file.txt

访问控制列表(ACL)#

Terminal window
# 查看文件ACL
getfacl file.txt
# 设置文件ACL
setfacl -m u:user:rwx file.txt
setfacl -m g:group:rx file.txt
setfacl -m o::r file.txt
# 递归设置ACL
setfacl -R -m u:user:rwx directory/
# 清除文件ACL
setfacl -b file.txt

系统安全加固#

SSH安全配置#

查看SSH配置#

Terminal window
# 查看SSH配置
cat /etc/ssh/sshd_config
# 查看SSH服务状态
systemctl status ssh # Debian/Ubuntu
systemctl status sshd # RHEL/CentOS
# 查看SSH监听端口
netstat -tlnp | grep sshd
ss -tlnp | grep sshd

SSH安全配置#

Terminal window
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 常用安全配置
# Port 2222 # 更改默认端口
# PermitRootLogin no # 禁止root登录
# PasswordAuthentication no # 禁止密码登录
# PubkeyAuthentication yes # 启用公钥认证
# AllowUsers username # 允许特定用户登录
# AllowGroups sshusers # 允许特定组登录
# DenyUsers username # 禁止特定用户登录
# DenyGroups groupname # 禁止特定组登录
# MaxAuthTries 3 # 最大认证尝试次数
# ClientAliveInterval 300 # 客户端活动间隔
# ClientAliveCountMax 2 # 客户端活动最大次数
# LoginGraceTime 30 # 登录宽限时间
# 重启SSH服务
systemctl restart ssh # Debian/Ubuntu
systemctl restart sshd # RHEL/CentOS

SSH密钥管理#

Terminal window
# 生成SSH密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 查看SSH密钥
ls -la ~/.ssh/
# 复制SSH公钥到远程服务器
ssh-copy-id username@remote_host
# 测试SSH连接
ssh username@remote_host
# 使用特定密钥文件连接
ssh -i ~/.ssh/id_rsa username@remote_host

防火墙配置#

iptables#

Terminal window
# 查看防火墙规则
iptables -L
# 查看详细规则
iptables -L -v
# 查看数字格式规则
iptables -L -n
# 保存防火墙规则
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu
service iptables save # RHEL/CentOS
# 恢复防火墙规则
iptables-restore < /etc/iptables/rules.v4 # Debian/Ubuntu
# 基本防火墙规则
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许HTTPS连接
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 拒绝所有其他入站连接
iptables -A INPUT -j DROP

ufw(Debian/Ubuntu)#

Terminal window
# 查看UFW状态
ufw status
# 启用UFW
ufw enable
# 禁用UFW
ufw disable
# 重置UFW
ufw reset
# 允许SSH
ufw allow ssh
# 允许HTTP
ufw allow http
# 允许HTTPS
ufw allow https
# 允许特定端口
ufw allow 8080/tcp
# 拒绝特定端口
ufw deny 3306/tcp
# 查看规则
ufw status numbered
# 删除规则
ufw delete 1

firewalld(RHEL/CentOS 7+)#

Terminal window
# 查看firewalld状态
systemctl status firewalld
# 启动firewalld
systemctl start firewalld
# 启用firewalld
systemctl enable firewalld
# 查看防火墙规则
firewall-cmd --list-all
# 允许SSH
firewall-cmd --permanent --add-service=ssh
# 允许HTTP
firewall-cmd --permanent --add-service=http
# 允许HTTPS
firewall-cmd --permanent --add-service=https
# 允许特定端口
firewall-cmd --permanent --add-port=8080/tcp
# 重新加载规则
firewall-cmd --reload

SELinux(RHEL/CentOS)#

Terminal window
# 查看SELinux状态
getenforce
# 查看详细状态
sestatus
# 临时禁用SELinux
setenforce 0
# 临时启用SELinux
setenforce 1
# 永久修改SELinux状态
cat /etc/selinux/config
sudo nano /etc/selinux/config
# 设置SELINUX=disabled|permissive|enforcing
# 查看SELinux上下文
ls -Z
# 修改SELinux上下文
chcon -t httpd_sys_content_t /var/www/html/index.html
# 查看SELinux布尔值
getsebool -a
# 修改SELinux布尔值
setsebool -P httpd_can_network_connect 1

系统监控#

日志监控#

系统日志#

Terminal window
# 查看系统日志
journalctl
# 查看最近的日志
journalctl -n 100
# 实时查看日志
journalctl -f
# 查看特定服务的日志
journalctl -u ssh
# 查看错误日志
journalctl -p err..emerg
# 查看引导日志
journalctl -b
# 查看传统日志
cat /var/log/syslog # Debian/Ubuntu
cat /var/log/messages # RHEL/CentOS
cat /var/log/auth.log # Debian/Ubuntu
cat /var/log/secure # RHEL/CentOS

日志分析工具#

Terminal window
# 安装日志分析工具
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # RHEL/CentOS
# 运行日志分析
logwatch
# 安装ELK Stack(Elasticsearch, Logstash, Kibana)
# 参考官方文档

进程监控#

Terminal window
# 查看所有进程
ps aux
# 查看特定进程
ps aux | grep process_name
# 查看进程树
ps axjf
# 实时监控进程
top
# 增强版进程监控
htop
# 查看进程打开的文件
lsof -p PID
# 查看进程网络连接
lsof -i -p PID

网络监控#

Terminal window
# 查看网络连接
netstat -tlnp
ss -tlnp
# 查看所有网络连接
netstat -an
ss -an
# 查看网络接口
ip addr
ifconfig
# 查看网络流量
iftop
nethogs
# 查看网络路由
ip route
route -n
# 查看网络统计
netstat -s
ss -s

文件监控#

Terminal window
# 实时监控文件变化
inotifywait -m /path/to/directory
# 监控文件访问
auditctl -w /etc/passwd -p wa -k passwd_changes
# 查看审计日志
ausearch -k passwd_changes
# 查看文件完整性
rpm -V package_name # RHEL/CentOS
dpkg -V package_name # Debian/Ubuntu
# 安装AIDE(高级入侵检测环境)
sudo apt install aide # Debian/Ubuntu
sudo yum install aide # RHEL/CentOS
# 初始化AIDE数据库
sudo aideinit
# 检查文件完整性
sudo aide --check

漏洞扫描和修复#

系统更新#

Terminal window
# Debian/Ubuntu
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
# RHEL/CentOS 7
sudo yum update
sudo yum upgrade
# RHEL/CentOS 8+
sudo dnf update
sudo dnf upgrade
# 自动安全更新(Debian/Ubuntu)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# 自动安全更新(RHEL/CentOS)
sudo yum install yum-cron
sudo systemctl enable --now yum-cron

漏洞扫描#

OpenVAS#

Terminal window
# 安装OpenVAS(参考官方文档)
# 或使用Docker部署
# 运行扫描
greenbone-nvt-sync
greenbone-scapdata-sync
greenbone-certdata-sync
gvm-cli --gmp-username=admin --gmp-password=admin socket --socketpath=/var/run/openvas/openvas.sock --xml="<create_task><name>Full Scan</name><target id='target-id'></target><config id='daba56c8-73ec-11df-a475-002264764cea'></config></create_task>"

Lynis#

Terminal window
# 安装Lynis
sudo apt install lynis # Debian/Ubuntu
sudo yum install lynis # RHEL/CentOS
# 运行安全扫描
lynis audit system
# 查看扫描报告
cat /var/log/lynis-report.dat

Nmap#

Terminal window
# 安装Nmap
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # RHEL/CentOS
# 扫描开放端口
nmap localhost
nmap 192.168.1.1
# 扫描特定端口
nmap -p 22,80,443 localhost
# 详细扫描
nmap -A localhost
# 操作系统检测
nmap -O localhost
# 服务版本检测
nmap -sV localhost

入侵检测#

Fail2ban#

Terminal window
# 安装Fail2ban
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # RHEL/CentOS
# 配置Fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 常用配置
# [sshd]
# enabled = true
# port = ssh
# filter = sshd
# logpath = /var/log/auth.log # Debian/Ubuntu
# logpath = /var/log/secure # RHEL/CentOS
# maxretry = 3
# bantime = 3600
# 启动Fail2ban
systemctl start fail2ban
systemctl enable fail2ban
# 查看Fail2ban状态
fail2ban-client status
fail2ban-client status sshd
# 解除封禁
fail2ban-client set sshd unbanip IP_ADDRESS

OSSEC#

Terminal window
# 安装OSSEC(参考官方文档)
# 启动OSSEC
sudo /var/ossec/bin/ossec-control start
# 查看OSSEC状态
sudo /var/ossec/bin/ossec-control status
# 查看OSSEC日志
sudo tail -f /var/ossec/logs/alerts/alerts.log

安全加固脚本#

CIS基准#

Terminal window
# 下载CIS基准脚本
wget https://github.com/CISOfy/lynis/archive/master.zip
unzip master.zip
cd lynis-master/
# 运行CIS基准扫描
./lynis audit system --cis

自定义安全加固脚本#

#!/bin/bash
# 安全加固脚本
# 更新系统
echo "更新系统..."
sudo apt update && sudo apt upgrade -y
# 安装必要的包
echo "安装必要的包..."
sudo apt install -y ufw fail2ban lynis rkhunter auditd
# 配置UFW
echo "配置防火墙..."
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
# 配置Fail2ban
echo "配置Fail2ban..."
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo sed -i 's/enabled = false/enabled = true/g' /etc/fail2ban/jail.local
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
# 配置SSH
echo "配置SSH..."
sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config
sudo sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
sudo systemctl restart ssh
# 配置审计系统
echo "配置审计系统..."
sudo systemctl start auditd
sudo systemctl enable auditd
# 添加审计规则
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changes
sudo auditctl -w /etc/group -p wa -k group_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
# 运行安全扫描
echo "运行安全扫描..."
lynis audit system
# 运行Rootkit扫描
echo "运行Rootkit扫描..."
rkhunter --check
echo "安全加固完成!"

应急响应#

检测入侵#

Terminal window
# 查看最近登录
last
lastb
# 查看登录失败记录
grep "Failed password" /var/log/auth.log # Debian/Ubuntu
grep "Failed password" /var/log/secure # RHEL/CentOS
# 查看异常进程
ps aux | grep -E '^root.*\/bin\/sh.*-c'
# 查看异常网络连接
netstat -tlnp | grep -v '127.0.0.1'
ss -tlnp | grep -v '127.0.0.1'
# 查看异常文件
find / -type f -mtime -1 -exec ls -la {} \;
find / -perm -4000 -type f -exec ls -la {} \;
# 查看异常计划任务
crontab -l
ls -la /etc/cron*
ls -la /var/spool/cron/
# 查看异常启动项
systemctl list-unit-files --type=service | grep enabled
ls -la /etc/init.d/

处理入侵#

Terminal window
# 隔离系统
# 断开网络连接或限制网络访问
# 保存证据
# 备份日志文件
mkdir -p /root/evidence
cp -r /var/log/ /root/evidence/
ps aux > /root/evidence/ps.txt
netstat -an > /root/evidence/netstat.txt
lsof > /root/evidence/lsof.txt
# 终止可疑进程
kill -9 PID
# 删除可疑文件
rm -f /path/to/suspicious/file
# 重置密码
passwd
for user in $(cat /etc/passwd | cut -d: -f1); do passwd -l $user; done
# 重建系统
# 从备份恢复或重新安装

安全最佳实践#

系统层面#

  1. 定期更新系统:及时安装安全补丁
  2. 最小化安装:只安装必要的软件包
  3. 禁用不必要的服务:减少攻击面
  4. 使用防火墙:限制网络访问
  5. 启用SELinux/AppArmor:提供额外的安全层
  6. 定期备份:防止数据丢失
  7. 使用强密码:设置复杂的密码策略
  8. 限制root登录:使用sudo代替直接登录root
  9. 监控系统:及时发现异常
  10. 使用加密:保护数据传输和存储

应用层面#

  1. 使用最新版本的软件:及时更新应用程序
  2. 配置安全的应用设置:禁用不必要的功能
  3. 使用HTTPS:加密Web流量
  4. 实施访问控制:限制用户权限
  5. 使用WAF:保护Web应用
  6. 定期扫描漏洞:及时发现和修复漏洞
  7. 使用容器化:隔离应用环境
  8. 实施CI/CD安全:在开发过程中集成安全测试

网络层面#

  1. 使用VLAN:隔离网络 segments
  2. 使用VPN:加密远程访问
  3. 实施网络访问控制:限制网络流量
  4. 使用入侵检测系统:监控网络异常
  5. 使用DNS安全:防止DNS攻击
  6. 使用DDoS防护:抵御DDoS攻击
  7. 实施流量过滤:阻止恶意流量

总结#

本文介绍了Linux安全管理中常用的命令和技巧,包括用户和权限管理、系统安全加固、系统监控、漏洞扫描和修复、入侵检测、应急响应以及安全最佳实践等方面的内容。

安全管理是一个持续的过程,需要系统管理员不断学习和更新知识,以应对不断演变的安全威胁。通过采取本文介绍的措施,可以显著提高Linux系统的安全性,保护系统和数据免受攻击。

练习#

  1. 配置SSH服务,禁用root登录和密码登录,只允许密钥登录。
  2. 配置防火墙,只允许SSH、HTTP和HTTPS连接。
  3. 安装并配置Fail2ban,防止暴力破解攻击。
  4. 运行Lynis安全扫描,根据扫描结果加固系统。
  5. 配置审计系统,监控关键文件的变化。
  6. 创建一个安全加固脚本,自动执行常见的安全加固任务。
  7. 学习如何检测和处理系统入侵。
  8. 制定一个系统备份计划,确保数据安全。
  9. 学习如何使用SELinux或AppArmor保护系统。
  10. 研究最新的Linux安全威胁和防护措施。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Linux安全管理命令和技巧
https://blog.vanilla.net.cn/posts/2026-02-05-linux-security-management/
作者
鹁鸪
发布于
2026-02-01
许可协议
CC BY-NC-SA 4.0

评论区

目录