标签: iptables

在大型系统(约 2000 个用户)中进行流量控制的最佳解决方案是什么?

以下情况:我们是一群学生管理当地宿舍的互联网连接,共有大约2000名最终用户。

我们有一个流量积分系统,每 MB 下载或上传都会花费积分,新积分按小时添加。目前,我们会在用户用完所有积分后阻止其访问互联网(通过将他置于 Debian 网关路由器上 iptables 中的 REJECT 策略中)。

我们只想限制用户的带宽。做这个的最好方式是什么?

简单的答案是对用户的交换机端口(主要是 Cisco Catalyst 3550)设置速率限制。然而,这是不可取的,因为我们自己的网络内部和到大学网络的流量应该保持无限。有没有办法限制 Cisco IOS 中具有特定目标或源 IP 范围(即出口和入口)的数据包的带宽?我找不到任何东西。

另一种方法是控制我们网关路由器上的流量。我想到了几种解决方案:

  • tc 或 tcng - 似乎两者都具有相当神秘的语法,并且都没有提供用于执行每个 IP 流量控制的良好功能。为这么多人准备的专用 QDisc 可能会大大降低路由器的速度。此外,关于两者的文档已经过时了。

  • shorewall - 似乎有一个相当简洁的配置语法,但是,我不确定它是否可以处理这么多的流量和用户,以及它是否适用于 per-IP 流量限制

  • pfSense - 看起来像一个用于像我们这样的目的的操作系统。但是,这需要我们完全重新安装我们的网关路由器。我们没有其他 BSD 系统,pfSense 也需要有非常好的流量统计功能(我们目前在那里使用 fprobe-ulog 和 ulog-acctd)。

你的经验是什么?哪种解决方案适合我们的需求并且最容易维护?你有其他想法吗?

如果您需要有关我们系统的任何其他信息,请随时询问。

提前致谢。


编辑:我已经用iptables和实现了系统tc

每个用户都有一个 /28 子网、一个 VPN IP(都来自 10.0.0.0/8)和一个外部 IP,所有这些都通过一个 iptables 链进行控制。这条链只有一个规则,一个简单的RETURN.

每五分钟,一个 Python 脚本读出这些规则的字节计数器。它会重置计数器并更新我们 PostgreSQL 数据库中用户的流量点帐户。

如果用户的点数余额低于某个阈值,则会为该用户创建两个 tc 类(一个用于传入,一个用于我们网关路由器上的传出接口),IP 将输入到属于这些类的 tc 过滤器中。这些课程受 HTB 限速。

与以前的系统相比fprobe-ulog, …

networking linux cisco iptables traffic-shaping

11
推荐指数
1
解决办法
2175
查看次数

安全地增加 ip_conntrack_max ?

我经常在日志中看到以下内容:

内核:ip_conntrack:表已满,正在丢弃数据包。

目前,我将 ip_conntrack_max 设置为 65536(默认为 RHEL5)。

记住内存使用情况,我可以安全地增加多少这个值?我在这个盒子上有 4GB 内存。这台机器的功能之一是作为静态内容服务器,这可能解释了高连接数,也意味着我希望尽可能多地保留用于缓存的操作系统内存。

另外,以下两者有什么区别?/proc/sys/net/ipv4/netfilter/ip_conntrack_max /proc/sys/net/ipv4/ip_conntrack_max

我应该编辑哪个?

谢谢!

networking iptables

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

iptables 规则允许所有出站本地来源的流量?

我想知道是否有人可以帮助我制定以下 iptables 规则:

我们希望允许任何和所有本地来源(如在运行 iptables 的服务器上)流量。

DNS、HTTP 等……所有这些。应该允许由运行 iptables 的服务器发起的任何连接。

目前我们基本上使用的是 OUTPUT 默认策略,ACCEPT。这样对吗?输入被阻止,所以我假设这意味着连接(除了我们允许的那些)无法启动,因为它们会在我们这边达到 OUTPUT 策略之前被丢弃?

抱歉,我的 iptables 技能很弱 ;)

非常感谢你。

iptables

11
推荐指数
1
解决办法
7万
查看次数

iptables 不允许 mysql 连接到别名 ips?

我在提供 MySQL 服务的服务器上有一个相当简单的 iptables 防火墙,但 iptables 似乎给了我非常不一致的结果。

脚本的默认策略如下:

iptables -P INPUT DROP
Run Code Online (Sandbox Code Playgroud)

然后我可以使用以下规则公开 MySQL:

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

有了这条规则,我可以从任何源 IP 连接到服务器上的任何目标 IP,而不会出现问题。但是,当我尝试通过将上面的行替换为以下内容来限制对三个 IP 的访问时,我遇到了麻烦(xxx=masked octect):

iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.184 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.196 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.251 -j ACCEPT 
Run Code Online (Sandbox Code Playgroud)

一旦上述规则到位,就会发生以下情况:

  • 可以从 .184、.196 …

mysql iptables ip-aliasing

10
推荐指数
1
解决办法
733
查看次数

为什么 iptables 不阻止 IP 地址?

我已经配置了 fail2ban 来监控我收到的某种恶意流量模式并禁止关联的 IP 地址。

一切似乎都运行良好——正则表达式正在适当地匹配模式,并且问题 IP 地址正在添加到 iptables。

但是,当我检查 Apache 日志时,我仍然收到来自被禁止的 IP 地址的点击。就好像 iptables 根本没有运行一样。

所以让我分享一些细节只是为了确认一切都配置正确。

首先,我将清除并重新加载 iptables 规则:

$ sudo iptables -F
$ cat /etc/iptables.firewall.rules 
*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can …
Run Code Online (Sandbox Code Playgroud)

ubuntu iptables fail2ban

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

为什么 iptables 拒绝允许数据包的第二个和后续片段?

我有两台主机试图相互建立 IPSec 连接。为此,它们必须在 UDP 端口 500 和 4500 上进行通信,因此我在两端的防火墙中打开了它们(如相关部分所示):

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m udp -p udp --dport 500 -j ACCEPT
-A INPUT -m udp -p udp --dport 4500 -j ACCEPT
#.....
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
Run Code Online (Sandbox Code Playgroud)

但是,密钥交换永远不会成功。每一方都不断尝试一遍又一遍地重新传输 UDP 数据包,从不听到响应,直到他们最终放弃。

我从tcpdump一端开始,观察到 UDP 数据包被分片,并且在第二个分片进入后返回了一个 ICMP 端口不可达。

此类失败交换的示例(为保护您而进行了消毒):

04:00:43.311572 IP6 (hlim 51, next-header Fragment (44) payload length: 1240) 2001:db8::be6b:d879 > 2001:db8:f:608::2: frag (0x5efa507c:0|1232) ipsec-nat-t > ipsec-nat-t: NONESP-encap: isakmp 2.0 msgid 00000001 cookie 55fa7f39522011ef->f8259707aad5f995: …
Run Code Online (Sandbox Code Playgroud)

linux iptables ipv6 ip-fragmentation

10
推荐指数
1
解决办法
8186
查看次数

Openvpn,转发数据包很慢

我重新启动了我的服务器,然后出现了一个奇怪的问题。我在 ArchLinux 上运行,客户端是 Ubuntu、Android 和 Mac。

问题是通过客户端访问互联网很慢,大约 2ko/s 并且慢慢停止。

但是直接从服务器下载一些东西到客户端是全速进行的。而且,显然,来自服务器的互联网全速(40 个月/秒)。

我不知道重启后发生了什么,但是这个问题在所有客户端上都存在,并且只与 openvpn 转发到互联网的流量有关。

编辑:用tcp试过,没有解决。编辑:测试了各种片段/mtu 设置,没有变化。

这是我所有的confs:

??<root@Alduin>-</etc/openvpn>-<1:45:07>-?
??? cat Alduin.conf ccd/Thunderaan
local 212.83.129.104
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/Alduin.crt
key keys/Alduin.key
dh keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.8.0.1"
client-to-client
keepalive 5 60
ping-timer-rem
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
client-config-dir ccd
topology subnet

ccd from here +++++++++++++++


ifconfig-push 10.8.0.2 255.255.255.0
push "redirect-gateway def1"
Run Code Online (Sandbox Code Playgroud)

客户端配置:

client
dev tun
proto udp
remote …
Run Code Online (Sandbox Code Playgroud)

linux routing ip iptables openvpn

10
推荐指数
1
解决办法
5779
查看次数

这个 HAProxy“重启脚本”会像我认为的那样优雅地工作吗?

我把这个脚本从不同的地方放在一起。我希望它一旦运行就会执行以下操作:

  1. 暂停端口 80 和 443 的所有“新”http 流量 - 只是“暂停”它们,不要给出任何错误
  2. 当所有“处理中”请求完成后,优雅地重启 haproxy
  3. 取消暂停 http 流量并继续照常营业。

这是它将如何运行?我错过了什么吗?我们有数千条基于 ip 的 acl 规则,存储在 haproxy 引用的文件中,我们需要每分钟重新加载几次。

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D …
Run Code Online (Sandbox Code Playgroud)

bash iptables haproxy

10
推荐指数
1
解决办法
1787
查看次数

CentOS部署Tomcat防火墙问题

我正在尝试在 CentOS 环境中部署 Tomcat 服务器,但它没有接收请求。

执行startup.sh正常,日志显示tomcat正在运行

16-Dec-2016 13:36:58.440 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
16-Dec-2016 13:36:58.444 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
16-Dec-2016 13:36:58.445 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 14803 ms
Run Code Online (Sandbox Code Playgroud)

运行netstat查看监听端口时,显示为listening

$netstat -atnp|grep LISTEN

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      3321/java
Run Code Online (Sandbox Code Playgroud)

为了跳过防火墙,我在 iptables 中添加了一个自定义规则。

$iptables -nL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:50060
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:50030
ACCEPT     tcp …
Run Code Online (Sandbox Code Playgroud)

firewall tomcat iptables centos

10
推荐指数
1
解决办法
1010
查看次数

保护 linux 服务器:iptables 与 fail2ban

我想挑选社区关于 linux 服务器安全性的大脑,特别是关于蛮力攻击和使用fail2ban与自定义iptables

那里有一些类似的问题,但没有一个能解决我满意的主题。简而言之,我正在尝试确定最佳解决方案来保护暴露在互联网上的 linux 服务器(运行通常的服务、ssh、web、邮件),免受暴力攻击。

我对服务器安全有很好的处理,即通过不允许 root 或密码登录来锁定 ssh,更改默认端口,确保软件是最新的,检查日志文件,只允许某些主机访问服务器并利用安全性审计工具,如Lynis ( https://cisofy.com/lynis/ ),用于一般安全合规性,因此这个问题不一定与此有关,尽管始终欢迎输入和建议

我的问题是我应该使用哪种解决方案(fail2ban 或 iptables),我应该如何配置它,或者我应该使用两者的组合来防止暴力攻击?

关于该主题有一个有趣的回应(Denyhosts vs fail2ban vs iptables-防止暴力登录的最佳方法?)。对我来说,最有趣的答案是个人(https://serverfault.com/a/128964),而且iptables的路由发生在内核,而不是的fail2ban这使得用户的使用模式工具来分析日志文件。Fail2ban 当然使用 iptables,但它仍然必须解析日志文件并匹配模式,直到它执行操作。

那么使用 iptables 并使用速率限制https://www.rackaid.com/blog/how-to-block-ssh-brute-force-attacks/)在一段时间内删除来自 IP 的请求是否有意义在特定时间段内进行过多连接尝试的时间,而不管它尝试连接到什么协议?如果是这样,那么这里有一些关于对这些数据包使用丢弃与拒绝的有趣想法(http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject),对此有什么想法吗?

Fail2ban 允许以能够为默认配置中可能无法解决的服务编写自定义“规则”的形式进行自定义配置。它易于安装和设置并且功能强大,但是如果我试图实现的只是“阻止”来自服务器的 IP,如果他们对任何服务/协议进行 2 次失败的访问尝试超过x数量,这会不会是一种矫枉过正时间?

此处的目标是打开每日日志监视报告,而不必滚动浏览尝试连接到服务器的失败页面。

感谢您抽出宝贵的时间。

security ssh iptables brute-force-attacks fail2ban

10
推荐指数
2
解决办法
4471
查看次数