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

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 防火墙开放指定端口Linux 系统中,开放指定端口通常涉及使用 `firewalld` 或 `iptables` 工具。以下分别介绍这两种方式的具体操作步骤。 #### 使用 `firewalld` 开放端口 `firewalld` 是一种动态管理防火墙的工具,支持运行时配置和永久配置开放指定端口时,可以通过以下命令实现: - 添加指定端口(如 8080)到防火墙规则中: ```bash sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent ``` 该命令将端口 8080 添加到 `public` 区域,并设置为 TCP 协议,`--permanent` 表示该规则在系统重启后依然有效。 - 重新加载防火墙规则以应用更改: ```bash sudo firewall-cmd --reload ``` - 验证端口是否已成功开放: ```bash sudo firewall-cmd --query-port=8080/tcp ``` 如果返回 `yes`,则表示端口已成功开放;如果返回 `no`,则表示未开放。 - 查看当前开放的所有端口: ```bash sudo firewall-cmd --zone=public --list-ports ``` 该命令会列出当前区域中已开放的所有端口和协议组合。 - 移除指定端口: ```bash sudo firewall-cmd --permanent --remove-port=8080/tcp ``` 此命令用于删除之前添加的端口规则,同样需要重新加载防火墙规则才能生效。 #### 使用 `iptables` 开放端口 `iptables` 是一种更传统的防火墙管理工具,适用于大多数 Linux 发行版。开放指定端口时,可以通过以下命令实现: - 添加规则以允许指定端口(如 8080)的流量: ```bash sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT ``` 该命令将允许所有目标端口为 8080 的 TCP 流量通过防火墙。 - 保存规则以确保系统重启后规则依然有效: ```bash sudo iptables-save > /etc/iptables/rules.v4 ``` 对于 Debian/Ubuntu 系统,保存规则到 `/etc/iptables/rules.v4`;对于 CentOS 系统,可以使用以下命令: ```bash sudo service iptables save ``` - 查看当前的防火墙规则: ```bash sudo iptables -L -n | grep 8080 ``` 该命令会列出与端口 8080 相关的规则,确保规则已正确添加。 #### 其他防火墙管理工具 对于 Ubuntu 系统,默认使用 `ufw`(Uncomplicated Firewall)作为防火墙管理工具。开放指定端口时,可以通过以下命令实现: - 允许指定端口(如 8080)的流量: ```bash sudo ufw allow 8080/tcp ``` 该命令将允许所有目标端口为 8080 的 TCP 流量通过防火墙。 - 重新加载防火墙规则以应用更改: ```bash sudo ufw reload ``` #### 确保服务正在监听端口 开放端口后,还需要确保服务正在监听该端口。可以通过以下命令检查端口状态: - 使用 `netstat` 检查端口状态: ```bash sudo netstat -tulnp | grep 8080 ``` 该命令会列出与端口 8080 相关的监听状态。 - 使用 `ss` 检查端口状态: ```bash sudo ss -tulnp | grep 8080 ``` 该命令的功能与 `netstat` 类似,但性能更优。 如果服务未在监听指定端口,可能需要检查应用程序的配置文件,确保其绑定到正确的 IP 地址和端口上。 #### 防火墙相关命令 - 查看防火墙状态: ```bash sudo systemctl status firewalld ``` 该命令会显示防火墙服务的当前状态,包括是否启用开机启动以及最近的运行状态信息。 - 启动防火墙: ```bash sudo systemctl start firewalld ``` 该命令会立即启动防火墙服务。 - 停止防火墙: ```bash sudo systemctl stop firewalld ``` 该命令会立即停止防火墙服务。 - 禁用防火墙开机自启: ```bash sudo systemctl disable firewalld ``` 该命令会禁用防火墙服务的开机自启动功能。 - 启用防火墙开机自启: ```bash sudo systemctl enable firewalld ``` 该命令会设置防火墙服务开机自启。 #### 示例:开放端口并验证状态 ```bash # 添加指定端口防火墙规则中 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 重新加载防火墙规则 sudo firewall-cmd --reload # 验证端口是否已开放 sudo firewall-cmd --query-port=8080/tcp ``` 上述命令将指定端口添加到防火墙规则中,并通过重新加载规则应用更改,最后验证端口是否已成功开放[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值