我正在使用 netfilter_queue 从内核中获取某些数据包并对它们进行一些处理。对于 netfilter 队列,我需要来自特定来源的所有数据包except UDP packets with src port 2152 & dst port 2152.
我尝试将 iptable 规则添加为
iptables -A OUTPUT ! s 192.168.0.3 ! -p udp ! --sport 2905 ! --dport 2905 -j NFQUEUE --queue-num 0
Run Code Online (Sandbox Code Playgroud)
iptables 抛出无效参数的错误。查询dmesg,看到如下错误打印
ip_tables: udp match: only valid for protocol 17
Run Code Online (Sandbox Code Playgroud)
我尝试了以下变体,但抛出了相同的错误。
iptables -A OUTPUT ! s 192.168.0.3 ! -p udp --sport 2905 --dport 2905 -j NFQUEUE --queue-num 0
Run Code Online (Sandbox Code Playgroud)
您能否就我的情况建议正确使用 iptables 命令。
我的服务器是 Red Hat Enterprise Linux Server release 5。
清除中定义的所有现有 iptables 规则的正确/正确命令是什么/etc/sysconfig/iptables(以便我可以开始定义/添加我的新规则)?
我无法弄清楚 iptables,我对网络也不太了解,我真的希望有人能帮助我。
我有一个服务器,它有两个关联的 IP 地址:1.1.1.1 和 2.2.2.2
运行 Ubuntu 10.04
这是我的 ifconfig:
eth0 Link encap:Ethernet HWaddr 00:16:3e:xx:xx:xx
inet addr:1.1.1.1 Bcast:xxx.xxx.xxx.xxx Mask:xxx.xxx.xxx.xxx
inet6 addr: xxxxxxxxxxxxxxxxxxxxxxxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8601280 errors:0 dropped:0 overruns:0 frame:0
TX packets:2520243 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1736805563 (1.7 GB) TX bytes:412953236 (412.9 MB)
Interrupt:11
eth0:0 Link encap:Ethernet HWaddr 00:16:3e:xx:xx:xx
inet addr:2.2.2.2 Bcast:xxx.xxx.xxx.xxx Mask:xxx.xxx.xxx.xxx
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:11
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 …Run Code Online (Sandbox Code Playgroud) 我使用的是Squid proxy 3.1,局域网内的所有系统都通过代理连接到互联网。使用来自网关服务器的 iptables 阻止直接连接。
有些设备没有自动代理或手动代理的选项,只能直接连接到互联网。所以我在 Squid 中启用了透明代理,并使用 iptables 将端口 80 和 443 的数据包重定向到 Squid 代理。
现在的问题是它对 HTTP 端口工作正常,但 HTTPS 不工作。它抛出“ssl_error_rx_record_too_long”错误。
如果无法通过透明代理,请给我建议另一种解决方案。
温暖的问候
苏普拉蒂克
可能的重复:
允许使用 IPTables 进行 FTP
我有一组非常严格的 iptables 规则,其中包含以下规则,允许我通过 ftp 进行连接
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
客户端可以正常连接,但仅此而已,在事情崩溃之前来自 ftp 客户端的以下输出可能会有所帮助:
Command: MLSD
Error: Connection timed out
Error: Failed to retrieve directory listing
Run Code Online (Sandbox Code Playgroud)
当我停止 IP 表时,一切都按预期工作
CentOS 5.5 版(最终版)
proftpd-1.3.3c-3
如果一个规则与数据包匹配并且它有-j DROP,我知道数据包将停止遍历其余规则。但是我不明白如果数据包与 -j ACCEPT 匹配规则会发生什么?它会再次停止遍历规则还是尝试匹配其他规则?换句话说,如果一个 pcket 有许多要匹配的规则会发生什么。
我正在尝试构建自定义入侵检测和防御系统 (IDS/IPS)。我找到了一个名为ROPE的好工具,它可以扫描数据包的有效载荷并丢弃不遵守规则的数据包,由脚本设置。这完全符合我的目的,因为我想要做的是检查某些特定文本的有效负载,然后将其删除或允许它(iptables 中的字符串功能对我没有任何好处,因为我想检查多个字符串在有效载荷中,如用户名、ID 等)。然而,ROPE 真的很旧,尽管我尝试了很多次,但还是没能正确安装它。
你知道任何类似的程序可以帮助我根据有效负载在 iptables 中丢弃数据包吗?
非常感谢任何建议:)
我想阻止一切EXCEPT SSH / FTP / HTTP /字尾和MySQL。
“一切”是指所有其他端口、阻止 ping 等。
我的电脑有两个 IP 地址。如何使用CentOS 将端口80上的传入请求转发到来8080自我的 IPiptables之一?
例如,我有 ip 地址1.1.1.1和2.2.2.2,我想将http://1.1.1.1端口转发80到端口8080,1.1.1.1但不是2.2.2.2。
我该怎么做呢?
iptables ×10
linux ×5
attacks ×1
centos ×1
centos5 ×1
firewall ×1
ftp ×1
ids ×1
linux-kernel ×1
networking ×1
ping ×1
redhat ×1
squid ×1
ubuntu-10.04 ×1