Rackspace 防火墙/网关设置

ehf*_*lve 5 firewall gateway nat iptables ubuntu

我有 rackspace 帐户并希望进行这种设置:

防火墙/网关

eth0 - 公共 IP (56.XXX)

eth1 - 私有 IP (10.XXX)

Ubuntu 10.10。接受来自互联网的连接并将端口 80 路由到 node1 (10.xxx)

节点 1

eth0 -禁用公共 IP (56.XXX)

eth1 - 私有 IP (10.XXX)

Ubuntu 10.10。该服务器是 Web 服务器。

题:

我已经一遍又一遍地搜索如何实现这一目标,但我不确定我需要采取哪些步骤。Rackspace 将这些 IP 提供给我,我不控制(此时)这些节点的 IP 是什么,但它们每个在 eth0 上都有一个公共 IP,在 eth1 上有一个私有 IP。

如何成功地将端口 80 请求从防火墙/网关转发到node1

这是我的 iptables 设置

# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1:452]
:POSTROUTING ACCEPT [1:452]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.182.33.191:80 
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*filter
:INPUT ACCEPT [154:11452]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [81:9672]
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
Run Code Online (Sandbox Code Playgroud)

And*_*son 2

您似乎在路由器 POSTROUTING 表中缺少一个伪装!

这是我自己的华硕 EEEPC 转发规则的一个非常简化的版本,作为我的有线和无线网络的路由器。我不能保证这会起作用,因为我在这里在线编辑它,但我希望它有所帮助。一套完美的规则是一件非常复杂且个性化的事情!我的 iptables 包含大约 25000 个可变规则,主要是为了在高峰时段阻止端口 25 上来自不需要的国家的垃圾邮件。

您应该添加更多规则,以将流量限制在必要的范围内。也阻止传出流量,例如广播、dhcp、mDNS 等。端口 5353 上的 mDNS 是那里的一个大罪犯。在 ISP 的内部网络上运行 tcpdump 会让您想知道真正的流量到底如何有空间移动!

我也添加了一条规则来阻止恼人的 ssh 暴力攻击...:-)

为您的家庭 IP 地址添加一条规则,以覆盖所有其他规则,以防您看到您所在的分支,但在进行更改时,最好尝试定时测试并在 5 秒后回退到工作配置,例如:

# ./testfirewall.sh; sleep 10;./firewall.sh
Run Code Online (Sandbox Code Playgroud)

哦,路由器:

#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535

$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT  DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP

# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP


# dnat
$IPT -t nat    -A PREROUTING -i $EXTIF -p tcp -d $EXTADDR --sport $HI_PORTS --dport 80 -j DNAT --to-destination $NODEADDR:80

# forward only established connections
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# antispoof
$IPT -t filter -A FORWARD -i $EXTIF -s $EXTADDR -j DROP
$IPT -t filter -A FORWARD -i $EXTIF -s 127.0.0.1 -j DROP
# forward new connections to node1 on port 80
$IPT -t filter -A FORWARD -i $EXTIF -o $INTIF -p tcp -d $NODEADDR -m state --state NEW --sport $HI_PORTS --dport 80 -j ACCEPT

# forward all outgoing connections from node1 (need more rules to prevent broadcasts/leakage/bogons/igmp/some icmps etc in and out)
$IPT -t filter -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

# this appeared to be missing
$IPT -t nat    -A POSTROUTING -o $EXTIF -s $NODEADDR -d 0/0 -j MASQUERADE

$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT  -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT
#need to add this if you are sending mail
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)

在节点上,输入应该已经是干净的:

#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535

$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT  DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP

# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP

$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 80 -j ACCEPT
$IPT -t filter -A INPUT  -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

结尾