当前位置: 首页>>技术教程>>正文


linux – 如何在Ubuntu上设置简单的防火墙?

, ,

问题描述

有人可以通过配置示例给出一些简单步骤,如何在Ubuntu上设置简单防火墙(仅使用控制台)吗?仅应允许ssh,http和https访问。

最佳方案

sudo ufw默认拒绝

sudo ufw允许http

须藤ufw允许https

须藤UFW允许SSH

sudo ufw启用

次佳方案

使用此脚本。

只需确定是否要允许传入的ICMP(ping)即可。

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT

第三种方案

如对另一个答案的注释所述,您不想在允许ssh端口之前断开连接。从手册页:

“远程管理

当运行ufw enable或通过其initscript启动ufw时,ufw将刷新其链。这是必需的,以便ufw可以保持一致的状态,但是它可能会删除现有的连接(例如ssh)。 ufw支持在启用防火墙之前添加规则,因此管理员可以执行以下操作:

ufw allow proto tcp from any to any port 22

在运行“ ufw enable”之前。规则仍将被清除,但是启用防火墙后ssh端口将打开。请注意,“ ufw”启用后,ufw不会在添加或删除规则时刷新链条(但是在修改规则或更改默认策略时会刷新)。”

因此,这里是一种使用脚本进行设置的方法。运行此脚本时,您将注销,但是运行该脚本后,可以再次通过ssh登录。

将以下内容放入脚本中,并将其命名为start-firewall.sh

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

然后使其可执行并通过运行

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

要了解更多信息,请阅读man page

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9437.html,未经允许,请勿转载。