标签: iptables

防止在配置 SSH 和 iptables 时被锁定

当您通过 SSH 配置 iptables 或 SSH 并且数据中心在数千公里之外(并且很难让人在那里插入 KVM)时,有哪些标准做法可以防止将自己锁定在外面?

ssh iptables datacenter

8
推荐指数
1
解决办法
4997
查看次数

iptables:匹配桥接接口的数据包

我正在构建一个基于 iptables 的防火墙配置工具,并试图让“线路中的颠簸”场景工作。

给定一个设置有eth0eth1在桥梁br0和第三界面eth2

    |          |         |
   eth0       eth1      eth2
    | == br0== |         |
          |              |
          |              |
         --- linux node ---
Run Code Online (Sandbox Code Playgroud)

在这种情况下,假设我希望 TCP 端口 80 流量在进入连接到的网络时被丢弃eth0,但允许它进入eth1.

因此,我试图可靠地匹配通过特定接口发出的数据包eth0

如果我在filter表中添加以下 iptables 规则:

-A FORWARD -o br0 --physdev-out eth0 -j LOG
Run Code Online (Sandbox Code Playgroud)

给定一个来自eth1(桥的另一半)的数据包,那么规则匹配得很好,记录:

... IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=eth1 ...
Run Code Online (Sandbox Code Playgroud)

但是,如果数据包来自eth2,则规则不再匹配。

我似乎路由算法无法确定选择哪个桥接接口,因此数据包通过桥接器中的两个接口发送出去。

如果我添加另一个更混杂的日志规则,那么我会得到该数据包的以下日志输出:

... IN=eth2 OUT=br0 ...
Run Code Online (Sandbox Code Playgroud)

我的猜测是,在第一种情况下,路由算法可以只选择网桥上的另一个接口,因为该数据包不应该按照它来的方式出去。在第二种情况下,它没有选择特定的接口,然后您根本没有得到 physdev 信息!

但是,如果网桥已获知目标 MAC 地址(如 …

iptables bridge

8
推荐指数
1
解决办法
2万
查看次数

如何根据 iptables 日志确定正在丢弃/阻止的流量

我遵循了https://help.ubuntu.com/community/IptablesHowTo#More_detailed_Logging 中的iptable 日志示例

sudo iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
Run Code Online (Sandbox Code Playgroud)

我得到如下的日志条目

Oct 20 03:45:50 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=1059 TOS=0x00 PREC=0x00 TTL=115 ID=31368 DF PROTO=TCP SPT=17992 DPT=80 WINDOW=16477 RES=0x00 ACK PSH URGP=0 
Oct 20 03:46:02 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=52 TOS=0x00 PREC=0x00 TTL=52 ID=763 DF PROTO=TCP SPT=20229 DPT=22 WINDOW=15588 RES=0x00 ACK URGP=0 
Oct 20 03:46:14 hostname kernel: iptables …
Run Code Online (Sandbox Code Playgroud)

iptables logging

8
推荐指数
1
解决办法
5万
查看次数

在内存关键服务器上替代 Firewalld?

我在 DigitalOcean 上买了一个 512MB 的 VPS。目前,我使用 Firewalld 来允许/拒绝访问某些端口(可能 22、80、443 是开放的)。它使用大约 25-30MB 的内存。

编辑:不要忘记我只有 489MB 的可用内存,其中 50MB 已被使用。因此,如果我切换到其他轻量级替代方案,我可能会节省 15-20MB。

那么,真的有必要使用Firewalld吗?或者我可以使用诸如 iptables 之类的东西(顺便说一句,我以前从未使用过它)。两者之间有什么重大区别吗?如何配置 iptables 以关闭除端口 22、80、443 之外的所有端口?

我问是因为我什至必须考虑服务器安全性。因为不能仅仅为了节省几 MB 而损害服务器安全性。

我读过这个线程,它说

如果可能,您应该使用新的 firewalld 系统

security linux iptables firewalld

8
推荐指数
1
解决办法
1087
查看次数

带有 -m 和 -p 参数的 iptables

我的 iptables 中有这个规则:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP
Run Code Online (Sandbox Code Playgroud)

我真的需要“-m tcp”吗?我已经在使用“-p tcp”,那么我应该使用“-m tcp”来更安全吗?

firewall iptables centos

8
推荐指数
1
解决办法
1954
查看次数

iptables 正在将以 047. 开头的 IP 地址更改为 39.!

我一直在尝试禁止 iptables 中以 047 开头的 IP 地址,但它会将其更改为 039。

iptables -v -w -I INPUT 1 -s 047.75.162.122 -j DROP
Run Code Online (Sandbox Code Playgroud)

但是IP地址会被禁止为39.75.162.122!

你认为为什么会发生这种情况?

iptables

8
推荐指数
2
解决办法
931
查看次数

如果有多个 IP 地址,MASQUERADE 如何选择一个 IP 地址?

MASQUERADE如果我为从特定接口发出的流量设置 Linux iptables规则,但该接口有多个 IP 地址,那么如何选择源 IP?

\n\n
\n\n

作为示例,假设我添加一条规则,例如:

\n\n
$ iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 并且该界面如下所示:

\n\n
$ ip addr show dev eno1\n1: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000\n    link/ether 94:18:82:35:a2:c1 brd ff:ff:ff:ff:ff:ff\n    inet 10.136.122.97/24 scope global eno1\n       valid_lft forever preferred_lft forever\n    inet 10.136.122.98/24 scope global eno1\n       valid_lft forever preferred_lft forever\n
Run Code Online (Sandbox Code Playgroud)\n

networking linux iptables

8
推荐指数
2
解决办法
1万
查看次数

Linux iptables 被拒绝 - 如何重新启用它?

所以我的网络中有一个客户端通过我的电脑使用 arpspoof 连接到路由器。当我知道要停止数据包转发时,我执行:

iptables -A FORWARD -j REJECT
Run Code Online (Sandbox Code Playgroud)

这就是我预期的工作方式。但是当我尝试做类似的事情时:

iptables -A FORWARD -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我无法像一开始那样让数据包通过。

我做错了什么还是我应该使用与“接受”不同的任何其他论点?

iptables forwarding

8
推荐指数
2
解决办法
5215
查看次数

从 iptables 迁移到firewalld:注释规则

我正在使用 Centos 7 从 iptables 迁移到firewalld。在过去,我曾经在 中编写(永久)iptables 规则/etc/sysconfig/iptables,这也用于放置前面带有#( 的注释,以提醒我们为什么我们限制这个或那个 ip , ETC)。

现在,似乎当前(永久)配置是从/etc/firewalld/文件(尤其是/etc/firewalld/zones/*.xml)中读取的。我想我可以在那里添加 xml 注释,但似乎好的做法不是直接编辑这些文件,而是通过firewall-cmd(不?)。

因此,我不确定哪种是向规则添加注释的标准或推荐方法。

有什么建议么?

编辑:作为记录,我已经验证 xml 注释不会在firewall-cmd修改后保存。

linux iptables firewalld

8
推荐指数
1
解决办法
8243
查看次数