Juin 152011
 
Download : nettl.sh

#!/bin/ksh

PATH="/usr/sbin:/usr/bin:${PATH}"

TMPCONF=/tmp/${0##*/}.${RANDOM}.conf
cp /dev/null ${TMPCONF}
V_PROG=${0}

#------------------------------------------------------------------------------#
###                   fonction d'arret du programme                         ####
arret_du_prog () {
	echo "Vous trouverez l'historique de l'affichage dans le fichier /tmp/${V_PROG##*/}.log"
	[ -f "${V_LOCK}" ] && rm "${V_LOCK}"
	[ -f "${TMPCONF}" ] && rm "${TMPCONF}"
	nettl -traceoff -entity all 2>/dev/null
	exit ${1:-0}
}
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
###                   fonction d'affichage de l'aide                        ####
Usage () {
	cat <<EOF
Usage:
       $V_PROG &#91; -e entity &#93; -f filtre valeur &#91; ... -f filtre valeur ... &#93;

   entity est 'all' par defaut et peut etre:
      ip
      tcp
      udp
      driver
      icmp
      nfs
      loopback
      x25
      igmp

   filtre peut etre une des valures suivantes:
           Layer Type     Filtre         Description
           _____________________________________________________________
           Layer 1        dest           hardware destination address
                          source         hardware source address
                          interface      software network interface
           _____________________________________________________________
           Layer 2        ssap           IEEE802.2 source sap
                          dsap           IEEE802.2 destination sap
                          type           Ethernet type
           _____________________________________________________________
           Layer 3        ip_saddr       IP source address
                          ip_daddr       IP destination address
                          ip_proto       IP protocol number
           _____________________________________________________________
           Layer 4        tcp_sport      TCP source port
                          tcp_dport      TCP destination port
                          udp_sport      UDP source port
                          udp_dport      UDP destination port
                          connection     a level 4 (TCP, UDP) connection
           _____________________________________________________________
           Layer 5        rpcprogram     RPC program
                          rpcprocedure   RPC procedure
                          rpcdirection   RPC call or reply

   pour valeur a vous d'associer en fonction du filter.

exemples:
	# pour voir les paquets tcp source et destination du port 21:
	$V_PROG -e all -f tcp_sport 21 -f tcp_dport 21
EOF
exit ${1:-0}
}
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
###                   Analyse des arguments                                 ####
while &#91; "${#}" -ne "0" &#93;
do
	case $1
	in
		-e) # nettl entity
			if &#91; "$2" = "all" &#93;
				then
					V_ENTITY=all
				else
					V_ENTITY=ns_ls_${2}
			fi
			shift 2
		;;
		-f) # netfmt filters
			&#91; -z "$2" -o -z "$3" &#93; && echo "Merci de specifier un filtre" && usage
			&#91; "$(echo $2 |cut -c1)" = "-" -o "$(echo $3 |cut -c1)" = "-" &#93; && {
				echo "'-f ${2} ${3}' n'est pas une liste d'arguments valides"
				Usage
			}
			echo "filter $2 $3">> ${TMPCONF}
			shift 3
			;;
	esac
done

# Il faut des options de filtre a netfmt, sinon, pas d'interet
[ -z "$(cat ${TMPCONF})" ] && {
	echo "Merci d'ajouter un filtre avec l'option '-f'."
	Usage
}

trap arret_du_prog 1 2 3 11 13 15

V_LOCK=/tmp/${0##*/}.lock
if [ -f "${V_LOCK}" ]
	then
		echo "Erreur: ${0##*/} est deja en cours d'utilisation"
		arret_du_prog 1
	else
		touch "${V_LOCK}"
fi

# Test de demarrage de nettl
if [ -z "$(UNIX95= ps -e -o args |grep "^/usr/lbin/ntl_reader " |grep -v grep)" ]
	then
		echo "nettl n'est pas demarre, veuillez lancer nettl pour activer les fonction de trace reseaux"
		echo "pour lancer nettl il faut que la variable NETTL soit positionne avec '1' dans le fichier /etc/rc.config.d/nettl"
		echo "ensuite, lancer la commande suivante: /sbin/init.d/nettl start"
		arret_du_prog
fi

# affichage des infos resales
nettl -traceon all -entity ${V_ENTITY:-all} |netfmt -F -N -n -l -c ${TMPCONF} |tee /tmp/${0##*/}.log

arret_du_prog

faut avouer, je suis un peu pro hpux mais dès fois, on se rend compte qu’il y a des choses bien chez les autres, je prend l’exemple de snoop chez solaris, une commande livrée en standard qui équivaut à un nmap allégé.
sous hpux, on a bien nettl mais son utilisation est tellement obscure qu’il n’est pas facile de s’y retrouver.

voici donc un script qui va résoudre ce problème en simplifiant tout ça, lancer et arrêter le daemon nettl lancer les bonnes commandes etc…, voici son usage:

Usage:
 ./nettl.sh [ -e entity ] -f filtre valeur [ ... -f filtre valeur ... ]
 
 entity est 'all' par defaut et peut etre:
 ip
 tcp
 udp
 driver
 icmp
 nfs
 loopback
 x25
 igmp
 
 filtre peut etre une des valures suivantes:
 Layer Type     Filtre         Description
 _____________________________________________________________
 Layer 1        dest           hardware destination address
 source         hardware source address
 interface      software network interface
 _____________________________________________________________
 Layer 2        ssap           IEEE802.2 source sap
 dsap           IEEE802.2 destination sap
 type           Ethernet type
 _____________________________________________________________
 Layer 3        ip_saddr       IP source address
 ip_daddr       IP destination address
 ip_proto       IP protocol number
 _____________________________________________________________
 Layer 4        tcp_sport      TCP source port
 tcp_dport      TCP destination port
 udp_sport      UDP source port
 udp_dport      UDP destination port
 connection     a level 4 (TCP, UDP) connection
 _____________________________________________________________
 Layer 5        rpcprogram     RPC program
 rpcprocedure   RPC procedure
 rpcdirection   RPC call or reply
 
 pour valeur a vous d associer en fonction du filter.
 
exemples:
 # pour voir les paquets tcp source et destination du port 21:
 ./nettl.sh -e all -f tcp_sport 21 -f tcp_dport 21

ce script m’a déjà fait gagner du temps, j’espère qu’il en sera de même pour vous.

Juin 152011
 

Une méthode extrêmement simple pour installer un boot relay

Partie 1 : Serveur Relay
sur le vlan ou se trouve le client a installer, trouver un serveur HP-UX.
éditer le fichier /etc/bootptab en ajoutant les éléments suivants:

relay:
        ht=ether:
        ha=000000000000:
        hm=000000000000:
        bp=10.10.10.10

bp contient l’adresse IP du serveur d’installation Ignite

activer bootps en décommentant la ligne correspondante dans /etc/inetd.conf.
Continue reading »

Juin 142011
 

dès fois, on lance une connexion ssh avec des commandes dedans.
dès fois, la connexion ssh se ferme pas, et c’est bien fatigant, surtout quand on veut accéder à plusieurs serveurs au travers d’une boucle.

solution, les redirection.
parceque si la connexion se ferme pas, c’est qu’il y a des fichiers ouverts, on squizze donc ces fichiers.

voici l’exemple d’une connexion qui ne se ferme pas, pourtant, aucune erreur :

$ ssh machine "/sbin/init.d/ldapclientd.rc stop && \
/sbin/init.d/ldapclientd.rc start"

et voici la même avec les redirections, cette connexion se fermera bien à la fin des commandes.

$ ssh machine "/sbin/init.d/ldapclientd.rc stop </dev/null>/dev/null 2>&1 && \
 /sbin/init.d/ldapclientd.rc start </dev/null>/dev/null 2>&1"
Juin 142011
 

pour se connecter en ssh sur un site distant quand il y a un proxy socks entre la connexion.
le mieux est d’utiliser la command connect dans les options ssh.

le fichier connect.c a compiler se trouve ici : connect.html

cette page contient plein d’exemples.

un exemple ou deux de plus ne faisant pas de mal :

$ ssh -o "ProxyCommand=/usr/local/bin/connect \
-S domain\\login@proxy.domain:1080 %h %p" 88.180.70.50 22
$ ssh -o "ProxyCommand=/usr/local/bin/connect \
-S login@proxy.domain:1080 %h %p" 88.180.70.50 22
Juin 142011
 

prérequis:
une machine derrière une passerelle ayant accès à l’extérieur par ssh et ayant un serveur sshd qui tourne.

voila le topo.
vous êtes au boulot et tous les postes informatiques sont derrière une passerelle.
bien pratique mais vous avez une compilation sur un serveur et vous savez que la compilation va prendre au moins une heure.
vous ne pouvez rien faire en attendant la fin de la compilation et pourtant, y en a des choses à faire après (vérifications/configurations/etc…)

l’astuce.
vous allez connecter une machine chez vous et y ouvrir une socket, quand vous serez chez vous, vous n’aurez qu’a vous connecter à cette socket pour vous connecter à la machine du boulot.
Continue reading »

Juin 142011
 

ssh est vraiment bien foutu je trouve, il est aussi pas trop mal documenté.
par mesure de sécurité j’ai certains services ou l’accès n’est autorisé que localement.
je prends par exemple le panel d’administration par le web qu’est ‘webmin’. (stupide de laisser un tel outil à la portée du premier hackeur venus).
donc, à moins d’être authentifié sur le serveur, personne de l’extérieur ne pourra y accéder.

pour les exemples je vais prendre les machines ‘maison’ et ‘boulot’, on va considérer que je veuille me connecter depuis le boulot, à la maison.
la machine localhost dans ces exemple sera donc ‘boulot’.
tout d’abord, vérifier que les deux paramètres suivants sont bien renseignés dans la configuration ssh:
Continue reading »