防火墙设置ip访问权限
去年秋天,防火p访一位做跨境电商的墙设朋友深夜找我,说网站后台突然登不上了。问权他以为是防火p访服务器宕机,重启后问题依旧。墙设我让他查防火墙日志,问权发现一条规则:拒绝所有来自他办公室IP的防火p访访问。原来他前几天为了测试,墙设随手加了个限制,问权后来忘了删。防火p访这事不大,墙设但暴露一个常见问题——很多人把防火墙当成“设了就行”的问权东西,实际规则一旦写错,防火p访轻则自己进不去,墙设重则业务中断。问权 IP访问权限的本质,就是告诉防火墙:哪些地址能进,哪些不能。听起来简单,但配置时容易踩坑。比如Linux下常用的iptables,规则顺序决定一切。你写了一条“允许192.168.1.100访问22端口”,又写了一条“拒绝所有访问22端口”,如果拒绝规则在前,那允许规则永远不会生效。防火墙是从上往下匹配,匹配到就执行,不再看后面的。这跟很多人想的不一样——不是“允许优先”,而是“先到先得”。 我见过一个运维新手,为了图省事,在云服务器安全组里直接放行了0.0.0.0/0到3306端口。他觉得“反正数据库密码很复杂”。结果三天后,数据库被挖矿程序扫到,CPU跑满。云厂商的告警邮件他也没看。后来他改成只允许公司固定IP访问,世界立刻安静了。这个案例说明:IP白名单不是可选项,是底线。哪怕密码再强,暴露端口就等于把门打开一条缝,总有人会试着推一推。 具体怎么设?拿Linux的firewalld举例。假设你要只允许IP 203.0.113.5 访问SSH,其他全拒。命令是: Windows防火墙也类似。图形界面里“入站规则”新建一条,指定远程IP地址。但有个细节:如果你填了“下列IP地址”,然后只填一个,那其他所有IP都会被隐式拒绝。这个设计比iptables友好,不容易漏。不过Windows防火墙对ICMP的处理有时让人困惑——你允许了IP,但ping不通,因为ICMP是单独协议,得单独放行。我遇到过客户抱怨“IP加了还是连不上”,最后发现是没放行ICMP,而他们的监控系统靠ping检测。 云环境更要注意。AWS的安全组、阿里云的安全组,都是白名单机制——默认拒绝所有入站,你加什么才通什么。但安全组有优先级,同组内规则是“允许”叠加,没有显式拒绝。所以你不能在安全组里写“拒绝某IP”,只能通过不添加允许来实现。这跟本地防火墙逻辑相反。有人从本地防火墙迁移到云上,习惯性想加拒绝规则,发现找不到,就懵了。 另外,动态IP是个麻烦。家庭宽带或移动办公,IP经常变。你设了白名单,第二天自己就被挡在外面。解决办法是用DDNS(动态域名解析),防火墙里填域名而不是IP。但不是所有防火墙都支持域名解析,iptables就不直接支持,得靠ipset配合脚本。或者用VPN,先连VPN再访问,防火墙只放行VPN服务器IP。后者更稳,但多一层配置。 我自己的习惯是:任何服务器上线,第一步先设防火墙默认拒绝所有入站,然后只放行必要端口,并且源IP限制到具体地址或小网段。放行前一定用 最后说个观察:很多人把防火墙当成“安全产品”,其实它更像“访问控制列表”。它的核心不是防黑客,而是防自己人误操作和防内部扩散。你设了IP权限,至少能保证只有已知的、可控的地址能碰你的服务。至于那些地址上的机器是否安全,那是另一回事。但这一步不做,后面全是空谈。
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="22" protocol="tcp" accept'
然后firewall-cmd --reload。注意,这条规则只加了允许,并没有拒绝其他。默认策略如果是drop或reject,那其他IP自然进不来。但如果你默认策略是accept,就必须再加一条拒绝所有。很多人只加允许,忘了默认策略,等于没设。--add-rich-rule加--timeout测试,比如--timeout=300,5分钟后自动失效。这样即使写错,也不会把自己永久锁在外面。这个技巧救过我两次——一次是远程改SSH端口,规则写错,幸好有超时,等了几分钟重新连上。
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-