我目前正在使用 linux box 来使用 iptables 处理我的防火墙/NAT。它有两个 NIC,一个连接到 LAN 交换机,一个连接到我们的出口 Internet 提供商。我正在考虑将这个盒子升级到两个盒子以实现冗余,并向解决方案添加第二个 Internet 提供商。这意味着我需要四个我相信的端口(如果我错了,请纠正我)
我读过 carp+pfsync 是一个很好的解决方案。这是目前你们大多数人正在使用的吗?linux中是否有等效的解决方案?
对于与上述类似的设置,截至今天,对于易于配置的热故障转移有哪些建议?
全部接受 -- 0.0.0.0/0 0.0.0.0/0
这是否意味着允许来自所有端口的所有 ip?
但我仍然无法访问服务器,除非我通过允许的 IP 地址
如果我将此行放在任何行中,我是否使该服务器完全打开以进行任何连接?
完整的 iptable 列表如下
链输入(政策接受) 目标 prot opt 源目标 全部接受 -- 0.0.0.0/0 0.0.0.0/0 全部接受 -- 116.211.25.89 0.0.0.0/0 全部接受 -- 222.215.136.8 0.0.0.0/0 全部接受——125.82.87.21 0.0.0.0/0 全部接受 -- 127.0.0.1 127.0.0.1 接受 tcp -- 61.172.251.109 0.0.0.0/0 tcp spt:8080 接受 tcp -- 61.172.254.123 0.0.0.0/0 tcp spt:8080 接受 tcp -- 61.129.44.191 0.0.0.0/0 接受 tcp -- 61.129.44.128 0.0.0.0/0 接受 tcp -- 61.172.251.109 0.0.0.0/0 tcp spt:8080 接受 tcp -- 61.172.254.123 0.0.0.0/0 tcp spt:8080 接受 icmp -- 0.0.0.0/0 0.0.0.0/0 icmp …
我正在尝试向我的 Linux 直通服务器引入一些流量规则,这将为以下内容提供更好的 QoS:
1)开箱即用的低端口流量(网络流量和邮件等)。2)进入盒子的端口流量低 - 特别是端口网络管理(80)和SSH(22)。3) 将文件共享优先级放在最后。即所有其他流量。
我已经修改了一个 shell 脚本来使用 tc 和 htb 设置一些基本规则:
#!/bin/bash
UPLINK=7000
DOWNLINK=500
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
ip link set dev eth0 qlen 30 2> /dev/null > /dev/null
ip link set dev eth0 mtu 576 2> /dev/null > /dev/null
# add HTB root qdisc
tc qdisc add dev eth0 root handle 1: htb default 40
tc class add dev …Run Code Online (Sandbox Code Playgroud) 我在使用 iptables 和 PPTP VPN 时遇到问题,我已经阅读了相关主题和在线内容,但仍然无法正常工作!我正在尝试在我们本地网络的 ubuntu 服务器上设置 PPTP,以强制客户端必须通过 VPN 登录才能访问互联网。ubuntu 服务器直接连接到互联网。
在我的 rc.local 我有以下内容要转发和接受 gre
# PPTP IP forwarding
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A OUTPUT -p gre -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这显示在我的 iptables 列表中,所以我知道它在那里。
我在服务器上使用 CSF 作为我的防火墙,如果禁用它,我可以连接到 VPN 并通过它浏览互联网,如果启用 CSF,我要么“被通信设备断开连接”,要么我可以连接但无法访问互联网通过 VPN。
这也有一个奇怪的问题,它似乎时不时地通过防火墙工作!
我打开了以下端口:
TCP_IN = ...47,53,80,92,110,143,443,465,587,993,995,1723,7777..
TCP_OUT = ...47,53,80,92,110,113,443,1723,25565,7777...
UDP_IN = 20,21,47,53,1723,27015,27025
UDP_OUT = 20,21,47,53,113,123,1723,27015, 27025
Run Code Online (Sandbox Code Playgroud)
你对如何解决这个问题有什么建议吗?您需要更多信息吗?
非常感谢您的时间,
根据要求提供额外信息:
iptables -nvL
Chain INPUT (policy DROP …Run Code Online (Sandbox Code Playgroud) 每隔几周我们就会遇到一个问题,即单个 IP 地址同时打开大量 Apache 进程。
它似乎每次都连接到类似的页面,但我们的 Apache 进程从正常的 ~20-25 个繁忙插槽变为最大 (256)。
然后这个 IP 地址不断刷新所有请求,增加我们服务器上的负载并显着降低站点速度。
每个实例的解决方案都很简单;我从 Apache“服务器状态”中找出 IP,并使用 IP 表规则阻止 IP。
不幸的是,IP 地址每次都会更改(它总是相似的,并且当我查找主机时说“bt openworld”),而且我无法 24/7 全天候登录并添加 IP 表规则。
需要明确的是,我们可以毫无问题地处理来自 Google 和其他搜索引擎的抓取,我不确定我们所遇到的是否是恶意的。
我怎样才能限制这种影响?
我们的设置是一个同时处理 MySQL 和 Apache 的服务器。
我被告知负载平衡器是对来自单个(但每次攻击都会改变)IP 地址的连接数进行速率限制的唯一方法。
我已经尝试向我的 iptables 添加一些规则,但它们似乎没有保存。为了保存它们,我尝试运行iptables-save和service iptables save. 每次我运行这些命令中的任何一个时,它都会说它已成功保存。以下是我试图插入的规则:
iptables -A INPUT -j REJECT -p tcp --destination-port 3306
iptables -A INPUT -j REJECT -p tcp --destination-port 25
Run Code Online (Sandbox Code Playgroud)
这些规则有效并且在我输入它们后将保持原状,但是当我重新启动系统时,它们在运行时从列表中消失iptables -L并且端口再次打开(使用 nmap 检查)。
查看我的 /etc/sysconfig/iptables 文件时,规则就在那里(在底部),所有“完成”的时间戳都来自我保存似乎正确的规则时。此外,在我的 /etc/sysconfig/iptables-config 文件中,所有设置都是默认设置,并且似乎没有改变任何东西,只要从不同的位置加载 iptable 规则或其他东西。
我有一台在端口 50000 上运行 UDP 服务器的服务器。该服务器接收来自客户端的更新,并每 5 秒将客户端 ping 回客户端连接到的套接字。
现在我想通过另一台服务器重定向进出该 UDP 服务器的所有流量。基本上我想在这台服务器前面设置一个透明代理。原因是我希望能够轻松控制哪个服务器处理 UDP 流量,而无需更改 DNS 设置。
起初我尝试使用 socat 创建这个代理:
socat UDP-LISTEN:50000,fork UDP:myserver:50000
但这对于传入流量似乎很有效,但是从我的服务器到客户端的返回流量没有到达目的地。此外,似乎 socat 为每个连接分叉了另一个进程,因此当客户端断开连接/切换 IP 时,我可能会遇到太多进程和死进程。
我意识到我可以为此使用 iptables NAT 功能,但它似乎对我不起作用。我试过的配置是:
sudo iptables -t nat -A PREROUTING -p udp --dport 50000 -j DNAT --to-destination myserver:50000
但它似乎不起作用——我什至看不到我服务器上的连接。我不确定是由于配置错误还是由于其他一些问题。
一些问题:
更新:实际处理流量的服务器与我尝试在其上设置 iptables 的机器位于不同的机器上。
我的设置是单个接口和单个网络上的两个 ISP。我可以将我的默认网关设置为192.168.0.1或192.168.1.250并且要么工作。
编辑:网络掩码(如评论中所见)is 255.255.254.0-正如我所说,它们位于同一个子网上。
我的愿望是通过一些负载平衡来利用它们。我试图遵循这里给出的建议 https://serverfault.com/a/96586
#!/bin/sh
ip route show table main | grep -Ev '^default' \
| while read ROUTE ; do
ip route add table ISP1 $ROUTE
done
ip route add default via 192.168.1.250 table ISP1
ip route add default via 192.168.0.1 table ISP2
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
iptables -t mangle -A PREROUTING -j MARK …Run Code Online (Sandbox Code Playgroud) 我已经fail2ban设置了以下设置:
bantime = 86400
findtime = 600
maxretry = 2
Run Code Online (Sandbox Code Playgroud)
这很棒,因为它可以阻止任何在 10 分钟内暴力破解 3 次的 IP。但是,有些 IP 每 30 分钟左右尝试一次。为了捕获这些 IP,我将设置更改为:
bantime = 86400
findtime = 3600
maxretry = 2
Run Code Online (Sandbox Code Playgroud)
现在,它每小时检查一次并捕获其中每 20-30 分钟尝试一次的一些 IP。但是,现在我的 VPS 没有捕获可能会在一个小时内进行高级别暴力破解的 IP。
因此,有没有办法设置findtime = 3600并且fail2ban每 10 分钟检查一次?
我正在使用 Firewalld,拖放区是默认区域,并为该区域分配了一个接口。
然后我有丰富的规则来允许一些流量通过放置区,并且我启用了firewall-cmd --set-log-denied=all. 我认为这会记录任何尝试连接到不是来自白名单丰富规则的服务器的内容......但它不会记录。我对服务器运行了端口扫描,并且 /var/log/messages 没有显示任何被拒绝的端口日志。
但是,当我将默认区域设置为 public 并将接口分配给 public 时,它会在我运行另一个端口扫描时记录被拒绝的数据包。
为什么?