sqlnet.ora 파일로 설정하는 Oracle DB 접근 제어

안녕하세요. Surmin입니다.
오늘은 Oracle 데이터베이스에 허가되지 않은 접근을 차단하기 위한 sqlnet.ora 파일 설정을 통해 데이터베이스 접근을 제어하는 방법에 대해 알아보겠으며,
작업 시 참고 부탁드리겠습니다.

TCP.INVITED_NODES에 리스너 자신의 IP가 포함되어야 하는 이유

  • TCP.INVITED_NODES에 리스너 자신의 IP가 포함되지 않으면 lsnrctl(리스너 컨트롤 유틸리티)가 리스너에 접속할 수 없어 기본적인 관리 기능(시작/중지/관리 명령)을 수행할 수 없게 됩니다.

적용시점

  • 리스너 설정 파일에 새로운 파라미터를 추가/수정할 경우, 리스너 재시작이 필요합니다.
  • 리스너 설정 파일에 새로운 IP 주소를 추가/수정할 경우, 리스너 리로드만으로 적용 가능합니다.

Test

  • 작업전 backup 합니다.
/app/oracle/product/19c/network/admin
[oracle@ORA19C admin]$ cp -av sqlnet.ora sqlnet.ora_20250515
'sqlnet.ora' -> 'sqlnet.ora_20250515'

#root로 접속 후 방화벽 off 혹은 1521 open
[root@ORA19C ~]# systemctl stop firewalld
  • sqlnet.ora 수정하기전 DB에 접근이 되는지 이지 커넥트로 테스트 합니다.
    • 성공 확인
  • sqlnet.ora 설정 합니다.
    • 특정 IP 주소 대역 전체를 설정하고자 할 경우, 192.168.233.*와 같은 형식으로 지정합니다.
    • 특정 IP 만 허용할 경우 반드시 자기자신 즉 해당 DB서버 IP도 넣어줘야함
      • TCP.INVITED_NODES 설정이 적용된 NAT 네트워크 환경에서는 NAT 게이트웨이의 IP 주소를 포함해야 합니다. 넣어주지 않을 경우 rejected 발생 합니다.
      • 접속이 안되면 리스너 로그를 통해 왜 접속이 안되는지 확인 합니다. (ex) /app/oracle/diag/tnslsnr/ORA19C/listener/alert/log.xml)
#특정 IP만 접속허용
#IP 앞에 공백(스페이스) 하나씩 줘야합니다. 
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES= (
 192.168.233.5,
 192.168.226.37,
 51.159.225.189,
 192.168.233.1
)

====================
##결과
=>요청한 작업을 수행하는 중 오류 발생: 
ORA-17002: I/O 오류: Connection reset, connect lapse 14 ms., 
Authentication lapse 0 ms. https://docs.oracle.com/error-help/db/ora-17002/ 업체 코드 17002
====================

#특정 IP만 접속차단
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.VALIDNODE_CHECKING = YES
TCP.EXCLUDED_NODES=(51.159.226.155)

====================
##결과
=>요청한 작업을 수행하는 중 오류 발생:

ORA-01017: invalid username/password; logon denied

https://docs.oracle.com/error-help/db/ora-01017/
01017. 00000 -  "invalid credential or not authorized; logon denied"
*Cause:    An invalid credential was provided when accessing the Oracle
           Database or you were not authorized to access this database.
*Action:   Depending on your authentication method, ensure that the correct
           credential is provided when logging in to Oracle Database.
           Retry your credential after checking it. If your credential is
           correct, you may not be authorized to access the database.
           You will need to contact your database administrator or
           identity management administrator to confirm that you are
           authorized to access the database.
업체 코드 1017
====================
##특정 IP 허용(대역) , 특정 IP 차단 둘 다 설정
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES= (14.32.142.*, 192.168.233.*, 192.168.226.*)
TCP.EXCLUDED_NODES=(51.159.225.189)

참고

https://lusida-coding.tistory.com/165
https://m.blog.naver.com/latetree/221452823565

위로 스크롤