Linux 服务器如何开放端口 配置防火墙

本文介绍如何在Ubuntu系统中使用UFW防火墙工具进行基本的安全配置,包括安装、启用、设置默认策略、开启和禁用端口等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


sudo ufw status(如果你是root,则去掉sudo,ufw status)可检查防火墙的状态,我的返回的是:inactive(默认为不活动)。
sudo ufw version防火墙版本:
ufw 0.29-4ubuntu1
Copyright 2008-2009 Canonical Ltd.
ubuntu 系统默认已安装ufw.

1.安装

sudo apt-get install ufw

2.启用

sudo ufw enable
sudo ufw default deny
运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。

3.开启/禁用

sudo ufw allow|deny [service]
打开或关闭某个端口,例如:
sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口
sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口
这个很重要,ssh远程登录用于SecureCRT等软件建议开启。或者不要开防火墙。
sudo ufw allow 53 允许外部访问53端口(tcp/udp)
sudo ufw allow from 192.168.1.100 允许此IP访问所有的本机端口
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则

4.查看防火墙状态

sudo ufw status
一般用户,只需如下设置:
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny
以上三条命令已经足够安全了,如果你需要开放某些服务,再使用sudo ufw allow开启。
开启/关闭防火墙 (默认设置是’disable’)
sudo ufw enable|disable
转换日志状态
sudo ufw logging on|off
设置默认策略 (比如 “mostly open” vs “mostly closed”)
sudo ufw default allow|deny
许 可或者屏蔽端口 (可以在“status” 中查看到服务列表)。可以用“协议:端口”的方式指定一个存在于/etc/services中的服务名称,也可以通过包的meta-data。 ‘allow’ 参数将把条目加入 /etc/ufw/maps ,而 ‘deny’ 则相反。基本语法如下:
sudo ufw allow|deny [service]
显示防火墙和端口的侦听状态,参见 /var/lib/ufw/maps。括号中的数字将不会被显示出来。
sudo ufw status
UFW 使用范例:
允许 53 端口
$ sudo ufw allow 53
禁用 53 端口
$ sudo ufw delete allow 53
允许 80 端口
$ sudo ufw allow 80/tcp
禁用 80 端口
$ sudo ufw delete allow 80/tcp
允许 smtp 端口
$ sudo ufw allow smtp
删除 smtp 端口的许可
$ sudo ufw delete allow smtp
允许某特定 IP
$ sudo ufw allow from 192.168.254.254
删除上面的规则
$ sudo ufw delete allow from 192.168.254.254
linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。

但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。

ufw相关的文件和文件夹有:

/etc /ufw/:里面是一些ufw的环境设定文件,如 before.rules、after.rules、sysctl.conf、ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就ok。

若开启ufw之 后,/etc/ufw/sysctl.conf会覆盖默认的/etc/sysctl.conf文件,若你原来的/etc/sysctl.conf做了修 改,启动ufw后,若/etc/ufw/sysctl.conf中有新赋值,则会覆盖/etc/sysctl.conf的,否则还以/etc /sysctl.conf为准。当然你可以通过修改/etc/default/ufw中的“IPT_SYSCTL=”条目来设置使用哪个 sysctrl.conf.

/var/lib/ufw/user.rules 这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得ufw reload重启ufw使得新规则生效。

下面是ufw命令行的一些示例:

ufw enable/disable:打开/关闭ufw
ufw status:查看已经定义的ufw规则
ufw default allow/deny:外来访问默认允许/拒绝
ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。
ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。
ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则

### 如何在 Linux 系统中配置防火墙开放 9007 端口 #### 启动并确认防火墙运行状态 为了确保可以正常操作防火墙,需验证 `firewalld` 是否正在运行。如果未启动,则需要手动启用。 ```bash systemctl status firewalld ``` 如果显示 `inactive (dead)`,则表示防火墙尚未启动。可以通过以下命令启动防火墙: ```bash systemctl start firewalld ``` 若遇到启动失败的情况,可能是由于服务被锁定所致。此时可尝试解锁服务后再重新启动: ```bash systemctl unmask firewalld.service systemctl start firewalld.service ``` 以上步骤能够解决大部分因服务锁定而导致的启动失败问题[^1]。 --- #### 添加端口防火墙规则 要允许外部访问特定端口(如 9007),需要将其添加至防火墙规则中。以下是具体的操作方法: 通过 `firewall-cmd` 命令实现端口开放: ```bash firewall-cmd --add-port=9007/tcp --permanent ``` 此命令的作用是永久性地向防火墙规则中加入 TCP 协议下的 9007 端口,并标记为持久化存储以便于系统重启后仍然生效[^2]。 完成上述修改后,还需重载防火墙配置使更改立即生效: ```bash firewall-cmd --reload ``` 最后一步非常重要,因为只有当防火墙重新加载其配置文件时,新增加的内容才会被执行。 --- #### 查看端口是否成功开放 为了检验新添加的端口是否已经正确开放,可以查询当前活动中的所有监听端口号列表或者单独查找某个具体的端口是否存在其中: ```bash firewall-cmd --list-ports ``` 这会返回目前由防火墙管理的所有开放端口集合。假如之前所设的 9007 被列入其中,则说明设置无误;反之亦然。 另外也可以针对单个端口做进一步核查: ```bash firewall-cmd --query-port=9007/tcp ``` 如果输出结果为 `yes` 则代表该端口已被成功开启;如果是 `no` 就意味着可能存在问题需要排查原因[^2]。 --- #### 自定义场景下其他注意事项 对于某些特殊环境而言,除了基本的端口开放外还可能存在额外需求比如限定源地址范围等更精细控制措施,在这种情况下就需要利用更加复杂的参数组合来满足实际应用场景的要求了。 例如仅允许来自某一段 IP 地址区间内的客户端连接服务器上的这个端口: ```bash firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9007" accept' --permanent ``` 这条指令将会创建一条富规则,它规定只接受来自于 IPv4 类型网络里属于子网掩码长度为 24 的 192.168.1.x 子网内部发起的数据包请求到达目标主机上的 tcp 协议编号为 9007 的那个通信接口处[^2]。 随后同样记得再次刷新整个框架结构使之即时反映最新调整情况下来保障策略得以贯彻实施下去即可。 --- ### 总结 综上所述,通过一系列标准化流程就可以轻松达成让 linux 平台上面部署的服务程序对外界提供稳定可靠的服务接入能力的目的啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值