2010-08-14 8 views
1

Existe-t-il un moyen de surveiller les ports du serveur en utilisant SNMP (j'utilise net-snmp-python pour vérifier cela avec python). Jusqu'à présent, j'ai vérifié assez simple avec la commande "nc", mais je veux voir si je peux le faire avec SNMP.Vérifier les ports avec SNMP (net-snmp)

Nous vous remercions de vos réponses et de votre patience.

+1

qu'est-ce que vous voulez exactement surveiller? Quels ports écoutent, qu'ils acceptent une connexion? – Doon

+1

Je veux vérifier les ports standard, comme FTP, SSH, HTTP (S), BIND, MySQL – abiko

+1

Vous pouvez essayer cette question sur serverfault - il pourrait y avoir des solutions en conserve qui répondraient mieux à vos besoins. – bstpierre

Répondre

3

Eh bien, si vous voulez utiliser le protocole SNMP pour voir exactement ce que les ports sont à l'écoute, vous devriez être en mesure d'utiliser les OID suivants et marcher la table

"1.3.6.1.2.1.6.13.1.1" tcpConnState 
    "1.3.6.1.2.1.7.5.1.1" udpLocalAddress 

marche UDP vous donnerait quelque chose comme ceci:

snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.7.5.1.1              
    UDP-MIB::udpLocalAddress.0.0.0.0.68 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.161 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.32908 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.33281 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.33795 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.34822 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.0.0.0.0.44782 = IpAddress: 0.0.0.0 
    UDP-MIB::udpLocalAddress.192.168.1.13.9950 = IpAddress: 192.168.1.13 

et TCP aime:

snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.6.13.1.1             
    TCP-MIB::tcpConnState.0.0.0.0.21.0.0.0.0.0 = INTEGER: listen(2) 
    TCP-MIB::tcpConnState.0.0.0.0.23.0.0.0.0.0 = INTEGER: listen(2) 
    TCP-MIB::tcpConnState.0.0.0.0.80.0.0.0.0.0 = INTEGER: listen(2) 

Marcher dans les tableaux vous montrent quels ports sont li stening, et pourrait vous fournir des informations. Maintenant, si vous voulez juste vérifier si des ports spécifiques que vous avez listés dans votre question écoutent, vous pouvez utiliser les OIDS suivants pour vérifier. Les OIDS ci-dessus supposent que le serveur est lié à l'adresse par défaut (0.0.0.0). Mais ils peuvent être liés uniquement à l'adresse IP du serveur (dépend de config). Dans ce cas, en supposant que votre adresse IP du serveur est 192.168.10.1 vous obtiendrez

1.3.6.1.2.1.7.5.1.1.192.168.10.1.53 for bind 

si tout cela étant dit, je pense que si vous vouliez dire si http écoutait sur l'adresse par défaut sur l'hôte 192.168.10.1, en utilisant le python liaisons snmp net vous auriez quelque chose comme ça.

import netsnmp 
oid = netsmp.Varbind('1.3.6.1.2.1.6.13.1.1.0.0.0.0.80.0.0.0.0.0') 
result = netsnmp.snmp(oid, 
         Version = 2, 
         DestHost="192.168.10.1", 
         Community="public") 

Je ne suis pas sûr à 100% si le varbind est nécessaire que je ne fais pas des trucs snmp en python, et quelques exemples que j'ai trouvé eu, et d'autres pas. Mais essayez de toute façon. dans la requête ci-dessus, si le serveur n'écoute pas, il renverra un tel OID, s'il est ouvert et le résultat de l'écoute devrait être Integer (2).

0

Il est difficile de voir où SNMP pourrait intégrer.

La meilleure façon de suivre serait d'utiliser un protocole client spécifique (par exemple, exécutez une requête simple vs MySQL, récupérer un fichier de test via FTP, etc. Si cela ne fonctionne pas, vous pouvez ouvrir un socket TCP ou UDP sur les ports et voir si quelqu'un est à l'écoute.

0

Vous pouvez essayer de lancer nmap contre les ports que vous voulez vérifier, mais cela ne sera pas nécessairement vous donner une indication que le processus serveur de l'autre côté d'un port ouvert est vivant.