The first thing to do is to put a password on your listener. By default the listener comes with no password, and anyone can change listener settings through the lsnrctl tool.
To password protect your listener, perform the following as your Oracle user:
$ lsnrctl
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
If you have done all of this correctly, you will see the following:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
Password changed for
The command completed successfully
Just as a note, if the listener you are protecting does not have the default name of LISTENER, you must do set cur
At this point, save the configuration of the listener to the file system. If you are on 10g, it will save with no problems:
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
Saved
Listener Parameter File
Old Parameter File
The command completed successfully
And you have a password protected listener.
However, this does not happen on 9i. If you perform a save_config, you will see the following:
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
TNS-01169: The listener has not recognized the password
The reason is this: in Oracle 10g, operating system authentication for the listener has been implemented. The listener checks to make sure you are part of the privileged dba group, and if so it will grant you access to change the password, save configuration, stop the listener, etc. In 9i, we must do the following at this point:
LSNRCTL> set password
Password:
The command completed successfully
At this point, you can now perform a save_config.
So what is the result of this? In 9i, you will now require a password whenever you wish to stop the listener or any other "destructive" listener actions. In 10g, if you are not logged into the operating system with a privileged account, you will have to enter a password as well. A typical listener stop may look like this:
$ lsnrctl
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
TNS-01169: The listener has not recognized the password
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
The command completed successfully
You are now protected against unauthorized shutdowns of your listener. This protects you from a whole range of possible security breaches. Remember that "set password" is how you enter your password for authentication; change_password is how it is changed.
Sunday, 9 September 2007
Oracle Listener security
di 21:05
Label: oracle dba