最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
服务器访问控制如何配置拒绝所有默认连接并按需放行
时间:2026-08-22 20:53:49 编辑:袖梨 来源:一聚教程网
最稳妥的iptables配置是默认策略设为DROP再逐条放行。先执行iptables -P INPUT DROP、iptables -P FORWARD DROP、iptables -P OUTPUT ACCEPT锁定流量;再优先放行lo接口和ESTABLISHED/RELATED状态连接;然后按需限制源IP开放服务端口;最后保存规则并验证。
直接设默认策略为 DROP,再逐条添加明确允许的规则,是最稳妥的做法。关键不是“加白名单”,而是建立一套有顺序、有状态、可验证的防护逻辑。
先锁定入口,再放行必要流量
执行以下三条命令,把 INPUT、FORWARD、OUTPUT 链的默认行为定下来:
- iptables -P INPUT DROP:所有进来的连接,默认拒绝
- iptables -P FORWARD DROP:不作路由或 NAT 时,直接关掉转发
- iptables -P OUTPUT ACCEPT:本机主动发出的请求,一般无需限制
注意:操作 INPUT 默认策略前,务必确保你有本地终端、带外管理(如 IPMI)或已提前放行 SSH(比如先加了 -p tcp --dport 22 的规则),否则可能被锁死。
必须优先放行的基础通信
这几条规则要放在其他服务规则之前,否则后续连接会失败:
- 回环接口(lo):iptables -A INPUT -i lo -j ACCEPT
- 已建立和关联连接:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
这两条保障了本机自检、服务间调用、以及响应包能正常返回——没有它们,哪怕你开了 80 端口,网页也打不开。
按需开放具体服务端口
只开真正需要的端口,并尽量绑定来源限制:
- 仅允许某 IP 访问 SSH:iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
- 只放行公司办公网段访问 Web:iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 80 -j ACCEPT
- 数据库端口严格限定来源:iptables -A INPUT -p tcp -s 10.0.5.20 --dport 3306 -j ACCEPT
不要写“-p tcp --dport 3306 -j ACCEPT”这种无来源限制的规则,那是高危配置。
保存并验证规则是否生效
规则在内存中运行,重启后会丢失,需手动保存:
- Debian/Ubuntu:iptables-save > /etc/iptables/rules.v4
- CentOS/RHEL:service iptables save 或使用 iptables-save > /etc/sysconfig/iptables
验证方式:iptables -L -n -v,重点看每条规则的 packet 计数是否随真实访问而增长;再用外部机器尝试访问已开放端口和未开放端口,确认行为符合预期。