OpenWRT + Asus WL 520GU + Iptables。 個別のLAN、DMZ、インターネット

みなさんこんにちは!
最近、DMZで一部のサービスを非表示にする必要がありました。 このサービスはW2K3でスピンしているため、Windows OSマシンがインターネットやローカルネットワークを保護されていない状態で見たくありませんでした(「Windows」ファイアウォールはフォレストを通過するだけです)。
Asus WL 520GUとDD-WRTでの成功した経験を思い出して、私はbeatられた道を進むことに決めましたが、ルーターのファームウェアとしてOpenWRTを選択しました。
靭帯手術スキームは図に見ることができます。

それでは、言葉からビジネスに取り掛かりましょう。

DMZという用語の誤解がコメントに記載されています。
これに関連して、 ウィキペディアからの引用を提供します(このような引用の反対者については、この資料はCiscoのComplete Referenceに書かれている内容とほとんど同じであることに注意できます)

DMZ(非武装地帯、DMZ)は、外部ネットワークからのリクエストに応答するサーバーが特別なネットワークセグメント(DMZと呼ばれる)に配置され、ファイアウォール(ファイアウォール)を使用してメインネットワークセグメントへのアクセスが制限される情報境界を保護するための技術です)、DMZにある公共サービスの1つをハッキングする際の損害を最小限に抑えるため。

ルーターをフラッシュします。


選択したモデルの場合、ファームウェアbackfire.brcm47xxが必要です
1.ハードウェアリセット、いわゆる30/30/30を実行します。
ルーターの電源がオンになったら、リセットボタンを押して、ボタンを放さずに30秒間保持し、電源をオフにしてさらに30秒間、ボタンを放さずに、電源をオンにしてリセットボタンを再度30秒間保持します。
ヒント:ルーターのデフォルトIPは192.168.1.1です。 ハードウェアリセット30/30/30の前に「ping」すると、リセットttlが100に等しくなった後、ttlは64になります。
次のコマンドを使用して、ファームウェアをルーターに送信します
atftp --trace --option "timeout 1" --option "mode octet" --put --local-file openwrt-brcm47xx-squashfs.trx 192.168.1.1
メッセージのちらつきが終わったら、5分間待ってから電源ルーターをオフ/オンにします。
次のステップは、ルートパスワードを設定し、不要なサービスを無効にすることです。このため、ルーターのWebインターフェイスに移動します
192.168.1.1
luci_dhcp_migrateとdnsmasqを無効にしました(ネットワーク上にDHCPとDNSがあります)



これはウェブインターフェースで終了します。コンソールからさらに設定を進めます。


Asus WL 520GUには、5つのポート、WANポート、および4つのLANポートがあります。 WANはプロバイダー、ローカルネットワークへのLAN1-3を確認し、LAN4を別のVLANに割り当て、DMZに転送します。

ルーターに接続する

#ssh root@192.168.0.30
root@192.168.0.30's password:

BusyBox v1.15.3 (2010-11-12 00:01:06 PST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| WIRELESSFREEDOM
Backfire (10.03.1-rc4, r24045) --------------------
* 1/3 shot Kahlua In a shot glass, layer Kahlua
* 1/3 shot Bailey's on the bottom, then Bailey's,
* 1/3 shot Vodka then Vodka.
---------------------------------------------------
root@OpenWrt:~#


いくつかの構成ファイルを変更する必要があります。

1. / etc / config / network、インターフェイス設定はこのファイルで設定されます。
root@OpenWrt:~# cat /etc/config/network
#### VLAN configuration
config switch eth0
option enable 1

config switch_vlan eth0_0
option device "eth0"
option vlan 0
option ports "1 2 3 5*" #default vlan, LAN1-3,
# - 5*, ,
#
#http://wiki.openwrt.org/doc/uci/network/switch


config switch_vlan eth0_1
option device "eth0"
option vlan 1
option ports "0 5" # WAN

config switch_vlan eth0_2
option device "eth0"
option vlan 2
option ports "4 5" # vlan2, DMZ

#### Loopback configuration
config interface loopback
option ifname "lo"
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0

#### LAN configuration
config interface lan
option type bridge
option ifname "eth0.0"
option proto static
option ipaddr 192.168.0.30
option netmask 255.255.255.0

#### DMZ configuration
config interface dmz
option ifname "eth0.2"
option proto static
option ipaddr 192.168.100.1
option netmask 255.255.255.0

#### WAN configuration
config interface wan
option ifname "eth0.1"
option proto static
option ipaddr 1.2.3.4
option netmask 255.255.255.0
option gateway 1.2.3.1


2. / etc / config / firewallを除くすべての行をコメントアウトします
config include
option path /etc/firewall.user

3. Iptablesを設定します。このために、ファイル/etc/firewall.userを追加します
#!/bin/sh

ext_if="eth0.1"
ext_ip="1.2.3.4"

int_if="br-lan"
int_ip="192.168.0.30"
LAN="192.168.0.0/24"

dmz_if="eth0.2"
dmz_ip="192.168.100.1"
dmz_server="192.168.100.2"

lo_if="lo"
lo_ip="127.0.0.1"

IPTABLES="/usr/sbin/iptables"

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N bad_tcp_packets
$IPTABLES -N icmp_packets

#chain icmp_packets ( echo reply[request)
$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 0 -j ACCEPT

#chain bad_tcp_packets ( iptables #)
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#chain PREROUTING ( destination address IP)
$IPTABLES -t nat -A PREROUTING -p tcp -d $ext_ip -m multiport --dport 8001,31187,20113,20118 -j \
DNAT --to-destination $dmz_server
$IPTABLES -t nat -A PREROUTING -p tcp -d $ext_ip -m multiport --dport 80 -j DNAT \
--to-destination $dmz_server:8001
$IPTABLES -t nat -A PREROUTING -p udp -d $ext_ip -m multiport --dport 20113,20118 -j \
DNAT --to-destination $dmz_server
$IPTABLES -t nat -A PREROUTING -p icmp -d $ext_ip -j DNAT --to-destination $dmz_server

#FORWARD
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -p tcp -i $ext_if -o $dmz_if -s 0/0 -d $dmz_server -m multiport --dport 80,8001,31187,20113,20118 -j \ ACCEPT
$IPTABLES -A FORWARD -p udp -i $ext_if -o $dmz_if -s 0/0 -d $dmz_server -m multiport --dport 20113,20118 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $int_if -o $dmz_if -s $LAN -d $dmz_server -m multiport --dport 31187,3389 -j ACCEPT
$IPTABLES -A FORWARD -p icmp -i $int_if -o $dmz_if -s $LAN -d $dmz_server -j icmp_packets
$IPTABLES -A FORWARD -p icmp -i $ext_if -o $dmz_if -s 0/0 -d $dmz_server -j icmp_packets
$IPTABLES -A FORWARD -p ALL -i $dmz_if -o $int_if -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p ALL -i $dmz_if -o $ext_if -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p icmp -i $dmz_if -o $ext_if -j icmp_packets

#INPUT
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
$IPTABLES -A INPUT -p icmp -j icmp_packets
$IPTABLES -A INPUT -p tcp -i $int_if -s $LAN -m multiport --dport 22,80 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $dmz_if -s $dmz_server -j ACCEPT

#OUTPUT
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p icmp -o $ext_if -d 0/0 -j icmp_packets
$IPTABLES -A OUTPUT -p ALL -s $lo_ip -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $int_ip -d $LAN -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -o $dmz_if -d $dmz_server -j icmp_packets

#POSTROUTING
$IPTABLES -t nat -A POSTROUTING -o $ext_if -j SNAT --to-source $ext_ip

ルーターを再起動し、設定の動作を確認します。
root@OpenWrt:~# reboot

シムを終了し、タスクを完了し、必要に応じてトラフィックを実行します。
結論として、このソリューションは非常に予算がかかり、大量のトラフィックではほとんど考慮できないことに注意してください。
iperfでテストすると、次の結果が得られました。
iperfサーバーはdmzで実行され、クライアントはLAN =〜36Mb / s
iperfサーバーはdmzで実行され、インターネット上のクライアント=〜26Mb / s
これは私にとっては十分であり、プロバイダーは4Mb / sを提供し、ローカルネットワークからDMZへのトラフィックはそれほど大きくありません。

ご清聴ありがとうございました=)

Source: https://habr.com/ru/post/J109976/


All Articles