标签: iptables

阻止所有传入的 DNS 请求,除了来自 IP x、y、

我想阻止我的两个 DNS 服务器上的所有传入请求,除了某些 IP 地址,例如 1.2.3.4 的 IP 将被允许发出请求,但其他人不会。

你如何用 iptables 做到这一点?

非常感谢。

domain-name-system iptables tcp udp

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

我的 iptables 安全吗?

rc.local在我的新 Ubuntu 服务器上有这个:

iptables -F

iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --dport 9418 -m state --state NEW,ESTABLISHED …
Run Code Online (Sandbox Code Playgroud)

networking security ubuntu iptables

6
推荐指数
1
解决办法
907
查看次数

通过 OpenVPN 进行端口转发

这是我的场景。我有三个主机。

1) GATEWAY 运行 OpenVPN 服务器。它有 1 个 LAN IP (192.168.1.10) 和 1 个 OpenVPN IP (10.8.0.1)。

2)LOCAL-CLIENT,与GATEWAY在同一个局域网内的机器,有1个局域网IP(192.168.1.12)

3) REMOTE-SERVER,一个 MySQL 服务器,它是 OpenVPN 服务器的客户端。它有 1 个公共 IP 和 1 个 OpenVPN IP (10.8.0.51)。

我希望能够通过 VPN 从本地客户端连接到远程服务器上的 MySQL。

到目前为止,我已经启用了 IP 转发并添加了一个端口转发,如下所示:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A OUTPUT -p tcp --dport 3306 -j DNAT --to 10.8.0.51
Run Code Online (Sandbox Code Playgroud)

这适用于 GATEWAY,我可以使用 192.168.1.10 作为主机连接到 MySQL。但是当我从 LOCAL-CLIENT 尝试时,我收到“连接被拒绝”错误(使用 MySQL 客户端或 telnet 到端口 3306)。

我在这里缺少什么?

顺便说一句,我还尝试转发 HTTP 端口以针对也在远程服务器上运行的 Apache 进行测试,我得到了相同的结果,所以这不是 MySQL 问题。

更多信息:

Kernel IP …
Run Code Online (Sandbox Code Playgroud)

iptables openvpn port-forwarding

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

如何仅通过番茄上的 openvpn 客户端隧道特定主机路由

我在网络世界中相对新手,虽然我做了编码并且知道一些系统管理员背景很长一段时间。在这里,我离目的地只有一步之遥。

整体情况是:在家里我使用一台LinkSys E3000作为网关(不知道这是不是它的名字),无线AP,没有其他路由/交换设备。它为 1 台 PC 和 1 台带 LAN 的 Mac、1 台 Mac Mini + 1 台 iPad + 2 台带 WIFI 的智能手机提供服务。

我的目标是在 E3000 上使用 openvpn 客户端(带有番茄固件)并使我的 iPad 和智能手机的所有 WiFi 流量都通过它,而其他设备的路由保持相同的非 openvpn 路由。

到目前为止,我能够将 E3000 上的 openvpn 客户端连接到 openvpn 服务器,通过该 openvpn 连接隧道传输我所有设备的所有流量。剩下的是如何通过源 IP(至少在我的猜测中)有选择地路由到隧道,同时不打扰其他人。

在过去的几天里,我学习了一些“iptables”和“route”,但运气不佳,所以我的问题来了。这里有一些信息可以帮助您获得结构。

ifconfig -a 输出,把一些无用的线划掉,在web界面中C0:C1:C0:1A:E0:28是WAN,C0:C1:C0:1A:E0:27是LAN,C0:C1:C0:1A :E0:29 是 2.4G wifi AP,C0:C1:C0:1A:E0:2A 是 5G wifi AP。

root@router:/tmp/home/root# ifconfig -a

br0 Link encap:Ethernet HWaddr C0:C1:C0:1A:E0:27
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST0 Metric:15

eth0 Link encap:Ethernet HWaddr C0:C1:C0:1A:E0:27 …

route iptables openvpn

6
推荐指数
1
解决办法
5万
查看次数

iptables 暂时丢弃最近连接失败的 IP

我想降低在 linux 系统上成功进行 ssh 攻击的可能性。唯一打开的端口是 22(我对其他所有端口都使用端口转发),当然我确保 ssh 只接受基于密钥对的登录(无密码)。

失败的 ssh 登录尝试(输出last -f /var/log/btmp)的数量相当大(正如任何打开端口 22 的人所期望的那样),因此在过去 2 年多的时间里,我一直依赖基于 iptables 的解决方案的变体,这些解决方案经常被提到阻止ssh 攻击,例如数百次失败的 ssh 登录

这种方案的一个令人讨厌的缺点是它限制了每段时间内来自一个 ip 地址的新连接数,无论来自该 ip 的先前连接是否成功,无论它们是否尝试以同一用户身份登录或不是。想象一个脚本,它包含六个rsync来自国外的命令,用于更新该服务器上的各个区域:它通常会达到“新连接限制”并在中间某处失败。如果路由器后面的多个用户(显示为相同的 IP 地址)或多或少同时连接到我的服务器上,情况也是如此。

所以,我想知道,如果不诉诸解析/var/log文件,是否可以使用以下策略来实现iptables

  1. 接受已建立的连接
  2. 允许来自先前成功连接的新连接
  3. 将连接失败的 IP 放入监狱一段时间

奖励积分:

  1. 与上面相同,但允许/监禁特定user@ip而不是每个人@ip

并试图遏制僵尸网络攻击:

  1. 在 ssh 尝试失败后,暂时将用户(无论他从哪个 IP 连接)入狱。

iptables linux-networking

6
推荐指数
1
解决办法
692
查看次数

NAT后保留源IP

直到今天,我使用了一个便宜的路由器,这样我就可以在使用 NAT 的同时共享我的互联网连接并保持网络服务器在线。用户 IP ($_SERVER['REMOTE_ADDR']) 很好,我看到的是用户的 A 类 IP。

但是随着流量每天都在增长,我不得不安装一个 Linux 服务器 (Debian) 来共享我的 Internet 连接,因为我的旧路由器无法再保持流量了。我使用 NAT 通过 IPTABLES 共享互联网,但是现在,在将端口 80 转发到我的网络服务器后,现在我看到的不是真正的用户 IP,而是将我的网关 IP(Linux 内部 IP)视为任何用户 IP 地址。

如何解决这个问题?


我编辑了我的帖子,所以我可以粘贴我当前使用的规则。

#!/bin/sh
#I made a script to set the rules

#I flush everything here.
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X


# I drop everything as a general rule, but this is disabled under testing
# iptables -P INPUT DROP
# iptables …
Run Code Online (Sandbox Code Playgroud)

linux php debian iptables linux-networking

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

如何防止 libvirt 为访客 NAT 网络添加 iptables 规则?

类似这样的Bugzilla的旧请求的Fedora 8,我希望事情已经从那以后改变或有人知道的另一种方式。

我想手动管理 iptables 规则——一刀切的自动规则根本不适合我。这些规则似乎是在网络启动和销毁时添加和删除的。有没有办法完全阻止添加这些规则,或者将脚本挂接到网络启动中,然后恢复默认规则。

现在,我正在使用一种非常粗糙的方法cron,但我希望有更好的方法:

  *  *  *  *  * root    iptables-restore < /etc/sysconfig/iptables
Run Code Online (Sandbox Code Playgroud)

iptables libvirt kvm-virtualization

6
推荐指数
1
解决办法
5678
查看次数

iptables:建立一套防止滥用 DNS 放大攻击的规则

我一直致力于构建规则集来检测和阻止 DNS 放大攻击。

我被卡住了,希望能在这里找到帮助。

我将在这里发布我所拥有的(bash 脚本,与 DNS 相关的部分):

IPTABLES='/sbin/iptables -v' 
SERVERIP=a.b.c.d

echo '################ Previously initiated and accepted exchanges bypass rule checking #'
$IPTABLES --append INPUT  -m state --state ESTABLISHED,RELATED     --jump ACCEPT
echo '################################################ Allow unlimited outbound traffic #'
$IPTABLES --append OUTPUT -m state --state NEW,ESTABLISHED,RELATED --jump ACCEPT

echo '################################################################## Rules for DNS #'
# DIG ANY ISC.ORG attack preventer.
# QUESTION1: this one does not work, why!?!?
$IPTABLES --append INPUT --proto udp --dport 53 -m string --string "isc.org" --algo bm …
Run Code Online (Sandbox Code Playgroud)

security domain-name-system linux firewall iptables

6
推荐指数
1
解决办法
2544
查看次数

Amazon EC2 上 OpenVPN 服务器的路由设置

这里的软件开发人员,试图通过在 amazon EC2 上设置 OpenVPN 服务器来访问那里的所有内部资源来启动并运行他的 sysadmin-foo。以下是我在全新 Ubuntu 12.04 Canonical AMI 上的设想:

   Local network          /        EC2 Cloud, 10.*.*.*/255.0.0.0
  172.16.20.*/          ,'
     255.255.255.0     ,'                +-----------------+
                      .'                 |Amazon DNS server|
                      |                ,'|  172.16.0.23    |
 +---------------+   |               ,'  +-----------------+
 | Workstation   |   |             ,'
 |               XXX |   +-------,'------+
 | 172.16.20.1   |  XXXX | OpenVPN server|
 +------`.-------+   \  XX  10.23.45.67  `-.  +-------------+
          \          '.  +---------------+  `-. Second server
  +--------`.---+     |                       | 10.23.45.68 |
  |Local server |      \                      +-------------+
  | 172.16.20.2 |       \
  +-------------+        \
Run Code Online (Sandbox Code Playgroud)

客户端可以连接到 …

ubuntu static-routes iptables openvpn

6
推荐指数
1
解决办法
5179
查看次数

如何使用linux netfilter/iptables在特定条件下立即在两端重置tcp连接?

亲爱的 Serverfault 社区,

我有以下问题:如果在数据包数据中遇到某个字符串,我需要立即重置(断开)网络两侧的 tcp 连接。我无法控制双方的应用程序,只能使用 linux iptables(或类似工具)来执行连接中止。

我的第一个想法是使用以下 iptables 规则来实现我想要的:

/usr/sbin/iptables -A INPUT -p tcp --dport 1234 -m string --algo bm --string 'BAD STRING' -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)

通过向客户端发送 TCP RST 数据包,这将在远程端完美地工作,因此客户端将立即断开连接。不幸的是,在强制断开连接时不会通知本地端,并且服务器进程(连接)永远挂起。

我认为在特定条件下(在这种情况下 IP 数据包中的字符串匹配)立即断开双方已经建立的连接的要求并不少见。所以我进行了谷歌搜索,但令我惊讶的是在合理的时间内找不到任何可用的东西。

有没有办法使用iptables在网络两侧实现tcp断开连接?如果没有,我可以使用哪些其他工具(请记住,我无法控制客户端/服务器应用程序)?

非常感谢您的宝贵回答!

此致,

延斯

linux iptables tcp strings session

6
推荐指数
1
解决办法
6660
查看次数