在 TencentOS Server 3.1(基于 CentOS/RHEL 体系,使用 iptables 作为默认防火墙工具)上配置端口访问控制,需遵循“先放行必要服务,再拒绝其他流量”的原则。以下是完整操作步骤:
✅ 前置准备
-
确认 iptables 已安装并运行
systemctl status iptables # 若未运行,启动并设置开机自启 sudo systemctl start iptables sudo systemctl enable iptables -
备份当前规则(重要!)
sudo iptables-save > /root/iptables-backup-$(date +%F).rules -
确保远程连接安全
⚠️ 操作前务必保留 SSH 端口(默认 22)的允许规则,避免被锁死!
🔐 基础端口访问控制示例
步骤 1:清除现有规则(可选,谨慎操作)
sudo iptables -F # 清空所有链的规则
sudo iptables -X # 删除用户自定义链
sudo iptables -Z # 清零计数器
💡 生产环境建议仅修改特定规则,而非全清。
步骤 2:设置默认策略(推荐 DROP,但需先开放必要端口)
# 默认丢弃所有入站流量
sudo iptables -P INPUT DROP
# 默认允许出站流量(通常无需限制)
sudo iptables -P OUTPUT ACCEPT
# 默认允许本地回环通信
sudo iptables -P FORWARD DROP
步骤 3:允许必要服务(按顺序添加,避免误封)
# 允许本地回环接口(必需)
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接和关联连接(关键!否则无法维持会话)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH(22 端口)——防止自己断连
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP(80)和 HTTPS(443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许自定义端口(例如 8080)
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
# (可选)限制来源 IP:只允许特定 IP 访问 SSH
# sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
步骤 4:记录并保存规则
# 查看当前规则
sudo iptables -L -n -v
# 保存规则到文件(TencentOS 3.1 兼容方式)
sudo iptables-save > /etc/sysconfig/iptables
# 或复制到腾讯云推荐路径
sudo cp /etc/sysconfig/iptables /etc/iptables/rules.v4
📌 注意:TencentOS 3.1 中
iptables.service会自动从/etc/sysconfig/iptables加载规则;若使用 systemd 管理,也可通过systemctl restart iptables生效。
🔒 进阶安全建议
| 场景 | 命令示例 |
|---|---|
| 限制 SSH 登录尝试次数(防暴力破解) | 安装 fail2ban + iptables 联动 |
| 仅允许特定网段访问数据库(如 3306) | sudo iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 3306 -j ACCEPT |
| 禁止 ICMP 广播风暴 | sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT |
| 记录被拒绝的访问日志 | sudo iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 |
🧪 验证测试
- 在另一台机器尝试
telnet <服务器IP> 22→ 应成功 - 尝试
telnet <服务器IP> 8080(若未开放)→ 应超时或被拒绝 - 检查日志:
sudo tail -f /var/log/messages或journalctl -u iptables
⚠️ 重要提醒
- 切勿在无备用通道时直接设置
INPUT DROP,建议先用ACCEPT测试,确认无误后再切换为DROP。 - 若使用云安全组(腾讯云控制台),优先在安全组层面控制,iptables 作为主机层补充防护。
- 定期审计规则:
sudo iptables -L -n -v --line-numbers
需要我为你生成一个针对具体业务场景(如 Web 服务器、数据库服务器)的完整 iptables 脚本模板吗?
云小栈