特権ポートである 0〜1023 番へのポートアクセスは全て禁止します。当然、 これ以前に必要なポートへのアクセスは quick 指定を使って許可していなければ なりません。
block in from any to INSIDE port < 1024 group 100 |
但し、この場合これらのポートへのパケットを全てドロップするだけなので、 明らかにファイアーウォールが落としている事が分かってしまいます。 そこで、ICMP の unreachable メッセージが返るようにして置きましょう。 但し、その際の発信元IPがファイアーウォールになっていると、頭隠して 尻隠さず状態になってしまいますから、発信IPは先に来たパケットの宛て先 IPにして置くことで、あたかもそのマシンが存在し、そこでそのサービスが 走っていないかのごとく見せかけることが出来ます(またはそのマシンが 存在しない)。
# block with port unreachable block return-icmp-as-dest(port-unr) in from any to INSIDE port < 1024 group 100 |
一方、不正なIPオプションを伴ったパケットも落とした方が良いとされています。 これは、ルールの先頭で、プライベートアドレスのチェックの前くらいで 行っておけば良いでしょう。
block in log quick from any to any with ipopts group 100 block in log quick proto tcp from any to any with short group 100 |
2行目は不当に短いTCPのパケットを落とすためのものです。
その他にも、以下のポートへのアクセスは禁止しておきます。
| 1025 | lister |
| 1524 | ingreslock |
| 2000 | openwin |
| 2049 | NFS |
| 2766 | listner(SystemV) |
| 6000-6063 | X11 |
| 6667 | IRC |