SYN Floodに対する防御なのだが、LinuxではSyn Cookiesという実装、*BSDでは Syn Cache というカーネルレベルの実装、FreeBSDだと両方のってるらしい。
- Syn Cookies:
- ステート?しりませんそんなの:D SYNいっぱいくるようならただ単にACK返すだけだよ:D
- Syn Cache:
- TCP構造体確保するタイミングを調整してSYNできる量を増やしましょう:D もちろんステートもきちんと保持します:D
デフォルト無効(これ有効にするとTCP の仕様を正しく実装できない(うにょら#1))
Syn Cookies:
http://ja.wikipedia.org/wiki/SYN_cookies
サーバー側に状態を保持しないため、サーバ側が先に反応を返すプロトコルにおいては、クライアント側がハングする可能性があること。
- FreeBSD 6.1-RELEASE
Syn Cookies: デフォルト有効 (syncacheのlimitに達したらSyn Cookiesを使用する)
Syn Cache: デフォルト有効
net.inet.tcp.syncookies: 1
net.inet.tcp.syncache.bucketlimit: 30
net.inet.tcp.syncache.cachelimit: 15359
net.inet.tcp.syncache.count: 0
net.inet.tcp.syncache.hashsize: 512
net.inet.tcp.syncache.rexmtlimit: 3
Syn Cacheできない状態に陥ったら、Syn Cookieに切り替えて動作します。ってそんな状況になるのがまずい気がする(;ω;)
Syn Cookies: 無効 そんなセキュリティホールの原因は...ry
Syn Cache: デフォルト有効
openbsd % sysctl -a | grep syncache
net.inet.tcp.syncachelimit=10255openbsd % vi /usr/src/sys/netinet/tcp_input.c:
tcp_input(struct mbuf *m, ...)
syn_cache_add
...
Syn Cacheできないなら放置プレイしようほととぎす。シンプル。
そういえば「SA:えっ?それOpenBSDでは既に治してますよ?」とか、「SA:そんなのOpenBSDでは起こらないよ」っていったリストが欲しいw
えっ?windowsってなんですか?