Articles of iptables

包除了iptables的包改造工具?

我正在寻找一个Linux实用程序,可以根据一组规则来改变networking数据包的有效载荷。 理想情况下,我会使用iptables和netfilter内核模块,但是它们不支持通用的有效负载模式: iptables将会改变不同的头域(地址,端口,TOS等),并且可以匹配一个数据包中的任意字节,但它显然无法改变数据包内的任意数据。 内核模块将是一个很大的优势,因为效率是一个问题,但我很乐意探索任何可以完成工作的其他选项。 感谢您的想法! 姗姗来迟的更新: 我们select使用NFQUEUE模块,这是Robert Gamblebuild议的QUEUE模块的最新实现。 它似乎相当简单,让我们的代码在用户而不是内核空间中运行,这是一个安全奖金。 如果我们只是想改变有效载荷而不改变它的大小,那么实现将几乎是微不足道的。 在这种情况下,我们将定义一个iptables规则来为我们select“有趣的”数据包,并向它们发送一个NFQUEUE目标。 我们将编写一个callback函数来检查来自NFQUEUE的数据包,根据需要修改数据,并重新计算TCP和IP头中的校验和。 但是,我们的用例涉及在数据stream中注入更多字符。 这在TCPstream中增加了相应的SEQ / ACK号码的副作用比较明显,混淆了conntrack模块的副作用并不明显,完全打破了NAT。 经过大量的研究,头部划伤和实验,最NOTRACK解决scheme是禁用这些特定数据包的连接跟踪(在raw表中使用NOTRACK目标),并在我们的callback中处理。 保存你的西红柿和讨厌的邮件; 我一点都不骄傲让你置身事外,但在下一个冰河世纪之前,这是唯一可以获得可靠产品给客户的方法。 这是一个很好的故事。 但我真的很感激,并分享你的衷心的感受。 版本2将利用我们新发现的启示,通过用自定义NAT和/或conntrack助手来replace我们的callback和多个iptables规则。 我们相信,目前的练习已经给了我们足够的经验来创build一个内核模块,它将有机地融入到netfilter体系结构中来解决我们遇到的问题。 再次感谢您的关注和build议!

每个进程/服务创buildiptables规则

是否有可能使用iptables来允许由“进程”启动stream量,即使用进程名称? 我想例如允许所有由ping命令启动的东西。

从外部主机/ IP访问一个MySQL数据库? (即:mysql工作台)

我有一个MySQL服务器上运行的xxxx,并可以访问它内部没有问题(当然)。 但是,当试图连接外部,即使用mysql工作台,甚至从外部服务器,我得到错误信息“主机'bla.bla.bla'不允许连接到这个MySQL服务器”。 我已经做好了: GRANT ALL PRIVILEGES ON *.* TO mysql@xxxx IDENTIFIED BY "somepass"; 我在iptables中打开了3306端口。 是否还有另一个基本的安全问题,我失踪了?