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 restart 1.2. Criando os usuários adicionais Vamos agora criar os usuários user1, user2 e user3. Para isso, execute os comandos abaixo no terminal e verifique suas respectivas respostas: Criando user1: MD5 -A setup_passphrase localhost create user1 initial User successfully created. Criando user2: MD5 -A setup_passphrase localhost create user2 initial User successfully created.
Criando user3: 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: MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase senhateste user1 Alterando a senha de user2: MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase senhateste2 user2
Alterando a senha de user3: MD5 -A setup_passphrase localhost -Ca passwd setup_passphrase senhateste3 user3 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: MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key user1 Alterando a chave de user2: MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key2 user2 Alterando a chave de user3: MD5 -A setup_passphrase localhost -Cx passwd setup_passkey senha_key3 user3 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 restart 1.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" 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::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.conf Agora 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 restart
1.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 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 SNMPv2-MIB::sysLocation.0 = STRING: 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 IP-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 1.8. snmpd.conf v3 com VACM devidamente configurado e nível de segurança authpriv: # cat snmpd.conf
# /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 restart 1.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 Mas, responde as requisições do tipo authpriv normalmente, atingindo assim o nível máximo de segurança do SNMP v3.