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

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

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

今天聊聊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

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

有问题评论区交流~

相关推荐
符哥20083 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
xuhe23 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
相思难忘成疾4 小时前
通向HCIP之路:第四步:边界网关路由协议—BGP(概念、配置、特点、常见问题及其解决方案)
网络·华为·hcip
Lsir10110_4 小时前
【Linux】进程信号(下半)
linux·运维·服务器
君陌社区·网络安全防护中心4 小时前
基于Mininet模拟SDN环境
网络
Porco.w4 小时前
C#与三菱PLC FX5U通信
网络·c#
skywalk81634 小时前
unbound dns解析出现问题,寻求解决之道
运维·服务器·dns·unbound
枷锁—sha4 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
酉鬼女又兒4 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面4 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能