我有一个使用Ubuntu的EC2实例.我用过sudo ufw enable
之后才允许使用mongodb端口
sudo ufw allow 27017
Run Code Online (Sandbox Code Playgroud)
当ssh连接断开时,我无法重新连接
我正在尝试在Ansible中配置UFW,如下所示:
- name: Set firewall default policy
ufw: state=enabled policy=reject
sudo: true
- name: Allow SSH in UFW
ufw: rule=allow port=22 proto=tcp
Run Code Online (Sandbox Code Playgroud)
问题是,只要执行"设置防火墙默认策略",ansible就会断开与服务器的连接:
TASK: [Set firewall default policy] *******************************************
changed: [xxx]
TASK: [Allow SSH in UFW] ******************************************************
fatal: [xxx] => {'msg': 'FAILED: [Errno 61] Connection refused', 'failed': True}
FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)
对我来说,reject
在应用策略时,SSH会话似乎已终止.我该如何解决这个问题?我正在使用用户名/密码身份验证(即没有SSH密钥)登录,如果这有任何区别.
我正在使用嵌入式Jetty运行websocket服务器.
当我从同一台机器(localhost)建立连接时它按预期工作,但是当我尝试从另一台机器连接时,我收到错误"Host is down"(也称为EHOSTDOWN
).
日志说Jetty正在侦听0.0.0.0地址,所以它应该接受来自任何地方的连接,并且12345
允许ufw
所有协议的端口(在这个例子中).我也试过暂时禁用ufw
,但没有效果.
这是我的代码(这是一个简单的websocket echo-server,我删除了所有不相关的内容):
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
import java.io.IOException;
public class EchoServerLauncher {
static final int PORT = 12345;
public static void main(String[] args) {
startServer(PORT);
}
private static void startServer(final int port) {
new EchoServer(port).startAndJoin();
}
}
class EchoServer extends WebsocketServerBase {
static final String PATH = "/hello/";
public EchoServer(final int port) {
super(port);
} …
Run Code Online (Sandbox Code Playgroud) 我已经按照许多在线教程在四个 Raspberry Pi 4 上设置了 Kubernetes 集群。我最终使用 Flannel 作为网络插件,因为它似乎是唯一一个真正适用于 RPi 的插件,根据2017 年的本指南,pod 网络 CIDR 为 10.244.0.0/16 。几乎一切正常……kube-system 命名空间中的所有基本 pod 都在运行/健康,我可以拉下图像并启动新容器。起初我无法获得任何 pod 日志,但是通过在每个节点上打开端口 10250 很快就解决了这个问题。
但是DNS解析好像还是有问题。我应该澄清一下,主机上的 DNS 解析显然有效,因为集群能够下载我指定的任何容器映像。但是一旦容器运行,它就无法“拨出”任何东西。作为测试,我arm32v7/buildpack-deps:latest
在 pod 中运行容器。它可以很好地从 Docker 集线器中提取图像。但是当我进入它并简单地输入curl https://www.google.com
它时,它会在最终超时之前挂起。我启动的任何需要与外部 Internet 交互的 Pod 也是如此:它们挂起、挂起、挂起。
以下是我已经在每个节点上运行的所有与网络相关的命令:
sudo iptables -P FORWARD ACCEPT
sudo iptables -A FORWARD -i cni0 -j ACCEPT
sudo iptables -A FORWARD -o cni0 -j ACCEPT
sudo ufw allow ssh
sudo ufw allow 443 # can't remember why i ran this one …
Run Code Online (Sandbox Code Playgroud) 我正在阅读有关使用 kubeadm 设置 Kubernetes 集群的文档。我在三台虚拟机上运行 Ubuntu Server 20.04,但目前只使用其中一台,然后再对另外两台虚拟机进行配置。我已经准备好了容器并禁用了交换,但在启用所需端口方面遇到了困难。我首先使用 OpenSSH 应用程序配置文件将 ufw 配置为仅允许来自端口 22 的传入流量。在阅读了启用所需端口的信息后,我运行了以下命令:
sudo ufw allow 6443
,
sudo ufw allow 6443/tcp
, 和
sudo ufw allow 6443/udp
。
当我尝试使用 telnet 连接时,失败:
telnet 127.0.0.1 6443
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)
...当使用私有 IP 时,其他计算机通过以下方式连接到它:
telnet 192.168.50.55 6443
Trying 192.168.50.55...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)
如果我告诉 telnet 使用端口 22,它就可以正常工作:
telnet 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'. …
Run Code Online (Sandbox Code Playgroud) 有一台安装了 Ubuntu 20 的服务器。它安装了 Docker,并且正在运行多个容器。这reverseproxy
是一个 Nginx,应该接收 80 和 443 上的流量,并将其路由到容器。它工作完美。但现在我想用 ufw 阻止所有流量(除了 80、443 和 ssh)。
不知何故,http 端口 3000、3001、8081、15672(容器发布的端口)上的流量仍然可以通过。
\n为什么?如何使用 ufw 阻止所有流量?
\n超频配置
\nwww@broowqh:~$ sudo ufw status verbose\nStatus: active\nLogging: on (low)\nDefault: deny (incoming), allow (outgoing), deny (routed)\nNew profiles: skip\n\nTo Action From\n-- ------ ----\n22/tcp ALLOW IN Anywhere\n9000 ALLOW IN Anywhere\n3001 DENY IN Anywhere\n3001/tcp DENY IN Anywhere\n3001/udp DENY IN Anywhere\n22/tcp (v6) ALLOW IN Anywhere (v6)\n9000 (v6) ALLOW IN Anywhere (v6)\n3001 (v6) DENY IN Anywhere (v6)\n3001/tcp (v6) DENY …
Run Code Online (Sandbox Code Playgroud) 我的服务器上运行着 UFW。当我重新启动它时:
$sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
1194/udp ALLOW Anywhere
5550 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
1194/udp (v6) ALLOW Anywhere (v6)
5550 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试运行它时,我的端口 8000 和 1194 目前被阻止。
当我跑步时:
$sudo ufw disable
$sudo ufw enable
Run Code Online (Sandbox Code Playgroud)
然后端口打开。当我之后运行状态时,它与之前粘贴的完全相同。
到目前为止,我在单 VPC 上使用 Docker 手工制作托管解决方案,在主机上安装了fail2ban,并查看来自 Nginx 容器的 Docker 日志(每个服务器可以托管多个网站,通过 Nginx 代理提供服务)
我想知道如何使用 Kubernetes 实现相同的功能,特别是在 X 次尝试后阻止对 /wp-admin 访问的 POST 请求?
我考虑过为 Nginx 代理(K8s 中的 Ingress)构建一个自定义 Docker 镜像,包括 Fail2ban;但也许有一个更简单的解决方案:网络策略?
如果我配置 UFW 和 Amazon EC2 安全组,这将覆盖另一个安全组,或者它们是否可以毫无问题地共存?
我正在运行一个docker容器,其端口9000:9000
绑定到主机,但我也启用了ufw.我允许的唯一端口是22, 80, 443
.
那么为什么我能够使用主机的IP地址连接到这个容器呢?不9000
应该阻塞端口ufw
?
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14417c4f71fb dockerui/dockerui "/dockerui" 2 seconds ago Up 2 seconds 0.0.0.0:9000->9000/tcp docker_ui root@docker:~# ufw status Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
启用ufw时,默认情况下不是所有端口都被阻止了吗?
ufw ×10
docker ×3
firewall ×3
kubernetes ×3
ubuntu ×3
amazon-ec2 ×2
ubuntu-14.04 ×2
ansible ×1
apache ×1
coredns ×1
fail2ban ×1
http ×1
iptables ×1
java ×1
jetty ×1
networking ×1
nginx ×1
port ×1
server ×1
websocket ×1