theme: default themeName: "默认主题" title: "别等被黑了才后悔:企业内网安全的10个必做配置"
别等被黑了才后悔:企业内网安全的10个必做配置
「我们是小公司,黑客不会盯着我们的。」
这句话我听过太多次了,然后这些公司里有一半后来都被黑了。事实是:黑客不挑人,他们挑漏洞。 你的服务器有漏洞,就算你是个卖包子的,也会被自动化扫描工具盯上。
2025年某次安全事件统计显示,中小企业遭受网络攻击的比例已经超过大企业——因为大企业有专业安全团队,中小企业往往裸奔。
今天不讲高深的安全理论,就讲10个你今天就能做的内网安全配置,每一个都是血泪教训换来的。
1. 修改SSH默认端口,禁用密码登录
这是最基础的,但很多人就是不做。
默认22端口每天被扫描次数:我的一台测试服务器,22端口一天被尝试登录超过5000次。改成非标准端口后,降到个位数。# /etc/ssh/sshd_config
修改端口
Port 22222
禁用密码登录,只允许密钥
PasswordAuthentication no PubkeyAuthentication yes
禁用root直接登录
PermitRootLogin no
限制登录用户
AllowUsers deploy admin
设置登录超时
LoginGraceTime 30 MaxAuthTries 3
重启SSH
systemctl restart sshd
配置密钥登录:
# 在本地生成密钥对
ssh-keygen -t ed25519 -C "your_email@example.com"
把公钥上传到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
2. 配置防火墙,最小化开放端口
原则:默认拒绝,按需开放。# 使用ufw(Ubuntu)
ufw default deny incoming ufw default allow outgoing
只开放必要端口
ufw allow 22222/tcp # SSH(改过的端口) ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS
限制SSH只允许特定IP访问
ufw allow from 192.168.1.0/24 to any port 22222
ufw enable
使用iptables(更精细控制):
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许本地回环
iptables -A INPUT -i lo -j ACCEPT
允许特定端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
默认拒绝
iptables -P INPUT DROP
3. 安装Fail2ban,自动封禁暴力破解
Fail2ban监控日志,发现暴力破解行为后自动封禁IP。
# 安装
apt install fail2ban
配置 /etc/fail2ban/jail.local
[DEFAULT] bantime = 3600 # 封禁1小时 findtime = 600 # 10分钟内 maxretry = 5 # 失败5次就封
[sshd] enabled = true port = 22222 logpath = /var/log/auth.log
[nginx-http-auth] enabled = true logpath = /var/log/nginx/error.log
systemctl enable fail2ban systemctl start fail2ban
查看封禁状态:
fail2ban-client status sshd
4. 定期更新系统和软件包
这是最容易被忽视的,也是最重要的。
2024年的WannaCry勒索病毒,利用的是Windows SMB漏洞,微软早在攻击发生前两个月就发布了补丁——但大量企业没有及时更新,结果损失惨重。# Ubuntu/Debian 自动安全更新
apt install unattended-upgrades dpkg-reconfigure unattended-upgrades
配置 /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; }; Unattended-Upgrade::AutoFixInterruptedDpkg "true"; Unattended-Upgrade::Remove-Unused-Dependencies "true"; Unattended-Upgrade::Automatic-Reboot "false"; # 不自动重启,避免影响业务
5. 配置日志集中收集和告警
没有日志,就没有安全。 攻击者入侵后第一件事往往是清除日志,所以日志要实时传到远端。# 使用rsyslog发送日志到远端
/etc/rsyslog.conf
. @192.168.1.100:514 # UDP
. @@192.168.1.100:514 # TCP(更可靠)
关键日志要监控:
- `/var/log/auth.log`:认证日志,SSH登录、sudo操作
- `/var/log/syslog`:系统日志
- `/var/log/nginx/access.log`:Web访问日志
- `/var/log/nginx/error.log`:Web错误日志
- 同一IP 5分钟内SSH失败超过10次
- 非工作时间有root登录
- 出现`sudo`命令执行
- Web日志出现大量4xx/5xx
6. 数据库不要暴露在公网
这个错误我见过太多次了:MySQL、Redis、MongoDB直接绑定0.0.0.0,暴露在公网。
MongoDB未授权访问曾经是最常见的数据泄露原因之一,大量数据库没有设置密码,直接被扫描工具发现并删库勒索。 正确做法:# MySQL只监听本地
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1
Redis只监听本地
/etc/redis/redis.conf
bind 127.0.0.1 requirepass your_strong_password
如果需要远程访问,用SSH隧道
ssh -L 3306:127.0.0.1:3306 user@server
7. 配置HTTPS,强制加密传输
HTTP传输是明文的,在公共WiFi下分分钟被抓包。
# Nginx强制HTTPS
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
server { listen 443 ssl http2; server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# HSTS add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# 防点击劫持 add_header X-Frame-Options DENY;
# 防XSS add_header X-XSS-Protection "1; mode=block";
# 防MIME类型嗅探 add_header X-Content-Type-Options nosniff; }
免费SSL证书(Let's Encrypt):
apt install certbot python3-certbot-nginx
certbot --nginx -d example.com
自动续期
certbot renew --dry-run
8. 最小权限原则
每个服务只给它需要的权限,不多给一分。# 创建专用用户运行服务
useradd -r -s /bin/false nginx useradd -r -s /bin/false mysql
文件权限最小化
chmod 600 /etc/ssh/sshd_config chmod 640 /etc/mysql/mysql.conf.d/mysqld.cnf chown root:mysql /etc/mysql/mysql.conf.d/mysqld.cnf
数据库用户权限最小化
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'appuser'@'localhost'; -- 不要用root账号连接数据库
9. 定期备份,并测试恢复
备份不测试等于没备份。 我见过太多公司备份了几年,真正需要恢复的时候发现备份文件损坏或者恢复流程根本跑不通。# 简单的备份脚本
#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR=/backup/$DATE
mkdir -p $BACKUP_DIR
备份数据库
mysqldump -u root -p --all-databases > $BACKUP_DIR/mysql_all.sql
备份配置文件
tar -czf $BACKUP_DIR/configs.tar.gz /etc/nginx /etc/mysql /etc/ssh
上传到远端(S3/OSS)
aws s3 sync $BACKUP_DIR s3://your-bucket/backup/$DATE/
删除30天前的本地备份
find /backup -mtime +30 -type d -exec rm -rf {} +
每月做一次恢复演练,确保备份真的可用。
10. 安全扫描和漏洞评估
定期扫描自己的服务器,比等黑客发现漏洞要好得多。
推荐工具:- Lynis:Linux系统安全审计
- OpenVAS:开源漏洞扫描
- Nmap:端口扫描,看看自己暴露了什么
# 安装Lynis
apt install lynis
运行安全审计
lynis audit system
查看建议
lynis show suggestions
写在最后
安全不是一次性的事,是持续的过程。这10个配置做完,你的服务器安全性会比大多数中小企业强很多。
优先级排序:1. SSH密钥登录 + 禁用密码(今天就做) 2. 防火墙配置(今天就做) 3. Fail2ban(今天就做) 4. 数据库不暴露公网(今天就做) 5. 系统自动更新(本周做) 6. HTTPS(本周做) 7. 日志集中收集(本月做) 8. 定期备份和恢复演练(本月做)
安全投入的成本,永远比被黑后的损失小。
【放心,我们兜底】
不管你是自己尝试修复,还是需要专业人员上门,易云城IT服务都给你托底。修不好不收费,修好了质保期内随时找我。
📞 服务热线:13708730161 💬 微信:eyc1689 📧 邮箱:service@eycit.com 🌐 https://www.eycit.com
您身边的IT专家。