Разграничение доступа средствами Oracle
Команда set_password без параметра (пароля) заставляет LSNRCTL выдать приглашение для ввода пароля, который перед передачей листенеру будет шифроваться. Однако, если пароль задан в команде set_password, например, “set_password fred”, пароль будет передан листенеру в незашифрованном виде. Это обеспечивает полезную обратную совместимость, но позволяет развернуть атаки на листенер. Читая хеш-значение пароля из файла listener.ora и используя его в команде set_password, нарушитель может обойтись без необходимости знания пароля.
Кроме того, если атакующий имеет набор хешей для наиболее вероятных паролей, он может автоматизировать подбор пароля с использованием метода брут-форс. В случае слишком простого пароля результат может быть получен в относительно короткое время. В случае массовой атаки на LISTENER возможен "отказ в обслуживании" всей системы. Для борьбы с данным нападением возможно использование параметров, определяющих ограничение доступа к Oracle ( не к LISTENER). В файле protocol.ora (для версий до 8 включительно ) или sqlnet.ora (для версий 9 и старше) необходимо добавить параметры:
tcp.validnode_checking = YES
tcp.invited_nodes = {list of IP addresses} // доступ разрешен, перечень адресов через запятую
tcp.excluded_nodes = {list of IP addresses} // доступ запрещен, перечень адресов через запятую