手机版
你好,游客 登录 注册
背景:
阅读新闻

Debian/Ubuntu系统中安装和配置UFW-简单的防火墙

[日期:2014-01-20] 来源:Linux中国   作者:Linux [字体: ]

拒绝访问

添加拒绝规则也是同样的招数。我们假设你想拒绝 ftp 访问, 你只需输入

$ sudo ufw deny ftp

To      Action          From
------      -----------         ------
21/tcp      DENY            Anywhere
21/tcp      DENY            Anywhere (v6)

添加特定端口

有时候,我们会自定义一个端口而不是使用标准提供的。让我们试着把机器上 ssh22 端口换成 2290 端口,然后允许从 2290 端口访问,我们像这样添加:

$ sudo ufw allow 2290/ssh (译者注:些处演示例子有问题)

To      Action          From
--      -----------         ------
2290        ALLOW           Anywhere
2290        ALLOW           Anywhere (v6)

你也可以把端口范围添加进规则。如果我们想打开从 2290到2300 的端口以供 tcp 协议使用,命令如下示:

$ sudo ufw allow 2290:2300/tcp

To          Action          From
------          -----------         ------
2290:2300/tcp       ALLOW           Anywhere
2290:2300/tcp       ALLOW           Anywhere (v6)

同样你想使用 udp 的话,如下操作。

$ sudo ufw allow 2290:2300/udp

To          Action          From
------          -----------         ------
2290:2300/udp       ALLOW           Anywhere
2290:2300/udp       ALLOW           Anywhere (v6)

请注意你得明确的指定是 ‘tcp’ 或 ‘udp’,否则会出现跟下面类似的错误信息。

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

添加特定 IP

前面我们添加的规则都是基于 服务程序端口 的,UFW 也可以添加基于 IP 地址的规则。下面是命令样例。

$ sudo ufw allow from 192.168.0.104

你也可以使用子网掩码来扩宽范围。

$ sudo ufw allow form 192.168.0.0/24

To      Action          From
--      -----------         ------
Anywhere    ALLOW           192.168.0.104
Anywhere    ALLOW           192.168.0.0/24

如你所见, from 参数仅仅限制连接的来源,而目的(用 To 列表示)是所有地方。让我们看看允许访问 22端口(ssh)的例子。

$ sudo ufw allow to any port 22

上面的命令会允许从任何地方以及任何协议都可以访问22端口

组合参数

对于更具体的规则,你也可以把 IP 地址协议端口这些组合在一起用。我们想创建一条规则,限制仅仅来自于 192.168.0.104 的 IP ,而且只能使用 tcp 协议和通过 22端口 来访问本地资源。我们可以用如下所示的命令。

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

创建拒绝规则的命令和允许的规则类似,仅需要把 allow 参数换成 deny 参数就可以。

删除规则

某些时候需要删除现有的规则。再一次使用 UFW 删除规则是很简单的。在上面的示例中,已经创建了如下的规则,现在你想删除它们。

To      Action          From
--      -----------         ------
22/tcp      ALLOW           192.168.0.104
21/tcp      ALLOW           Anywhere
21/tcp      ALLOW           Anywhere (v6)

删除规则有两个方法。

方法1

下面的命令将会 删除ftp 相关的规则。所以像 21/tcp 这条 ftp 默认访问端口的规则将会被删除掉。

$ sudo ufw delete allow ftp

方法2

但当你使用如下命令来删除上面例子中的规则时,

$ sudo ufw delete allow ssh

或者 

$ sudo ufw delete allow 22/tcp

会出现如下所示的一些错误

Could not delete non-existent rule
Could not delete non-existent rule (v6)

我们还有一招。上面已经提到过,可以序列数字来代替你想删除的规则。让我们试试。

$ sudo ufw status numbered

To      Action          From
--      -----------         ------
[1] 22/tcp      ALLOW           192.168.0.104
[2] 21/tcp      ALLOW           Anywhere
[3] 21/tcp      ALLOW           Anywhere (v6)

然后我们删除正在使用的第一条规则。按 “ y ” 就会永久的删除这条规则。

$ sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

从这些用法中你就可以发现它们的不同。 方法2 在删除前需要 用户确认 ,而 方法1 不需要。

重置所有规则

某些情况下,你也许需要 删除/重置 所有的规则。可以输入。

$ sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

如果你输入“ y ”, UFW 在重置你的 ufw 前会备份所有已经存在规则,然后重置。重置操作也会使你的防火墙处于不可用状态,如果你想使用得再一次启用它。

高级功能

正如我上面所说,UFW防火墙能够做到iptables可以做到的一切。这是通过一些规则文件来完成的,他们只不过是 iptables-restore 所对应的文本文件而已。是否可以通过 ufw 命令微调 UFW 的与/或逻辑来增加 iptables 命令其实就是编辑几个文本文件的事。

  • /etc/default/ufw: 默认策略的主配置文件,支持 IPv6 和 内核模块。
  • /etc/ufw/before[6].rules: 通过 ufw 命令添加进规则之前里面存在的规则会首先计算。
  • /etc/ufw/after[6].rules: 通过 ufw 命令添加进规则之后里面存在的规则会进行计算。
  • /etc/ufw/sysctl.conf: 内核网络可调参数。
  • /etc/ufw/ufw.conf: 设置系统启动时 UFW 是否可用,和设置日志级别。

结论

UFW 作为 iptables 的前端应用,给用户提供了简单的接口界面。使用着不需要去记非常复杂的 iptables 语法。UFW 也使用了‘ 简单英语 ’作为它的参数。

Allow、deny、reset 就是他们当中的一部分。我相信有很多很多 iptables 前端应用,但 UFW 绝对是那些想要快速、简单的就建立自己的防火墙,而且还很安全的用户的最佳替代品之一。请输入 man ufw 查看 ufw 用户手册,来了解更多详情。

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

linux
相关资讯       Ubuntu防火墙  UFW 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款