Atividade Prática 05
Gerenciamento de Servidores GNU/Linux Utilizando SNMP v3
1. Configuração inicial de um Agente exclusivamente v3 com
Autenticação e Privacidade
Veremos como criar um usuário SNMP v3 com o nível máximo de segurança. Se
o seu ambiente permite a configuração exclusiva da versão 3, não tem porque não
aproveitar ao máximo os recursos oferecidos por ela.
1.1. Criando o usuário inicial com permissão de escrita
Abra o arquivo /etc/snmp/snmpd.conf:
# vim /etc/snmp/snmpd.conf
Altere o snmpd.conf conforme abaixo:
# /etc/snmp/snmpd.conf v3 inicial com autenticação e privacidade (snmpd.conf.07)
#
# Declarando um usuário Inicial com permissão de escrita rwuser initial
# Criando o usuário na base do snmp
#IMPORTANTE: Esta linha deve ser apagada após a adição dos novos #usuários
createUser initial MD5 setup_passphrase DES setup_passkey
Lembre-se que após alterar o arquivo é necessário reiniciar o serviço:
# service snmpd restart1.2. Criando os usuários adicionais
Vamos agora criar os usuários
user1,
user2e
user3. Para isso, execute os
comandos abaixo no terminal e verifique suas respectivas respostas:
Criando user1:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost create user1 initial
User successfully created.
Criando user2:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost create user2 initial
Criando user3:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost create user3 initial
User successfully created.
1.2.1. Entendendo os parâmetros:
• snmpusm: Comando para criar e manipular usuários;
• -v 3: Versão do protocolo SNMP;
• -u initial: -u (User) initial, nome do usuário com permissão de escrita;
• -n "": Contexto;
• -x DES: Tipo de criptografia usada na senha (DES ou AES) – protocolo
usado na privacidade;
• -X setup_passkey: Chave criptográfica;
• -l authPriv: Nível de segurança na autenticação; são três níveis:
o noAuthNoPriv: Sem autenticação e sem
privacidade;
o authNoPriv: Com autenticação, sem privacidade;
o authPriv: Com autenticação e privacidade.
“For privacy, the Security Model defines what portion of the message is encrypted.” – IEEE - rfc3411
• -a MD5: Tipo de Hash utilizado na senha (MD5 ou SHA);
• -A: A senha será “hasheada”; será criado um hash da senha;
• setup_passphrase: Senha do usuário initial;
• localhost: Nome DNS ou IP do Servidor;
• create user1 initial: Criar o usuário “user1”; clonando de “initial”, clona
inclusive a senha.
1.3. Alterando a senha dos usuários
Para modificar as senhas de acesso dos usuários recém-criados, execute os
comandos abaixo no terminal e verifique suas respectivas respostas:
Alterando a senha de user1:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase
senhateste user1
SNMPv3 Key(s) successfully changed.
Alterando a senha de user2:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase
senhateste2 user2
Alterando a senha de user3:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase
senhateste3 user3
SNMPv3 Key(s) successfully changed.
1.3.1. Entendendo os parâmetros:
• -Ca: Alterar a chave de autenticação;
• passwd: Comando para alterar a senha;
• setup_passphrase: Senha atual do usuário “user1”;
• senhateste user1: Nova senha para o usuário “user1”, com mínimo de 8
caracteres.
1.4. Alterando a chave dos usuários
Também é possível modificar as chaves criptográficas de cada usuário, para
isso, execute os comandos abaixo no terminal e verifique suas respectivas
respostas:
Alterando a chave de user1:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key user1
SNMPv3 Key(s) successfully changed.
Alterando a chave de user2:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key2 user2
SNMPv3 Key(s) successfully changed.
Alterando a chave de user3:
# snmpusm -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key3 user3
SNMPv3 Key(s) successfully changed.
1.4.1. Entendendo os parâmetros:
• -Cx: Alterar a chave de privacidade;
• passwd: Comando para alterar a senha;
• setup_passkey: Chave atual do usuário “user1”;
• senha_key user1: Nova chave para o usuário “user1”, com mínimo de 8
caracteres.
1.5. snmpd.conf v3 básico:
# cat snmpd.conf# /etc/snmp/snmpd.conf v3 básico com autenticação e privacidade (snmpd.conf.08)
#
# mantendo o usuário initial com permissão de escrita rwuser initial
# Dando permissão de leitura aos 3 usuários # recém-criados.
rouser user1 rouser user2 rouser user3
Lembre-se que após alterar o arquivo é necessário reiniciar o serviço:
# service snmpd restart1.6. Acessando um Agente SNMP v3:
Acessando sysContact.0 com o usuário user1:
# snmpget -v 3 -u user1 -n "" -x DES -X senha_key -l authPriv -a MD5 -A senhateste localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Curso
Alterando sysContact.0 com o usuário initial:
# snmpset -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost sysContact.0 s "Aluno"
SNMPv2-MIB::sysContact.0 = STRING: Aluno
Lendo o próximo valor de sysContact.0 com o usuário user3:
# snmpgetnext -v 3 -u user3 -n "" -x DES -X senha_key3 -l authPriv -a MD5 -A senhateste3 localhost sysContact.0
SNMPv2-MIB::sysName.0 = STRING: aulas
Acessando um bloco de dados com o usuário user2:
# snmpbulkget -v 3 -u user2 -n "" -x DES -X senha_key2 -l authPriv -a MD5 -A senhateste2 localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux aulas
2.6.32-71.29.1.el6.i686 #1 SMP Mon Jun 27 18:07:00 BST 2011 i686 SNMPv2-MIB::sysObjectID.0 = OID:
NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (19793) 0:03:17.93
SNMPv2-MIB::sysContact.0 = STRING: Aluno SNMPv2-MIB::sysName.0 = STRING: aulas
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (19) 0:00:00.19 SNMPv2-MIB::sysORID.1 = OID:
SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
1.7. snmpd.conf v3 com VACM
Desta vez iremos utilizar o modelo VACM devidamente configurado com
autenticação e privacidade, para isso, abra novamente o arquivo
/etc/snmp/snmpd.conf:
# vim /etc/snmp/snmpd.confAgora altere o snmpd.conf conforme abaixo:
# /etc/snmp/snmpd.conf v3 devidamente configurado com autenticação e privacidade (snmpd.conf.09)
#
# Definindo as Views
# view nome incl/excl. sub-árvore máscara View all included .1 80
view ip included iso.org.dod.internet.mgmt.mib-2.ip # Agrupando os usuários
#group nome modelo_de_segurança usuário group rogroup1 usm user1 group rogroup1 usm user2 group rogroup2 usm user3 group rwgroup usm initial # Atribuindo Permissões aos grupos
#access grupo contexto mod_seg nível_seg coincidir ler alterar notificar access rogroup2 “” any noauth exact ip none none access rogroup1 “” any noauth exact all none none access rwgroup “” any noauth exact all all none
Lembre-se que após alterar o arquivo é necessário reiniciar o serviço:
# service snmpd restart1.7.1. Acessando um Agent SNMP v3:
Agora, vamos consultar as informações dos agentes configurados. Para
começar, vamos tentar ler a informação sysContact.0 através do usuário user3,
para isso, escreva a linha abaixo no terminal:
# snmpget v 3 u user3 n "" x DES X senha_key3 l authPriv a MD5 -A senhateste3 localhost sysContact.0
Se você digitou o comando acima corretamente, deve ter se deparado com o
seguinte erro:
SNMPv2-MIB::sysContact.0 = No Such Object available on this agent at this OID
Por que será que esse erro acontece? Esse erro ocorre porque o usuário user3
faz parte do grupo rogroup2, cuja única permissão é ler a view ip, que disponibiliza o
galho .iso.org.dod.internet.mgmt.mib-2.ip, no qual não existe a informação
sysContact.0 (abra o snmpd.conf e confira!).
Vamos então ler a informação sysContact.0 utilizando o usuário user2, será que
é possível? Vamos tentar:
# snmpget v 3 u user2 n "" x DES X senha_key2 l authPriv a MD5 -A senhateste2 localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Aluno
O usuário user2 faz parte do grupo rogroup1, cuja permissão é de leitura na view
all, que disponibiliza a raiz inteira da MIB (.1). Portanto, ele pode ler a informação
sysContact.0.
Agora vamos tentar modificar sysLocation.0 com user2:
# snmpset v 3 u user2 n "" x DES X senha_key2 l authPriv a MD5 -A senhateste2 localhost sysLocation.0 s Curso
Error in packet. Reason: noAccess
Failed object: SNMPv2-MIB::sysLocation.0
Esse erro ocorre porque o user2 não possui privilégios de escrita na view all.
O próximo passo é tentar alterar sysLocation.0 com o usuário initial. Será que é
possível? Vamos ver:
# snmpset -v 3 -u initial -n "" -x DES -X setup_passkey -l authPriv -a MD5 -A setup_passphrase localhost sysLocation.0 s Curso
Conforme pode ser observado no arquivo snmpd.conf, o usuário initial faz parte
do grupo rwgroup, cuja permissão é de leitura e escrita na view all, que disponibiliza a
raiz inteira da MIB (.1). Logo, ele pode alterar a informação sysLocation.0.
# snmpbulkwalk -v 3 -u user3 -n "" -x DES -X senha_key3 -l authPriv -a MD5 -A senhateste3 localhost
IP-MIB::ipForwarding.0 = INTEGER: notForwarding(2) IP-MIB::ipDefaultTTL.0 = INTEGER: 64
IP-MIB::ipInReceives.0 = Counter32: 6946 IP-MIB::ipInHdrErrors.0 = Counter32: 0 MIB::ipInAddrErrors.0 = Counter32: 7 IP-MIB::ipForwDatagrams.0 = Counter32: 0 ... IP-MIB::ipDefaultRouterLifetime.ipv4."192.168.1.1".2 = Gauge32: 4294967295 seconds IP-MIB::ipDefaultRouterPreference.ipv4."192.168.1.1".2 = INTEGER: medium(0) IP-MIB::ipDefaultRouterPreference.ipv4."192.168.1.1".2 = No more variables left in this MIB View (It is past the end of the MIB tree)
O usuário user3 faz parte do grupo rogroup2, cuja única permissão é ler a view
ip, que disponibiliza o galho .iso.org.dod.internet.mgmt.mib-2.ip, e por isso todas as
informações apresentadas são da MIB “IP-MIB”.
Um detalhe deve ser observado, como no arquivo de configuração está setado
o nível (mínimo) de segurança na autenticação como
noauth, o host vai continuar respondendo esse tipo de solicitação:# snmpget -v 3 -u user2 -n "" -x DES -l authNoPriv -a MD5 -A senhateste2 localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Aluno
1.8. snmpd.conf v3 com VACM devidamente configurado e nível de
segurança authPriv:
# /etc/snmp/snmpd.conf v3 devidamente configurado com autenticacao e privacidade (snmpd.conf.10)
#
# Definir as Views
#view nome incl/excl. sub-Arvore mascara view all included .1 80
view ip included .iso.org.dod.internet.mgmt.mib-2.ip
# Agrupar os usuarios
#group nome modelo_de_seguranca usuario group rogroup1 usm user1 group rogroup1 usm user2 group rogroup2 usm user3 group rwgroup usm initial # Atribuir Permissoes aos grupos
#access grupo contexto mod_seg nivel_seg coincidir ler alterar notificar access rogroup2 "" any authPriv exact ip none none access rogroup1 "" any authPriv exact all none none access rwgroup "" any authPriv
exact all all none
Lembre-se que após alterar o arquivo é necessário reiniciar o serviço:
# service snmpd restart1.8.1. Acessando um Agent SNMP v3
Execute a linha abaixo:
# snmpget -v 3 -u user2 -n "" -x DES -l authNoPriv -a MD5 -A senhateste2 localhost sysContact.0
Error in packet
Reason: authorizationError (access denied to that object)
Você sabe o que aconteceu? Ora, o host não responde mais a requisições do tipo
authNoPriv (ou seja, com autenticação e sem privacidade), pois de acordo com
o que está no snmpd.conf, todos os grupos de acesso estão configurados com o
nível de segurança authPriv (com autenticação e privacidade).
# snmpget v 3 u user2 n "" x DES X senha_key2 l authPriv a MD5 -A senhateste2 localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Aluno