AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[firewall](unix)

Martin Hope
Devs
Asked: 2025-03-14 16:34:12 +0800 CST

无法更改防火墙活动区域

  • 5

我正在尝试更新防火墙,但现在我想将其恢复为公开状态

所以基本上防火墙正在运行,而且

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0

添加一些端口和服务后,我在文档中看到,除 http 和 https 之外的入站流量应该被阻止,因此我将区域从公共区域更改为放弃起诉

firewall-cmd --set-default-zone=drop

事实证明这是一个错误的文档,因此我使用相同的命令将其恢复

firewall-cmd --set-default-zone=public

重新加载它,但仍然保持不变,即使我运行

 firewall-cmd --list-all

它现在显示公开而不是删除,但它是这样的

public
  target: default
  icmp-block-inversion: no
  interfaces:

我检查了活动区域,它仍然给我掉线,因为活动区域

firewall-cmd --get-active-zones
drop
  interfaces: eth0

我确保firewall-cmd --reload在更改后一直运行,但它保持drop为活动区域。我甚至重新启动了,但它仍然保持不变,我该如何将活动区域从 drop 更改为 public 呢?

我在 amazon linux 2 上运行 linux

firewall
  • 1 个回答
  • 14 Views
Martin Hope
Patrik Arven
Asked: 2025-01-11 00:41:47 +0800 CST

nft 忽略 lo 上的数据包吗?

  • 6

我有一个相当标准的 debian 10 系统,设置为路由器 (echo 1 > /proc/sys/net/ipv4/ip_forward),带有一个 WAN (=enp11s0) 接口和一个 DMZ (=enp10s0) 接口。WAN 接口绑定了几个公共 IP 地址,例如

 ip addr add 81.2.3.4/25 brd + dev enp11s0
 ip addr add 81.2.3.5/25 brd + dev enp11s0
 ip addr add 81.2.3.6/25 brd + dev enp11s0
 ip addr add 81.2.3.7/25 brd + dev enp11s0

DMZ 接口分配有一个本地 IP,即 10.2.10.10。下面的服务器名称 zz、zz-dmz 等均在 /etc/hosts 中声明。

我已经设置 NFT 在预路由钩子中执行 DNAT:

flush ruleset

define DMZ = enp10s0
define WAN = enp11s0
define WAN_NET = 81.2.3.0/25

define wan2dmz_map = {
                    www   : www-dmz,
                    zz    : zz-dmz,
                    dns0  : dns0-dmz,
                    dns1  : dns1-dmz,
                    drift78 : drift78-dmz
}

define dmz2wan_map = {
                    www-dmz   : www,
                    zz-dmz    : zz,
                    dns0-dmz  : dns0,
                    dns1-dmz  : dns1,
                    drift78-dmz : drift78
                }


table ip fail2ban {
    chain input {
        type filter hook forward priority 0;
    }
}

table ip global {
    map ip_mapWD {
        type ipv4_addr : ipv4_addr
        elements = $wan2dmz_map
    }
    map ip_mapDW {
        type ipv4_addr : ipv4_addr
        elements = $dmz2wan_map
    }

    # Accepted WAN ports
    chain SRV_ACCEPT {
        ip daddr www-dmz tcp dport {http,https} counter accept
        ip daddr zz-dmz tcp dport {http,https,smtp,pop3,imap2,submission,imaps,465} accept

        ip daddr drift78-dmz accept

        ip daddr dns0-dmz tcp dport 53 accept
        ip daddr dns1-dmz tcp dport 53 accept
    }


    chain input {
        type filter hook input priority 0; policy drop;

        iif {lo,$DMZ} accept
        ct state established,related accept
        ct state invalid drop
        ct status dnat accept

        ip saddr 127.0.0.0/8 drop

        ip protocol icmp icmp type echo-request limit rate over 1/second burst 5 packets drop
        ip frag-off & 0x1fff != 0 counter drop
        tcp flags & (fin|syn|rst|ack) != syn ct state new counter drop
        tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
        tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
        ip protocol icmp icmp type { echo-request, echo-reply, destination-unreachable, router-solicitation, router-advertisement, tr-problem } accept
    }

    chain output {
        type filter hook output priority 0;
    }

    chain forward {
        type filter hook forward priority 0; policy drop;

        iif {lo, $DMZ} accept
        ct state established,related accept
        ct state invalid drop
        ct status dnat accept

        ip protocol icmp icmp type echo-request limit rate over 1/second burst 5 packets drop
        ip frag-off & 0x1fff != 0 counter drop
        tcp flags & (fin|syn|rst|ack) != syn ct state new counter drop
        tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
        tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
        ip protocol icmp icmp type { echo-request, echo-reply, destination-unreachable, router-solicitation, router-advertisement, tr-problem } accept

        # Accept selected dest. ip/ports from WAN
        iif $WAN jump SRV_ACCEPT

        # VPN
        ip saddr 10.8.0.0/8 iifname tun0 accept

        # Log denied on WAN
        iif $WAN log prefix "[NFT] WAN: "
    }

    chain prerouting {
        type nat hook prerouting priority -100; policy accept;

        # Hairpin
        iif {lo,$DMZ} fib daddr type local dnat to ip daddr map @ip_mapWD

        # From WAN, change dest. to DMZ
        iif $WAN ip daddr $WAN_NET counter dnat to ip daddr map @ip_mapWD
    }

    chain postrouting {
        type nat hook postrouting priority 100;

        oif {tun0,$DMZ} counter masquerade;
    }

}

(zz 是服务器 zz 的公网 IP,zz-dmz 是 10.2.10.x 网络上的私有 IP)。

这有效:我可以通过探测 zz 从 WAN 端到达 zz-dmz。我还没有真正尝试过发夹。

现在的问题是:debian 10 机器上的本地服务(例如 exim4)查找公共 IP(“zz”)作为其域的 mx,并尝试连接到其公共 IP,但数据包不会重新路由到 zz-dmz。相反,它们卡在 lo 接口上,从 WAN 接口上的主 IP 地址反弹到公共 IP“zz”,而该 IP(显然)没有本地响应的服务。登录 debian 路由器并输入以下内容即可看到这一点

root@opax:~/firewall# telnet zz 25
Trying 81.2.3.4...
telnet: Unable to connect to remote host: Connection refused

Tcpdump 显示数据包在 lo 上。我以为规则

    iif {lo,$DMZ} fib daddr type local dnat to ip daddr map @ip_mapWD

也会替换 lo 上的目标 IP 并将它们重新路由到 $DMZ?

我错过了什么?

firewall
  • 1 个回答
  • 20 Views
Martin Hope
jhilgeman
Asked: 2024-07-20 06:37:33 +0800 CST

确定防火墙规则数量对性能的影响

  • 5

我正在努力调整 fail2ban 的性能,我读到过长的禁令可能会导致规则的积累,从而对性能产生负面影响,这让我感到疑惑,“对于 nftables 来说,是否有任何特定的想法认为规则数量‘太高’?”

我目前使用以 nftables 为后端的firewalld,大概有 10-20 条规则。

但是,有些服务器是专门为某些国家/地区的用户设计的,不应在这些国家/地区之外访问。如果我下载一个国家/地区 IP 数据库(例如 MaxMind),然后为允许列表之外的国家/地区的所有 CIDR 生成规则列表,我最终会得到近 17,000 条规则。

一方面,规则很多(恕我直言),但另一方面,只有来自指定国家/地区以外的垃圾邮件和黑客攻击(即使是合法出国旅行的用户也需要通过 VPN 进入美国才能访问)。

这种数量会对 nftables 产生负面影响吗?我认为影响与需要检查的数量有关,但我还没有找到一个好方法来查看或衡量规则的影响,而且我不想在事先不知道可能产生的影响的情况下开始加载数千条规则。

firewall
  • 1 个回答
  • 14 Views
Martin Hope
Hölderlin
Asked: 2024-06-15 04:45:51 +0800 CST

排除 nftables ssh 配置故障

  • 4

我可以通过连接ssh到我的云服务器。由于下面的规则集,服务器拒绝 ssh 连接。

我不使用自定义 ssh 端口。服务器有一个 IPv6 地址,以防万一。如果我应用此规则集,我会得到相同的结果。

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state { established, related } accept
        tcp dport 22 accept
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }

    chain forward {
        type filter hook forward priority filter; policy drop;
    }
}
firewall
  • 2 个回答
  • 67 Views
Martin Hope
metablaster
Asked: 2024-03-08 18:35:39 +0800 CST

nftables - 多播数据包不匹配

  • 6

我设置了一条匹配多播数据包的规则,如下所示:

add rule filter_4 new_out_4 meta pkttype multicast goto multicast_out_4

filter_4是 IPv4 表,new_out4是输出链,multicast_out_4是处理纯组播流量的链。

以下是排除不相关部分的 IPv4 表的更完整图片:

#!/usr/sbin/nft -f

add table filter_4

add chain filter_4 output {
    # filter = 0
    type filter hook output priority filter; policy drop;
}

add chain filter_4 multicast_out_4 {
    comment "Output multicast IPV4 traffic"
}

add chain filter_4 new_out_4 {
    comment "New output IPv4 traffic"
}

#
# Stateful filtering
#

# Established IPv4 traffic
add rule filter_4 input ct state established goto established_in_4
add rule filter_4 output ct state established goto established_out_4

# Related IPv4 traffic
add rule filter_4 input ct state related goto related_in_4
add rule filter_4 output ct state related goto related_out_4

# New IPv4 traffic ( PACKET IS MATCHED HERE )
add rule filter_4 input ct state new goto new_in_4
add rule filter_4 output ct state new goto new_out_4

# Invalid IPv4 traffic
add rule filter_4 input ct state invalid log prefix "drop invalid_filter_in_4: " counter name invalid_filter_count_4 drop
add rule filter_4 output ct state invalid log prefix "drop invalid_filter_out_4: " counter name invalid_filter_count_4 drop

# Untracked IPv4 traffic
add rule filter_4 input ct state untracked log prefix "drop untracked_filter_in_4: " counter name untracked_filter_count_4 drop
add rule filter_4 output ct state untracked log prefix "drop untracked_filter_out_4: " counter name untracked_filter_count_4 drop

在上面的设置中,包括多播在内的新输出流量通过规则进行匹配add rule filter_4 output ct state new goto new_out_4

这是new_out_4仅包含不起作用的相关(非工作)多播规则的链:

# Multicast IPv4 traffic ( THIS RULE DOES NOT WORK, SEE LOG OUTPUT BELOW)
add rule filter_4 new_out_4 meta pkttype multicast goto multicast_out_4

#
# Default chain action ( MULTICAST PACKET IS DROPPED HERE )
#
add rule filter_4 new_out_4 log prefix "drop new_out_4: " counter name new_out_filter_count_4 drop

以下是日志中有关丢弃的多播数据包的内容:

删除new_out_4:IN = OUT = eth0 SRC = 192.168.1.100 DST = 224.0.0.251 LEN = 163 TOS = 0x00 PREC = 0x00 TTL = 255 ID = 27018 DF PROTO = UDP SPT = 5353 DPT = 5353 LEN = 143

被丢弃的数据包被发送到目标地址224.0.0.251,这是多播地址,它应该与new_out_4链中的多播规则匹配,并且应该由multicast_out_4链处理,但没有。

相反,数据包不匹配,并被上面链中的默认丢弃规则丢弃new_out_4,请参阅注释(默认链操作)。

显然这意味着组播规则不起作用。

为什么组播规则不起作用?

预期的:

meta pkttype multicast匹配目标地址224.0.0.251

编辑:

系统信息:
内核:6.5.0-0.deb12.4-amd64
与早期内核 6.1 存在相同的问题

nftables:v1.0.6(莱斯特·古奇#5)

firewall
  • 1 个回答
  • 28 Views
Martin Hope
Harri
Asked: 2023-04-16 00:44:16 +0800 CST

如果“systemsetup -setremotelogin on”不起作用,如何在 MacOS ventura 上启用 sshd?

  • 5

我正在尝试在 MacOS (Ventura) 上启用 remotelogin。“sudo systemsetup -setremotelogin on”表示它已经启用(由 GUI 确认),但是如果我尝试从我的 Linux PC 登录,我会得到

% ssh [email protected]
ssh: connect to host 10.42.100.13 port 22: Connection timed out

系统应用防火墙和数据包过滤器都已被禁用(暂时)。“允许访问”已在首选项中设置为“所有用户”。在 Macbook 上使用 tcpdump 我看到了目标端口 22/tcp 的传入流量。Mac 没有回答。

Mac 本身上的“ssh localhost”或“ssh 10.42.100.13”没有问题。Mac 可以毫无问题地 ping 我的 Linux PC。

非常感谢每一个有用的提示。

firewall
  • 1 个回答
  • 21 Views
Martin Hope
Dave
Asked: 2022-09-22 08:08:32 +0800 CST

如何删除 nftables 链中的特定元素?

  • 2

当前系统:

  • 发行版:Ubuntu 20.04
  • 内核:5.4.0-124-generic
  • nft: nftables v0.9.3 (Topsy)

我是新手,正在学习 nftables,这是我目前的 nft 规则集:

$sudo nft list ruleset                                                                                                                                                                                           taxmd-dh016d-02: Wed Sep 21 12:09:08 2022

table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
                ip daddr 192.168.0.1 drop
        }
}

我想ip daddr 192.168.0.1 drop从输出链中删除。我尝试了以下方法:

sudo nft del rule inet filter output ip daddr 192.168.0.1 drop
sudo nft delete rule inet filter output ip daddr
sudo nft 'delete element ip daddr 192.168.0.1 drop'
sudo nft 'delete element ip'
sudo nft delete rule filter output ip daddr 192.168.0.1 drop

但没有任何效果,我不断收到此错误:

Error: syntax error, unexpected inet
delete inet filter chain output ip daddr 192.168.0.1 drop
       ^^^^

为什么我不能删除特定元素?我认为这将是直截了当的,但我错过了一些东西。

firewall delete
  • 1 个回答
  • 27 Views
Martin Hope
Synthetic Ascension
Asked: 2022-09-17 05:29:41 +0800 CST

nftables 命名设置更新延迟

  • 2

我有以下内容nftables.conf:

table inet nat {

        set blocked {
            type ipv4_addr
        }
        
        chain postrouting {
            type nat hook postrouting priority 100; policy accept;

            ip daddr @blocked counter drop;
            
            oifname "ppp0" masquerade;
            iifname "br-3e4d90a574de" masquerade;
        }
    }

该集合blocked是一个可以动态更新的命名集合。正是在这个集合中,我希望有一个要阻止的 IP 集合,每n分钟更新一次。为了保持原子性,我没有使用以下 ( updateblock.sh) 来更新列表:

#!/bin/bash

sudo nft flush set inet nat blocked
sudo nft add element inet nat blocked {$nodes}

而是blockediplist.ruleset:

#!/usr/sbin/nft -f

flush set inet nat blocked
add element inet nat blocked { <example_ip> }

我使用以下命令顺序:

nft -f /etc/nftables.conf
nft -f blockediplist.ruleset

但是,更改blockediplist.ruleset不会立即应用。我知道规则集现在包含新 IP,因为 IP 存在于nft list ruleset和中nft list set inet nat blocked。即使只是这样,nft add element inet nat blocked { <IP> }IP 也不会立即被阻止。

另一种方法是定义一个新集合并重新加载nftables.conf整个集合,尽管我认为这将是一种糟糕且低效的做事方式。

有没有办法强制blockediplist.ruleset立即应用更改?

更新:我刚刚发现,当我阻止一个我没有 ping 过的 IP 时,它会立即被阻止。但是,在中间 ping 将 IP 添加到阻止列表时,需要一段时间才能被阻止。当我尝试使用netdev ingressIP 设置时,会立即被阻止。也许这种调查途径可能会揭示一些东西。

firewall nftables
  • 1 个回答
  • 45 Views
Martin Hope
bomben
Asked: 2022-09-14 11:31:58 +0800 CST

为什么 UFW 阻止通过 Wireguard 访问 SSH?

  • 1

192.168.100.50通过接口连接到192.168.178.20互联网。wg0

wg0正在打开隧道10.102.242.1/24。

Wireguard 客户端界面具有10.102.242.2.

通过上的静态路由,192.168.100.1我可以使用从任何设备连接192.168.100.0/24到wireguard客户端ssh [email protected]

但我只能在我禁用ufwwireguard 服务器上的 时才能这样做。

我试图22在服务器的ufwfrom上打开端口anywhere,允许它on wg0,allow IN并且OUT. 但没有任何改变。

我对此有什么不明白的?

To                         Action      From
--                         ------      ----
51820/udp                  ALLOW       Anywhere                   # allow-wireguard
22                         ALLOW       192.168.100.0/24           # SSH
22                         ALLOW       Anywhere                   # SSH test
22 on wg0                  ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)              # SSH test
51820/udp (v6)             ALLOW       Anywhere (v6)              # allow-wireguard
22 (v6) on wg0             ALLOW       Anywhere (v6)             

22                         ALLOW OUT   Anywhere on wg0           
22 (v6)                    ALLOW OUT   Anywhere (v6) on wg0      

Anywhere on eth0           ALLOW FWD   10.102.242.0/24 on wg0  

traceroute 192.168.178.20也表现出相同的行为。与ufw active:

traceroute to 192.168.178.20 (192.168.178.20), 64 hops max, 52 byte packets
 1  192.168.100.1 (192.168.100.1)  2.824 ms  1.136 ms  1.016 ms
 2  192.168.100.50 (192.168.100.50)  3.566 ms  1.557 ms  1.337 ms
 3  *

它将ufw inactive立即连接:

 8  * * *
 9  * 192.168.178.20 (192.168.178.20)  20.973 ms  16.469 ms
routing firewall
  • 1 个回答
  • 57 Views
Martin Hope
ebsf
Asked: 2022-06-12 12:43:23 +0800 CST

systemd Firewall .service 单位:Type=exec 还是 Type=oneshot?

  • 0

我正在调试防火墙 .service 单元,出现了一些问题。

其中一个问题是该单位的最佳服务类型,无论是 exec 还是 oneshot。在我的搜索中几乎没有出现两者的比较,可能是因为 exec 是 systemd (v.249 IIRC) 的一个相对较新的添加。

作为背景,该单元(称为 iptables.service)旨在通过在网络启动之前(即network-pre.target 之前)运行 Bash 脚本(称为 iptables.sh)来激活和配置防火墙,例如,

ExecStart=/bin/bash -c '/home/locsh/iptables.sh'

Type=oneshot具有不进入“活动”状态的优点,因此它随后可以被重新启动或重新激活,例如,通过计时器单元。在大多数示例中,它也是这两种类型中更常见的一种,尽管没有解释。

type=exec的好处是会延迟后续单元的启动,直到主服务执行完毕。这似乎对防火墙 .service 单元非常有意义,因为网络应该依赖于成功运行的脚本并保持关闭,例如,如果由于某种原因相关的 .mount 单元尚未激活而暂时无法读取脚本.

在任何一种情况下, Restart=on-failure似乎都是一个明显而谨慎的补充。

第一个问题是,无论出于何种原因,其中一个是否会更好。

第二个问题是 Type=exec 是否会因为延迟后续单元的启动而在某些边缘情况下引入微妙的排序周期,无论是否有“Restart=on-failure”,部分原因是单元的排序依赖性

Before=network-pre.target

在引导过程中相对较早。

shell-script firewall
  • 1 个回答
  • 68 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve