使用默认策略丢弃不匹配的数据包与-j DROP最终丢弃有什么区别吗?
喜欢:
iptables -P INPUT DROP
iptables -A INPUT --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
对比
iptables -A INPUT --dport 80 -j ACCEPT
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
我之所以关心,是因为我无法使用日志创建链并将其作为默认策略,因此我需要使用第二个示例。
当我学习 iptables 时,我犯了一些错误并将自己锁在外面。
您使用什么方法来测试规则而不锁定自己?
我正在使用 ubuntu 服务器 12.04 LTS
以下所有答案都有帮助。最后我使用了选项的组合。以防万一,IPMI 访问您的远程服务器也很有帮助!但理想情况下,在复制环境中本地测试规则并首先进行测试。Vagrant 在这方面有助于让测试设置快速工作。
我的防火墙上有许多 iptables 规则,如下所示:
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
对于每个地址,是否有两个规则的快捷方式 - 一个用于 tcp,一个用于 udp?我的意思是我可以做这样的事情:
iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud) 我希望我的 iptables 规则在启动时自动加载。根据 Debian 上的 wiki,这可以通过在 /etc/network/if-pre-up.d/ 中放置一个名为 iptables 的脚本来完成,所以我做到了,这就是它的样子:
cat /etc/network/if-pre-up.d/iptables
#!/bin/sh
/sbin/iptables-restore < /etc/firewall/iptables.rules
/sbin/ip6tables-restore < /etc/firewall/ip6tables.rules
Run Code Online (Sandbox Code Playgroud)
这个脚本有效:如果我以 root 身份运行它,我的防火墙规则就会被应用。但是在重新启动时没有防火墙规则。我究竟做错了什么?
根据要求:/etc/network/interfaces(我没有碰过这个文件)
user@DebianVPS:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud) 像大多数服务器(我假设)一样,我们有人试图 24/7 全天候暴力破解我们的服务。我有 cpHulk 将他们的 IP 列入黑名单,但如果他们一开始就没有走那么远似乎会更好。我和我的主机是唯一通过 80 以外的端口连接到服务器的人,所以我想阻止来自美国以外所有国家/地区的连接,端口 80 除外。我联系了我的主机进行设置,但他们犹豫不决,因为他们说这会造成异常高的服务器负载。它是一个专用的 Xeon 1230 服务器,具有 32GB RAM,运行 CentOS 6.6 和 iptables。
首先,有什么理由不这样做?其次,我的主人告诉我的是否正确?第三,有没有办法在不影响高性能的情况下实现这一点?
我有一个 docker 容器运行如下:
docker run --name some_container_1 -p 8080:80 -d some_image
Run Code Online (Sandbox Code Playgroud)
哪个工作正常。容器将它的端口 80 公开到 8080,并且可以从本地主机访问。
然而,出于某种原因,它完全忽略了 INPUT iptables 规则,并且也可以从外部访问。
如何限制对我的 Docker 容器的访问,只允许 ie IP 123.456.789.0 从外部访问它?
谢谢。
须藤 iptables -L -n -v --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 365 23380 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 0 0 ACCEPT tcp -- * …Run Code Online (Sandbox Code Playgroud) 好的,...这可能已经得到了回答,不幸的是,我没有找到任何看起来像是解决方案的东西。
我看过这些页面,他们有一些有用的信息,但不是完整的解决方案:
我将使用 Debian 8、Ubuntu 16.04 Desktop 或 Ubuntu 16.04 Server(老实说,很可能是 Debian)。
好的,所以我将安装三个网卡,两个千兆位和板载 100 mbps LAN 连接。ISP 连接将通过两个网卡上的 PPPoE 身份验证使用千兆 LAN 卡(如果这甚至可能,否则我将在 DSL 调制解调器上使用非桥接模式)。两个网络都将分配一个静态 IP。目前(这将改变)主要连接有一组五个。我需要将来自这些 IP 地址之一的流量路由到网络上的正确服务器。
以下是我的问题:
请温柔点,这是我第一次尝试过这样的事情:)。
编辑 1
忘记添加网络拓扑:
编辑 2
刚刚意识到一些事情......为了进行 PPPoE 身份验证,我将不得不强制对特定接口上的凭据进行身份验证。这是怎么做的?
我在这里发布了这个问题:
创建具有两个 Internet 连接和一个 LAN 连接的多宿主 linux 负载平衡器
更新 1
仍然无法让多跳循环工作。我尝试按照以下网站中列出的步骤进行操作,但没有成功:
Linux上有没有什么工具可以根据对Apache日志的分析自动修改iptables来屏蔽麻烦的客户端?我帮助运营一个有时会被来自特定用户的请求所淹没的网站。唯一的解决方案是在 iptables 中添加一个条目来阻止有问题的客户端。通常到我可以手动做出反应时已经太晚了 - 因此,我想要一些基于规则的机制来修改 iptables。我猜想某种模糊的逻辑或统计分析是必要的。
谁能帮我找出这里发生了什么?我有一些设置跟踪数据包计数的规则。当我以 root 身份运行以下脚本时:
#!/bin/bash
iptables -t mangle -xnvL
Run Code Online (Sandbox Code Playgroud)
我得到我期望的输出:
//snip
233203 199929802 MARK //blah blah blah
//snip
Run Code Online (Sandbox Code Playgroud)
但是,我想将它作为 cacti 的一部分运行,它作为 apache 运行。现在apache不能运行iptables,这就是我有脚本的原因。我将其设置为 SUID 根:
-rwsr-sr-x 1 root root 37 May 14 23:06 iptables_packet_report.sh
Run Code Online (Sandbox Code Playgroud)
但是后来我得到了这个输出:
server # sudo -u apache ./iptables_packet_report.sh
iptables v1.4.2: can't initialize iptables table `mangle': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Run Code Online (Sandbox Code Playgroud)
显然我的内核很好,而且我以非 root 用户身份运行它的事实搞砸了一些事情,但我不明白为什么。我确实用 [演示]( http://en.wikipedia.org/wiki/Setuid#Demonstration )仔细检查了 SUID并确认它正在工作。
server # sudo -u apache …Run Code Online (Sandbox Code Playgroud) 我正在安装一个新的 centos 5.4 服务器,我想有一套干净的规则让 mu iptables 启动。
什么是好的规则开始?
这是一个好的起点吗:
# Allow outgoing traffic and disallow any passthroughs
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Allow traffic already established to continue
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow ssh, ftp and web services
iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport …Run Code Online (Sandbox Code Playgroud)