こんにちは。松田陽一 _at_ PAL-NET三鷹です。 質問の内容を変更します。 一応、関連する話題ということで、In-Reply-To: 及び References: を 残しておきました。 From: MATSUDA Yoh-ichi / 松田陽一 <matsuda _at_ palnet.or.jp> Subject: [linux-users:77127] Re: 一番簡単なセキュリティー対策方法 Date: Tue, 5 Dec 2000 10:35:00 +0900 > 例えば、ダイヤルアップサーバにおいて、全てのポートを閉めて、尚且つ > IPマスカレードを用いて、 web 閲覧、 ftp アクセス、メール取り込み程 > 度のことができれば十分、という要求を満たすにはどうしたら良いのか、 > とか。 私を含め、常時接続環境を持つ個人ユーザーが増加しています。 Linux BOX をダイヤルアップルータにして、常時接続環境にする場合、 下手をすると踏み台にされてしまう恐れがあります。 最低限、外部へのサービスを行う必要が無いなら、不要なポートは閉め なければならないと思います。 ポートを閉める、ということは、ダイヤルアップユーザに限らず、常時 接続環境において最低限やらなければならないことではないかと思いま す。 この時点での私の認識に間違いがありましたらご指摘下さい。 ポートを閉める、となると、現状では 2.2 系カーネルに対応する ipchains を使うことになるかと思います。 mini-HOWTO 及び HOWTO 文書が出ていますが、いわゆる「典型的なスタ イル」としてのシェルスクリプトの書き方の定石みたいなものが未だ示 されていないように思います。 先ず、私は ipchains-mini-HOWTO に書かれている事例 http://www.linux.or.jp/JF/JFdocs/ipchains-mini-HOWTO.html 及び、 debian-users ML でのスレッド Linkname: [debian-users:24982] Re: ipchainsのログ機能 URL: http://lists.debian.or.jp/debian-users/200011/msg00074.html を参考に、現在以下のように設定しています。 --- /etc/ppp/ip-up --- #!/bin/sh # # $Id: ip-up,v 1.2 1998/02/10 21:25:34 phil Exp $ # # This script is run by the pppd after the link is established. # It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes, # set IP address, run the mailq etc. you should create script(s) there. # # Be aware that other packages may include /etc/ppp/ip-up.d scripts (named # after that package), so choose local script names with that in mind. # # This script is called with the following arguments: # Arg Name Example # $1 Interface name ppp0 # $2 The tty ttyS1 # $3 The link speed 38400 # $4 Local IP number 12.34.56.78 # $5 Peer IP number 12.34.56.99 # $6 Optional ``ipparam'' value foo # The environment is cleared before executing this script # so the path must be reset PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin export PATH # These variables are for the use of the scripts run by run-parts PPP_IFACE="$1" PPP_TTY="$2" PPP_SPEED="$3" PPP_LOCAL="$4" PPP_REMOTE="$5" PPP_IPPARAM="$6" export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM # as an additional convenience, $PPP_TTYNAME is set to the tty name, # stripped of /dev/ (if present) for easier matching. PPP_TTYNAME=`/usr/bin/basename "$2"` export PPP_TTYNAME # Main Script starts here run-parts /etc/ppp/ip-up.d # last line # 以下がまつだが設定したもの # ppp-in チェインの設定 (ipchains-mini-HOWTO より) /sbin/ipchains -N ppp-in /sbin/ipchains -A input -i ppp0 -j ppp-in # ポート 6000, 7000 を DENY /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 6000 -j DENY -l /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 7000 -j DENY -l # ip 偽装を DENY /sbin/ipchains -A ppp-in -s 192.168.10.0/24 -j DENY -l # ポート 1024〜65535 の tcp syn パケットを DENY /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 1024:65535 -p tcp -y -j DENY -l # ポート 1024〜65535 の syn パケット以外の tcp パケットを ACCEPT /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 1024:65535 -p tcp ! -y -j ACCEPT # ポート 1024〜65535 の udp パケットを ACCEPT # これを指定しないと DNS 参照ができない /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 1024:65535 -p udp -j ACCEPT # ssh を ACCEPT /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 ssh -j ACCEPT /sbin/ipchains -A ppp-in -p udp -s 0/0 -d 0/0 ssh -j ACCEPT # 一部の pop server の為に auth を ACCEPT /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 auth -j ACCEPT # ntp を ACCEPT /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 ntp -j ACCEPT /sbin/ipchains -A ppp-in -p udp -s 0/0 -d 0/0 ntp -j ACCEPT # 以下より ICMP の ACCEPT # Linkname: Linux IPCHAINS-HOWTO: IP ファイアウォーリングチェイン # URL: http://www.linux.or.jp/JF/JFdocs/IPCHAINS-HOWTO-4.html # ping を ACCEPT /sbin/ipchains -A ppp-in -p icmp -s 0/0 echo-reply -d 0/0 -j ACCEPT # "destination unreachable" を ACCEPT /sbin/ipchains -A ppp-in -p icmp -s 0/0 destination-unreachable -d 0/0 -j ACCEPT # ping を ACCEPT /sbin/ipchains -A ppp-in -p icmp -s 0/0 echo-request -d 0/0 -j ACCEPT # traceroute を ACCEPT /sbin/ipchains -A ppp-in -p icmp -s 0/0 time-exceeded -d 0/0 -j ACCEPT # 上記以外は DENY /sbin/ipchains -A ppp-in -j DENY -l --- end of /etc/ppp/ip-up --- 私は Debian 2.2 (potato) を使用しており、 /etc/network/interfaces には、以下のように設定しています。 iface eth0 inet static address 192.168.10.1 network 192.168.10.0 netmask 255.255.255.0 broadcast 192.168.10.255 up ipchains -A forward -s 192.168.10.0/24 -d 0.0.0.0/0 -j MASQ up ipchains -A input -s 192.168.10.0/24 -d 192.168.10.0/24 -j ACCEPT up ipchains -A output -s 192.168.10.0/24 -d 192.168.10.0/24 -j ACCEPT up ipchains -A input -s 0/0 -d 192.168.10.0/24 -j DENY forward チェインには MASQ を設定し、ローカルネットワーク同士は全 て ACCEPT にしています。 ここで質問です。 (1) 上記設定で、 ・ssh, auth, ntp 以外の well-known ポートを閉めた ・1024番以降のポートは SYN パケットをブロックするようにした と思いますが、上記内容に何処か不備はあるでしょうか? (2) 上記設定で、 nmap -sU を実行すると、 WARNING: -sU is now UDP scan -- for TCP FIN scan use -sF Starting nmap V. 2.12 by Fyodor (fyodor _at_ dhp.com, www.insecure.org/nmap/) Interesting ports on p0842-ip03higasisibu.tokyo.ocn.ne.jp (211.122.46.80): Port State Protocol Service 1 open udp tcpmux 2 open udp compressnet 3 open udp compressnet 4 open udp unknown 5 open udp rje 6 open udp unknown 7 open udp echo 以下、延々と udp ポートが開いている、という旨のメッセージが 続きます。 well-known ポートについては全てブロックしている筈なのに、何 故このようなメッセージが出るのでしょうか? 事実、 well-known ポートに対する udp でのスキャンは、 /var/log/messages に記録されています。 本当に udp は DENY されているのでしょうか? (3) また、1024番以上のポートにおいて、 udp をブロックすることは できません。 DNS 参照にどうしても必要だからです。 これ以上の対策としては、何をすべきなのでしょうか? udp を用いる攻撃に対して、 ipchains にて何を設定すれば良い のでしょうか? From: Tatsuya BIZENN <bizenn _at_ visha.org> Subject: [linux-users:77131] Re: 一番簡単なセキュリティー対策方法 Date: Tue, 5 Dec 2000 10:54:43 +0900 > 備前です。またまた割込み。 どうもです。^^ > > 例えば、ダイヤルアップサーバにおいて、全てのポートを閉めて、尚且つ > > IPマスカレードを用いて、 web 閲覧、 ftp アクセス、メール取り込み程 > > 度のことができれば十分、という要求を満たすにはどうしたら良いのか、 > > とか。 > > そこまで具体的にやってること、やりたいことが提示されているのなら、具体 > 策を提示することも可能になりますね。元の方のメッセージには、そういう情 > 報はなかったように思います。 了解です、今回はこの内容に基づいて質問をしました。 元の質問をされた方のことについては無視しています。 何故なら、もう既に色々な方が問題点を指摘しているからです。 > > 一連の議論をずっと見ていて思ったのですが、具体的な方策が示されない > > ので、初心者である私は歯がゆい思いで読んでいました。 > > 具体的な目的や守りたいものや状況が説明されない限り、方策を示すのは不可 > 能でしょう。前述した「原則」は示せますが、そんなものは Web や書籍にい > くらでも転がってる情報ですよね? 「原則」も大事だとは思います。 が、既にその概念は示されていると思います。 私のような理解力の不足している者に対しても十分に示されているかど うかは別として。 今求められているのは、具体的な事例ではないかと考えます。 にわか管理者云々以前に、最低限、「家に鍵をかける方法」が必要では ないかと思います。 その上で、「典型的な鍵のかけ方」を明確に示すものが見つからなかっ たので、敢えてこのような質問をしました。 # 「家に鍵をかける」というくだりは私のオリジナルではなく、DMを下 # さった宮本久仁男さんのメールから拝借しました。(__) -- よぉ、ちぇきらっ、ちょぉ!(ぼうよみ) 松田 陽一(yoh) mailto:matsuda _at_ palnet.or.jp (メールアドレス変更しました) http://www2.palnet.or.jp/~matsuda/index.htm
Follow-Ups:
- [linux-users:77185] Re: how to shut off all ports with ipchains(was Re: Re: 一番簡単なセキュリティー対策方法)Tatsuya BIZENN
- [linux-users:77263] Re: how to shut off all ports with ipchains(was Re: Re: 一番簡単なセキュリティー対策方法)Tatsuya BIZENN
- [linux-users:77125] Re: 一番簡単なセキュリティー対策方法OOSATO,Kazzrou
- [linux-users:77127] Re: 一番簡単なセキュリティー対策方法MATSUDA Yoh-ichi / 松田陽一
- [linux-users:77131] Re: 一番簡単なセキュリティー対策方法Tatsuya BIZENN
- Prev by Subject: [linux-users:77176] Re: kterm で[Del]キーを右文字削除させるには?
- Next by Subject: [linux-users:77178] Re: cdrom で日本語のファイル名
- Previous by thread: [linux-users:77155] Re: 一番簡単なセキュリティー対策方法
- Next by thread: [linux-users:77263] Re: how to shut off all ports with ipchains(was Re: Re: 一番簡単なセキュリティー対策方法)
- Indexes:[Main][Thread]