Oracleで接続制御(制限)をやってみた

$ORACLE_HOME/network/admin/sqlnet.oraに以下のような記述をすることで、 TCPレベルでホスト名またはIPアドレス(IPv4 or IPv6)で制限できる。なので sqlplusはもちろん、各種ツール、ODBCなどの接続も制限可能。 IPアドレスについてはワイルドカード指定、CIDR指定が可能。 なお、ホスト名にはワイルドカードは使用できない(リスナ起動失敗となる)。

また、TCP.INVITED_NODESはTCP.EXCLUDED_NODESより優先となるらしいので 2つ同時指定は意味がない(と思う)。

参考は以下。

https://docs.oracle.com/cd/E16338_01/network.112/b56287/sqlnet.htm#CIHFGCBH

https://docs.oracle.com/cd/E96517_01/netrf/parameters-for-the-sqlnet-ora-file.html#GUID-A649AB38-37DA-4033-BDC6-9D8E6E417C32

設定例

  • foo.bar.comと192.168.1.0-127を許可。その他は拒否。
TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES=(foo.bar.com, 192.168.1.0/25)
  • foo.baz.comと192.168.*を拒否。その他は許可。
TCP.VALIDNODE_CHECKING=YES
TCP.EXCLUDED_NODES=(foo.baz.com, 192.168.*)

sqlnet.oraを変更後はリスナを再起動。

lsnrctl stop
lsnrctl start

もしくは「サービス」からリスナを再起動。