English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Есть ли безопасность для слушателя? Да! По умолчанию, любому пользователю не требуется использовать пароль для выполнения операций с Oracle Listener через инструмент lsnrctl или для его остановки, что приводит к тому, что новые сеансы не могут быть установлены. В Oracle 9i Oracle слушатель позволяет любому пользователю удаленно управлять слушателем с помощью lsnrctl. Это также легко может привести к повреждению базы данных.
1. Остановка слушателя без установления пароля
[oracle@test ~]$ lsnrctl stop listener_demo92 --> останавливается слушатель, видно, что пароль не требуется для остановки LSNRCTL для Linux: Версия 9.2.0.8.0 - Производственный выпуск 26-JUN-2011 08:22:26 Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) Команда выполнена успешно
2. Перезапуск слушателя и настройка пароля
[oracle@test ~]$ lsnrctl LSNRCTL для Linux: Версия 9.2.0.8.0 - Производственный выпуск 26-JUN-2011 08:24:09 Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. Добро пожаловать в LSNRCTL, введите "help" для получения информации. LSNRCTL> set current_listener listener_demo92 --> устанавливается текущий слушатель Текущий слушатель: listener_demo92 LSNRCTL> start --> запускается процесс, пароль не требуется, подробности запуска опущены LSNRCTL> change_password --> используйте change_password для установки пароля Old password: New password: Reenter new password: Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) Пароль изменен для listener_demo92 Команда выполнена успешно LSNRCTL> save_config --> внимание, save_config в этом месте失败 Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) TNS-01169: The listener has not recognized the password LSNRCTL> set password --> введите новый установленный пароль для проверки Password: Команда выполнена успешно LSNRCTL> save_config --> повторное сохранение конфигурации save_config успешно Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) Сохранены параметры конфигурации listener_demo92. Файл параметров listener /oracle/92/network/admin/listener.ora Старый файл параметров /oracle/92/network/admin/listener.bak Команда выполнена успешно --> После добавления пароля можно увидеть новую запись в файле listener.ora, это параметр пароля (Примечание: несмотря на использование метода управления паролями, listener можно запустить без пароля) [oracle@test admin]$ more listener.ora #----ДОБАВЛЕНО TNSLSNR 26-JUN-2011 05:12:48--- PASSWORDS_listener_demo92 = #--------------------------------------------
3. Попытка остановить listener без использования пароля
[oracle@test ~]$ lsnrctl stop listener_demo92 LSNRCTL для Linux: Версия 9.2.0.8.0 - Production на 26-JUN-2011 06:09:51 Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) TNS-01169: Листенер не распознал пароль --> Получен ошибочный сигнал, необходимо использовать пароль для аутентификации
4. Использование пароля для остановки listener
[oracle@test ~]$ lsnrctl LSNRCTL> установить текущий_listener listener_demo92 Текущий слушатель: listener_demo92 LSNRCTL> stop Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) TNS-01169: The listener has not recognized the password LSNRCTL> set password Password: Команда выполнена успешно LSNRCTL> stop Подключение к (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) Команда выполнена успешно LSNRCTL> status Подключение к (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=<имя_хоста>)(PORT=<порт>))) TNS-01169: The listener has not recognized the password --> Следует сначала использовать команду set password, а затем save_config, чтобы успешно сохранить конфигурацию. LSNRCTL> set password Пароль: <пароль, который вы выбрали> Команда выполнена успешно /* В Oracle 10g подобная проблема не возникает,因为在 10g можно использовать способ аутентификации, основанный на операционной системе. Слушатель будет определять, если пользователь является членом группы dba, Будет предоставлен доступ к изменениям пароля, сохранению конфигурации и остановке слушателя и т.д. */
6. Настройка параметра ADMIN_RESTRICTIONS в файле listener.ora
Действие параметра:
После того как в файле listener.ora был установлен параметр ADMIN_RESTRICTIONS, во время работы слушателя не разрешается выполнять любые управляющие команды, и команда set будет недоступна
Это не работает ни на локальном сервере, ни при выполнении из удаленного места. В этом случае для изменения настроек слушателя необходимо только
Использовать команду lsnrctl reload или команду lsnrctl stop/start для повторной загрузки конфигурации слушателя.
Метод изменения:
В файле listener.ora вручную добавить следующую строку
ADMIN_RESTRICTIONS_<listener_name> = ON
Below is the supplement from other netizens:
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp-uc-db1)(PORT=1521)))
Password changed for LISTENER
Команда выполнена успешно
LSNRCTL> set password
Password:
Команда выполнена успешно
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp-uc-db1)(PORT=1521)))
Saved LISTENER configuration parameters.
Файл параметров listener /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
#——————————————–
note: It is necessary to add (restart listener) on the 10g database
LOCAL_OS_AUTHENTICATION_LISTENER = OFF
1、Before adding LOCAL_OS_AUTHENTICATION_LISTENER = OFF
Security ON: Password or Local OS Authentication
2、After adding LOCAL_OS_AUTHENTICATION_LISTENER = OFF
Безопасность ВКЛЮЧЕНА: Пароль
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp-uc-db1)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp-uc-db1)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password 123456
Команда выполнена успешно
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ecp-uc-db1)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.4.0 – Production
Дата старта 10-JUN-2011 18:15:49
Время работы 0 дней 0 ч. 1 мин. 16 сек
Уровень отладки ОТКЛЮЧЕН
Безопасность ВКЛЮЧЕНА: Пароль
SNMP ВЫКЛЮЧЕН
Файл параметров listener /opt/oracle/product/10.2.0/db_1/network/admin/listener.ora
Журнал listener /opt/oracle/product/10.2.0/db_1/network/log/listener.log
Обзор точек监听...
(ОПИСАНИЕ=(АДРЕС=(ПРОТОКОЛ=tcp)(ХОСТ=ECP-UC-DB1)(ПОРТ=1521)))
(ОПИСАНИЕ=(АДРЕС=(ПРОТОКОЛ=ipc)(КЛЮЧ=EXTPROC0)))
Обзор служб...
Служба “PLSExtProc” имеет 1 инстанцию(ий).
Инстанция “PLSExtProc”, статус Неизвестен, имеет 1 обработчик(ов) для этой службы...
Служба “ecp” имеет 1 инстанцию(ий).
Инстанция “ecp”, статус Готов, имеет 1 обработчик(ов) для этой службы...
Служба “ecpXDB” имеет 1 инстанцию(ий).
Инстанция “ecp”, статус Готов, имеет 1 обработчик(ов) для этой службы...
Служба “ecp_XPT” имеет 1 инстанцию(ий).
Инстанция “ecp”, статус Готов, имеет 1 обработчик(ов) для этой службы...
Команда выполнена успешно