Oracle 10.2부터 DoS(Denial of Service) 공격에 대비하기 위해 다음 두 파라미터의 기본 설정값이 60초가 되었습니다.

 

 - SQLNET.INBOUND_CONNECT_TIMEOUT (sqlnet.ora 파일에 설정)
 - INBOUND_CONNECT_TIMEOUT_listenername (listener.ora 파일에 설정)

 

60초 안에 로그인이 되지 않으면 아래와 같은 에러가 발생하도록 만드는 것이지요.

 

  WARNING: inbound connection timed out (ORA-3136)

 

이것은 일반적으로 error라기 보다는 normal warning으로 취급합니다.
로그인 시도가 급격히 증가했다는 것을 의미하기 때문입니다.

 

 

 

http://cafe.naver.com/prodba.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=11505 

 
10g
가 되면서 inbound_connect_timeout 60초로 바뀌게 되어, 가끔씩 alertlog

ORA-3136 inbound connection timed out 이 발생함.

 

1. CASE 1
   WIPPY@/oracle> sqlplus /@rac1
   SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jan 7 13:33:27 2009
   Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
   ERROR:
   ORA-01017: invalid username/password; logon denied
   Enter user-name:

 

   이상태에서 타이핑 없이 대기를 하게되면 60초 후에 alert log ORA-3136 이 떨어지게 됨

   그렇다면 그 60초 동안 어떤일이 발생하는가?

 

   1) ps -ef|grep LOCAL=NO 로 확인해 보면 process가 하나 늘어남

   2) v$process v$resource_limit를 보면 process가 하나 늘어남

 

   위를 통해서 60초를 강제로 설정해 놓은 이유를 알 수 있음.

 

   누군가 악의적인 목적으로 저런 식의 접속을 한 다음 끊지 않으면 설정해 놓은 process개수를 다 채워버리게 되고
  
정상적인 connection이 처리되지 못하는 문제가 발생함.

  

   따라서 60초를 주기로 oracle에서는 저런 process를 강제로 죽이는 것임

   ORA-3136을 발생시키지는 않지만 유사한 경우가 있음.

 

2. CASE 2
   WIPPY@/oracle> telnet 192.168.0.11 1521
   Trying 192.168.0.11...
   Connected to 192.168.0.11 (192.168.0.11).
   Escape character is '^]'.

 

   위와 같이 했을 경우에는 다음과 같은 현상이 발생함

 

   1) ps -ef|grep LOCAL=NO 로 확인해 보면 process 하나 늘어남

   2) v$process or v$resource_limit를 보면 변화 없음

 

   OS상에서는 process가 뜨지만 oracle view에는 반영이 되지 않는 상황.

   이러한 상황도 system resource를 사용하는 것이기 때문에 그다지 좋은 상황은 아님
 
3. 
메세지를 안나오게 하는 방법

   1) sqlnet.ora SQLNET.INBOUND_CONNECT_TIMEOUT = 0 설정

   2) listener.ora INBOUND_CONNECT_TIMEOUT_<listener_name> = 0 을 설정

 

   sqlnet.ora - SQLNET.INBOUND_CONNECT_TIMEOUT = 0 : sqlplus /@RAC1 에만 영향을 .
   listener.ora - INBOUND_CONNECT_TIMEOUT_ = 0  : telnet 192.168.0.11 1521
에만 영향을 줌.

 

   APP의 접속 형태에 따라 sqlner.ora listener.ora를 취사 선택하거나 둘 다 설정을 해야 할 필요성이 있음.

 

4. 결론

   INBOUND_CONNECT_TIMEOUT을 설정할때는 위와 같은 내용을 인지하고 설정을 해야 함.

   무작정 ERROR를 보이지 않게 하기 위해서 설정을 한다면 보안상 심각한 문제를 야기할 수 있음.

 

사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

+ Recent posts