手把手带你配个防火墙规则,告别裸奔!
嘿,朋友!你是不是刚拿到一台云服务器,看着空空如也的安全设置,心里有点发虚,感觉服务器就像在互联网上“裸奔”?别担心,今天咱就一起动手,给服务器穿上一件合身的“防护衣”——配置防火墙规则。咱们就以最常见的 iptables(或者它的现代版本 nftables)为例,来点实实在在的操作。
先唠两句为啥要配这个: 防火墙就是你服务器的门卫,它严格按照你定的规则(Rule)来决定:谁可以进(允许访问),谁不能进(拒绝访问),哪个门(端口)可以走。不设规则,就等于告诉全世界“我家大门常打开”,那可不安全。
来,上干货——基础配置四板斧:
-
定个基调:默认全部拒绝 这是安全的第一原则。先关上所有门,再根据需要慢慢开。
# 设置默认策略:INPUT(进来的流量)默认拒绝,FORWARD(转发的)拒绝,OUTPUT(出去的)允许 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT敲完这个,你现在可能连不上服务器了!别慌,我们马上开必要的“门”。
-
给自己留后门:允许SSH连接 管理服务器主要靠SSH(通常是22端口),必须放开,但最好限制只允许你自己的IP,这样最安全。
# 允许来自特定IP(比如你的办公IP 123.123.123.123)的SSH连接 sudo iptables -A INPUT -p tcp --dport 22 -s 123.123.123.123 -j ACCEPT # 如果你的IP会变,至少先开放给所有IP(配置完记得改!) sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT -
开Web服务的大门 如果你的服务器是网站,需要开放80(HTTP)和443(HTTPS)端口。
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT -
别忘了“本地回环” 服务器自己访问自己的服务(比如Web程序连接数据库)需要通过回环接口,这个必须允许。
sudo iptables -A INPUT -i lo -j ACCEPT
几个很实用的小技巧:
- 保持已建立的连接: 这条规则很重要,允许你已经建立的网络连接(比如正在进行的SSH会话)正常通信。
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT - 定期保存规则: 用
iptables配置的规则重启后会丢失!记得用iptables-save命令保存到文件,并设置开机自动加载。 - 现代替代品: 现在很多新系统用
firewalld(Red Hat系)或ufw(Ubuntu系),它们更友好。比如在Ubuntu上,sudo ufw allow 22/tcp一句就能开SSH端口,底层它帮你管好了iptables。
最后敲下黑板: 配完规则,务必先测试再保存!特别是远程操作时,确保SSH规则正确,别把自己锁外面。规则顺序也很关键,匹配即停止,所以要把允许的精细规则放在前面,拒绝的宽泛规则放在后面。
防火墙配置不是一劳永逸,根据你跑的服务(比如MySQL、Redis端口)随时调整。慢慢来,从这几条开始,你的服务器就已经比大多数“裸奔”的机器安全多啦!动手试试吧,有不懂的随时来问。
Linux云服务器安全防火墙配置
阅读量:3