プロが教える店舗&オフィスのセキュリティ対策術

iptablesをさわっています。80番ポートのみあけたいのですが、80番以外も外部からアクセスできてしまいます。

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

FILTERNAME=CKFILTER
TARGET=CKFILTERED

iptables -A $FILTERNAME -s 58.6.0.0/17 -j $TARGET
iptables -A $FILTERNAME -s 58.6.128.0/17 -j $TARGET
iptables -A $FILTERNAME -s 58.7.0.0/16 -j $TARGET
iptables -A $FILTERNAME -s 58.14.0.0/15 -j $TARGET
iptables -A $FILTERNAME -s 58.16.0.0/16 -j $TARGET
iptables -A $FILTERNAME -s 58.17.0.0/17 -j $TARGET


iptables -A CKFILTER -j ACCEPT
iptables -A CKFILTERED -j LOG --log-prefix "Reject-TCP "
iptables -A CKFILTERED -j DROP
iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

どこが間違っているのか見つけられず困っています。

A 回答 (2件)

> iptables -P INPUT DROP


> このあたりで閉じたことにはなっていないのでしょうか。

これはテーブルに合致しなかった場合に最後に参照されます。
外部から入ってきたSYNパケットは
iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER
で CKFILTER テーブルに入ります。
CKFILTER は
iptables -A CKFILTER -s 58.6.0.0/17 -j CKFILTERED
iptables -A CKFILTER -s 58.6.128.0/17 -j CKFILTERED
iptables -A CKFILTER -s 58.7.0.0/16 -j CKFILTERED
iptables -A CKFILTER -s 58.14.0.0/15 -j CKFILTERED
iptables -A CKFILTER -s 58.16.0.0/16 -j CKFILTERED
iptables -A CKFILTER -s 58.17.0.0/17 -j CKFILTERED
iptables -A CKFILTER -j ACCEPT
となっているため、IPアドレスに合致しないものはすべて ACCEPT されます。
したがって、-P で指定したところまで届きません。
その後の通信は
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ですべて ACCEPT になります。
----
80番のみ開けたい(指定したIP以外ログを取らない)のであれば、以下のようになります。
iptables -A $FILTERNAME -p tcp --dport 80 -j ACCEPT
    • good
    • 0
この回答へのお礼

>80番のみ開けたい(指定したIP以外ログを取らない)のであれば、以下のようになります。
>iptables -A $FILTERNAME -p tcp --dport 80 -j ACCEPT

ありがとうございます。別途ルールを作成するわけですね。

勉強なりました。本当にありがとうございます

お礼日時:2009/12/22 12:02

ここで指定された以外の送信元は


iptables -A $FILTERNAME -s 58.6.0.0/17 -j $TARGET
iptables -A $FILTERNAME -s 58.6.128.0/17 -j $TARGET
iptables -A $FILTERNAME -s 58.7.0.0/16 -j $TARGET
iptables -A $FILTERNAME -s 58.14.0.0/15 -j $TARGET
iptables -A $FILTERNAME -s 58.16.0.0/16 -j $TARGET
iptables -A $FILTERNAME -s 58.17.0.0/17 -j $TARGET

これで許可されていますね。
iptables -A CKFILTER -j ACCEPT

基本はポート全閉じで、指定したポートのみ開けてはいかがでしょうか。

この回答への補足

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP

このあたりで閉じたことにはなっていないのでしょうか。

iptables -A CKFILTER -j ACCEPT
iptables -A CKFILTERED -j LOG --log-prefix "Reject-TCP "
iptables -A CKFILTERED -j DROP
iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER

ここの書き方がまちがっているのでしょうか。。

補足日時:2009/12/21 13:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!