Top 100 Network Security Tools http://sectools.org/index.html Nagios http://www.nagios.org/
Oreon/Centreon www.oreon-project.org/ GroudWork http://www.groundworkopensource.com/community/
munin http://munin.projects.linpro.no/ MRTG RRDtool http://oss.oetiker.ch/rrdtool/ Sentinix http://sentinix.tigerteam.se/ OpenMosix http://openmosix.sourceforge.net
http://openmosix.sourceforge.net/instant_openmosix_clusters.html
nessus www.nessus.org/
http://mdvmondelinux.s3ii.info/Auditer-la-securite-de-son-reseau
Sécurité
http://doc.mandrivalinux.com/MandrakeLinux/90c/fr/Server_Conf_Guide.html/security.html Hardening a Linux Installation : http://www.cromwell-intl.com/SECURITY/linux-hardening.html
kdewallet
Configuration : K > System > Configuration > KDE > Security & Privacy > KDE Wallet ou $ kcontrol
> Security & Privacy > KDE Wallet
Gestion des ACL
http://www.linuxfrench.net/article.php3?id_article=1463
setfacl getfacl gtk-acl
Commandes simples
w Utilisateurs “logués”, ce qu'il font, etc. who Utilisateurs “logués” rwho -a ? à revoir, ne semble pas fonctionner finger nom_utilisateur Infos concernant un utilisateur last |less Liste des derniers utilisateurs “logués” Nb : une connexion ftp anonymous laisse une entrée du type : ftp ftpd1385 81.184.29.30.dyn Thu May 10:14 - 10:21 (00:07)
adresse source temps de connexion
Comparer la liste des fichiers (ou répertoires) cachés à différents temps: # find / -type f -name “.*” -ls > hiddenFiles-`date +%Y-%m-%d` # find / -type d -name “.*” -ls> hiddenDir-`date +%Y-%m-%d`
msec
http://www.mandrakesecure.net/en/docs/msec.php http://club.mandriva.com/xwiki/bin/KB/SecureSmsec man msec
Configuration globale ou fine de la sécurité en interface graphique
# draksec ou encore : # mcc (Mandrake control center, onglet Security)
drakperm
Pour connaître le niveau (msec) de sécurité actuel Pour voir et fixer les permissions
Changer de niveau de sécurité :
Sous root, pour passer au niveau 4, par exemple : msec 4
Configuration : voir le fichier
/var/lib/msec/security.conf
Outils divers
nmap hping tcpdump IDS :
snort psad
Rejet des “script kiddies”
Interdire la connexion à partir d'une adresse IP en cas de tentatives infructueuses répétées. Voir : - Port knocking
http://www.linuxjournal.com/article/6811 http://www.portknocking.org/
- fail2ban - Blacklister les Ips indésirables : http://www.frit.net/linux/black/ - denyhost : http://tdot.blog-city.com/securing_ssh_with_denyhosts.htm - BlockHosts : http://www.aczoom.com/cms/blockhosts/ - crackblock : http://www.zipcon.net/~sirius/crackblock.html
Détection des scans
scanlogd scandetd
Pam — http://www.linux-kheops.com/doc/cours/jgourdin/outils-tcp-ip/Linux-pam.html
DNS : trou de sécurité
www.opendns.com/ Voir aussi http://en.wikipedia.org/wiki/OpenDNS
Liste des ports (IANA)
cat /etc/services
nmap ==== (pour une interface graphique : # urpmi nmap-frontend puis $ nmapfe )
Détecter les PCs on-line : $ nmap -sP 192.168.0.* $ nmap -sP 192.168.0.*/25 (scanne les 126 premières addresses) $ nmap -sP 192.168.0.{50..100} (scanne de 192.168.0.50 à 192.168.0.100)
Scan des ports d'une machine
Lister les ports ouverts
Exemple : nmap localhost
Attention : 1 - Par défaut nmap ne scanne que les ports 1 à 10024 Pour scanner tous les ports possibles : nmap -p 1-65535 localhost nmap -sU -p 1-65535 localhost
2 - nmap localhost ne montre que les ports ouverts sur l'interface 127.0.0.1 (loopback) ce qui n'est pas représentatif des ports réellement accessibles
Tests pour savoir si un serveur n'est pas compromis par un rootkit
cf. A la recherche de Rootkits http://www.viginews.com/affichage_article.php?id=822 http://www.omninerd.com/2005/11/22/articles/43
Chkrootkit
# urpmi chkrootkit chkrootkit vérification complète du système
# cd /usr/lib/chkrootkit/ # ./ifpromisc pour vérifier que l'interface n'est pas en mode “promiscuous” # ./chkproc pour détecter un processus caché
rkhunter
netstat
Keep an Eye on Your Linux Systems with Netstat: Using Netstat For Surveillance And Troubleshooting, http://www.linuxplanet.com/linuxplanet/tutorials/5633/1/
netstat -vtlnp -v verbose -l (–listening) affiche uniquement les sockets en écoute -n (–numeric) addresse du socket en numérique (sinon affichage du nom canonique) -p (–program) affiche le PID et le nom du programme associé au socket
netstat -taup -a (–all) affiche tous les sockets (en écoute ou non) -t –tcp -u –udp
netstat -vatn netstat -vt
lsof
lsof -i liste les connexions internet ouvertes. lsof -i :80 liste les connexions internet ouvertes sur le port 80
On peux ainsi vérifier quels ports sont ouverts et voir si certains ports n'ont pas derrière eux un programme suspect.
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd2 10738 apache 4u IPv6 22984 TCP *:http (LISTEN) httpd2 10739 apache 3u IPv6 22981 TCP *:https (LISTEN) Dans ce cas par exemple le programme httpd2 avec comme user apache ecoute en TCP sur le port 80 (http) et 443 (https), ce qui est normal
lsof -i permet de détecter des processus suspects éventuellement attachés à des ports connus (80 par exemple). Pour les arrêter : - soit chkconfig <COMMAND> off, ce qui évite que <COMMAND> soit relancé au démarrage mcc → System → Services permet de faire la même chose. - soit trouver la commande ps aux |grep <COMMAND> et tuer le processu correspondant kill -9 <PID> mais il repartira au prochain démarrage.
Contrôle des ports à partir de l'extérieur
Sites proposant des contrôles :
http://outils.sdv.fr/ http://grc.com/x/ne.dll?rh1dkyd2 http://scan.sygatetech.com/
Netfilter / Iptables
http://christian.caleca.free.fr/netfilter.html http://christian.caleca.free.fr/netfilter/iptables.htm http://www.netfilter.org/documentation/ (pointeurs sur documentation) http://iptables-tutorial.frozentux.net/iptables-tutorial.html http://logi.cc/linux/netfilter-log-format.php3 (netfilter log format) http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html
which iptables Pour voir si la commande iptables est présente lsmod | grep iptable pour voir si le module est installé. iptables -L -v affiche les règles de fitrages. iptables -F pour supprimer toutes les règles (F = flush)
tail -f netfilter.log |grep 1.25 affiche ce qui concerne la machine x.x.1.25 dans les 10 dernières lignes des logs d'iptables iptables -L FORWARD -vn |grep 80 ce qui concerne le port 80 (http, affichage numérique) iptables -L FORWARD -v |grep 80 ce qui concerne le port 80 (http, affichage en clair)
Iptables pour IPv6
Installer si ce n'est pas encore fait iptables-ipv6 Pour bloquer IPv6 tant qu'il n'est pas utilisé : # ip6tables -F # ip6tables -P INPUT DROP # ip6tables -P OUTPUT DROP # ip6tables -P FORWARD DROP
Vérifier l'état des programmes installés
rpm -Va
Shorewall
Version et aide
sudo shorewall version sudo shorewall help
Interface de configuration Mandriva :
drakfirewall
La version installée par Mandrake est souvent très en retard. Certains rpm semblent même être buggés ! D'autre part la configuration faite par MDK ou MDV est calamiteuse : plus rien ne fonctionne !! ⇒ Supprimer la version de shorewall installée par MDK / MDV, télécharger la dernière version stable sur http://www.shorewall.net/ (NB : moins de problèmes avec les derniéres versions de MDV)
Tout est très bien expliqué sur le site http://www.shorewall.net/ NB : les actions prédéfinies sont dans /usr/share/shorewall/actions.std (et non pas /etc/shorewall/actions.std)
Installation :
- Récupérer la dernière version de shorewall sur le site http://www.shorewall.net/ - Installer : # rpm -ivh shorewall….115 Shorewall a besoin du package iproute. En cas de message d'erreur indiquant qu'iproute n'est pas trouvé, vérifier qu'il est bien installé : # which ip /sbin/ip Puis relancer l'installation avec : # rpm -ivh –nodeps shorewall….
Les fichiers à renseigner obligatoirement pour que ça fonctionne :
/etc/shorewall/interfaces /etc/shorewall/rules
ainsi que
/etc/shorewall/zones dans le cas des versions 2.3
et /etc/shorewall/policy dans le cas de la version 3
Fichier /etc/shorewall/interfaces
'
Mettre :
net eth0 detect norfc1918,routefilter,tcpflags,nosmurfs
dans le cas d'une connexion par modem, rajouter :
net ppp0 norfc1918,routefilter,tcpflags,nosmurfs
Fichier /etc/shorewall/rules
Indiquer ce qui est autorisé et ce qui est interdit.
NB : un certain nombre d'actions sont prédéfinies dans le fichier /usr/share/shorewall/actions.std : voir le contenu de ce fichier.
Mettre au moins :
ACCEPT net fw icmp 8
# ou bien AllowPing net fw
ACCEPT fw net icmp
Rajouter éventuellement :
ACCEPT net fw tcp http
# ou bien AllowWeb net fw
AllowSSH net fw
et pour un serveur :
AllowFTP net fw AllowSMB net fw AllowSMB fw net AllowSMTP net fw AllowIMAP net fw
Version 3 ……… Dans /etc/shorewall/rules des macros sont utilisées au lieu de Allow… : voir http://www.shorewall.net/Macros.html. Ces macros sont situées dans /usr/share/shorewall/ Exemple : Ping/ACCEPT net fw SSH/ACCEPT:info net fw SMB/ACCEPT net fw
Fichier /etc/shorewall/policy
'
Pour que ça fonctionne, le fichier policy doit contenir :
fw net ACCEPT
net all DROP info
all all REJECT info
et non pas comme installé par défaut par les rpm MDK : loc net ACCEPT net all DROP info all all REJECT info
(!!! explication ??)
Version 3 ……… Le fichier /etc/shorewall.policy est vide !
/etc/shorewall/zones
A partir de Shorewall 2.2.0, le fichier /etc/shorewall/zones est vide : seule la zone fw est défine par défaut.
Définir les zones à utiliser, par exemple (cf. http://shorewall.net/shorewall_setup_guide.htm) :
net Net Internet
loc Local Local networks
dmz DMZ Demilitarized zone
Version 3
- dans /etc/shorewall/zones mettre les zones proposées en exemple : fw firewall net ipv4 loc ipv4 dmz ipv4
Puis démarrer le firewall par : # shorewall start (ou redémarrer par shorewall restart) Vérifier que les règles sont bien installées : iptables -L
Principal fichier à configurer pour autoriser différents services (http, ftp, imap, etc.) à fonctionner : /etc/shorewall/rules Si les services ne sont pas prédéfinis dans /usr/share/shorewall/actions.std autoriser les ports “à la main” comme indiqué dans la doc contenue dans le fichier /etc/shorewall/rules
Commandes intéressantes :
# shorewall version par de – ! # shorewall stop # shorewall clear # shorewall start # shorewall restart
Pour voir l'état des règles de filtrage :
La dernière ligne générée par shorewall start se termine par “Shorewall Started” si shorewall a bien démarré. Sinon, en cas d'erreur la dernière ligne est “Terminated” et le PC risque de ne pas être protégé sans que l'on s'en rende compte !!! Il est donc indispensable de vérifier à postériori si shorewall a bien démarré en affichant les règles de filtrage : # iptables -L -v Il serait bon de générer un message clair (pop-p et son) pour avertir de la non-installation des règles de filtrage (à voir, ça existe peut-être déjà)
Pour voir les messages générés par shorewall
less /var/log/messages tail -f /var/log/messages
grep /var/log/messages
Ports souvent sollicités
DPT=631 ipp 631/tcp IPP (Internet Printing Protocol) ipp 631/udp IPP (Internet Printing Protocol) Dû à cups. Remède, dans /etc/cups/cupsd.conf changer “Browsing On” (défaut) en “Browsing off” et redémarrer cups (service cups restart
Trier/formater les messages à partir des fichiers de log avec awk
Par exemple, afficher le n° IP des machines (SRC=), rejetées sur le port 631 avec les ports source (SPT=) et destination (DPT=) : # grep 631 /var/log/messages |grep SPT=631 |awk '{print $9 “ ” $18 “ ” $19}' |less SRC=192.168.0.23 SPT=631 DPT=631
Repérer les tentatives réussies ou échouées de connexions ssh
Pour que les connexions réussies soient enregistrées dans /var/log/messages, mettre dans /etc/shorewall/rules (on rajoute :info) : ACCEPT:info net fw tcp 22 AllowSSH:info net fw SSH/ACCEPT:info net fw
Connexions réussies : # grep “Accepted password” /var/log/messages |less
Connexions refusées : # grep “Failed password” /var/log/messages |less Pour compter le nombre de connexions refusées par jour # grep 'Failed password' /var/log/auth.log | grep sshd | awk '{print $1,$2}' | sort | uniq -c
NB : elles sont aussi enregistrées dans /var/log/auth.log C'est le résultat du paramétrage par défaut défini dans /etc/ssh/sshd.config : # Logging #SyslogFacility AUTH #LogLevel INFO
Avec un formatage : # grep “Failed password” /var/log/messages | awk '{print $2 “ ” $1 “ ” $3 “ ” $10 “ ” $11 “ ” $13 }' | less 14 Oct 14:17:19 user janaina ::ffff:209.209.13.165 14 Oct 14:17:20 user alves ::ffff:209.209.13.165 14 Oct 14:17:22 user miotto ::ffff:209.209.13.165 Nb : pour entrer la tabulation entre $10 et $13 : <Ctrl><V> puis <tab>
En savoir plus sur l'auteur de la tentative d'intrusion : $ whois 209.209.13.165 InReach Internet INREACH98 (NET-209-209-0-0-1)
209.209.0.0 - 209.209.127.255
Roger Caplan INREACH-ROGERCAPLAN (NET-209-209-13-160-1)
Infos complémentaires (adresse, N° de tel, etc.) $ whois '!NET-209-209-13-160-1' ou simplement (les '! ne semblent pas nécessaires) $ whois NET-209-209-13-160-1 |less
Blocage des tentatives d'accès “brute fore” sur le port 22
Anti-virus
Clamav/Klamav Doc : http://www.clamav.net/doc/latest/ Kalmav = interface graphique
Installation
# urpmi clamav Généralement pas à jour ! Installation à patir de sources $ tar -zxvf clamav-xxx.tar.gz $ cd clamav-xxx $ ./configure $ make # make install
Désinstallation (à faire avant une nouvelle installation) # make uninstall
Utilisation
- Mise à jour de la base des virus # freshclam ERROR: Clamd was NOT notified: Can't connect to clamd through /var/lib/clamav/clamd.socket ⇒ installer Clamd ! # urpmi clamd # service clamd status clamd is stopped # service clamd start
Voir “Setting up auto-updating” et le reste de la doc.
ERROR: Please edit the example config file /usr/local/etc/freshclam.conf. ERROR: Please edit the example config file /usr/local/etc/clamd.conf. ⇒ Complètement idiot ! Editer ces fichiers et mettre dans :
# Comment or remove the line below. Example
“Exemple” en commentaire
- Scan antivirus: # fdisk -l pour afficher la liste des partitions à scanner # clamscan -ri /point/de/montage/de/la/partition/ou/répertoire # clamscan -r –bell -–log=rapport.txt /point/de/montage/de/la/partition/ou/répertoire # clamscan -ri –remove /point/de/montage/de/la/partition/ou/répertoire -r récursive -i ou –quiet pour n'avoir que les virus de signalés
CD bootables avec ClamAV
ClamAV live CD http://www.volatileminds.net/projects/clamav/tutorial.html Utilisation : …………. Dans un environneemnt sans DHCP : $ sudo ifconfig ethx <n° IP du PC> netmask 255.255…. x = le n° de l'onterface netmask : à adapter au réseau (en général 255.255.255.0) $ sudo route add default gw <n° IP de la passerelle> Malheureusement il n'est pas possible d'enregistrer un fichier /etc/resolv.conf pour indiquer un serveur DNS (nameserver <n°IP du DNS>) ce qui fait que la commande suivante (freshclam) revoie une erreur. ⇒ en l'absence de DHCP, utiliser de préférence SysRescueCD (cf. plus loin qui permet de définir un serveur DNS) Puis : $ sudo freshclam (mise à jour) $ sudo fdisk -l (pour lister les partitions) $ sudo mount -t ntfs-3g /dev/sda1 /mnt -o force (/dev/sda1 par exemple une partition NTFS ntfs-3g pour permettre l'effacement des virus sur une partition NTFS) $ sudo clamscan -ri –remove /mnt SystemRescueCd A télécharger de www.sysresccd.org/Index.fr.php
Après démarrage du CD live: - Choisir le type de clavier (16 pour français) - Si nécessaire (dans le cas où il n'y a pas de DHCP) configurer le réseau : net-setup ethx (x=0 ou plus rarement 1) - Mettre à jour l'anti-virus : freshclam - Lister les partitions à scanner : fdisk -l ou cat /proc/partitions - Créer un (ou des) point(s) de montage mkdir /mnt/1 (ne pas monter directement la partition à scanner dans /mnt) - Monter la partition à scanner (par exemple pour une partition NTFS sda1) mount -t ntfs-3g /dev/sda1 /mnt/1 ou, en cas de problème de montage : mount -t ntfs-3g /dev/sda1 /mnt -o force
ls /mnt/1 (pour vérifier que c'est bien cette partition qu'on veut scanner) - Scanner avec l'anti-virus clamscan -ri /mnt/1 ou pour directement supprimer les virus : clamscan -ri –remove /mnt/1
Distributions sur CD bootable (CD live) outils pour contrôler, réparer, récupérer un système
SystemRescueCd http://www.sysresccd.org/Main_Page INSERT (Inside Security Rescue Toolkit) http://www.inside-security.de/insert_en.html Ultimate Boot CD http://www.ultimatebootcd.com/index.html
Installation de Mandriva (sur disque, clé USB, etc) à partir d'un site FTP
Mandriva (ou autres distributions sur clé USB)
http://www.mcnlive.org/ http://loli.fsa.ulaval.ca/index.php?id=591 http://www.eeextra.com/eee/how-to-create-a-live-linux-usb-pendrive.html http://wiki.mandriva.com/en/Draklive ou http://wiki.mandriva.com/fr/Draklive http://wiki.mandriva.com/fr/TwikiCookerHowToFr#Installer_.C3.A0_partir_d.27une_clef_USB http://wiki.mandriva.com/fr/One_sur_live_usb http://en.wikipedia.org/wiki/Live_USB http://unetbootin.sourceforge.net/
Autres :
http://pc-silencieux.disk91.com/index.php?2008/01 http://valaurea.free.fr/documents/sig11_flash.html
Anti-virus sur CD bootable
Utile pour vérifier la présence de virus sur un PC windows
Insert (Inside Security Rescue Toolkit)
http://www.inside-security.de/insert_en.html A base de Knoppix + clamav Pour contrôler une partition : 1 - monter la partition à contrôler, par exemple : # mount /dev/hda1 /mnt/hda1 2 - aide en ligne : # clamscan –help 2 - Lancer le scan anti-virus : # clamscan -r –bell /mnt/hda1 -r = recursive –bell = sonne pour chaque virus rencontré Avec enregistrement du résultat dans un fichier : # clamscan -r –bell –log=rapport.txt /mnt/hda1 ou encore : # clamscan -r –bell -log rapport.txt /mnt/hda1
Arpwatch
arp = address resolution protocol Maintient une base de donnée des adresses MAC visibles sur le réseau et de leurs paires d'IP associées Pour voir s'il tourne : $ ps auwx | grep arp Sinon pour lancer le démon : # arpwatch Pour voir les stations sur le réseau : # cat /var/log/messages | grep arp $ less /var/lib/arpwatch/arp.dat Pour l'afficher sous forme de page html $ arpwatch2html.pl
Ethereal/Wireshark
Wireshark est le nouveau nom de ethereal www.ethereal.com/ www.wireshark.org/
User's guide : http://www.ethereal.com/docs/eug_html_chunked/ filtres : http://home.insight.rr.com/procana/
Utilisation : Capture/Options Capture Filter: port 80 (par exemple) Cocher “Update list of packets in real time” [Start]
Mise à jour de l'affichage : bouton [Clear] (sur la page initiale, ligne “filter”)
Etherape
http://etherape.sourceforge.net/
Tcpdump
tcpdump -i eth0 -s0 -X host IP_ou_nom_de_la_machine_à_scanner s0 lonqueur capturée, 0 signifie à tcpdump d'utiliser une longueur ad-hoc pour capturer des paquets entiers -X affichage en hexa et ASCII
NB : sur MDV tcpdump fonctionne en donnant le n° IP mais pas avec le nom de la machine : ceci est dû à un fichier /etc/hosts incorrect, voir bug /etc/hosts plus bas : tcpdump affiche ce qui se passe sur 127.0.0.1, c'est à dire rien au niveau de eth0.
Exemple : voir ce qui se passe sur le port 25 : Dans une console : # tcpdump -i eth0 -c 10 -l port 25 2>/dev/nul | while read titi; do lsof -n -i :25; done -i eth0 interface -c 10 -i eth0termine après réception de 10 paquets -l pour voir les paquets titi variable quelconque pour exécution de la boucle
Dans une autre console (pour tester le résultat) $ telnet <mail server> 25 se connecte sur le serveur de mail <mail server>
Netcat (nc)
www.jfranken.de/homepages/johannes/vortraege/netcat_inhalt.en.html
Pour communiquer entre 2 machines. voir aussi cryptcat
Se connecter
netcat <nom/adresse de machine> <nom du service> netcat <nom/adresse de machine> <numéro de port>
En mode serveur (en attente d'une connexion sur un port spécifié)
netcat -l -p<port> (l = listen)
Sur le serveur
$ nc -l -p 45678 -l = listen -p 45678 = n° de port quelconque ⇒ nc écoute sur le port indiqué ou $ nc -L -p 45678 pour éviter la déconnexion ou bien : $ nc -l -p 45678 > reception pour récupérer le résultat dans le fichier réception
Sur le client
(ne pas oublier de lancer le serveur avant, sinon “connection refused !) $ nc nom_ou_IP_du_serveur 45678
En cas de non-fonctionnement, voir la configuration du (des) firewall(s) éventuel(s) Serveur et client communiquent maintenant par le port 45678 : on peut taper au clavier des caractères sur le serveur qui s'affichent sur le client, et des caractères sur le client qui s'affichent sur le serveur
Envoie de fichier
$ cat /fichier.txt | nc nom_client 45678 le contenu de /fichier.txt s'affiche sur le serveur
Transfert de fichier
Serveur : nc -l -p 5500 < image.jpg Client : nc -v <serveur> 5500 > toto.jpg
Exécution de commandes
Sur le serveur : $ nc -v -l -p 5600 -e /bin/bash (ou en plus court : nc -vlp5600 -e/bin/bash) Sur le client : $ nc <serveur> 5600 et taper les commandes qui seront exécutées sur le serveur : le résultat s'affiche sur l'écran du client
Test de ports
http://3psilon.free.fr/index.php?pa=35
$ nc -vv 127.0.0.1 20-90 localhost.localdomain [127.0.0.1] 90 (?) : Connection refused localhost.localdomain [127.0.0.1] 89 (?) : Connection refused localhost.localdomain [127.0.0.1] 88 (kerberos) : Connection refused localhost.localdomain [127.0.0.1] 87 (?) : Connection refused localhost.localdomain [127.0.0.1] 86 (?) : Connection refused localhost.localdomain [127.0.0.1] 85 (?) : Connection refused localhost.localdomain [127.0.0.1] 84 (?) : Connection refused localhost.localdomain [127.0.0.1] 83 (?) : Connection refused localhost.localdomain [127.0.0.1] 82 (?) : Connection refused localhost.localdomain [127.0.0.1] 81 (?) : Connection refused localhost.localdomain [127.0.0.1] 80 (http) open
Netcat s'arrête sur le 1° port trouvé ouvert Pour un scan complet : $ nc -vvz 127.0.0.1 20-90 Pour que netcat n'affiche que les ports ouverts, utiliser un seul -v : $ nc -vz 127.0.0.1 1-255
Gnu netcat
Semble plus complet que le netcat installé par défaut sur MDV 2007.0 (pas d'option -L par exemple) Télécharger : http://netcat.sourceforge.net/download.php → netcat-0.7.1.tar.gz Décompresser : $ tar -zxvf netcat-0.7.1.tar.gz $ cd netcat-0.7.1 $ ./configure $ make $ sudo make install NB : l'installation se fait par défaut dans /usr/local/bin alors que le netcat d'origine est dans /usr/bin/netcat Pour différencier l'un de l'autre et y accéder facilement, par exemple : $ sudo ln -s /usr/local/bin/netcat /usr/bin/ncgnu
Mode tunnel
Nb utilise l'option -L absente de nc v1.10 : utiliser Gnu netcat cf. http://dept-info.labri.fr/~aumage/oa/Cours/ARSA/arsa.html : nc -L<serveur:port> -p<port d'attente> pour une prolongation simple. nc -L<serveur:port> -p<port d'attente> -x pour tracer la conversation. nc -L<serveur:port> -p<port d'attente> -o <fichier> pour enregistrer la conversation dans un fichier.
Cryptopgraphie, chiffrer des documents
encfs http://wiki.mandriva.com/fr/Encfs http://linux.softpedia.com/get/Desktop-Environment/Tools/EncFs-ServiceMenu-35807.shtml
Cryptographie, disques virtuels cryptés, chiffrage
http://openpgp.vie-privee.org/linux.html
Mountloop et son interface drakloop °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° http://www.aerospacesoftware.com/cryptoloop-howto.html /usr/share/doc/mountloop-0.15.1/README
La configuration de drakloop est stockée dans ~/.mountlooprc : on peut y modifier (si nécessaire) le nom du répertoire crypté. NB : par contre le nom du fichier crypté “encfile” est codé en dur dans drakloop (voir le code source perl) : si on modifie ce nom, drakloop ne fonctionne plus. Idem pour les possibilités de cryptage : seul aes est proposé. Il est tout a fait possible de nommer autrement le fichier crypté et d'utiliser d'autres chiffrages, cf./usr/share/doc/mountloop-0.15.1/README ⇒ dans ce cas, utiliser mountloop en ligne de commande
Montage à la main
$ mountloop <enc> <file> <dir> par exemple : $ mountloop aes256 Dossier_crypte/Fichier_crypte Dossier_crypte
Menu contextuel pour monter ou démonter un fichier crypté
http://developer.kde.org/documentation/tutorials/dot/servicemenus.html http://www.kde-france.org/article.php3?id_article=82 http://www.coagul.org/article.php3?id_article=91 www.oreilly.com/catalog/linuxdeskhks/chapter/hack40.pdf http://mandrakeusers.org/lofiversion/index.php/t18068.html
Ajouter dans ~/.kde/share/apps/konqueror/servicemenus (à l'usage de l'utilisateur courant) ou dans /usr/share/apps/konqueror/servicemenus (pour tous les utilisateurs) les fichiers .desktop suivants :
- Pour monter le fichier crypté ```````````````````````````````` OpenCryptFile.desktop
[Desktop Entry] Actions=OpenCryptFile ServiceTypes=all/allfiles
[Desktop Action OpenCryptFile] Name=Open encrypted file Exec=/usr/bin/kdialog –password “Password for this crypted file?” | /usr/bin/mountloop aes256 %f %d Icon=/usr/share/pixmaps/password.png
- Pour démonter le système de fichier crypté (ou tout autre système monté) ````````````````````````````````````````````````````````````````````````` UmountFS.desktop
[Desktop Entry] Actions=UmountFS ServiceTypes=inode/directory
[Desktop Action UmountFS] Name=Unmount File System Exec=kdesu ”/bin/umount -fl %f“ Icon=encrypted
Pour activer ces actions, clic droit sur le fichier ou le dossier, puis sous-menu “Actions”
Autre possibilité : associer le fichier encfile au programme drakloop
(K> System > Configuration > KDE > Components > File Associations encfile → /usr/bin/drakloop) ⇒ un double clic sur le fichier lance drakloop NB : le fichier .desktop créé se trouve dans ~/.kde/share/mimelnk/application
Truecrypt (renommé realcrypt sous MDV !!) °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° http://www.truecrypt.org/ Opensource, existe pour Windows et Linux : les fichiers cryptés sont visibles sous windows et linux. Mode d'emploi : http://altoptions.wordpress.com/2008/01/16/realcrypt-howto-part-1/
Installations ############# # urpmi truecrypt Mais la version disponible pour Mandirva est obsolete !
Installation à partir des sources (version 6.1 ou 6.1a)
- Télécharger le code source Mac OS X/Linux : http://www.truecrypt.org/downloads2.php - Décompresser : $ tar -zxvf TrueCrypt\ 6.1a\ Source.tar.gz $ cd truecrypt-6.1-source et lire le fichier Readme.txt : $ less Readme.txt
- Ajouter les librairies nécessaires au fonctionnement de truecrypt (cf. fichier Readme.txt) :
Cryptoki : _ En fait il faut uniquement les pkcs*.h de cryptpki (pkcs11f.h, pkcs11.h et pkcs11t.h, ne marche pas avec uniquement pkcs11.h !) : les récupérer sur “ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11” dans le répertoire de la version la plus récente (actuellement “v2-20”) et les copier dans le répertoire “truecrypt-6.1a-source/Crypto”
wxWidgets _ installation : voir plus loin “Installation de wxAll” Puis : $ make WX_ROOT=/path/complet/vers/wxWidgets-2.8. wxbuild
fuse # urpmi lib64fuse-devel (ou urpmi libfuse-devel en 32 bits)
Compilation de truecrypt : _ $ make WXSTATIC=1
Installation : __ l'exécutable truecrypt se trouve dans …./truecrypt-6.1a-source/Main $ cd Main # sudo chown root:root truecrypt # $ sudo cp truecrypt /usr/bin/
Avec cette version on a une interface graphique. Associer l'extension (.tc sous Windows, mais n'importe quelle autre extension peut être utilisée) : $ kcmshell filetypes et configurer.
Graver un conteneur truecrypt sur CD ou DVD
- DVD R+W 4.7 GB : créer un container truecrypt de 4480 MB maximum (truecrypt crée un fichier de 4 697 620 480 bytes). K3b rapporte 2 MO de libres. - CD
Man ### $ man realcrypt (man truecrypt ne marche pas !!)
# realcrypt -h # truecrypt -h aide # realcrypt -V # truecrypt -V version
Documentations
http://www.truecrypt.org/docs/?s=tutorial http://altoptions.wordpress.com/2008/01/16/realcrypt-howto-part-1/
Utilisation en ligne de commande ”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“ Création d'un volume crypté
# realcrypt -c et répondre aux questions NB : si on choisit : 2) None au lieu de 1) FAT il faudra par la suite formater le volume, par exemple en ext3
Formatage
Si ce n'a pas été fait dans l'étape précédente : # realcrypt -i associe le volume à un device et le monte et répondre aux questions. Puis : # mkfs.ext3 /dev/mapper/realcrypt0 # mount /dev/mapper/realcrypt0 /point/de/montage Les droits sont root:root. Les changer pour autoriser l'utilisateur et le groupe à y accéder : # chown <utilisateur>:<groupe> /point/de/montage
# realcrypt -l facultatif : pour lister le(s) device(s) # realcrypt -d pour démonter et libérer tous les devices Pour ne démonter qu'un device (conteneur), l'une ou l'autre de ces commandes : # realcrypt -d /point/de/montage ou : # realcrypt -d /dev/mapper/realcryptx (x = 0, 1 … n° du conteneur) ou : # realcrypt -d /FichierConteneur ou : # umount /point/de/montage (ne libère pas le device) ou : # umount /dev/mapper/realcryptx (ne libère pas le device)
Utilisation courante en ligne de commande
# truecrypt volume.tc /point/de/montage montage en “read only # truecrypt -d volume.tc démonte volume.tc # truecrypt -d démonte tous les volumes montés
Avec l'interface graphique pas d'option pour monter les volumes NTFS en lecture/écriture (truecrypt 6.0 ou 6.1) → utiliser la ligne de commande : # truecrypt –filesystem=ntfs-3g –fs-options=users,rw,uid=<n° ou login utilisateur> volume.tc /point/de/montage
GUI (interface graphique) ””“”“”“”“”“”“”“”“”“”“”“”“ http://tcgui.tc.funpic.de/en/download.htm http://www.howtoforge.com/truecrypt-with-gui-on-ubuntu-7.10-p2 http://webscripts.softpedia.com/script/Security-Systems/truecrypt-GUI-33364.html
Installation, utilisation de tcgui (obsolète ; la versin truecrypt 6 a une interface graphique)
$ tar -zxvf tcgui-0.2.tar.gz # cp -r tcgui-0.2 /opt/
# /opt/tcgui-0.2/tcgui et répondre aux messages d'erreur par : # urpmi php-cli # urpmi php-gtk2 # vi /etc/php.ini chercher “extension” et ajouter la ligne : extension=php_gtk2.so.
Voir le commentaire dans ce fichier : on peut aussi mettre la ligne extension=php_gtk2.so dans un fichier du répertoire /etc/php.d/
# /opt/tcgui-0.2/tcgui File > Add MountPoint pour ajouter un point de montage Click droit sur le point de montage
Click droit sur le nom de volume
Tools > Save Favorites Tools > Mount Favorites
Installation de truecrypt-GUI (obsolète ; la versin truecrypt 6 a une interface graphique)
# urpmi java # urpmi pexpect # groupadd truecrypt # usermod -G truecrypt root # usermod -G truecrypt <login utilisateur> # chgrp truecrypt /usr/sbin/truecrypt # ln -s /usr/sbin/realcrypt /usr/bin/realcrypt # tar -zxvf tcgui.0.4.2.tar.gz # bash install.sh root $ tcgui
Container truecrypt formaté en NTFS
En mode graphique truecrypt 6, ou 6.1 monte un volume NTFS en “read-only”; pour autoriser l'écriture :
Lecture-écriture de partitions NTFS
http://www.jankratochvil.net/project/captive/ Captive: The first free NTFS read/write filesystem for GNU/Linux
ntfs-3g.org http://www.ntfs-3g.org/
Serveur de log syslog-ng
Voir doc et FAQ très bien faites sur : http://www.balabit.com/products/syslog_ng/
Installation
Installer à partir des rpm (actuellement syslog-ng-1.4.17-5mdk) ou récupérer les sources sur http://www.balabit.com/products/syslog_ng/upgrades.bbq, actuellement : - syslog-ng-1.6.6.tar.gz - libol-0.3.15+20050407.tar.gz Décompresser : $ tar zxvf nom_fichier Compiler d'abord liblo puis syslog-ng : # cd nom_répertoire # ./configure # make # make install
Fichiers syslog-ng installés : /usr/local/sbin/syslog-ng /usr/local/man/man5/syslog-ng.conf.5 /usr/local/man/man8/syslog-ng.8
Créer le répertoire /etc/syslog-ng Y copier le fichier de configuration autodocumenté que l'on trouve dans les sources /contrib/syslog-ng.conf.doc et le renommer en syslog-ng.conf
Copier le script de démarrage init.d.RedHat-7.3 que l'on trouve dans les sources, répertoire contrib/, et le renommer en syslog-ng et lui donner les droits rwxr–r– : # chmod 744 syslog-ng
Commandes de base
syslog-ng –help syslog-ng -V → version
Classer les fichiers de log
http://linuxfr.org/tips/index,1.html Pour classer les fichiers de log dans des répertoires type AAAA/MM/JJ ou encore HOSTS/AAAA/MM/JJ (si on fait un serveur de log), configurer syslog-ng.log : utiliser les variables $HOSTS $YEAR … Exemple pour auth.log : destination authlog {file(”/var/log/HOSTS/$HOST/$YEAR/$MONTH/$DAY/auth.log“);};