[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:97097] Re: NIC3枚でDMZをiptablesで


こんばんわ 成瀬さん。

福田 和志といいます。

>###########################################
># PREROUTING chain in the nat table
>#
># Enable IP Destination NAT for DMZ zone
>#
>
>$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP --dport 80 -j
 DNAT --to-destination $DMZ_HTTP_IP
>$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP --dport 443 -
j DNAT --to-destination $DMZ_HTTP_IP

ここでDNATしてグローバルIPアドレスをローカルIPアドレスにしているみたいで
すが、外部側からのパケットのみ、あて先アドレスがローカルIPアドレスに変換
されています。
なので、ローカル側からは 割り当てられているローカルIPアドレス(192.168.
255.102)でしかアクセスできません。

なので、解決策としては
案1・DNATをやめてグローバルIPアドレスにする
案2・同じくDNATをやめてローカルIPアドレスに加えグローバルIPアドレスも設
定する
案3・ローカルからもDNATする(あまり好きじゃない)

好きじゃないとか言ってる割には書いちゃってる案3スクリプト(w
#------------------
$IPTABLES -t nat -A PREROUTING -p TCP -i $LAN_IFACE -d $HTTP_IP --dport 
80 -j DNAT --to-destination $DMZ_HTTP_IP
$IPTABLES -t nat -A PREROUTING -p TCP -i $LAN_IFACE -d $HTTP_IP --dport 
443 -j DNAT --to-destination $DMZ_HTTP_IP
#------------------
個人的には案1がお勧めです。

では。

>こんにちは、成瀬です。
>
>RedHatLinux8.0でiptablesにてNIC3枚使いFirewallの
>構築をしております。
>
>[構成]
>
>       ____|____ 専用線
>     |router|
>       ~~~|~~
>           |      グローバル(aaa.bbb.ccc.ddd/27)
>  ---┬┴--------
>        |
>eth0  |
>     ___|____ eth1  DMZ(192.168.255.0/24)
>     | FW |--------┬-------------
>     ~~|~~~      ___|___
>        |               |www|  ←192.168.255.102(aaa.bbb.ccc.170)
>  eth2|               ~~~~~
>----┴--------------内部ネットワーク(192.168.2.0/24)
>
>
>
>この構成で、DMZにあるwwwサーバがインターネット側からは
>参照できるのですが、ローカル側からは、DMZのローカルアドレス
>(192.168.255.102)でしかアクセスできません。
>ローカルからaaa.bbb.ccc.170のアドレスでアクセス出来ません。
>
>下記が現在設定している内容です。
>
>#!/bin/sh
>#
>LAN_IP="192.168.0.1"
>LAN_BCAST_ADRESS="192.168.0.255"
>LAN_IFACE="eth2"
>
>INET_IP="aaa.bbb.ccc.ddd"
>INET_IFACE="eth0"
>
>DMZ_IP="192.168.255.1"
>DMZ_IFACE="eth1"
>
>HTTP_IP="aaa.bbb.ccc.169"
>
>DMZ_HTTP_IP="192.168.255.102"
>
>LO_IP="127.0.0.1"
>LO_IFACE="lo"
>
>IPTABLES="/sbin/iptables"
>
>###########################################
>#
># Load all required IPTables modules
>#
>
>#
># Needed to initially load modules
>#
>
>/sbin/depmod -a
>
>#
># Adds some iptables targets like LOG, REJECT and MASQUARADE.
>#
>
>/sbin/modprobe ipt_LOG
>/sbin/modprobe ipt_MASQUERADE
>
>#
># Support for connection tracking of FTP and IRC.
>#
>#/sbin/insmod ip_nat_irc
>#/sbin/modprobe ip_conntrack_irc
>/sbin/insmod ip_nat_ftp
>/sbin/insmod ip_conntrack_ftp
>
>#CRITICAL:  Enable IP forwarding since it is disabled by default.
>#
>
>echo "1" > /proc/sys/net/ipv4/ip_forward
>
>#
># Dynamic IP users:
>#
>#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
>
>###########################################
>#
># Chain Policies gets set up before any bad packets gets through
>#
>
>$IPTABLES -P INPUT DROP
>$IPTABLES -P OUTPUT DROP
>$IPTABLES -P FORWARD DROP
>
>#
># the allowed chain for TCP connections, utilized in the FORWARD chain
>#
>
>$IPTABLES -N allowed
>$IPTABLES -A allowed -p TCP --syn -j ACCEPT
>$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
>$IPTABLES -A allowed -p TCP -j DROP
>
>#
># ICMP rules, utilized in the FORWARD chain
>#
>
>
>$IPTABLES -N icmp_packets
>
># Changed rules totally
>$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
>$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
>
>#
># bad_tcp_packets chain
>#
># Take care of bad TCP packets that we don't want.
>#
>
>$IPTABLES -N bad_tcp_packets
>$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --
>log-prefix "New not syn:"
>$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
>
>#
># Do some checks for obviously spoofed IP's
>#
>
>$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 192.168.0.0/16 -j DROP
>$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 10.0.0.0/8 -j DROP
>$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 172.16.0.0/12 -j DROP
>
>###########################################
># POSTROUTING chain in the nat table
>#
># Enable IP SNAT for all internal networks trying to get out on the Internet
>#
>
>$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
>
>
>
>###########################################
># PREROUTING chain in the nat table
>#
># Enable IP Destination NAT for DMZ zone
>#
>
>$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP --dport 80
> -j DNAT --to-destination $DMZ_HTTP_IP
>$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP --dport 
>443 -j DNAT --to-destination $DMZ_HTTP_IP
>
>###########################################
>#
># FORWARD chain
>#
>#
># Bad TCP packets we don't want
>#
>
>$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
>
>
>#
># DMZ section
>#
># General rules
>#
>
>$IPTABLES -A FORWARD -i $DMZ_IFACE -o $INET_IFACE -j ACCEPT
>$IPTABLES -A FORWARD -i $INET_IFACE -o $DMZ_IFACE -m state --state 
>ESTABLISHED,RELATED -j ACCEPT
>$IPTABLES -A FORWARD -i $LAN_IFACE -o $DMZ_IFACE -j ACCEPT
>$IPTABLES -A FORWARD -i $DMZ_IFACE -o $LAN_IFACE -j ACCEPT
>
>#
># HTTP server
>#
>
>$IPTABLES -A FORWARD -p TCP  -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_HTTP_IP -
>-dport 80 -j allowed
>$IPTABLES -A FORWARD -p TCP  -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_HTTP_IP -
>-dport 443 -j allowed
>$IPTABLES -A FORWARD -p ICMP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_HTTP_IP -
>j icmp_packets
>
>#
># LAN section
>#
>
>$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
>$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>
>#
># LOG all packets reaching here
>#
>
>$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log
>-level DEBUG --log-prefix "IPT FORWARD packet
>died: "
>
>
>###########################################################
>#
># Firewall rules
># Rules applying to the firewall box
>#
>#
># INPUT chain
>#
># Bad TCP packets we don't want
>#
>
>$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
>
>#
># Packets from the Internet to this box
>#
>
>$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
>
>#
># Packets from LAN, DMZ or LOCALHOST
>#
>
># From DMZ Interface to DMZ firewall IP
>$IPTABLES -A INPUT -p ALL -i $DMZ_IFACE -d $DMZ_IP -j ACCEPT
>
># From LAN Interface to LAN firewall IP
>$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_IP -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
>
># From Localhost interface to Localhost IP
>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
>
># All established and related packets incoming from the internet to the
># firewall
>$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED 
>-j ACCEPT
>
># Logging rule
>$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-
>level DEBUG --log-prefix "IPT INPUT packet
>died: "
>
>###########################################################
>#
># OUTPUT chain
>#
>#
># Bad TCP packets we don't want
>#
>
>$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
>
>#
># Allow ourself to send packets not spoofed everywhere
>#
>
>$IPTABLES -A OUTPUT -p ALL -o $LO_IFACE   -s $LO_IP   -j ACCEPT
>$IPTABLES -A OUTPUT -p ALL -o $LAN_IFACE  -s $LAN_IP  -j ACCEPT
>$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -s $INET_IP -j ACCEPT
>
>#
># Logging rule
>#
>
>$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-
>level DEBUG --log-prefix "IPT OUTPUT packet
>died: "
>
>ご教授いただけたら幸いとおもいます。
>どうかよろしくお願いします。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: