【转】ubuntu的防火墙安装、开启和关闭

本文介绍Ubuntu系统中UFW防火墙的基本安装、启用及常用命令配置方法,包括端口和服务的开放与禁止等操作。

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


文章来自:http://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html


ubuntu 9.10默认的是UFW防火墙,已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。

最简单的一个操作:sudo ufw status可检查防火墙的状态,我的返回的是:不活动

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)端口

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端口"的规则


### 可能的原因分析 即使防火墙处于关闭状态,仍然可能出现端口无法访问的情况。这可能是由于以下几个原因造成的: 1. **服务未启动或未绑定到相应端口** 即使防火墙关闭并开放了某些端口,但如果相应的服务未运行或者未正确绑定到该端口,则外部连接仍会被拒绝[^3]。 2. **SELinux 或 AppArmor 的限制** 如果系统启用了 SELinux 或 AppArmor 安全模块,它们可能会阻止应用程序监听特定端口,从而导致端口不可达[^4]。 3. **IP 地址绑定问题** 应用程序可能仅绑定了本地回环地址 (127.0.0.1),而未绑定到系统的公共 IP 地址 (0.0.0.0)。这种情况下,外部设备无法通过公网 IP 访问该端口。 4. **路由器或 NAT 设置问题** 如果 Ubuntu 系统位于局域网中并通过 NAT 路由器接入互联网,那么需要在路由器上配置端口发规则,以便将外部请求映射到内部服务器上的目标端口。 5. **其他安全软件的影响** 除了 ufw 外,还可能存在其他的网络安全策略(如 iptables),这些也可能影响端口的可达性[^1]。 --- ### 解决方案 #### 方法一:确认服务是否正在运行 检查对应的服务进程是否已经启动,并验证其是否正监听预期的端口号。 ```bash sudo netstat -tuln | grep <port_number> ``` 上述命令用于显示当前所有监听中的 TCP/UDP 连接及其对应的端口号。如果看不到指定端口的信息,则表明服务尚未启动或未正确绑定至该端口。 #### 方法二:调整应用绑定地址 确保您的服务程序不仅限于 localhost 绑定,而是设为 `0.0.0.0` 来接受来自任何网络接口的连接请求。例如,在 Web 服务器配置文件里修改 listen 参数: ```nginx server { listen 80; server_name your_domain.com; } ``` #### 方法三:禁用 SELinux/AppArmor 临时停用 SELinux 并观察效果: ```bash setenforce 0 ``` 对于 AppArmor,可以通过以下方式停止它: ```bash sudo systemctl stop apparmor sudo systemctl disable apparmor ``` 完成测试之后再决定是否重新启用以及如何适配规则以满足需求。 #### 方法四:核查路由与NAT设定 假如您处在家庭或企业级网络环境中,请登录管理界面查看是否有针对所使用的端口做恰当的DMZ主机指派或是静态PAT(port address translation)。 #### 方法五:排查额外防护措施 利用下面这条指令来审查是否存在隐藏的安全屏障干扰通讯链路建立过程: ```bash sudo iptables -L -v -n ``` 如果有不必要的条目存在的话就清除掉他们吧!记得最后保存更改以防重启丢失哦~ --- ### 总结 综上所述,当遇到 ubuntu 下虽然关闭防火墙但仍不能正常访问某个端口的现象时,应依次考虑以上提到的各种可能性逐一排除故障源直至恢复正常运作为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值