こんばんは、いつもお世話になっております。
今まで使っていたiptablesの設定を書いたスクリプトをふとしたことで失ってしまい、仕方なくもう一度書き直したのですが、wwwに外から接続できなくなってしまいました。
中からは見えるし、iptablesですべてを開放するように設定すれば見えるためiptablesの設定ミスなのは明白なのですが、どこが間違っているのか分かりません。
以下のスプリクトでどこが間違っているのか指摘していただけないでしょうか?
よろしくお願いします。
linuxマシンはルーターも兼ねさせています。
----
#!/bin/sh
IPTABLES='/sbin/iptables'
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_irc
echo 0 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i eth1 -s 192.168.2.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 443 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 25 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 465 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 143 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 993 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --sport 20 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
$IPTABLES -A FORWARD -o eth0 -p tcp -m state --state NEW --dport 139 -j DROP
$IPTABLES -A FORWARD -o eth0 -p udp --dport 137:138 -j DROP
$IPTABLES -A OUTPUT -o eth0 -p tcp -m state --state NEW --dport 139 -j DROP
$IPTABLES -A OUTPUT -o eth0 -p udp --dport 137:138 -j DROP
$IPTABLES -A PREROUTING -t nat -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128
$IPTABLES -A PREROUTING -t nat -p tcp -i eth1 --dport 21 -j REDIRECT --to-port 2121
#上は透過プロキシのための設定です
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A POSTROUTING -o eth0 -t nat -j MASQUERADE
/etc/rc.d/init.d/iptables save
echo 1 > /proc/sys/net/ipv4/ip_forward
----
以上です。
こんばんは。
おやじは、ルータという視点でiptablesを見たことがないのと、条件が分からないのと、全てを検証するのは大変な労力がいるので無理ですが、いくつか気が付いた点を上げて置きます。
1. INPUT/OUTPUT/FORWARDは、eth0/eth1の両方にかかるので、-iや-oでインターフェースを明示していないルールは両方に効いてしまうので注意が必要。
2. 従って、冗長があってもいいので、一つ一つの通信を設定していったほうが良い。
これから、怪しいのは、
$IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
ではないでしょうか?(自信なし)
これが無ければ、
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
で、外部からの80番アクセスを受けて、帰りのパケットは出て行くはずです。
しかし、
$IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
があるので、ルーティング処理で競合しており、eth0からのパケットがFORWARDされてしまう可能性がありませんか?
上記、2行はクライアントからの外部アクセスのためと思いますが、
$IPTABLES -A FORWARD -i eth1 -s 192.168.2.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -d 192.168.2.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
を後ろの方に書いて、前の2行を消せばうまくいくのでは?
後、NETBIOS関係の設定も不足していると思います。
かつさんのページを紹介しておきます。一つ一つ整理して、矛盾がないか検証が必要と思います。
http://www.kkoba.com/linuxrouter/iptables.shtml
> こんばんは。
>
> おやじは、ルータという視点でiptablesを見たことがないのと、条件が分からないのと、全てを検証するのは大変な労力がいるので無理ですが、いくつか気が付いた点を上げて置きます。
>
> 1. INPUT/OUTPUT/FORWARDは、eth0/eth1の両方にかかるので、-iや-oでインターフェースを明示していないルールは両方に効いてしまうので注意が必要。
> 2. 従って、冗長があってもいいので、一つ一つの通信を設定していったほうが良い。
>
> これから、怪しいのは、
>
> $IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
> $IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
>
> ではないでしょうか?(自信なし)
>
> これが無ければ、
>
> $IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
> $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> で、外部からの80番アクセスを受けて、帰りのパケットは出て行くはずです。
> しかし、
>
> $IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
>
> があるので、ルーティング処理で競合しており、eth0からのパケットがFORWARDされてしまう可能性がありませんか?
> 上記、2行はクライアントからの外部アクセスのためと思いますが、
>
> $IPTABLES -A FORWARD -i eth1 -s 192.168.2.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
> $IPTABLES -A FORWARD -i eth0 -d 192.168.2.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> を後ろの方に書いて、前の2行を消せばうまくいくのでは?
>
> 後、NETBIOS関係の設定も不足していると思います。
> かつさんのページを紹介しておきます。一つ一つ整理して、矛盾がないか検証が必要と思います。
>
> http://www.kkoba.com/linuxrouter/iptables.shtml
レスありがとうございます。
とりあえず言われたとおりの設定を試してはみましたが、失敗でした。
ただ、検索して調べてみると
$IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
で上手くいっている人もいるようです。
このへんがどうも理解できずにいます。
それからNETBIOS関係が足りないということですが、BBRでDROPされているようなので不必要かな、と考えています。
そういうものでもないのでしょうか?やはりiptablesにも記述すべきでしょうか?
最初の設定をバックアップに入れて見ましたが、eth0からhttpはアクセスできますね。
クロスケーブルがどこかにいってしまって、eth1をリンクアップできなかったため
FORWARDが有り得ないので、なんともいえないところですが、とり合えず行けるのでは
と思いました。
iptables -L で評価した結果がわかるので、見てみたらどうですか?整理されるので
見やすくなります。
もしかすると、iptables以外(ルータやデーモン)に問題がある可能性が高いような
気がします。
> レスありがとうございます。
> とりあえず言われたとおりの設定を試してはみましたが、失敗でした。
これからも、原因は違うと思います。
> ただ、検索して調べてみると
> $IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
> $IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
> $IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
> で上手くいっている人もいるようです。
少なくとも、おやじのやったテストでも条件付ですが、サーバにはアクセスできています。
結果からすると、INPUTの評価のほうが優先されているように見えます。ドキュメントを
探せば、書いてあるとおもいますが、考えてみれば、単にFORWARDするより内部処理してから
OUTPUTしたいし、Destinationが192.168.2.0/24とは決まっていないので、自分当てとして
処理するはずですね。
> それからNETBIOS関係が足りないということですが、BBRでDROPされているようなので不必要かな、と考えています。
INPUTがDROPされていません。
> そういうものでもないのでしょうか?やはりiptablesにも記述すべきでしょうか?
ルータがあるなら、なるべく入り口で遮断すべきです。且つiptablesも設定して
おいたほうが良いというレベルと思います。ルータを越えられて、一旦、サーバを
乗っ取られれば、何でもありですから。
> 最初の設定をバックアップに入れて見ましたが、eth0からhttpはアクセスできますね。
> クロスケーブルがどこかにいってしまって、eth1をリンクアップできなかったため
> FORWARDが有り得ないので、なんともいえないところですが、とり合えず行けるのでは
> と思いました。
> iptables -L で評価した結果がわかるので、見てみたらどうですか?整理されるので
> 見やすくなります。
> もしかすると、iptables以外(ルータやデーモン)に問題がある可能性が高いような
> 気がします。
>
> > レスありがとうございます。
> > とりあえず言われたとおりの設定を試してはみましたが、失敗でした。
>
> これからも、原因は違うと思います。
>
> > ただ、検索して調べてみると
> > $IPTABLES -A FORWARD -d 192.168.2.0/24 -j ACCEPT
> > $IPTABLES -A FORWARD -s 192.168.2.0/24 -j ACCEPT
> > $IPTABLES -A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT
> > で上手くいっている人もいるようです。
>
> 少なくとも、おやじのやったテストでも条件付ですが、サーバにはアクセスできています。
> 結果からすると、INPUTの評価のほうが優先されているように見えます。ドキュメントを
> 探せば、書いてあるとおもいますが、考えてみれば、単にFORWARDするより内部処理してから
> OUTPUTしたいし、Destinationが192.168.2.0/24とは決まっていないので、自分当てとして
> 処理するはずですね。
>
> > それからNETBIOS関係が足りないということですが、BBRでDROPされているようなので不必要かな、と考えています。
>
> INPUTがDROPされていません。
>
> > そういうものでもないのでしょうか?やはりiptablesにも記述すべきでしょうか?
>
> ルータがあるなら、なるべく入り口で遮断すべきです。且つiptablesも設定して
> おいたほうが良いというレベルと思います。ルータを越えられて、一旦、サーバを
> 乗っ取られれば、何でもありですから。
何度もありがとうございます。
以下にiptables -Lの結果を書き記しておきます。何か分かりましたらご教授いただけましたら幸いです。
---
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- 192.168.2.0/24 anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtps
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:imap
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere state NEW tcp spt:ftp-data
REJECT tcp -- anywhere anywhere tcp dpt:auth reject-with tcp-reset
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.2.0/24 anywhere
ACCEPT all -- anywhere 192.168.2.0/24
DROP tcp -- anywhere anywhere state NEW tcp dpt:netbios-ssn
DROP udp -- anywhere anywhere udp dpts:netbios-ns:netbios-dgm
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere state NEW tcp dpt:netbios-ssn
DROP udp -- anywhere anywhere udp dpts:netbios-ns:netbios-dgm
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
---
ここでちょっと疑問なのはINPUTで
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
となっている点です。
$IPTABLES -A INPUT -i lo -j ACCEPT の部分だと思いますがiptables -Lには -i の部分は表示されないのでしょうか?
それから、他に原因があるのかもという話ですが、たとえば
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
とすると今度は403エラーが出てしまいました・・・。
ただ、今度はタイムアウトにはならなかったので少なくともiptablesにも問題があるのは明白だと思います。
この403エラーもindex.htmlはじめ全てのファイル、ディレクトリのパーミッションを755にしているので腑に落ちないところではあります。何より内部からは普通に見えているので。
あと、NETBIOS関係ですがINPUTをDROPするのは二重のセキュリティということ以外に何か意味があるのでしょうか?
今のところSAMBAあたりに問題がでそうで入れていませんでしたが・・・。
alphaさん、こんにちは。
一番初めの設定のまま、
$IPTABLES -A POSTROUTING -o eth0 -t nat -j MASQUERADE
の行だけ削除するとどうなるでしょうか?
BBRとLinuxで2段NAPTになっているあたりが怪しいと思います。
変な設定はありますが、見た感じ外部からhttpは通ると思います。
> Chain INPUT (policy DROP)
> target prot opt source destination
> ACCEPT all -- anywhere anywhere
> となっている点です。
iptables -Lでは「インターフェイス」が表示されないので、iptables -L -vで見て下さい。
> alphaさん、こんにちは。
>
> 一番初めの設定のまま、
> $IPTABLES -A POSTROUTING -o eth0 -t nat -j MASQUERADE
> の行だけ削除するとどうなるでしょうか?
> BBRとLinuxで2段NAPTになっているあたりが怪しいと思います。
> 変な設定はありますが、見た感じ外部からhttpは通ると思います。
>
> > Chain INPUT (policy DROP)
> > target prot opt source destination
> > ACCEPT all -- anywhere anywhere
> > となっている点です。
> iptables -Lでは「インターフェイス」が表示されないので、iptables -L -vで見て下さい。
こんばんは、かつさん。
言われたとおりやってみましたが、やはりだめです。
どうしてなんでしょうか・・・。おかしいところも多々あろうかとは思いますがいろいろやってもどうしても上手くいきません。
それからiptables -L -vは次のとおりになりました。
---pkts bytes target prot opt in out source destination
308 33944 ACCEPT all -- lo any anywhere anywhere
755 114K ACCEPT all -- eth1 any 192.168.2.0/24 anywhere
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:http
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:https
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:smtp
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:smtps
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:imap
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp dpt:imaps
0 0 ACCEPT tcp -- eth0 any anywhere anywhere state NEW tcp spt:ftp-data
0 0 REJECT tcp -- any any anywhere anywhere tcp dpt:auth reject-with tcp-reset
0 0 ACCEPT icmp -- any any anywhere anywhere icmp echo-reply
0 0 ACCEPT icmp -- any any anywhere anywhere icmp echo-request
852 531K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any 192.168.2.0/24 anywhere
0 0 ACCEPT all -- any any anywhere 192.168.2.0/24
0 0 DROP tcp -- any eth0 anywhere anywhere state NEW tcp dpt:netbios-ssn
0 0 DROP udp -- any eth0 anywhere anywhere udp dpts:netbios-ns:netbios-dgm
0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 136 packets, 9035 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- any eth0 anywhere anywhere state NEW tcp dpt:netbios-ssn
3 413 DROP udp -- any eth0 anywhere anywhere udp dpts:netbios-ns:netbios-dgm
1942 673K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
---
この通りインターフェイスも表示されました。ありがとうございました。
alphaさん、こんばんは。
> 言われたとおりやってみましたが、やはりだめです。
> どうしてなんでしょうか・・・。おかしいところも多々あろうかとは思いますがいろいろやっても
> どうしても上手くいきません。
> それからiptables -L -vは次のとおりになりました。
MASMASQUERADEが確実に外れてますか?
iptables -L -v -t nat
で確認してみて下さい。
natテーブルを初期化するためには、iptables -t nat -F すれば確実です。
・全部ACCEPTにして403ということは、このマシン以外のhttp Serverにアクセスしている。
・ってことは、MASMASQUERADEが変でルータに行っているのではないか?
と思ったからです。
MASMASQUERADEが確実に外れていてもダメなら、おやじさんが言う通りiptalbes以外かな?
あと、/etc/rc.d/init.d/iptables saveの前に以下を加えてログを取るようにすると、
何か掴めるかも知れません。
「全ての規則に合致せず、ポリシーに従って処理される前にログを取る」という設定です。
ログは、/var/log/messagesに残ります。
$IPTABLES -A INPUT -j LOG --log-prefix "iptables input: "
$IPTABLES -A OUTPUT -j LOG --log-prefix "iptables output: "
$IPTABLES -A FORWARD -j LOG --log-prefix "iptables forward: "
> alphaさん、こんばんは。
>
> MASMASQUERADEが確実に外れてますか?
> iptables -L -v -t nat
> で確認してみて下さい。
> natテーブルを初期化するためには、iptables -t nat -F すれば確実です。
>
> ・全部ACCEPTにして403ということは、このマシン以外のhttp Serverにアクセスしている。
> ・ってことは、MASMASQUERADEが変でルータに行っているのではないか?
> と思ったからです。
> MASMASQUERADEが確実に外れていてもダメなら、おやじさんが言う通りiptalbes以外かな?
>
> あと、/etc/rc.d/init.d/iptables saveの前に以下を加えてログを取るようにすると、
> 何か掴めるかも知れません。
> 「全ての規則に合致せず、ポリシーに従って処理される前にログを取る」という設定です。
> ログは、/var/log/messagesに残ります。
> $IPTABLES -A INPUT -j LOG --log-prefix "iptables input: "
> $IPTABLES -A OUTPUT -j LOG --log-prefix "iptables output: "
> $IPTABLES -A FORWARD -j LOG --log-prefix "iptables forward: "
かつさん、ありがとうございます!
確かにMASQUERADEがちゃんと外れていませんでした!iptables -Fだけではだめなのですね(考えてみたら当たり前ですが)。
ただ、これだと透過プロクシを使っているhttpとftpはまともに動きますがそれ以外はマスカレードしてくれませんので、
$IPTABLES -A POSTROUTING -t nat -o eth0 -s 192.168.2.0/24 -j MASQUERADE
としてみました。これでばっちりでした〜!
これを機会にもうちょっとiptablesについて勉強したいと思います。
おやじさん、かつさん、ありがとうございました!
> かつさん、ありがとうございます!
> 確かにMASQUERADEがちゃんと外れていませんでした!iptables -Fだけではだめなのですね(考えてみたら当たり前ですが)。
> ただ、これだと透過プロクシを使っているhttpとftpはまともに動きますがそれ以外はマスカレードしてくれませんので、
> $IPTABLES -A POSTROUTING -t nat -o eth0 -s 192.168.2.0/24 -j MASQUERADE
> としてみました。これでばっちりでした〜!
> これを機会にもうちょっとiptablesについて勉強したいと思います。
> おやじさん、かつさん、ありがとうございました!かつさん、ありがとうございます!
かつさん。ナイスフォローです。ProFTPDのRPM作成とコンテンツ書きしている間に終わってました。
alphaさん。まずは良かったですね。
ところで、かつさんもおっしゃってますが、そもそも何故NATなのでしょうか? 話が複雑になる
だけですから、素直にルータとして動かしたほうがいいのではないでしょうか? simple is bestです。
恐らく、192.168.2.0/24配下のクライアントからインターネットアクセスできなかったからと思いますが、
原因は、下記のケース4になっているからです。BBR側に、192.168.2.0/24のネットワークはeth0の先にいる
ことをスタティックに書けばちゃんと通信できます。
一度見直されたらどうですか?
http://www.aconus.com/~oyaji/router/router2.htm
> かつさん。ナイスフォローです。ProFTPDのRPM作成とコンテンツ書きしている間に終わってました。
> alphaさん。まずは良かったですね。
> ところで、かつさんもおっしゃってますが、そもそも何故NATなのでしょうか? 話が複雑になる
> だけですから、素直にルータとして動かしたほうがいいのではないでしょうか? simple is bestです。
> 恐らく、192.168.2.0/24配下のクライアントからインターネットアクセスできなかったからと思いますが、
> 原因は、下記のケース4になっているからです。BBR側に、192.168.2.0/24のネットワークはeth0の先にいる
> ことをスタティックに書けばちゃんと通信できます。
> 一度見直されたらどうですか?
>
> http://www.aconus.com/~oyaji/router/router2.htm
確かにスタティックに設定すればよいのかと思いましたが、恥ずかしながらよく分かりませんで安易にNATで設定してやればいいや、と考えていました。
そもそもうちでの環境は
WAN---ADSLルータ---LINUXマシン---クライアント
となっているのですが、この場合ADSLルータにスタティックルーティングの設定をすればLINUXでは特にマスカレードの設定は必要なくなるのでしょうか?
極論すればセキュリティは全てADSLルータに任せるのであればiptablesも必要なくなるということなのでしょうか?
こんばんは。
> 確かにスタティックに設定すればよいのかと思いましたが、恥ずかしながらよく分かりませんで安易にNATで設定してやればいいや、と考えていました。
> そもそもうちでの環境は
> WAN---ADSLルータ---LINUXマシン---クライアント
> となっているのですが、この場合ADSLルータにスタティックルーティングの設定をすればLINUXでは特にマスカレードの設定は必要なくなるのでしょうか?
> 極論すればセキュリティは全てADSLルータに任せるのであればiptablesも必要なくなるということなのでしょうか?
上記は、全てそのとおりです。Proxyだけ(これも80番をListenするインタフェースを制御すれば不要?気をつけないと、WAN側からのWWWサーバアクセスが入ってしまう可能性あり。)制御すればいいのではないでしょうか?
iptablesはあったほうがマシというレベルと思います。そういうおやじも設定していますが。