Oracleデータベースのセキュリティ対策の一環として、特定のIPアドレスだけにアクセスを許可することで、外部からの不正アクセスを防ぐことが可能です。この記事では、Oracle Listenerの設定ファイルを編集して、IPアドレス単位で接続制限を行う方法を紹介します。
アクセス制限の概要
Oracleでは、listener.ora
ファイルとは別に、sqlnet.ora
ファイルやprotocol.ora
ファイルなどでネットワーク通信の設定ができます。IPアクセス制限はlistener.ora
またはOSレベルのiptables
やfirewalld
と連携して実現できますが、Oracle独自の「Valid Node Checking」機能を使えば、Oracleレイヤーで制限することが可能です。
Valid Node Checking(有効ノードチェック)の利用
sqlnet.ora
ファイルに以下の設定を追加することで、許可するIPと拒否するIPを定義できます。
例:特定IPのみ許可
# $ORACLE_HOME/network/admin/sqlnet.ora に追加
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.0.10,192.168.0.11)
tcp.excluded_nodes = (0.0.0.0)
tcp.validnode_checking
を yes
に設定すると、invited_nodes
または excluded_nodes
の設定が有効になります。上記の例では、192.168.0.10と192.168.0.11からの接続のみ許可され、それ以外は拒否されます。
設定後の反映
設定を反映するには、Listenerの再起動が必要です。
lsnrctl stop
lsnrctl start
または、Oracleサービスそのものを再起動することで確実に適用できます。
ログ確認
アクセス制限によって拒否された接続は、$ORACLE_HOME/network/log/listener.log
に記録されます。設定が正しく動作しているかの確認にも役立ちます。
補足:Linuxファイアウォールとの併用
Oracle独自の機能だけでなく、OSレベルでもファイアウォール設定を併用することで二重のセキュリティが実現できます。iptables
やfirewalld
を用いて1521ポート(デフォルトのリスナーポート)へのアクセス制御もおすすめです。
まとめ
Oracleデータベースへの不正アクセスを防ぐには、リスナー設定でIPアドレスによるアクセス制御を行うのが有効です。sqlnet.ora
によるValid Node Checking機能を使えば、Oracle独自の仕組みで柔軟に接続元IPを管理できます。特に本番環境では、ネットワークセキュリティの一環として必ず導入しておきたい対策です。