Articles of iptables

如何为单个unix用户创build透明的虚拟networking和端口重映射?

我有一个生产Web应用程序平台(节点,nginx,elasticsearch,redis)处理机密数据。 应用程序最初使用Ansibleconfigurationpipe理进行部署,然后打包为文件系统映像,以便通过RPM进行部署。 银行法规要求不同的数据集只能被不同的unix用户访问,因此整个应用程序需要在同一个物理服务器上多次安装unix用户账号。 天真的做法会导致多个用户进程尝试连接到同一个端口。 一种select是生成多个RPM,为每个用户定制。 或者编写一个RPM部署脚本,试图grep通过文件系统映像和regexpreplaceconfiguration文件中的端口号。 我想避免这种做法。 这个问题是关于networking命名空间,虚拟networking接口,可能iproute / iptables。 理想情况下,我希望每个用户允许他们的所有进程绑定到他们的默认端口,并将这些进程透明地映射到外部networking接口上的用户特定端口范围(即端口80 – > 10080)。 通过使用Docker或虚拟机和虚拟networking路由可以达到同样的效果,但这些作为安全风险已被禁止。 使用networking名称空间,如何将命令行级别的进程绑定到特定的networking名称空间? 这可以设置为特定的二进制文件的默认值? 属于特定用户的所有进程是否可以自动绑定到特定的networking名称空间? 是否有可能创build一个像jail一样的chroot,或者一组环境variables,以便用户进程只能看到他们分配的虚拟networking接口? 理想情况下,不需要root权限? 非常感谢任何想法或指针?

Softether vpn服务器 – 暴露vpn中的服务器

我在树莓上运行软化剂。 在同一个树莓中,我用mysql运行一个nginx webserver。 我想只在同一个vpn主机上运行的softether vpn中的端口80上提供nginx服务。 这个怎么做? 这是可能的? 最好的祝福。

conntrack散列表的“大小”是否等于连接数的两倍?

conntrack文档指出,散列表每个连接存储两个“哈希元组”(条目),一个用于发送方向,一个用于回复方向。 我想select一个值来设置nf_conntrack_expect_max参数( 这里logging ),它设置哈希表的大小。 我不确定这个“大小”是否考虑了每个连接的两个条目,并将大小显示为连接的数量,或者是连接的数量乘以2。

NAT到Linux中的networking名称空间

我有一个应用程序执行绑定(0),因此可以绑定到任何本地端口。 这与我正在设置默认丢弃安全策略的推动基本上是不兼容的。 使用该绑定(0),所有端口都是有效的可能性。 更改绑定系统调用不是一个选项。 除了容器化之外,我认为唯一的方法就是在特殊的networking命名空间内运行这个过程。 在一个专用的networking命名空间中,它可以绑定到任何想要的,但在该命名空间的外部可能有一个可见的固定范围。 我需要一个NAT(负载平衡器?)层来将外部转换为内部。 像这样的DefaultNamespace:11.11.11.11:6000-6005到AppNamespace:172.16.0.1:1-65535。 我一直在想这个好一个小时,而我只是不确定iptables规则是否需要指向veth接口才能真正做到这一点。

如果我省略iptables规则中的“-m状态”会有什么问题?

它会自动接受来自所有状态的数据包吗? 在那张纸上,有什么区别: iptables -A INPUT -p tcp –dport 22 -j ACCEPT 和 iptables -A INPUT -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT 什么是build议日常使用? 另外,我看到有些人使用“-p tcp -m tcp”符号,有些人只是把“-p tcp”。 在指定协议之后立即加上“-m tcp”是否正确? 这是我第一次configurationiptables,我想知道我所做的一切。

iptables的DROP计数器

我发现来自10个不同的IP地址,具有相同的子网46.229.168.0/23我的networking服务器的奇怪的连接。 这个子网属于一个托pipe服务提供商,很难代表真正的用户。 之后,我通过iptables阻止了他们。 我试图了解我是否被DDOS攻击? 我跑了: iptables -L -v -n 并得到以下输出: Chain INPUT (policy ACCEPT 2141K packets, 1607M bytes) pkts bytes target prot opt in out source destination 158K 9369K DROP tcp — * * 46.229.168.0/23 0.0.0.0/0 tcp dpt:80 9369K – 包被丢弃了24小时。 这是否足以说这是一个DDOS攻击?

可以通过每台服务器访问mongodb,但iptables之后副本集不能find彼此

我有9台机器,我设置了mongod replset实例。 我设置iptables,以便服务器可以看到对方,我可以确认这个sshing到一台服务器,并连接到另一台服务器的mongod。 但rp.status命令报告实例不能互相ping通,而且我的所有服务器都可以使用ping实用程序很好地ping通。

将数据包转发到一个地址,以便本地应用程序监听不同地址

我有一个计算机有两个接口eth1与10.223.75.53和eth2与192.168.1.1。 Eth2没有连接网线,但是在端口5000上的192.168.1.1上有应用程序侦听,假设这个应用程序是netcat。 Eth1连接到networking。 networking上的一些应用程序会使用10.223.75.53:5000进行tcp连接,所以我想把10.223.75.53:5000上的所有stream量redirect到192.168.1.1:5000。 我尝试了以下规则: iptables -t nat -A PREROUTING -p tcp -i eth1 –dport 5000 -j DNAT –to-destination 192.168.1.1 推出服务器: netcat -l -p 5000 192.168.1.1 # local server 并试图沟通: netcat 10.223.75.53 5000 服务器崩溃的信息: netcat -l -p 5000 192.168.1.1 invalid connection to [10.223.75.53] from (UNKNOWN) [10.223.75.53] 49116 客户刚退出。 我的路由表是: $ route -n Kernel IP routing […]

docker里面的iptables – conntrack不起作用

我试图在Docker容器(基于Centos 7的镜像)中设置iptables规则,连接跟踪不起作用。 # iptables -S INPUT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -A INPUT -j DROP 当我build立一个出站连接时,它会在conntrack表中创build一个条目,但是激活的数据包与该条目不匹配,因此被iptables的最后一条规则丢弃。 # wget -O /dev/null https://example.com (……) # conntrack -E -d 1.2.3.4 [NEW] tcp 6 120 SYN_SENT src=1.1.1.1 dst=1.2.3.4 sport=49696 dport=443 [UNREPLIED] src=1.2.3.4 dst=1.1.1.1 sport=443 dport=49696 [DESTROY] tcp 6 src=1.1.1.1 dst=1.2.3.4 sport=49696 dport=443 [UNREPLIED] src=1.2.3.4 dst=1.1.1.1 sport=443 […]

IPtables – 如何找出哪个进程/可执行文件被删除了一条链

如何找出哪个进程或程序更改IPtables(删除它的一个链)? 我运行Fedora 23服务器。 我使用它和其他人共享互联网连接,并实施公平,dynamic的stream量整形。 最后我用Niceshaper。 它增加了IPtables的链。 最近我发现我的服务器被入侵了。 它被用作IPv6上的DNS服务器。 IP6表被改变了。 我清除了所有。 certificate所有的/ etc /设置是未修改的。 validation所有安装的软件包,并certificate它们是未修改的。 不幸的是还有一些错误。 尽pipe事实上服务器的configuration几个月没有改变,Niceshaper工作正常,但是在检测到ns_upload链被移除后,它现在开始退出。 我想找出哪个进程删除链来修复它。 我会感谢你的帮助。