Trocar porta de Listener é uma medida de segurança?
Alguns analistas de segurança consideram a simples troca de porta de uma aplicação (no caso do Oracle Database, a porta do Listener) uma estratégia sem efeito para a segurança. Eu já tive esta opinião, mas hoje em dia acho que a segurança deve ser aplicada em camadas, e toda dificuldade que possa ser criada para um potencial invasor, é válida, mesmo causando um maior custo em administração e Troubleshooting.
Obviamente que uma pessoa mal intencionada e com um pouco de conhecimento pode descobrir facilmente qual a nova porta do Listener, como também é demonstrado neste exemplo. Mas a intenção desta tática é despistar um invasor que faz tentativas na porta padrão em diversos Hosts, sequencialmente, tentando um acesso com senhas padrão. Já um invasor que queira acesso ao Oracle deste Host não será impedido por esta técnica.
Server:
[oracle@Oracle-01 ~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle-01.localdomain)(PORT = 8000))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=ORCL)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)))
ADR_BASE_LISTENER = /u01/app/oracle
[oracle@Oracle-01 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-SEP-2010 12:15:24
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle-01.localdomain)(PORT=8000)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 27-SEP-2010 12:08:20
Uptime 0 days 0 hr. 7 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/Oracle-01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Oracle-01.localdomain)(PORT=8000)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@Oracle-01 ~]$
Client:
ricardo@ricardo-laptop:~$ cat $ORACLE_HOME/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.56.105)(PORT = 8000))
)
(CONNECT_DATA = (SID = ORCL))
)
ricardo@ricardo-laptop:~$ sqlplus SCOTT/TIGER@ORCL
SQL*Plus: Release 11.2.0.2.0 Production on Mon Sep 27 12:49:57 2010
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> EXIT
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
ricardo@ricardo-laptop:~$ nmap -sV 192.168.56.105
Starting Nmap 5.21 ( http://nmap.org ) at 2010-09-27 12:50 BRT
Nmap scan report for 192.168.56.105
Host is up (0.0016s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
111/tcp open rpcbind
8000/tcp open oracle-tns Oracle TNS Listener
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.84 seconds
ricardo@ricardo-laptop:~$
Portilho,
Acho que o principal motivo de recomendar trocar a porta do listener é “dificultar” um pouco a identificação de um Oracle na rede (conforme você mesmo disse), mas isso deve atrasar o hacker a invadir o banco uns 15 minutos. 🙂 Se o usuário malicioso alterar um pouco os parâmetros do scanner de rede que ele estiver fazendo, ele consegue descobrir facilmente o Oracle.
Em relação as camadas de segurança, é isso ai. O listener tem algumas funcionalidades legais para garantir a segurança do banco, desde por exemplo, o uso de senha (para versões anteriores a 10g) até a configuração do listener para “ouvir” apenas alguns IPs da rede (esse é muito legal, trabalhoso, mas legal).
Existe uma forma de alterar o glogin.sql através de uma vulnerabilidade do log do listener. Muito interessante!! Dá uma pesquisada na net.
Enfim, parabéns pelo post. Dificilmente vejo pessoas postando aqui referente a este tipo de segurança. Digo isso pois sou analista de segurança em banco de dados. 🙂
Abraços.
O Rodrigo, tudo bem?
Realmente, a dificuldade é bem pequena, mas o jogo é causar toda dificuldade que podemos, e ganhar uns minutinhos que sejam.
Vou fazer uns testes com as novas funcionalidades e vulnerabilidades do listener, em breve. Essa do glogin deve ser muito legal de testar.
Obrigado pelo comentário.
Grande abraço !