Листенер – это первая ступень на пути к базе данных, которая может содержать конфиденциальную секретную информацию. Плохо сконфигурированный незащищенный листенер предоставляет нарушителю различные способы атак, включая удаленное выполнение команд, атаки типа отказ в обслуживании”. Целью хакера, атакующего базу данных, является поиск и использование просчетов в конфигурировании листенера.
Листенер по команде STATUS сообщает о себе массу информации, включая:
· операционную систему сервера (полезна для атак на ОС);
· версию листенера (обычно, но не всегда, совпадает с версией базы данных). Полезная информация, когда известны уязвимости данной версии и DBA не вставил соответствующие заплаты;
· время запуска и время работы с точностью до секунд. Знание текущего системного времени может дать ключ к часовому поясу, в котором работает машина, – это всегда полезно для планирования атак, когда администратор, скорее всего, спит;
· проверку установки пароля листенера (установка SECURITY);
· контроль включения трассировки и определение данного ее уровня. Трассировочный файл может содержать подробную информацию о получаемых пакетах;
· контроль включения протокола SNMP (открывает еще один механизм атаки);
· файл параметров листенера и протокольные файлы. Это позволяет узнать каталог ORACLE_HOME (так что, когда мы проникнем в систему, мы будем знать, где находятся данные);
· доступные сервисы;
Простейший метод удаленной отправки команд листенера, это использование lsnrctl в командной строке с параметрами:
lsnrctl <команда> IP адрес
lsnrctl status 192.168.1.100
lsnrctl stop 192.168.1.100
lsnrctl status 192.168.1.100
lsnrctl stop 192.168.1.100
Для защиты листенера существуют несколько параметров, которые повышают его безопасность.
Установка пароля листенера
Эта мера является обязательной и позволит остановить большинство попыток атак. Обычно это простой процесс, вам требуется установить пароль в lsnrctl, который будет хранится в файле listener.ora в зашифрованном виде, или установить параметр PASSWORDS_, тогда пароль будет хранится в открытом виде.
LSNRCTL> set current_listener <имя_листенера>
LSNRCTL> change_password
Old password: <нажать ввод если старого пароля не было>
New password: <указать новый пароль>
Reenter new password: <повторить ввод нового пароля>
LSNRCTL> set password
Password: <указать пароль>
LSNRCTL> save_config
LSNRCTL> change_password
Old password: <нажать ввод если старого пароля не было>
New password: <указать новый пароль>
Reenter new password: <повторить ввод нового пароля>
LSNRCTL> set password
Password: <указать пароль>
LSNRCTL> save_config
Проверяете файл listener.ora на наличие параметра PASSWORDS_. Важно помнить, что в версиях Oracle до 10g можно использовать как обычный пароль так и зашифрованную строку пароля.
Локальная авторизация на уровне ОС
Основное изменение в безопасности листенера в версии Oracle 10g (Release 1 и Release 2), стала локальная авторизация. Листенер не может быть удаленно управляемым по умолчанию, и может управляться только локально, владельцем процесса tnslcnr (обычно это пользователь oracle). Если любой другой поль-зователь операционной системы предпримет попытку управлять прослушивателем, то увидит следующее сообщение в журнале листенера:
TNS-01190: The user is not authorized to execute the requested commend
При попытке удаленного управления, будет сообщение:
TNS-01189: The listener could not authenticate the user
Локальная аутентификация может быть отключена установкой параметра LOCAL_OS_AUTHENTICATION_ в файле listener.ora:
LOCAL_OS_AUTHENTICATION_ = OFF
Включение журналирования
Мера так же является обязательной, это позволит определить атаки, выполнение команд и попытки подбора пароля перебором.
LSNRCTL> set current_listener
LSNRCTL> set password
Password:
LSNRCTL> set log_directory /network/admin
LSNRCTL> set log_file .log
LSNRCTL> set log_status on
LSNRCTL> save_config
Установка ADMIN_RESTRICTIONS в LISTENER.ORA
Действие является обязательным, и позволяет запретить любые изменения листенера во время работы. Достигается установкой параметра ADMIN_RESTRICTIONS_ в значение ON в файле listener.ora. Этот параметр позволит запретить исполнение команд set и все изменения в работу листенера можно будет внести только вручную в файл listener.ora.
ADMIN_RESTRICTIONS_ = ON
После перезапускаете листенер выполнив команду reload в lsnrctl, для того что бы изменения вступили в силу. Все последующие изменения можно будет делать только вручную в файле listener.ora, не используя команду set в lsnrctl. После внесения изменений в файл listener.ora используйте команду reload или stop и start в lsnrctl.
Защита директории $ORACLE_HOME /network/admin
Пароль прослушивателя хранится в файле listener.ora. Легким редактированием файла можно убрать парольную защиту. Если же пароль добавлялся вручную, то он хранится в открытом виде. Если средствами lsnrctl, то в виде зашифрованной строки. Разрешения на файлы listener.ora, sqlnet.ora и protocol.ora в директории $ORACLE_HOME/network/admin должны быть чтение/запись/исполнение только для учетной записи владельца oracle, для других учетных записей, в *NIX системах – 0600. На файл tnsnames.ora в *NIX системах должны быть права 0644.
Защита tnslsnr и lsnrctl
Эта мера призвана ограничить разрешения на исполняемые файлы tnslsnr и lsnrctl. Они расположены в директории $ORACLE_HOME/bin, и разрешения на них, в *NIX системах, по рекомендации Oracle должны быть выставлены в 0751. Возможно изменить разрешения на 0700, что более обезопасит файлы, но это можно делать только после тщательной проверки на тестовых средах.
Комментариев нет:
Отправить комментарий