Enfrentei vários problemas e depois de muita pesquisa, consegui reunir um passo-a-passo que me ajudou muito...
1- Inicio,
Usei o seguinte link para baixar a aplicação escrita em perl:https://github.com/ohitz/dhcpd-snmp
Dai, vieram os problemas, típicos de quem trabalha com Linux
2- Primeiro problema:
Testei a aplicação em localhost e estava funcionando corretamente, mas descobri que pelo meu software externo de monitoramento não estava conseguindo acessar o serviço snmp no CentOS.
Descobri que o CentOS 7 tem um novo serviço chamado FirewallD que substitui o tradicional IPTables
http://www.fr.net.br/2015/08/how-to-configure-firewalld-in.html
3- Segundo problema
Resolvido o problema do filtro para o snmp, veio o segundo problema: apesar do acesso snmp ao servidor Linux estar correto, a aplicação para monitorar os pools DHCP me retornava um erro:
snmpwalk -v2c -c
No Such Instance currently exists at this OID
Mas se eu parasse o serviço snmp e rodasse em modo debug:
snmpd -f -Lo -Ducd-snmp/pass
A aplicação funcionava, depois de muita pesquisa achei o seguinte link:
http://www.net-snmp.org/wiki/index.php/Tut:Extending_snmpd_using_shell_scripts
Onde ele me indicou que o problema poderia estar no SELinux que estava negando acesso.
type=AVC msg=audit(1439914111.962:7978): avc: denied { execute } for pid=28856 comm......
4- Terceiro problema
Como não estava propenso a desabilitar o SELinux tive que resolver este problema de negação de acesso seguindo este caminho:
http://wiki.centos.org/HowTos/SELinux
5-Quarto problema
Mas para isto eu tinha que achar o pacote que continha o programa audit2allow, pois não estava querendo editar arquivos do SELinux manualmente.
Como encontrar pacotes centos:
http://www.bilatu.net/forum/viewtopic.php?t=549
Depois foi fácil rodar os seguintes comandos:
yum install policycoreutils-python
grep snmpd_t /var/log/audit/audit.log | audit2allow -m dhcpd-snmp > dhcpd-snmp.te
ls -l
less dhcpd-snmp.te
grep snmpd_t /var/log/audit/audit.log | audit2allow -M dhcpd-snmp
semodule -i dhcpd-snmp.pp
semodule -l
6- Resultado:
snmpwalk -v2c -c
SNMPv2-SMI::enterprises.21695.1.2.2.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.21695.1.2.2.1.2 = INTEGER: 2
SNMPv2-SMI::enterprises.21695.1.2.2.2.1 = STRING: "POOL1"
SNMPv2-SMI::enterprises.21695.1.2.2.2.2 = STRING: "POOL2"
SNMPv2-SMI::enterprises.21695.1.2.2.3.1 = INTEGER: 2047
SNMPv2-SMI::enterprises.21695.1.2.2.3.2 = INTEGER: 2047
SNMPv2-SMI::enterprises.21695.1.2.2.4.1 = INTEGER: 102
SNMPv2-SMI::enterprises.21695.1.2.2.4.2 = INTEGER: 60
SNMPv2-SMI::enterprises.21695.1.2.2.5.1 = INTEGER: 762
SNMPv2-SMI::enterprises.21695.1.2.2.5.2 = INTEGER: 836
SNMPv2-SMI::enterprises.21695.1.2.2.6.1 = INTEGER: 1945
SNMPv2-SMI::enterprises.21695.1.2.2.6.2 = INTEGER: 1987
7-Pegadinha
Foi necessário rodar o audit2allow ao menos duas vezes pois, segundo este link (meio obscuro por sinal) o audit2allow somente libera um tipo acesso por vez e é preciso liberar getattr, read, ioctl e execute, entre outros..https://lists.isc.org/pipermail/dhcp-users/2014-March/017693.html
[root@localhost 20150819]# cat dhcpd-snmp.te
module dhcpd-snmp 1.0;
require {
type unconfined_t;
type admin_home_t;
type snmpd_t;
type dhcpd_state_t;
class dir relabelto;
class file { read relabelto execute getattr };
}
#============= snmpd_t ==============
#!!!! This avc is allowed in the current policy
allow snmpd_t admin_home_t:file execute;
allow snmpd_t dhcpd_state_t:file read;
#!!!! This avc is allowed in the current policy
allow snmpd_t dhcpd_state_t:file getattr;
#============= unconfined_t ==============
#!!!! This avc is allowed in the current policy
allow unconfined_t snmpd_t:dir relabelto;
#!!!! This avc is allowed in the current policy
allow unconfined_t snmpd_t:file relabelto;
8- Projeto futuro
Depois de estabilizado o meu ambiente vou usar o ultimo link para melhorar o meu monitoramento pois preciso separar os agent.remote-id....
ADENDO:
Desabilitar o envio de log para o arquivo messages:
[root@localhost log]# cat /etc/sysconfig/snmpd
# snmpd command line options
# '-f' is implicitly added by snmpd systemd unit file
OPTIONS="-LS0-5d -Lf /dev/null -p /var/run/snmpd.pid"
link: http://cybergav.in/tag/disable-snmp-connection-from-udp-messages/
ADENDO2:
> I have 4 leases in my dhcpd.leses file that contain a 'ends never;' lines. > Why would that be and where do these leases come from? Probably BOOTP Clients--BOOTP does not have the noting of "lease"--BOOTP is forever.
Inserir no arquivo dhcpd.conf a seguinte linha:
deny bootp;
0 comentários:
Postar um comentário