末尾へ

Linux で FireWall


Since 4/22'98

To MENU ペンギン君

1.ファイアウォール設定

(2001.7.15)

1.ファイアウォール設定

ipchains の設定は /etc/network/interfaces に

iface ppp0 inet ppp
 provider dsl-provider
 up ipchains -P forward DENY
 up ipchains -A forward -s 192.168.0.0/24 -j MASQ
 up ipchains -A forward -i ppp0 -p tcp --sport 137:139 -j DENY
 up ipchains -A forward -i ppp0 -p udp --sport 137:139 -j DENY
 up ipchains -A output  -i ppp0 -p tcp -s 0.0.0.0/0 137:139 -d 0/0 1024:65535 -j DENY
などとやっていたけど、正しいとすれば、マスカレードの設定までで後はよく分からない。

「Shields Up!で自分のインターネット上での安全度チェックをしてみよう」という
http://www.upsizing.co.jp/news/report0426.htm
で、チェックすると
Port Service Status
21   FTP     OPEN!
23   Telnet  Closed
25   SMTP    OPEN!
79   Finger  Closed
80   HTTP    OPEN!
110  POP3    Closed
113  IDENT   Closed
139  NetBIOS OPEN!
143  IMAP    OPEN!
443  HTTPS   Closed
と、まあこんな結果が返ってくる。
 Telnet や POP3 などが Closed なのは、/etc/inetd.conf で、それらのプロトコルをコメントアウトしているからで、ipchains とは関係ない。
#telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd ついでに、付け加えると、
/etc/hosts.deny に
ALL:ALL
を書き込んで全てを拒否して、/etc/hosts.allow に
ALL: LOCAL .haya.local
を書き込んで自分のネットワークだけを許可します。個々に
wu-ftpd: .haya.local
in.qpopper: .haya.local
imapd: .haya.local
rpc.mountd: .haya.local
swat: .haya.local
smbd: .haya.local
nmbd: .haya.local
と書き込んで行ってもいいです。

その後、rp-pppoe-3.1 を http://www.roaringpenguin.com/pppoe/ からダウンロード、インストールしたら、

Port Service Status
21   FTP     Stealth!
23   Telnet  Stealth!
25   SMTP    Stealth!
79   Finger  Stealth!
80   HTTP    Stealth!
110  POP3    Stealth!
113  IDENT   Stealth!
139  NetBIOS Stealth!
143  IMAP    Stealth!
443  HTTPS   Stealth!
となっているではないですか。
 Stealth というのは、防御の点では最高の状態で、インターネットから情報を取りに行くだけなら、まさに最高ですね。
( Stealth の意味は、「Shields Up!」のページを参照してください。)

rp-pppoe-3.1 の設定については、インストール時に、Firewalling で、'Masquerading' または 'Stand-Alone' を選択すると、/etc/ppp/ に

# Interface to Internet
EXTIF=ppp+

ANY=0.0.0.0/0

ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward DENY

ipchains -F forward
ipchains -F input
ipchains -F output

# Deny TCP and UDP packets to privileged ports
ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY
ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY

# Deny TCP connection attempts
ipchains -A input -l -i $EXTIF -p tcp -y -j DENY

# Deny ICMP echo-requests
ipchains -A input -l -i $EXTIF -s $ANY echo-request -p icmp -j DENY

# Do masquerading
ipchains -A forward -s $ANY -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
といったスクリプトが置かれます。
'Stand-Alone' には # Do masquerading 以下の行がありません。

ipchains -A forward -s $ANY -j MASQ は
ipchains -A forward -s 0.0.0.0/0 -j MASQ に置き換えられますが

ipchains -A forward -s 192.168.0.0/24 -j MASQ
とLANのネットワークを直接書き込むことにしました。

これだけの設定です。

このままの設定では、せっかく公開している Webサーバーまで隠れてしまいます。
そこで先ず試しに、
# ipchains -I input 1 -l -i ppp+ -d 0.0.0.0 80 -p tcp -j ACCEPT
# ipchains -L
と打ち込むと、

Chain input (policy ACCEPT):
target     prot opt     source                destination           ports
ACCEPT     tcp  ----l-  anywhere             anywhere              any ->   www
DENY       udp  ----l-  anywhere             anywhere              any ->   0:1023
DENY       tcp  ----l-  anywhere             anywhere              any ->   0:1023
DENY       tcp  -y--l-  anywhere             anywhere              any ->   any
DENY       icmp ----l-  anywhere             anywhere              echo-request
Chain forward (policy DENY):
target     prot opt     source                destination           ports
MASQ       all  ------  localnet/24          anywhere              n/a
Chain output (policy ACCEPT):
となり、Webサーバーだけが有効になります。
-I が挿入。input 1 が Chain input の1番目の行に挿入することになります。

これが確認できたので、
/etc/ppp/firewall-masq に
# Interface to Internet
EXTIF=ppp+

ANY=0.0.0.0/0

ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward DENY

ipchains -F forward
ipchains -F input
ipchains -F output

####Chain input の DENY の前のここに挿入する(www でも 80でもよい)####
ipchains -A input -l -i $EXTIF -d $ANY www -p tcp -j ACCEPT

# Deny TCP and UDP packets to privileged ports
ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY
ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY

# Deny TCP connection attempts
ipchains -A input -l -i $EXTIF -p tcp -y -j DENY

# Deny ICMP echo-requests
ipchains -A input -l -i $EXTIF -s $ANY echo-request -p icmp -j DENY

# Do masquerading
ipchains -A forward -s 192.168.0.0/24 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
のように書き加えます。
これで、再起動しても Webサーバーだけ開かれたファイアウォールが構築できました。
Port Service Status
21   FTP     Stealth!
23   Telnet  Stealth!
25   SMTP    Stealth!
79   Finger  Stealth!
80   HTTP    OPEN!
110  POP3    Stealth!
113  IDENT   Stealth!
139  NetBIOS Stealth!
143  IMAP    Stealth!
443  HTTPS   Stealth!

(なお、既記載分も予告なく訂正、削除、追加する場合があります。)


Linux で家庭内 LAN をやってみました3

Linux で家庭内 LAN をやってみました2

Linux で家庭内 LAN をやってみました

FreeBSD で家庭内 LAN をやってみました

Router で家庭内 LAN をやってみました

先頭へ

To MENU

メインメニューへ