Pixiv - KiraraShss
3155 字
16 分钟
Linux安全管理命令和技巧
Linux安全管理命令和技巧
安全管理概述
Linux系统以其稳定性和安全性著称,但这并不意味着它不需要安全管理。相反,作为系统管理员,必须采取一系列措施来确保Linux系统的安全。本文将介绍Linux安全管理中常用的命令和技巧,帮助系统管理员提高系统的安全性。
用户和权限管理
用户管理
查看用户信息
# 查看当前用户whoamiid
# 查看所有用户cat /etc/passwdgetent 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):'
# 查看登录用户wwhousers管理用户
# 创建用户useradd username
# 创建用户并设置密码useradd -m username && passwd username
# 删除用户userdel username
# 删除用户及其主目录userdel -r username
# 修改用户属性usermod -s /bin/zsh usernameusermod -d /new/home/dir username
# 锁定用户usermod -L username
# 解锁用户usermod -U username密码管理
密码策略
# 查看密码策略cat /etc/login.defs
# 编辑密码策略sudo nano /etc/login.defs
# 设置密码复杂度(使用pam_pwquality)cat /etc/security/pwquality.confsudo nano /etc/security/pwquality.conf密码管理命令
# 修改密码passwd
# 修改其他用户密码passwd username
# 锁定密码passwd -l username
# 解锁密码passwd -u username
# 清除密码passwd -d username
# 查看密码状态passwd -S username
# 强制用户下次登录时修改密码passwd -e username权限管理
文件权限
# 查看文件权限ls -l file.txt
# 修改文件权限chmod 644 file.txt
# 修改目录权限chmod 755 directory/
# 递归修改权限chmod -R 755 directory/
# 使用符号模式修改权限chmod u+rwx file.txtchmod g+rx file.txtchmod o-rwx file.txt文件所有者
# 修改文件所有者chown user file.txt
# 修改文件所有者和组chown user:group file.txt
# 递归修改所有者chown -R user:group directory/文件属性
# 查看文件属性lsattr file.txt
# 设置文件属性chattr +i file.txt # 设置不可修改属性chattr +a file.txt # 设置只追加属性chattr +u file.txt # 设置可恢复属性
# 清除文件属性chattr -i file.txtchattr -a file.txtchattr -u file.txt访问控制列表(ACL)
# 查看文件ACLgetfacl file.txt
# 设置文件ACLsetfacl -m u:user:rwx file.txtsetfacl -m g:group:rx file.txtsetfacl -m o::r file.txt
# 递归设置ACLsetfacl -R -m u:user:rwx directory/
# 清除文件ACLsetfacl -b file.txt系统安全加固
SSH安全配置
查看SSH配置
# 查看SSH配置cat /etc/ssh/sshd_config
# 查看SSH服务状态systemctl status ssh # Debian/Ubuntusystemctl status sshd # RHEL/CentOS
# 查看SSH监听端口netstat -tlnp | grep sshdss -tlnp | grep sshdSSH安全配置
# 编辑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/Ubuntusystemctl restart sshd # RHEL/CentOSSSH密钥管理
# 生成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
# 查看防火墙规则iptables -L
# 查看详细规则iptables -L -v
# 查看数字格式规则iptables -L -n
# 保存防火墙规则iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntuservice 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 DROPufw(Debian/Ubuntu)
# 查看UFW状态ufw status
# 启用UFWufw enable
# 禁用UFWufw disable
# 重置UFWufw reset
# 允许SSHufw allow ssh
# 允许HTTPufw allow http
# 允许HTTPSufw allow https
# 允许特定端口ufw allow 8080/tcp
# 拒绝特定端口ufw deny 3306/tcp
# 查看规则ufw status numbered
# 删除规则ufw delete 1firewalld(RHEL/CentOS 7+)
# 查看firewalld状态systemctl status firewalld
# 启动firewalldsystemctl start firewalld
# 启用firewalldsystemctl enable firewalld
# 查看防火墙规则firewall-cmd --list-all
# 允许SSHfirewall-cmd --permanent --add-service=ssh
# 允许HTTPfirewall-cmd --permanent --add-service=http
# 允许HTTPSfirewall-cmd --permanent --add-service=https
# 允许特定端口firewall-cmd --permanent --add-port=8080/tcp
# 重新加载规则firewall-cmd --reloadSELinux(RHEL/CentOS)
# 查看SELinux状态getenforce
# 查看详细状态 sestatus
# 临时禁用SELinuxsetenforce 0
# 临时启用SELinuxsetenforce 1
# 永久修改SELinux状态cat /etc/selinux/configsudo 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系统监控
日志监控
系统日志
# 查看系统日志journalctl
# 查看最近的日志journalctl -n 100
# 实时查看日志journalctl -f
# 查看特定服务的日志journalctl -u ssh
# 查看错误日志journalctl -p err..emerg
# 查看引导日志journalctl -b
# 查看传统日志cat /var/log/syslog # Debian/Ubuntucat /var/log/messages # RHEL/CentOScat /var/log/auth.log # Debian/Ubuntucat /var/log/secure # RHEL/CentOS日志分析工具
# 安装日志分析工具sudo apt install logwatch # Debian/Ubuntusudo yum install logwatch # RHEL/CentOS
# 运行日志分析logwatch
# 安装ELK Stack(Elasticsearch, Logstash, Kibana)# 参考官方文档进程监控
# 查看所有进程ps aux
# 查看特定进程ps aux | grep process_name
# 查看进程树ps axjf
# 实时监控进程top
# 增强版进程监控htop
# 查看进程打开的文件lsof -p PID
# 查看进程网络连接lsof -i -p PID网络监控
# 查看网络连接netstat -tlnpss -tlnp
# 查看所有网络连接netstat -anss -an
# 查看网络接口ip addrifconfig
# 查看网络流量iftopnethogs
# 查看网络路由ip routeroute -n
# 查看网络统计netstat -sss -s文件监控
# 实时监控文件变化inotifywait -m /path/to/directory
# 监控文件访问auditctl -w /etc/passwd -p wa -k passwd_changes
# 查看审计日志ausearch -k passwd_changes
# 查看文件完整性rpm -V package_name # RHEL/CentOSdpkg -V package_name # Debian/Ubuntu
# 安装AIDE(高级入侵检测环境)sudo apt install aide # Debian/Ubuntusudo yum install aide # RHEL/CentOS
# 初始化AIDE数据库sudo aideinit
# 检查文件完整性sudo aide --check漏洞扫描和修复
系统更新
# Debian/Ubuntusudo apt updatesudo apt upgradesudo apt dist-upgrade
# RHEL/CentOS 7sudo yum updatesudo yum upgrade
# RHEL/CentOS 8+sudo dnf updatesudo dnf upgrade
# 自动安全更新(Debian/Ubuntu)sudo apt install unattended-upgradessudo dpkg-reconfigure -plow unattended-upgrades
# 自动安全更新(RHEL/CentOS)sudo yum install yum-cronsudo systemctl enable --now yum-cron漏洞扫描
OpenVAS
# 安装OpenVAS(参考官方文档)# 或使用Docker部署
# 运行扫描greenbone-nvt-syncgreenbone-scapdata-syncgreenbone-certdata-syncgvm-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
# 安装Lynissudo apt install lynis # Debian/Ubuntusudo yum install lynis # RHEL/CentOS
# 运行安全扫描lynis audit system
# 查看扫描报告cat /var/log/lynis-report.datNmap
# 安装Nmapsudo apt install nmap # Debian/Ubuntusudo yum install nmap # RHEL/CentOS
# 扫描开放端口nmap localhostnmap 192.168.1.1
# 扫描特定端口nmap -p 22,80,443 localhost
# 详细扫描nmap -A localhost
# 操作系统检测nmap -O localhost
# 服务版本检测nmap -sV localhost入侵检测
Fail2ban
# 安装Fail2bansudo apt install fail2ban # Debian/Ubuntusudo yum install fail2ban # RHEL/CentOS
# 配置Fail2bansudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localsudo 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
# 启动Fail2bansystemctl start fail2bansystemctl enable fail2ban
# 查看Fail2ban状态fail2ban-client statusfail2ban-client status sshd
# 解除封禁fail2ban-client set sshd unbanip IP_ADDRESSOSSEC
# 安装OSSEC(参考官方文档)
# 启动OSSECsudo /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基准
# 下载CIS基准脚本wget https://github.com/CISOfy/lynis/archive/master.zipunzip master.zipcd 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
# 配置UFWecho "配置防火墙..."sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow sshsudo ufw allow httpsudo ufw allow httpssudo ufw enable
# 配置Fail2banecho "配置Fail2ban..."sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localsudo sed -i 's/enabled = false/enabled = true/g' /etc/fail2ban/jail.localsudo systemctl restart fail2bansudo systemctl enable fail2ban
# 配置SSHecho "配置SSH..."sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_configsudo sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_configsudo systemctl restart ssh
# 配置审计系统echo "配置审计系统..."sudo systemctl start auditdsudo systemctl enable auditd
# 添加审计规则sudo auditctl -w /etc/passwd -p wa -k passwd_changessudo auditctl -w /etc/shadow -p wa -k shadow_changessudo auditctl -w /etc/group -p wa -k group_changessudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
# 运行安全扫描echo "运行安全扫描..."lynis audit system
# 运行Rootkit扫描echo "运行Rootkit扫描..."rkhunter --check
echo "安全加固完成!"应急响应
检测入侵
# 查看最近登录lastlastb
# 查看登录失败记录grep "Failed password" /var/log/auth.log # Debian/Ubuntugrep "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 -lls -la /etc/cron*ls -la /var/spool/cron/
# 查看异常启动项systemctl list-unit-files --type=service | grep enabledls -la /etc/init.d/处理入侵
# 隔离系统# 断开网络连接或限制网络访问
# 保存证据# 备份日志文件mkdir -p /root/evidencecp -r /var/log/ /root/evidence/ps aux > /root/evidence/ps.txtnetstat -an > /root/evidence/netstat.txtlsof > /root/evidence/lsof.txt
# 终止可疑进程kill -9 PID
# 删除可疑文件rm -f /path/to/suspicious/file
# 重置密码passwdfor user in $(cat /etc/passwd | cut -d: -f1); do passwd -l $user; done
# 重建系统# 从备份恢复或重新安装安全最佳实践
系统层面
- 定期更新系统:及时安装安全补丁
- 最小化安装:只安装必要的软件包
- 禁用不必要的服务:减少攻击面
- 使用防火墙:限制网络访问
- 启用SELinux/AppArmor:提供额外的安全层
- 定期备份:防止数据丢失
- 使用强密码:设置复杂的密码策略
- 限制root登录:使用sudo代替直接登录root
- 监控系统:及时发现异常
- 使用加密:保护数据传输和存储
应用层面
- 使用最新版本的软件:及时更新应用程序
- 配置安全的应用设置:禁用不必要的功能
- 使用HTTPS:加密Web流量
- 实施访问控制:限制用户权限
- 使用WAF:保护Web应用
- 定期扫描漏洞:及时发现和修复漏洞
- 使用容器化:隔离应用环境
- 实施CI/CD安全:在开发过程中集成安全测试
网络层面
- 使用VLAN:隔离网络 segments
- 使用VPN:加密远程访问
- 实施网络访问控制:限制网络流量
- 使用入侵检测系统:监控网络异常
- 使用DNS安全:防止DNS攻击
- 使用DDoS防护:抵御DDoS攻击
- 实施流量过滤:阻止恶意流量
总结
本文介绍了Linux安全管理中常用的命令和技巧,包括用户和权限管理、系统安全加固、系统监控、漏洞扫描和修复、入侵检测、应急响应以及安全最佳实践等方面的内容。
安全管理是一个持续的过程,需要系统管理员不断学习和更新知识,以应对不断演变的安全威胁。通过采取本文介绍的措施,可以显著提高Linux系统的安全性,保护系统和数据免受攻击。
练习
- 配置SSH服务,禁用root登录和密码登录,只允许密钥登录。
- 配置防火墙,只允许SSH、HTTP和HTTPS连接。
- 安装并配置Fail2ban,防止暴力破解攻击。
- 运行Lynis安全扫描,根据扫描结果加固系统。
- 配置审计系统,监控关键文件的变化。
- 创建一个安全加固脚本,自动执行常见的安全加固任务。
- 学习如何检测和处理系统入侵。
- 制定一个系统备份计划,确保数据安全。
- 学习如何使用SELinux或AppArmor保护系统。
- 研究最新的Linux安全威胁和防护措施。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!