防火墙配置入门:保护你的服务器

防火墙配置入门:保护你的服务器

服务器暴露在公网上,不设防火墙就是裸奔。

今天聊聊Linux防火墙的基本配置。

两种主流工具

  • firewalld:CentOS 7+默认,管理简单
  • iptables:经典工具,所有Linux通用

新手推荐用firewalld,更直观。

firewalld基础

查看状态:

bash 复制代码
systemctl status firewalld

启动/停止:

bash 复制代码
systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld  # 开机自启

查看已开放的端口:

bash 复制代码
firewall-cmd --list-ports

查看所有规则:

bash 复制代码
firewall-cmd --list-all

开放端口

临时开放(重启后失效):

bash 复制代码
firewall-cmd --add-port=8080/tcp

永久开放(推荐):

bash 复制代码
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload  # 重载生效

开放多个端口:

bash 复制代码
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

开放端口范围:

bash 复制代码
firewall-cmd --add-port=8000-8100/tcp --permanent
firewall-cmd --reload

关闭端口

bash 复制代码
firewall-cmd --remove-port=8080/tcp --permanent
firewall-cmd --reload

开放服务

除了端口号,也可以用服务名:

bash 复制代码
# 查看支持的服务
firewall-cmd --get-services

# 开放http和https服务
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

限制IP访问

只允许特定IP访问某端口:

bash 复制代码
# 先开放端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept' --permanent
firewall-cmd --reload

禁止某个IP:

bash 复制代码
firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject' --permanent
firewall-cmd --reload

iptables基础

如果你的系统用iptables:

查看规则:

bash 复制代码
iptables -L -n

开放端口:

bash 复制代码
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

保存规则:

bash 复制代码
# CentOS
service iptables save

# Ubuntu
iptables-save > /etc/iptables.rules

删除规则:

bash 复制代码
# 先查看规则编号
iptables -L -n --line-numbers

# 删除第N条
iptables -D INPUT N

实战场景

场景1:Web服务器

bash 复制代码
# 只开放必要端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload

场景2:数据库服务器

bash 复制代码
# 只允许应用服务器访问MySQL
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.10" port port="3306" protocol="tcp" accept' --permanent
firewall-cmd --reload

场景3:临时测试

bash 复制代码
# 临时关闭防火墙测试
systemctl stop firewalld

# 测试完记得开回来
systemctl start firewalld

常见问题

Q:端口开了还是访问不了?

  1. 检查服务是否启动:ss -tlnp | grep 端口
  2. 检查防火墙规则:firewall-cmd --list-ports
  3. 检查云服务器的安全组

Q:怎么知道被攻击了?

bash 复制代码
# 查看连接数最多的IP
netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

安全建议

  1. 只开必要端口:用不上的端口别开
  2. SSH换端口:把22换成其他端口
  3. 限制访问来源:数据库端口限制IP
  4. 定期检查:看看有没有异常端口

远程管理

我管理多台服务器的防火墙,用星空组网连起来后统一操作:

bash 复制代码
# 批量查看开放端口
for ip in 10.26.1.{10..15}; do
    echo "=== $ip ==="
    ssh root@$ip "firewall-cmd --list-ports"
done

不用记每台服务器的公网IP,直接用虚拟IP连。

速查表

操作 命令
查看状态 systemctl status firewalld
查看端口 firewall-cmd --list-ports
开放端口 firewall-cmd --add-port=端口/tcp --permanent
关闭端口 firewall-cmd --remove-port=端口/tcp --permanent
重载规则 firewall-cmd --reload

小结

防火墙配置核心:

  1. 只开放必要的端口
  2. 敏感端口限制IP访问
  3. 用--permanent保存规则
  4. 改完记得--reload

服务器安全第一,别裸奔。

有问题评论区交流~

相关推荐
wtblszn2 小时前
自动化包装生产线设备可视化管理方案
运维·自动化
跨境小彭3 小时前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
心之语歌3 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex3 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999994 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣4 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP5 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技5 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技6 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人6 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados