Last-modified: 2011-12-26 (月) 01:24:45
iptables/ステルススキャン対策をしたい

概要

ステルススキャンへの対策をとります。


ステルススキャンは、TCPポートスキャンの手法の1つで、ありえない組み合わせのフラグを送ることで、ターゲットのポート状態を判別します。TCPコネクションが確率しないので、ターゲットホストのログには記録されません。
ちなみに、すべてのフラグをOFFにしたパケットを送ることを「TCP Nullスキャン」、逆にすべてONにして送ることを「TCP クリスマスツリースキャン」と呼ぶそうです。

方法

  1. 不正な組み合わせのフラグが来ると、ログを書いて破棄するルールです。
    なおこの対策は、緩和策でしかありません。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
    
    -
    !
     
     
    -
    !
     
     
     
     
     
     
     
     
     
     
     
     
    -
    !
     
    -
    !
    
    # ***不正な組み合わせのフラグ破棄用チェイン***
    iptables -N drop_invalid_flag
    iptables -A drop_invalid_flag -j LOG --log-prefix "INVALID_FLAS: " -m limit --limit 1/s --limit-burst 10
    iptables -A drop_invalid_flag -j DROP
    #
    iptables -N drop_flag
    iptables -A drop_flag -p tcp --tcp-flags ACK,FIN FIN -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ACK,PSH PSH -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ACK,URG URG -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags FIN,RST FIN,RST -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags SYN,FIN SYN,FIN -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags SYN,RST SYN,RST -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ALL ALL -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ALL NONE -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ALL FIN,PSH,URG -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j drop_invalid_flag
    iptables -A drop_flag -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j drop_invalid_flag
     
    # 不正な組み合わせのフラグかをチェック
    iptables -A INPUT -p tcp -j drop_flag
     
    # 不正な組み合わせのフラグかをチェック
    iptables -A OUTPUT -p tcp -j drop_flag

検証時の環境

参考