English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Oracle 리스너 비밀번호 설정 방법(LISTENER)

리스너도 보안이 있나요? Sure! 기본적으로, 어떤 사용자도 lsnrctl 도구를 통해 Oracle 리스너를操作하거나 종료하지 않고도 접근할 수 있으며, 이는 새로운 세션을 연결할 수 없게 만들 수 있습니다. Oracle 9i 중 Oracle 리스너는 누구나 lsnrctl을 통해 원격에서 리스너를 관리할 수 있도록 허용하며, 데이터베이스가 손상될 수 있는 이유가 될 수도 있습니다.

1. 未设定密码情形下停止监听

[oracle@test ~]$ lsnrctl stop listener_demo92  -->停止监听,可以看出不需要任何密码即可停止 
LSNRCTL for Linux: 버전 9.2.0.8.0 - 생산 중 26-JUN-2011 08:22:26          
Copyright (c) 1991, 2006, Oracle Corporation. 모든 권리 보호됨             
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))         
명령이 성공적으로 완료되었습니다 

2. 重新启动监听并设置密码

[oracle@test ~]$ lsnrctl                                                 
LSNRCTL for Linux: 버전 9.2.0.8.0 - 생산 중 26-JUN-2011 08:24:09                         
Copyright (c) 1991, 2006, Oracle Corporation. 모든 권리 보호됨                            
Welcome to LSNRCTL, type "help" for information.	                                    
LSNRCTL> set current_listener listener_demo92 -->设置当前监听器                             
현재 리스너는 listener_demo입니다92                                            
LSNRCTL> start       -->启动过程也不需要任何密码,启动的详细信息省略                         
LSNRCTL> change_password  -->使用change_password来设置密码                                
오래된 비밀번호:                                                       
새 비밀번호:                                                       
새 비밀번호를 다시 입력하세요:                                                   
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))                        
Password changed for listener_demo92                                           
명령이 성공적으로 완료되었습니다                                            
LSNRCTL> save_config    -->注意此处的save_config失败                                 
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))                        
TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다                                  
LSNRCTL> 비밀번호 설정    -->输入新设定的密码验证                                    
Password:                                                         
명령이 성공적으로 완료되었습니다                                            
LSNRCTL> save_config    -->再次save_config成功                                     
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))                        
Saved listener_demo92 configuration parameters.                                      
Listener Parameter File  /oracle/92/network/admin/listener.ora                              
Old Parameter File  /oracle/92/network/admin/listener.bak                                
명령이 성공적으로 완료되었습니다                                            
-->增加密码之后可以看到listener.ora文件中有一条新增的记录,即密码选项(注:尽管使用了密码管理方式,仍然可以无需密码启动监听)
[oracle@test admin]$ more listener.ora                                          
	#----ADDED BY TNSLSNR 26-JUN-2011 05:12:48---                                      
	PASSWORDS_listener_demo92 =                                               
	#--------------------------------------------

3. 비밀번호 사용 없이 리스너를 중지하려고 시도합니다

[oracle@test ~]$ lsnrctl stop listener_demo92                        
LSNRCTL for Linux: 버전 9.2.0.8.0 - 생산 중 26-JUN-2011 06:09:51          
Copyright (c) 1991, 2006, Oracle Corporation. 모든 권리 보호됨             
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))         
TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다  --> 오류 메시지를 받았습니다. 비밀번호 인증이 필요합니다

4. 비밀번호를 사용하여 리스너를 중지합니다

[oracle@test ~]$ lsnrctl                            
LSNRCTL> set current_listener listener_demo92                 
현재 리스너는 listener_demo입니다92                      
LSNRCTL> 중지                                 
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))   
TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다            
LSNRCTL> 비밀번호 설정                             
Password:                                   
명령이 성공적으로 완료되었습니다                       
LSNRCTL> 중지                                 
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))   
명령이 성공적으로 완료되었습니다                       
LSNRCTL> 상태                                
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))   
TNS-12541: TNS: 리스너가 없습니다                           
 TNS-12560: TNS: 프로토콜 어댑터 오류                     
 TNS-00511: 리스너가 없습니다                            
  Linux 오류: 111: 연결 거부됨                    
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))       
TNS-12541: TNS: 리스너가 없습니다                           
 TNS-12560: TNS: 프로토콜 어댑터 오류                     
 TNS-00511: 리스너가 없습니다                            
  Linux 오류: 2: 파일이나 디렉토리가 없습니다	                 

5. save_config 실패 문제

--> Oracle에서 9i에서 save_config 명령어는 실패합니다                                     
	LSNRCTL> save_config                                                 
	연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=<port>)))                  
	TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다	                               
--> password 설정 후 save_config를 사용해야 저장이 성공합니다.                              
	LSNRCTL> 비밀번호 설정                                                
	Password: <선택한 비밀번호>                                          
	명령이 성공적으로 완료되었습니다                          
/*Oracle에서 10g에서는 그러한 문제가 발생하지 않습니다. 왜냐하면10g에서 운영체제 기반 인증 방식을 사용할 수 있습니다. 리스너는 사용자가 dba 그룹의 멤버인지 확인합니다.
변경할 수 있는 비밀번호, 설정 저장 및 리스너 중지 등의 권한이 부여됩니다. */                                 

6. listener.ora 설정 파일에서 ADMIN_RESTRICTIONS 매개변수를 구성합니다.

파라미터 기능:
listener.ora 파일에 ADMIN_RESTRICTIONS 파라미터가 설정되면, 리스너가 실행 중일 때 관리 명령을 실행할 수 없으며, set 명령도 사용할 수 없습니다
서버 로컬에서나 원격에서 실행하더라도 모두 불가능합니다. 이 경우 리스너 설정은 listener.ora 파일을 수동으로 수정해야 하며, 수정이 적용되기 위해
lsnrctl reload 명령 또는 lsnrctl stop를 사용합니다/start 명령을 통해 리스너 설정 정보를 다시 로드합니다.
수정 방법:
listener.ora 파일에 다음과 같은 줄을 수동으로 추가하세요
ADMIN_RESTRICTIONS_<리스너 이름> = ON

다른 유저들의 추가 내용:

LSNRCTL> change_password
오래된 비밀번호:
새 비밀번호:
새 비밀번호를 다시 입력하세요:
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp)-uc-db1)(PORT=1521)))
LISTENER의 비밀번호가 변경되었습니다
명령이 성공적으로 완료되었습니다
LSNRCTL> 비밀번호 설정
Password:
명령이 성공적으로 완료되었습니다
LSNRCTL> save_config
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp)-uc-db1)(PORT=1521)))
LISTENER 설정 파라미터가 저장되었습니다.
Listener Parameter File /opt/oracle/product/10.2.0/db_1/network/admin/listener.ora
Old Parameter File /opt/oracle/product/10.2.0/db_1/network/admin/listener.bak
명령이 성공적으로 완료되었습니다
[oracle@ecp-uc-db1 admin]$ cat listener.ora
#—-ADDED BY TNSLSNR 10-JUN-2011 18:13:24—
PASSWORDS_LISTENER = 6D7AA003392C436A
#——————————————–
주의:10g 데이터베이스에 추가해야 합니다(리스너 재시작)
LOCAL_OS_AUTHENTICATION_LISTENER = OFF

1LOCAL_OS_AUTHENTICATION_LISTENER = OFF을 추가한 전

보안 ON: 비밀번호 또는 로컬 OS 인증

2LOCAL_OS_AUTHENTICATION_LISTENER = OFF을 추가한 후

Security ON: Password
LSNRCTL> 상태
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp)-uc-db1)(PORT=1521)))
TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다
LSNRCTL> 중지
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp)-uc-db1)(PORT=1521)))
TNS-01169: 리스너는 비밀번호를 인식하지 못했습니다
LSNRCTL> 비밀번호 설정 123456
명령이 성공적으로 완료되었습니다
LSNRCTL> 상태
연결 중 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp)-uc-db1)(PORT=1521)))
LISTENER의 STATUS
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.4.0 – Production
Start Date 10-JUN-2011 18:15:49
Uptime 0 days 0 hr. 1 min. 16 sec
Trace Level off
Security ON: Password
SNMP OFF
Listener Parameter File /opt/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /opt/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ECP-UC-DB1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary…
Service “PLSExtProc” 가 1 instance(s).
Instance “PLSExtProc”, 상태 UNKNOWN, 가 1 이 서비스에 대한 핸들러...
Service “ecp” 가 1 instance(s).
Instance “ecp”, 상태 READY, 가 1 이 서비스에 대한 핸들러...
Service “ecpXDB” 가 1 instance(s).
Instance “ecp”, 상태 READY, 가 1 이 서비스에 대한 핸들러...
Service “ecp_XPT” 가 1 instance(s).
Instance “ecp”, 상태 READY, 가 1 이 서비스에 대한 핸들러...
명령이 성공적으로 완료되었습니다

좋아하는 것