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
    • 最新
    • 标签
主页 / user-334394

tomsk's questions

Martin Hope
tomsk
Asked: 2024-11-10 04:26:00 +0800 CST

防火墙没有阻止,即使应该阻止

  • 5

我使用 AlmaLinux 9,我了解到有新的后端服务 nftables 可以通过 iptables-nft 命令进行管理,所以我设置了一些规则,我的规则集如下所示:

# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
    chain DOCKER {
        iifname "docker0" counter packets 0 bytes 0 return
        iifname != "docker0" tcp dport 8080 counter packets 3 bytes 180 dnat to 172.17.0.2:80
        iifname != "docker0" tcp dport 9001 counter packets 4 bytes 240 dnat to 172.17.0.3:9001
    }

    chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 172.17.0.0/16 oifname != "docker0" counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.0/16 oifname != "docker0" counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.0/16 oifname != "docker0" counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.2 ip daddr 172.17.0.2 tcp dport 9001 counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.2 ip daddr 172.17.0.2 tcp dport 9001 counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.2 ip daddr 172.17.0.2 tcp dport 80 counter packets 0 bytes 0 masquerade
        ip saddr 172.17.0.3 ip daddr 172.17.0.3 tcp dport 9001 counter packets 0 bytes 0 masquerade
    }

    chain PREROUTING {
        type nat hook prerouting priority dstnat; policy accept;
        fib daddr type local counter packets 236 bytes 12653 jump DOCKER
        fib daddr type local counter packets 39 bytes 1732 jump DOCKER
        fib daddr type local counter packets 39 bytes 1732 jump DOCKER
        fib daddr type local counter packets 23 bytes 1056 jump DOCKER
        fib daddr type local counter packets 23 bytes 1056 jump DOCKER
    }

    chain OUTPUT {
        type nat hook output priority dstnat; policy accept;
        ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
        ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
        ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
    }
}
# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
    chain FORWARD {
        type filter hook forward priority filter; policy drop;
        counter packets 178 bytes 55546 jump DOCKER-USER
        counter packets 178 bytes 55546 jump DOCKER-ISOLATION-STAGE-1
        oifname "docker0" ct state related,established counter packets 84 bytes 11338 accept
        oifname "docker0" counter packets 7 bytes 420 jump DOCKER
        iifname "docker0" oifname != "docker0" counter packets 87 bytes 43788 accept
        iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
    }

    chain DOCKER-USER {
        counter packets 178 bytes 55546 return
    }

    chain INPUT {
        type filter hook input priority filter; policy drop;
        ct state established,related counter packets 195 bytes 18089 accept
        tcp dport 22 counter packets 2 bytes 120 accept
        tcp dport 443 counter packets 0 bytes 0 accept
    }

    chain DOCKER {
        ip daddr 172.17.0.2 iifname != "docker0" oifname "docker0" tcp dport 80 counter packets 3 bytes 180 accept
        ip daddr 172.17.0.3 iifname != "docker0" oifname "docker0" tcp dport 9001 counter packets 4 bytes 240 accept
    }

    chain DOCKER-ISOLATION-STAGE-1 {
        iifname "docker0" oifname != "docker0" counter packets 87 bytes 43788 jump DOCKER-ISOLATION-STAGE-2
        counter packets 178 bytes 55546 return
    }

    chain DOCKER-ISOLATION-STAGE-2 {
        oifname "docker0" counter packets 0 bytes 0 drop
        counter packets 87 bytes 43788 return
    }
}

该规则集已保存,/etc/sysconfig/nftables.conf因此每次服务器重新启动时都会加载它,正如您在链 INPUT 中所看到的,除端口 22 和 443 之外的所有内容都应被删除,因此我尝试在端口 8080 上运行测试 nginx 服务器,并且我仍然可以访问它,我的防火墙没有阻止任何东西..为什么?即使 INPUT 策略设置为删除。

编辑2:

所以我读到docker使用DOCKER-USER链来制定用户定义的规则,所以我这样做了:

table ip filter {
    chain FORWARD {
        type filter hook forward priority filter; policy drop;
        counter packets 0 bytes 0 jump DOCKER-USER
        counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-1
        oifname "docker0" ct state related,established counter packets 0 bytes 0 accept
        oifname "docker0" counter packets 0 bytes 0 jump DOCKER
        iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 accept
        iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
        oifname "docker0" ct state established,related counter packets 184 bytes 27570 accept
        oifname "docker0" ct state established,related counter packets 85 bytes 28483 accept
    }

    chain DOCKER-USER {
        counter packets 534 bytes 178277 return
        tcp dport 8080 drop
        tcp dport 9001 drop
    }

    chain INPUT {
        type filter hook input priority filter; policy drop;
        ct state established,related counter packets 584 bytes 54071 accept
        tcp dport 22 counter packets 8 bytes 460 accept
    }

    chain DOCKER {
        ip daddr 172.17.0.2 iifname != "docker0" oifname "docker0" tcp dport 80 counter packets 0 bytes 0 accept
        ip daddr 172.17.0.3 iifname != "docker0" oifname "docker0" tcp dport 9001 counter packets 0 bytes 0 accept
    }

    chain DOCKER-ISOLATION-STAGE-1 {
        iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-2
        counter packets 0 bytes 0 return
    }

    chain DOCKER-ISOLATION-STAGE-2 {
        oifname "docker0" counter packets 0 bytes 0 drop
        counter packets 0 bytes 0 return
    }
}

但仍然不起作用,我可以访问端口 8080 和 9001,甚至尝试重新启动服务器。

编辑3:

将我的链改为:

chain DOCKER-USER {
    tcp dport 8080 drop
    tcp dport 9001 drop
    return
}

重新启动服务器,端口 8080 仍然可以访问

iptables
  • 1 个回答
  • 72 Views
Martin Hope
tomsk
Asked: 2018-09-15 12:45:06 +0800 CST

我应该在 iptables 中允许 IP 0.0.0.0 吗?

  • 0

我刚刚创建了新的 VPS 并设置了 iptables,我在日志中看到了这一点:

 IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:50:56:94:c9:82:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x00 PREC=0x00 TTL=16 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308

我真的很想知道源 0.0.0.0 和目标 255.255.255.255 是什么意思。它每 2 秒发送一次数据包。

我知道 IP 0.0.0.0 类似于环回 (127.0.0.1),但外部任何人都可以访问。所以我真的很想知道它可能是什么,它是带有 Debian 9 的新 VPS,没有运行任何服务器。

所以我不知道我是否应该允许它(出于安全原因)以及允许它的最佳规则是什么,是否有任何规则允许所有这些类型的环回地址?

networking
  • 1 个回答
  • 991 Views
Martin Hope
tomsk
Asked: 2018-09-08 13:24:18 +0800 CST

在生产服务器上管理 MySQL 的安全方法

  • 0

我有在 Debian 9 上运行的生产服务器。我想问你管理 MySQL/MariaDB 服务器(在生产服务器上)的安全方法是什么。

MySQL/MariaDB 服务器仅在 localhost 上侦听,因为出于安全原因,我不想从 Internet 访问。

因此,如果我想要更改或查找某些内容,那么我必须使用 cli 登录 MySQL/MariaDB 服务器并编写 SQL 查询。但我厌倦了。

我想问你有什么可能性或以安全和舒适的方式管理 MySQL/MariaDB 服务器的最佳方式是什么。

我找到了一些解决方案,但我不知道它们是否正确,所以我写了它们。

解决方案 1

为 MySQL/MariaDB 服务器找到某种前端 cli 软件,例如 Midnight Commander(是的,我知道 Midnight Commander 就像文件浏览器,但即使它是 cli 软件,它也有那种“GUI 感觉”),但我不知道是否该软件存在。

解决方案 2

在没有 apache 的情况下安装 phpMyAdmin(在 PHP 中使用 -S 参数)以避免一些安全风险,使用防火墙阻止 phpMyAdmin 的端口(无法从 Internet 访问,只能从 localhost 访问)并仅通过 SSH 隧道连接到 phpMyAdmin。

如果你知道更好的东西,我会很乐意提供任何建议。

mysql
  • 2 个回答
  • 314 Views
Martin Hope
tomsk
Asked: 2018-09-02 01:17:43 +0800 CST

使用不同的客户端连接到 OpenVPN 服务器

  • 0

如果我在我的 Linux 机器上创建 OpenVPN 服务器,我可以使用不同的客户端(例如 SoftEther VPN 或 Windows 中的内置 VPN 客户端)连接到该服务器(从 Windows)吗?

或者我必须使用 OpenVPN 客户端?

vpn
  • 1 个回答
  • 134 Views
Martin Hope
tomsk
Asked: 2018-04-17 10:40:45 +0800 CST

iptables 中的跳过规则

  • 0

想象一下,我在 iptables 中有 3 条规则:

  1. 检查 IP 是否在 ipset 中列入白名单,然后接受。
  2. 检查用户是否尝试连接到端口 22,然后将其删除。
  3. 检查用户是否尝试连接到端口 80,然后接受它。

这是规则的示例(不是真实的):

iptables -A INPUT -m set --match-set whitelist src -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

但是我想这样做,如果用户被列入白名单(第一条规则),那么不要接受它,而是将其跳过/重定向到第三条规则(跳过第二条规则),就像这张照片上一样(我知道如果数据包被接受,那么完成了,这只是示例,我不知道如何进行跳转):

图片

所以我想问你,我怎样才能在链中设置这个“跳过”。

子问题:如果可能的话,是否也可以将其重定向到另一个链到特定规则?

更新:真实场景

iptables -A INPUT -m set --match-set whitelist src -j ACCEPT

iptables -A INPUT -m geoip --src-cc DE -j DROP

... other rules ...

如您所见,我只将德国列入白名单,如果德国的 IP 通过第二条规则,那么我将检查它是否有其他规则,但我也使用列入白名单的 IP。

因此,如果某些 IP 被列入白名单(主要不是德国),那么我不想检查它是否是德国 IP(因为它会失败),而是 IP 应该跳转到其他规则(第 3 行)并跳过国家/地区检查。

去功能呢?

iptables
  • 2 个回答
  • 2240 Views
Martin Hope
tomsk
Asked: 2018-04-16 06:28:42 +0800 CST

无法在 iptables 中设置 GeoIP 规则

  • 1

我尝试添加此规则:

iptables -A INPUT -m geoip ! --src-cc CZ,SK -j DROP

我根据这个答案设置了 GeoIP 支持:Ubuntu IPTables allow only allow 1 country | 超级用户

但它不起作用,因为我收到消息:iptables:No chain/target/match by that name.

我使用 Debian 9。

更新:

运行后的结果uname -a

Linux Andromeda 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux

我该如何解决?

debian
  • 1 个回答
  • 1953 Views
Martin Hope
tomsk
Asked: 2018-04-16 04:48:38 +0800 CST

iptables 的性能

  • 1

我想问一下iptables的性能是什么。

假设我将一些 IP 地址列入白名单和黑名单,我阻止了大约 10 000 多个 IP 地址,所以每个 IP 都像新规则一样。

我不知道它有多快,因为假设有人对我进行 DDoS 攻击,带宽达到了一些 Gbps,iptables 可以处理吗?

CPU:1 核 Intel ® Xeon® E5-2650L v4

并且有可能使 iptables 更快吗?例如,我会将所有这些 IP 地址“捆绑”到 1 条规则中。

iptables
  • 2 个回答
  • 4014 Views
Martin Hope
tomsk
Asked: 2018-04-14 14:45:12 +0800 CST

在 UFW 中插入缓慢的规则

  • 1

我需要在我的防火墙中阻止大约 10 000 个 IP 地址,我在文件中有所有 IP 地址,所以我从命令行运行此命令:

while read line; do sudo ufw insert 1 deny from $line; done < IP_addresses

它有效,它插入规则,但它很慢,它每秒插入大约 1 条规则,有可能让它更快吗?

它在 Debian 9 上运行,具有 1 个至强 (VPS) 的 CPU 内核。

ufw
  • 1 个回答
  • 1358 Views
Martin Hope
tomsk
Asked: 2018-02-22 08:37:24 +0800 CST

Apache2 - 虚拟主机显示另一个虚拟主机的内容

  • 1

我在 Debian 9 上运行 Apache2 服务器。我在/etc/apache2/sites-enabled/文件夹中有 2 个虚拟主机配置。

第一的:

Options FollowSymLinks

<Directory "/srv/">
        Options FollowSymLinks ExecCGI
        Require all granted
</Directory>

<Directory "/srv">
        Options FollowSymlinks ExecCGI
        Require all granted
</Directory>

<VirtualHost *:80>
       ServerName domain.sk
       ServerAlias dev.domain.sk
       DocumentRoot /srv/domain.sk/!www
       <Directory /srv/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

第二:

Options FollowSymLinks

<Directory "/home/test/">
        Options FollowSymLinks ExecCGI
        Require all granted
</Directory>

<VirtualHost *:80>
       ServerName domain.sk
       ServerAlias test.dev.domain.sk
       DocumentRoot /home/test/domain.sk/!www
       <Directory /home/test/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

问题是如果我去dev.domain.sk它是可以的,但如果我去test.dev.domain.sk它会显示内容dev.domain.sk而不是内容test.dev.domain.sk。如果我禁用第一个虚拟主机配置,那么我会看到 的内容test.dev.domain.sk,所以它看起来像dev.domain.sk“覆盖”那个test.dev.domain.sk,我该如何解决?

virtualhost
  • 1 个回答
  • 26 Views
Martin Hope
tomsk
Asked: 2018-02-09 02:09:15 +0800 CST

如何在 Debian 9 上安装 MySQL 服务器

  • 1

我尝试使用命令安装 mysql 服务器apt-get install mysql-server mysql-common

但输出是:

Reading package lists... Done
Building dependency tree
Reading state information... Done
mysql-common is already the newest version (5.8+1.0.2).
The following additional packages will be installed:
  default-mysql-server mariadb-client-10.1 mariadb-client-core-10.1
  mariadb-common mariadb-server-10.1 mariadb-server-core-10.1
Suggested packages:
  mariadb-test netcat-openbsd tinyca
The following NEW packages will be installed:
  default-mysql-server mariadb-client-10.1 mariadb-client-core-10.1
  mariadb-common mariadb-server-10.1 mariadb-server-core-10.1 mysql-server
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.8 MB/18.8 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n]

如您所见,它不会安装 mysql服务器,但mariadb-server-10.1为什么?

我想要mysql而不是mariadb。

来源列表:

deb http://ftp.fr.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stretch main contrib non-free

# Security
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

# Backports
deb http://ftp.debian.org/debian/ stretch-backports main contrib non-free
mysql
  • 1 个回答
  • 2636 Views
Martin Hope
tomsk
Asked: 2017-12-05 06:44:29 +0800 CST

SMTP 错误 554 5.7.1 和 221 2.7.0

  • 0

我有一个连接到虚拟主机以使用 SMTP 协议发送邮件的专用服务器,但我收到 554 5.7.1 和 221 2.7.0 错误并且电子邮件不会发送。完整的 SMTP 日志如下。

这是一个用 Perl 编写的用于发送电子邮件的脚本:

    my $mail = "mail.bellakabelky.sk";
    my $pass = "secret";
    my $user = "mail\@bellakabelky.sk";
    my $to = "tomsk.slovak\@gmail.com";

    use Data::Dumper;
    use Net::SMTP;
    use Mail::Mailer qw(sendmail);

    my $smtp = Net::SMTP->new(
                       Host => $mail,
                       Port => '25',
                       Hello => 'dev.bellakabelky.sk',
                       Timeout => 30,
                       Debug   => 1,
                      );
    print Dumper($smtp);
    $smtp->auth($user,$pass);
    $smtp->mail($user);
    $smtp->to($to);
    $smtp->recipient($to);
    $smtp->data();
    $smtp->datasend("To: Tomsk <$to>\r\n");
    $smtp->datasend("From: Mail <$user>\r\n");
    $smtp->datasend("Return-Path: $user\r\n");
    $smtp->datasend("Reply-To: $user\r\n");
    $smtp->datasend("Subject: Subject\r\n");
    $smtp->datasend("\r\n");
    $smtp->datasend("hello");
    $smtp->dataend();
    $smtp->quit;

我得到 554 5.7.1 和 221 2.7.0 错误。这是来自 SMTP 的日志:

Net::SMTP>>> Net::SMTP(2.33)
Net::SMTP>>>   Net::Cmd(2.30)
Net::SMTP>>>     Exporter(5.71)
Net::SMTP>>>   IO::Socket::INET(1.35)
Net::SMTP>>>     IO::Socket(1.38)
Net::SMTP>>>       IO::Handle(1.35)
Net::SMTP=GLOB(0x51d1810)<<< 220 mail4-1.hostmaster.sk ESMTP Postfix
Net::SMTP=GLOB(0x51d1810)>>> EHLO dev.bellakabelky.sk
Net::SMTP=GLOB(0x51d1810)<<< 250-mail4-1.hostmaster.sk
Net::SMTP=GLOB(0x51d1810)<<< 250-PIPELINING
Net::SMTP=GLOB(0x51d1810)<<< 250-SIZE 104857600
Net::SMTP=GLOB(0x51d1810)<<< 250-ETRN
Net::SMTP=GLOB(0x51d1810)<<< 250-STARTTLS
Net::SMTP=GLOB(0x51d1810)<<< 250-AUTH PLAIN LOGIN
Net::SMTP=GLOB(0x51d1810)<<< 250-AUTH=PLAIN LOGIN
Net::SMTP=GLOB(0x51d1810)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x51d1810)<<< 250 8BITMIME
$VAR1 = bless( \*Symbol::GEN1, 'Net::SMTP' );
Net::SMTP=GLOB(0x51d1810)>>> AUTH PLAIN bWFpbEBiZWxsYWthYmVsa3kuc2sAbWFpbEBiZWxsYWthYmVsa3kuc2sARXNob3AxMjNrYWJlbGt5
Net::SMTP=GLOB(0x51d1810)<<< 235 2.7.0 Authentication successful
Net::SMTP=GLOB(0x51d1810)>>> MAIL FROM:<mail@bellakabelky.sk>
Net::SMTP=GLOB(0x51d1810)<<< 250 2.1.0 Ok
Net::SMTP=GLOB(0x51d1810)>>> RCPT TO:<tomsk.slovak@gmail.com>
Net::SMTP=GLOB(0x51d1810)<<< 554 5.7.1 <mail@bellakabelky.sk>: Sender address rejected: Your mail account (mail@bellakabelky.sk) was compromised. Please change your password immediately after next login and contact technical support.
Net::SMTP=GLOB(0x51d1810)>>> RCPT TO:<tomsk.slovak@gmail.com>
Net::SMTP=GLOB(0x51d1810)<<< 554 5.7.1 <mail@bellakabelky.sk>: Sender address rejected: Your mail account (mail@bellakabelky.sk) was compromised. Please change your password immediately after next login and contact technical support.
Net::SMTP=GLOB(0x51d1810)>>> DATA
Net::SMTP=GLOB(0x51d1810)<<< 554 5.5.1 Error: no valid recipients
Net::SMTP=GLOB(0x51d1810)>>> To: Tomsk <tomsk.slovak@gmail.com>
Net::SMTP=GLOB(0x51d1810)>>> From: Mail <mail@bellakabelky.sk>
Net::SMTP=GLOB(0x51d1810)>>> Return-Path: mail@bellakabelky.sk
Net::SMTP=GLOB(0x51d1810)>>> Reply-To: mail@bellakabelky.sk
Net::SMTP=GLOB(0x51d1810)>>> Subject: Subject
Net::SMTP=GLOB(0x51d1810)>>>
Net::SMTP=GLOB(0x51d1810)>>> hello
Net::SMTP=GLOB(0x51d1810)>>> .
Net::SMTP=GLOB(0x51d1810)<<< 221 2.7.0 Error: I can break rules, too. Goodbye.
Net::SMTP=GLOB(0x51d1810)>>> QUIT
Net::SMTP: Unexpected EOF on command channel at (eval 187) line 49.

我真的不知道,哪里可能有问题,我一直在寻找解决方案,但我没有找到任何东西。

smtp
  • 1 个回答
  • 1862 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve