在Linux系统管理中,你是否曾经担心过系统安全漏洞、入侵风险、或者数据安全问题? Linux安全加固是系统管理的重要技能,掌握这些技能不仅能保护系统安全,还能防止数据泄露。 本文将详细介绍Linux安全加固的核心技术和防护技巧。
密码复杂度要求:
1 2 3 4 5 6 7 8 9 10 11 # 安装密码策略工具sudo apt install libpam-pwquality# 编辑密码策略配置sudo nano /etc/security/pwquality.conf# 设置密码策略minlen = 8minclass = 3maxrepeat = 3maxclassrepeat = 4
密码过期策略:
1 2 3 4 5 6 7 # 编辑密码过期配置sudo nano /etc/login.defs# 设置密码过期PASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 7
SSH登录限制:
1 2 3 4 5 6 7 8 9 10 11 # 编辑SSH配置sudo nano /etc/ssh/sshd_config# 禁用root登录PermitRootLogin no# 禁用密码登录PasswordAuthentication no# 限制登录用户AllowUsers admin user1 user2
登录失败限制:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 安装fail2bansudo apt install fail2ban# 创建fail2ban配置sudo nano /etc/fail2ban/jail.local# 配置SSH保护[sshd]enabled = trueport = 22filter = sshdlogpath = /var/log/auth.logmaxretry = 3bantime = 3600
重要文件权限:
1 2 3 4 5 6 7 8 9 10 # 设置重要文件权限sudo chmod 600 /etc/shadowsudo chmod 644 /etc/passwdsudo chmod 600 /etc/ssh/sshd_configsudo chmod 700 /root# 设置目录权限sudo chmod 755 /homesudo chmod 755 /tmpsudo chmod 1777 /tmp
日志文件权限:
1 2 3 4 # 设置日志文件权限sudo chmod 640 /var/log/auth.logsudo chmod 640 /var/log/syslogsudo chmod 640 /var/log/nginx/access.log
ufw防火墙配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 # 启用防火墙sudo ufw enable# 添加规则sudo ufw allow 22/tcpsudo ufw allow 80/tcpsudo ufw allow 443/tcp# 拒绝其他端口sudo ufw default deny# 查看状态sudo ufw status
iptables防火墙配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 清空现有规则sudo iptables -Fsudo iptables -X# 设置默认策略sudo iptables -P INPUT DROPsudo iptables -P FORWARD DROPsudo iptables -P OUTPUT ACCEPT# 允许回环sudo iptables -A INPUT -i lo -j ACCEPT# 允许已建立的连接sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 保存规则sudo iptables-save > /etc/iptables/rules.v4
SSH安全配置:
1 2 3 4 5 6 7 8 9 10 11 # 修改SSH端口sudo sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config# 禁用空密码登录sudo sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no/' /etc/ssh/sshd_config# 禁用SSHv1sudo sed -i 's/#Protocol 2/Protocol 2/' /etc/ssh/sshd_config# 重启SSH服务sudo systemctl restart ssh
Nginx安全配置:
1 2 3 4 5 6 7 8 9 10 11 # 编辑Nginx配置sudo nano /etc/nginx/nginx.conf# 设置安全头部add_header X-Frame-Options DENY;add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";# 隐藏版本信息server_tokens off;
网络连接监控:
1 2 3 4 5 6 7 8 # 查看网络连接sudo netstat -tulpn# 查看网络统计sudo ss -tulpn# 查看网络流量sudo iftop -i eth0
入侵检测:
1 2 3 4 5 6 7 8 # 安装入侵检测工具sudo apt install rkhunter# 扫描系统sudo rkhunter --checkall# 查看扫描结果sudo rkhunter --report
服务权限控制:
1 2 3 4 5 6 7 8 9 10 11 12 13 # 查看运行的服务sudo systemctl list-units --type=service# 禁用不必要的服务sudo systemctl disable telnetsudo systemctl disable rshsudo systemctl disable rexecsudo systemctl disable rlogin# 启用必要的服务sudo systemctl enable sshsudo systemctl enable nginxsudo systemctl enable mysql
服务日志配置:
1 2 3 4 5 6 7 8 # 编辑rsyslog配置sudo nano /etc/rsyslog.conf# 设置日志级别*.info;auth,authpriv.none /var/log/messagesauth,authpriv.* /var/log/securemail.* /var/log/maillogcron.* /var/log/cron
MySQL安全配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 运行安全脚本sudo mysql_secure_installation# 设置root密码sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword123!'"# 删除匿名用户sudo mysql -e "DELETE FROM mysql.user WHERE User='';"# 禁止root远程登录sudo mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"# 删除测试数据库sudo mysql -e "DROP DATABASE IF EXISTS test;"
Redis安全配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 # 编辑Redis配置sudo nano /etc/redis/redis.conf# 设置密码requirepass StrongRedisPassword123!# 禁用危险命令rename-command FLUSHDB ""rename-command FLUSHALL ""rename-command DEBUG ""# 绑定特定IPbind 127.0.0.1
PHP安全配置:
1 2 3 4 5 6 7 8 9 # 编辑PHP配置sudo nano /etc/php/7.4/fpm/php.ini# 设置安全参数expose_php = Offallow_url_include = Offfile_uploads = Offupload_max_filesize = 2Mmax_file_uploads = 5
Java应用安全:
1 2 3 4 5 6 # 设置JVM参数export JAVA_OPTS="-Djava.security.manager -Djava.security.policy=/etc/java.policy"# 设置文件权限sudo chmod 400 /etc/java.policysudo chmod 600 /etc/keystore.jks
Linux安全加固与防护是系统管理的重要技能,掌握这些技能不仅能保护系统安全,还能防止数据泄露。
关键要点回顾: