ネットワークに対する攻撃があった場合、パケットキャプチャ及びログを分析して、攻撃者のアドレスを特定できたら、その攻撃者からの通信を遮断する手頃な方法を紹介します。
ASA の場合は、shun コマンドになります。このコマンドが実行された時点で、該当アドレスからの通信が新規コネクションを作成できなくなるのみならず、既存のコネクションを使うパケットも破棄されます。
shun source_ip [dest_ip source_port dest_port [protocol]] [vlan vlan_id]
http://www.cisco.com/en/US/docs/security/asa/asa82/command/reference/s8.html#wp1525925
ciscoasa(config)# shun 192.168.89.1
Shun 192.168.89.1 added in context: single_vf
%ASA-4-401002: Shun added: 192.168.89.1 0.0.0.0 0 0
Shun 192.168.89.1 successful
shun に登録したホストのデータベースを確認するには、
ciscoasa(config)# show shun
shun (outside) 192.168.89.1 0.0.0.0 0 0 0
shun によってパケットが破棄される際のメッセージとなります。
%ASA-4-401004: Shunned packet: 192.168.89.1 ==> 192.168.89.100 on interface outside
%ASA-3-313001: Denied ICMP type=8, code=0 from 192.168.89.1 on interface outside
shun に登録したアドレスを消すには、
ciscoasa(config)# clear shun
%ASA-4-401001: Shuns cleared
注意点は、元々永久的な用途で利用するコマンドではないので、shun で登録したアドレスは設定に保存されず、ASA の再起動に伴って消失します。
IOS で特定の攻撃者からの通信を遮断したい場合では、strict モードの Unicast RPF (Unicast Reverse Path Forwarding) を null0 インターフェース宛のスタティックルートの併用によって実現できます。RPF は本来、ルーティングテーブルと照準して、パケットが期待されている next-hop から来ているかをチェックする機能です。strict モードの Unicast RPF を有効にすると、ルータが受信したパケットの送信元アドレスに対するルートの出力インターフェースが null0 インターフェースとなっている場合、該当パケットを破棄します。Unicast RPF の詳細は、下記のドキュメントを参考してください。
Understanding Unicast Reverse Path Forwarding
設定例:
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip address 192.168.89.38 255.255.255.0
Router(config-if)# ip verify unicast source reachable-via rx
Router(config-if)# exit
Router(config)# do ping 192.168.89.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.89.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Router(config)#
Router(config)# ip route 192.168.89.1 255.255.255.255 null0
Router(config)#
Router(config)#do ping 192.168.89.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.89.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Router(config)#
ASA の shun とは違い、こちらの場合は設定に保存されますので、再起動しても残ります。