2026/1/29 6:03:37
网站建设
项目流程
网站如何优化一个关键词,流量网站建设教程,沈阳今天最新通知,科技有限公司注册前言
服务器暴露在公网#xff0c;每天都在被扫描、被尝试暴力破解。
不做安全加固就是在裸奔。这篇整理Linux服务器的安全加固方案#xff0c;从SSH加固到防火墙配置#xff0c;覆盖生产环境常用的安全措施。一、SSH安全加固
SSH是最常见的攻击入口#xff0c;必须重点加固…前言服务器暴露在公网每天都在被扫描、被尝试暴力破解。不做安全加固就是在裸奔。这篇整理Linux服务器的安全加固方案从SSH加固到防火墙配置覆盖生产环境常用的安全措施。一、SSH安全加固SSH是最常见的攻击入口必须重点加固。1.1 修改默认端口# /etc/ssh/sshd_configPort22222# 改成非标准端口改完重启systemctl restart sshd改端口能过滤掉90%的自动化扫描。1.2 禁止root登录# /etc/ssh/sshd_configPermitRootLogin no创建普通用户需要root权限时用sudouseradd-madminpasswdadminusermod-aGsudoadmin# Debian/Ubuntu# 或usermod-aGwheel admin# CentOS/RHEL1.3 禁用密码登录只允许密钥登录# /etc/ssh/sshd_configPasswordAuthentication no PubkeyAuthenticationyes确保先把公钥配好# 本地生成密钥ssh-keygen-ted25519-Cyour-emailexample.com# 上传公钥ssh-copy-id-i~/.ssh/id_ed25519.pub-p22222adminserver1.4 限制登录来源只允许特定IP登录# /etc/ssh/sshd_configAllowUsers admin192.168.1.*或者用防火墙限制# iptablesiptables-AINPUT-ptcp--dport22222-s192.168.1.0/24-jACCEPT iptables-AINPUT-ptcp--dport22222-jDROP# firewalldfirewall-cmd--permanent--add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port22222 acceptfirewall-cmd--reload1.5 完整的sshd_config示例Port22222PermitRootLogin no PasswordAuthentication no PubkeyAuthenticationyesMaxAuthTries3ClientAliveInterval300ClientAliveCountMax2AllowUsers admin X11Forwarding no UseDNS no二、防火墙配置2.1 iptables基础规则#!/bin/bash# firewall.sh# 清空规则iptables-Fiptables-X# 默认策略iptables-PINPUT DROP iptables-PFORWARD DROP iptables-POUTPUT ACCEPT# 允许本地回环iptables-AINPUT-ilo-jACCEPT# 允许已建立的连接iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT# 允许SSH改成你的端口iptables-AINPUT-ptcp--dport22222-jACCEPT# 允许HTTP/HTTPSiptables-AINPUT-ptcp--dport80-jACCEPT iptables-AINPUT-ptcp--dport443-jACCEPT# 允许ping可选iptables-AINPUT-picmp --icmp-type echo-request-jACCEPT# 保存规则iptables-save/etc/iptables.rules开机自动加载# /etc/rc.local 或 systemd serviceiptables-restore/etc/iptables.rules2.2 firewalld配置CentOS 7默认用firewalld# 查看状态firewall-cmd--state# 开放端口firewall-cmd--permanent--add-port80/tcp firewall-cmd--permanent--add-port443/tcp firewall-cmd--permanent--add-port22222/tcp# 移除端口firewall-cmd--permanent--remove-port22/tcp# 重新加载firewall-cmd--reload# 查看开放的端口firewall-cmd --list-ports2.3 限制连接速率防止暴力破解和CC攻击# 限制SSH连接速率iptables-AINPUT-ptcp--dport22222-mstate--stateNEW-mrecent--setiptables-AINPUT-ptcp--dport22222-mstate--stateNEW-mrecent--update--seconds60--hitcount4-jDROP60秒内超过4次新连接就封禁。三、fail2ban防暴力破解3.1 安装# Debian/Ubuntuaptinstallfail2ban# CentOSyuminstallepel-release yuminstallfail2ban3.2 配置# /etc/fail2ban/jail.local[DEFAULT]bantime3600findtime600maxretry5banactioniptables-multiport[sshd]enabledtrueport22222filtersshd logpath/var/log/auth.log# Ubuntu# logpath /var/log/secure # CentOSmaxretry33.3 常用命令# 启动systemctl start fail2ban systemctlenablefail2ban# 查看状态fail2ban-client status fail2ban-client status sshd# 查看被封禁的IPfail2ban-client get sshd banned# 解封IPfail2ban-clientsetsshd unbanip1.2.3.4四、系统加固4.1 关闭不需要的服务# 查看运行的服务systemctl list-units--typeservice--staterunning# 关闭不需要的systemctl stop postfix systemctl disable postfix常见可以关闭的服务postfix不需要发邮件cups不需要打印avahi-daemon不需要mDNSrpcbind不用NFS4.2 内核参数加固# /etc/sysctl.conf# 禁止IP转发非路由器net.ipv4.ip_forward0# 禁止ICMP重定向net.ipv4.conf.all.accept_redirects0net.ipv4.conf.default.accept_redirects0# 禁止源路由net.ipv4.conf.all.accept_source_route0net.ipv4.conf.default.accept_source_route0# 启用SYN Cookie防护net.ipv4.tcp_syncookies1# 忽略ping广播net.ipv4.icmp_echo_ignore_broadcasts1# 记录可疑数据包net.ipv4.conf.all.log_martians1应用配置sysctl-p4.3 文件权限检查# 关键文件权限chmod600/etc/shadowchmod644/etc/passwdchmod600/etc/ssh/sshd_configchmod700~/.sshchmod600~/.ssh/authorized_keys# 查找SUID文件潜在风险find/-perm-4000-typef2/dev/null# 查找无主文件find/-nouser-o-nogroup2/dev/null4.4 设置umask# /etc/profile 或 /etc/bashrcumask027新建文件默认权限更严格。五、日志与审计5.1 配置日志确保关键日志开启# 查看日志配置cat/etc/rsyslog.conf# 关键日志文件/var/log/auth.log# 认证日志Ubuntu/var/log/secure# 认证日志CentOS/var/log/messages# 系统日志/var/log/lastlog# 最后登录/var/log/wtmp# 登录历史/var/log/btmp# 失败登录5.2 查看登录记录# 当前登录用户wwho# 最近登录last-10# 失败登录lastb-10# 登录统计lastlog5.3 简单的入侵检测#!/bin/bash# security_check.shecho 安全检查$(date)echo-e\n[1] 当前登录用户wecho-e\n[2] 最近登录last-10echo-e\n[3] 失败登录尝试lastb2/dev/null|head-20echo-e\n[4] SSH认证失败grepFailed password/var/log/auth.log2/dev/null|tail-10grepFailed password/var/log/secure2/dev/null|tail-10echo-e\n[5] 开放端口ss-tlnpecho-e\n[6] 可疑进程CPU 50%psaux--sort-%cpu|head-10echo-e\n[7] 定时任务foruserin$(cut-f1-d: /etc/passwd);docrontab-l-u$user2/dev/null|grep-v^#|grep-v^$doneecho-e\n[8] 最近修改的文件24小时内find/etc-mtime-1-typef2/dev/nullecho-e\n 检查完成 六、自动化安全更新6.1 Debian/Ubuntuaptinstallunattended-upgrades dpkg-reconfigure unattended-upgrades配置文件# /etc/apt/apt.conf.d/50unattended-upgradesUnattended-Upgrade::Allowed-Origins{${distro_id}:${distro_codename}-security;};Unattended-Upgrade::Mailadminexample.com;Unattended-Upgrade::Automatic-Rebootfalse;6.2 CentOS/RHELyuminstallyum-cron systemctlenableyum-cron# /etc/yum/yum-cron.confupdate_cmdsecurity apply_updatesyes七、安全加固检查清单一键检查脚本#!/bin/bash# hardening_check.shecho Linux安全加固检查 # SSH配置检查echo-e\n[SSH配置]grep-E^(Port|PermitRootLogin|PasswordAuthentication)/etc/ssh/sshd_config2/dev/null# 防火墙状态echo-e\n[防火墙]ifcommand-vfirewall-cmd/dev/null;thenfirewall-cmd--state2/dev/nullelifcommand-vufw/dev/null;thenufw statuselseiptables-L-n|head-20fi# fail2ban状态echo-e\n[fail2ban]systemctl is-active fail2ban2/dev/null||echo未安装/未运行# 内核参数echo-e\n[内核参数]sysctlnet.ipv4.tcp_syncookies net.ipv4.ip_forward2/dev/null# 开放端口echo-e\n[开放端口]ss-tlnp|grepLISTEN# 运行服务数echo-e\n[运行服务]systemctl list-units--typeservice--staterunning|wc-lecho个服务正在运行# 自动更新echo-e\n[自动更新]ifdpkg-l|grep-qunattended-upgrades;thenecho已配置unattended-upgradeselifrpm-qyum-cron/dev/null;thenecho已配置yum-cronelseecho未配置fiecho-e\n 检查完成 总结Linux安全加固核心措施层面措施优先级SSH改端口禁密码禁root高防火墙默认DROP只开必要端口高防暴破fail2ban高系统关闭无用服务中内核sysctl加固中更新自动安全更新中审计日志定期检查中加固顺序建议1. SSH加固改端口、禁密码、禁root ↓ 2. 配置防火墙默认DROP ↓ 3. 安装fail2ban ↓ 4. 关闭无用服务 ↓ 5. 配置自动更新 ↓ 6. 设置定期检查安全加固不是一次性的事情需要持续关注和更新。有问题评论区交流。