端口暴露风险排查方法
通过端口扫描工具(如nmap)检测当前开放的端口:
bash
nmap -sS -p 1-65535 <服务器IP>
检查结果中非必要开放的端口(如MySQL默认3306、Redis默认6379),若未使用应立即关闭。
查看服务器当前监听的端口及对应进程:
bash
netstat -tulnp
或使用ss命令替代:
bash
ss -tulnp
防火墙配置策略
启用防火墙(如iptables或firewalld)并仅放行业务必要端口。以下为iptables示例,仅允许SSH(22)和HTTP(80):
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -j DROP
使用firewalld的等价操作:
bash
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
最小权限原则实施
修改服务默认端口以降低扫描风险(如将SSH端口改为非22):
编辑/etc/ssh/sshd_config:
ini
Port 2222
重启服务生效:
bash
systemctl restart sshd
数据库类服务(如MySQL)限制访问源IP:
sql
GRANT ALL PRIVILEGES ON *.* TO 'user'@'特定IP' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
安全组与网络ACL配置
在云平台(如AWS、阿里云)配置安全组规则:
- 入方向:仅允许业务端口(如80、443)及管理端口(SSH/RDP)来自可信IP。
- 出方向:默认拒绝,按需放行。
网络ACL(如阿里云)建议规则:
- 优先级1:放行特定IP访问管理端口。
- 优先级100:拒绝所有其他入站流量。
日志监控与自动化告警
启用日志审计工具(如fail2ban)自动封禁恶意IP:
安装并配置fail2ban:
bash
apt install fail2ban # Debian/Ubuntu
systemctl enable fail2ban
编辑/etc/fail2ban/jail.local:
ini
[sshd]
enabled = true
maxretry = 3
通过云平台日志服务(如AWS CloudTrail、阿里云ActionTrail)监控异常登录行为,并设置阈值告警。