Étapes de sécurité de base / Vue d'ensemble:
Effectuez les étapes suivantes pour sécuriser votre site Web:
- Voir les erratas de distribution et les correctifs de sécurité (voir la page d'accueil de Yolinux pour la liste). [e.g. Red Hat Linux Errata]
Mettez à jour votre système le cas échéant.- Red Hat / CentOS:
- yum check-update
(Imprimer la liste des paquets à mettre à jour.) - miam mise à jour
Notez que cela peut être automatisé en utilisant le /etc/init.d/yum-updatesd service (RHEL / CentOS 5) ou créer un travail cron /etc/cron.daily/yum.cron
#! / bin / sh / usr / bin / yum -R 120 -e 0 -d 0 -y mise à jour yum / usr / bin / yum -R 10 -e 0 -d 0 -y mise à jour
- yum check-update
- Ubuntu / Debian:
- apt-get update
(Mettez à jour la liste des packages vers la dernière version associée à cette version du système d'exploitation.) - apt-get upgrade
- apt-get update
- Red Hat / CentOS:
- Réduisez le nombre de services réseau exposés. Ceux-ci seront lancés par
scripts en /etc/rc.d/rc*.d/ des répertoires. (Voir la liste complète des services en: /etc/init.d/)
Il n’est peut-être pas nécessaire d’exécuter sendmail (serveur de messagerie),
portmap (écouteur RPC requis par NFS),
lpd (démon du serveur d’imprimante en ligne. Les pirates cherchent constamment à obtenir ce service pour mon système.),
innd (serveur de news), linuxconf etc.
Par exemple, sendmail peut être supprimé du processus de démarrage à l’aide de la commande suivante:
chkconfig --del sendmail ou en utilisant l'outil de configuration Ntsysv.
Le service peut être terminé à l'aide de la commande /etc/rc.d/init.d/sendmail stop.
À tout le moins, vous devez exécuter la commande chkconfig --list
pour voir quels processus sont configurés pour pouvoir être utilisés après le démarrage.
Voir le tutoriel sur le processus d'initialisation YoLinux - Vérifiez votre configuration. Répertoriez les ports ouverts et les processus qui les contiennent: netstat -punta (Essayez aussi netstat -nlp)
- Liste des services RPC: [root]# rpcinfo -p localhost
Idéalement, vous NE PAS être en cours d'exécution portmapper donc pas de services RPC
serait disponible. Désactivez portmapper: service portmap stop (ou: /etc/init.d/portmap stop) et
supprimez-le de la séquence de démarrage du système: chkconfig --del portmap
(Portmap est requis par NFS.) - FTP anonyme (avec wu_ftpd – Dernière livraison avec RH 8.0. RH 9 et FC utilisent vsftpd):
Par défaut, Red Hat est configuré pour le FTP anonyme.
Cela permet aux utilisateurs de ftp sur votre serveur et de se connecter avec le login.
anonyme et utilisez une adresse email comme mot de passe. Si vous le souhaitez
pour désactiver cette fonctionnalité éditer le fichier / etc / ftpaccess et changer:
classe tout réel, invité, anonyme *
à
classe tout réel, invité *
Pour plus d'informations sur la configuration FTP, voir: Didacticiel de configuration FTP du serveur Web YoLinux - Utilisez le trouver commande pour localiser les vulnérabilités – trouver les fichiers suid et guid (pouvant s'exécuter avec les privilèges root), ainsi que les fichiers et les répertoires accessibles en écriture dans le monde entier. Par exemple:
- find / -xdev (-perm -4000 -o -perm -2000 ) -type f -print
Supprimez les privilèges suid sur les programmes exécutables avec la commande: chmod -s nom de fichier - find / -xdev (-nouser -o -nogroup ) -print
Rechercher des fichiers n'appartenant pas à un utilisateur ou à un groupe valide.
- find / -xdev (-perm -4000 -o -perm -2000 ) -type f -print
- Utilisez la commande chattr
et lsattr
rendre un fichier de sécurité sensible non modifiable en plus des autorisations habituelles.-
Rendre un fichier non modifiable: chattr + i / bin / ls
Rendre les répertoires non modifiables: chattr -R + i / bin / sbin / boot / lib
Faire un fichier ajouter seulement: chattr + a / var / log / messages
-
- Utilisez "tripwire"
[sourceforge: tripwire]
pour la surveillance de la sécurité de votre système à la recherche de traces de fichiers non autorisés
changements. Tripwire est proposé dans le cadre des distributions de base Red Hat et Ubuntu.
La configuration de Tripwire est décrite ci-dessous. - Regardez vos fichiers de journaux en particulier / var / log / messages et
/ var / log / secure. - Évitez les noms de compte génériques tels que client.
- Utilisez les configurations de wrapper réseau de PAM pour interdire les mots de passe pouvant être utilisés.
trouvé facilement par crack ou d'autres programmes de piratage.
L'authentification PAM peut également interdire l'accès à la connexion au réseau racine.
(Configuration Red Hat par défaut.
Vous devez vous connecter en tant qu'utilisateur régulier et su - pour obtenir un accès root.
Ce n'est PAS la valeur par défaut pour ssh et doit être modifié comme indiqué ci-dessous.)
Voir le tutoriel YoLinux Network Admin sur l’utilisation de PAM - L'accès à distance NE DOIT PAS être effectué avec un texte telnet en texte clair, mais avec une connexion chiffrée utilisant ssh. (Plus tard dans ce tutoriel)
- Paramètres du fichier Proc pour la défense contre les attaques. Cela inclut des mesures de protection contre
Usurpation d'adresse IP, attaques par saturation ou attaques par syncookies. - DDoS (attaques par déni de service distribué): le seul
ce que vous pouvez faire est d'avoir une bande passante et un traitement gobs
alimentation / pare-feu. Beaucoup de puissance de traitement ou un pare-feu sont inutiles
sans bande passante
car le réseau peut être surchargé par une attaque distribuée.
Regarde aussi:
Malheureusement, les paquets sont généralement usurpés et dans mon cas, le FBI
s'en fichait. Si le serveur est un serveur distant, utilisez un modem d'accès à distance ou
une deuxième adresse IP et une route d'accès, car la route attaquée est
bloqué par le déluge de
attaques de réseau. Vous pouvez également demander à votre FAI de supprimer le trafic ICMP.
à
les adresses IP de vos serveurs. (et UDP si tout ce que vous utilisez est un
serveur Web. Les serveurs de noms DNS utilisent UDP.)
Pour une lecture très intéressante, voir "The Strange Tale" de l'attaque DDoS de GRC.com. (Très intéressante lecture sur l’anatomie des réseaux de hacker bot.) - L'accès utilisateur peut être restreint avec les fichiers de configuration suivants:
- /etc/security/limits.conf
- /etc/security/group.conf
- /etc/security/time.conf
Voir le tutoriel YoLinux SysAdmin – restreindre les utilisateurs
- Supprimer les utilisateurs inutiles du système. Voir / etc / passwd.
Par défaut
Les installations Red Hat ont de nombreux comptes utilisateur créés pour prendre en charge
divers processus. Si vous n’avez pas l’intention d’exécuter ces processus, supprimez
les utilisateurs. c'est-à-dire retirer
identifiants utilisateur jeux, uucp, rpc, rpcd, ...
Démon de réseau IP:
- Il est préférable, pour des raisons de sécurité, de réduire le nombre
des services réseau inetd exposés. Plus vous exposez de services, plus votre
vulnérabilité. Réduire le nombre de services réseau accessibles via
le démon xinet ou inet par:- inetd: (ancien chapeau rouge)
Commentez les services inutiles dans le /etc/initd.conf fichier.
Exemple: (FTP est le seul service que je lance)flux ftp tcp maintenant racine / usr / sbin / tcpd in.ftpd -l -a
Redémarrez le démon pour appliquer les modifications: /etc/rc.d/init.d/inetd restart
- xinetd: (systèmes actuels)
Tous les services réseau sont désactivés par défaut lors d'une mise à niveau. Exemple de fichier: /etc/xinetd.d/wu-ftpd:service ftp disable = yes - La valeur par défaut est désactivée. Cette ligne contrôle le service xinetd (activé ou non) socket_type = stream attendre = non utilisateur = root serveur = /usr/sbin/in.ftpd server_args = -l -a log_on_success + = DURÉE USERID log_on_failure + = USERID bien = 10
Activer / désactiver un service xinetd:
- Editez le fichier: /etc/xinetd.d/Nom du service
Changer de ligne "désactiver = oui"désactive un service xinetd.
Changer de ligne "désactiver = non"active un service xinetd.
La configuration de Xinetd doit être effectuée pour chaque fichier du répertoire.
/etc/xinetd.d/ afin de configurer chaque service réseau.
Redémarrez le démon pour appliquer les modifications: /etc/rc.d/init.d/xinetd restart - Vous pouvez également utiliser la commande:
chkconfig wu-ftpd sur
OU
chkconfig wu-ftpd offCela modifiera le fichier approprié (/etc/xinetd.d/wu-ftpd)
et redémarrez le processus xinetd.
Pointe:
- Répertoriez les paramètres init, y compris tous les services contrôlés xinetd: chkconfig --list
- Énumérer le statut des services (systèmes Red Hat / Fedora Core): service - état général
- Editez le fichier: /etc/xinetd.d/Nom du service
- inetd: (ancien chapeau rouge)
Configuration du noyau:
- Utilisation Pare-feu Linux règles de protection contre les attaques. (iptables: noyau 2.4+ ou ipchains: noyau 2.2)
Les règles de refus d'accès peuvent également être implémentées à la volée par portsentry.
(Lieu à la fin de /etc/rc.d/rc.local à exécuter au démarrage du système, ou un autre script approprié)- script iptables:
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --port 2049 -j DROP - Bloc NFS iptables -A INPUT -p udp -s 0/0 -d 0/0 --port 2049 -j DROP - Bloc NFS iptables -A INPUT -p tcp -s 0/0 -d 0/0 --port 6000: 6009 -j DROP - Bloquer X-Windows iptables -A INPUT -p tcp -s 0/0 -d 0/0 --port 7100 -j DROP - Bloquer le serveur de polices X-Windows iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 515 -j DROP - Bloquer le port de l'imprimante iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 515 -j DROP - Bloquer le port de l'imprimante iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 111 -j DROP - Bloquer Sun rpc / NFS iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 111 -j DROP - Bloquer Sun rpc / NFS iptables -A INPUT -p tout -s localhost -i eth0 -j DROP - Refuser les paquets extérieurs d’Internet qui prétendre être de votre interface de bouclage.
- script ipchains:
# Autoriser l'accès en boucle. Cette règle doit précéder les règles interdisant l'accès au port !! iptables -A INPUT -i lo -p all -j ACCEPT - Cette règle est essentielle si vous voulez votre propre ordinateur iptables -A OUTPUT -o lo -p all -j ACCEPT pour pouvoir accéder à lui-même via l'interface de bouclage ipchains -A entrée -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT - Bloc NFS ipchains -A entrée -p udp -s 0/0 -d 0/0 2049 -j REJECT - Bloc NFS ipchains -A entrée -p tcp -s 0/0 -d 0/0 6000: 6009 -y -j REJECT - Bloquer X-Windows ipchains -A entrée -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT - Bloquer le serveur de polices X-Windows ipchains -A entrée -p tcp -s 0/0 -d 0/0 515 -y -j REJECT - Bloquer le port de l'imprimante ipchains -A entrée -p udp -s 0/0 -d 0/0 515 -j REJECT - Bloquer le port de l'imprimante ipchains -A entrée -p tcp -s 0/0 -d 0/0 111 -y -j REJECT - Bloquer Sun rpc / NFS ipchains -A entrée -p udp -s 0/0 -d 0/0 111 -j REJECT - Bloquer Sun rpc / NFS ipchains -A entrée -j REJECT -p tout -s localhost -i eth0 -l - Refuser et consigner ("-l") les paquets extérieurs à Internet qui prétendent être de votre interface de bouclage.
Remarque:
- iptables utilise la règle de chaîne "INPUT" et ipchains utilise la minuscule
descripteur "entrée". - Voir les règles avec iptables -L ou ipchains -L commander.
- Page de manuel d'iptables
- Lorsque vous utilisez un serveur Web Internet, il est préférable que votre ordinateur soit sécurisé.
vue, qu’on ne lance PAS l’impression, X-Window, NFS ou d’autres services pouvant
être exploité si une vulnérabilité est découverte ou si elle est mal configurée
indépendamment des règles de pare-feu.
Regarde aussi:
- script iptables:
- Utilisation portsentry pour surveiller les attaques de pirates réseau et affecter dynamiquement des règles de pare-feu pour contrecarrer les attaquants. (Plus tard dans ce tutoriel)
- Un monolithique et noyau minimal pourrait également fournir un petit peu de
protection (éviter les modules Trojan) et exécution sur du matériel moins courant
(MIPS, Alpha, etc … afin que les instructions de débordement de tampon ne s'exécutent pas.) - Améliorations de la sécurité du noyau:
- Activer ExecShield: Ceci est activé par défaut sur Red Hat EL 5 / CentOS 5.
ExecShield est une fonctionnalité du noyau Linux qui protège le système contre les exploits de débordement de mémoire tampon.
Cette fonctionnalité est réalisée par un placement aléatoire de la mémoire de pile, une prévention de l'exécution de la mémoire utilisée pour la gestion de la mémoire tampon de données et de texte.
ExecShield peut être activé dans le fichier de configuration Red Hat / CentOS /etc/sysctl.conf en ajoutant les deux lignes suivantes:kernel.exec-shield = 1 kernel.randomize_va_space = 1
La configuration actuelle du système peut être vérifiée:
- cat / proc / sys / kernel / exec-shield
- cat / proc / sys / kernel / randomize_va_space
Les deux devraient être "1". (Défaillance du système)
Remarque: processeurs Intel XD / AMD NX 32 bits uniquement x 32 (pas x86_64 pouvant traiter plus de 4 Go):
Activez la prise en charge d’AMD NX ou d’Intel XD à l’aide du noyau PAE (Physical Address Extension). L'extension de mémoire PAE est nécessaire pour accéder au bit XD / NX.
Pour savoir si votre processeur prend en charge NX ou XD PAE, utilisez la commande suivante: cat / proc / cpuinfo | drapeaux grep pour afficher un champ avec "pae" et "nx".
Installez un noyau Linux (2.6.8+) avec support PAE avec la commande miam installer le noyau-PAE. Le chargeur de démarrage devra également spécifier le noyau PAE pour le démarrage.
Le BIOS devra également être configuré pour le prendre en charge.
Ce noyau ne doit être installé que sur un système doté d’un processeur x86 32 bits offrant cette prise en charge. Les processeurs x86_64 64 bits pouvant interagir de manière native avec le bit XD / NX n'ont pas besoin du noyau PAE.
Règles de pare-feu pour bloquer les blocs IP incorrects:
Il est bien connu qu’il existe différents blocs d’adresses IP où résident des pirates informatiques et des robots anti-spam. Ces blocs de propriété intellectuelle appartenaient souvent à des sociétés et à des organisations légitimes, mais sont tombés dans un royaume non surveillé ou ont été détournés et vendus à des spammeurs criminels.
Ces blocs IP doivent être bloqués par des règles de pare-feu.
Il existe divers services conviviaux qui recherchent et découvrent ces blocs IP de pare-feu et les refusent, et ils partagent cette information avec nous. Merci!
La liste déroulante Spamhaus: Il s'agit d'un script permettant de télécharger la liste déroulante totale et de générer un script de filtrage iptables pour bloquer ces adresses IP mêmes:
#! / bin / bash # Liste noire des zones de hackers et des domaines défectueux de spamhaus.org FILE = drop.lasso / bin / rm -f $ FILE wget http://www.spamhaus.org/drop/drop.lasso blocks = $ (cat $ FILE | egrep -v '^;' | awk 'print $ 1') echo "#! / bin / bash"> Spamhaus-drop.lasso.sh pour ipblock dans les blocs $ faire echo "iptables -I INPUT -s $ ipblock -j DROP" >> Spamhaus-drop.lasso.sh terminé chmod ugo + x Spamhaus-drop.lasso.sh echo "... fait"
Pour bloquer les adresses IP, exécutez simplement le script sur chacun de vos serveurs: ./Spamhaus-drop.lasso.sh
Au minimum, ces blocs d'adresses IP devraient être refusés par tous les serveurs.
Bloquer ou autoriser par pays: On peut refuser l'accès de certains pays ou l'inverse, n'autoriser que certains pays à accéder à votre serveur.
Voir ces sites pour générer des listes:
Bloquer le forum et les spammeurs de la liste de commentaires: Utilisez la liste générée à partir de pots de miel exploités par StopForumSpam.com
#! / bin / bash # Grande liste d'adresses IP à bloquer Nombre d'adresses IP recueillies au cours des 30 derniers jours # Plus de 100 000 adresses IP rm -f Listed_ip_30.zip wget http://www.stopforumspam.com/downloads/listed_ip_30.zip rm -f Listed_ip_30.txt Décompressez listing_ip_30.zip echo "#! / bin / bash"> Stopforumspam-listed_ip_30.sh cat ./listed_ip_30.txt | awk 'print "/ sbin / iptables -I INPUT -s" $ 1 "-j DROP"' >> Stopforumspam-listed_ip_30.sh chmod ugo + x Stopforumspam-listed_ip_30.sh
Pour bloquer les adresses IP, exécutez simplement le script: ./Stopforumspam-listed_ip_30.sh
Sachez qu'il s'agit d'une liste extrêmement longue et que son exécution peut prendre des heures.
C'est aussi une liste qui change rapidement et qui est constamment mise à jour.
[Potential Pitfall]: Vous pouvez obtenir l'erreur suivante:
iptables: erreur inconnue 18446744073709551615
J'ai constaté qu'en ralentissant l'exécution du script, je pouvais éviter cette erreur.
J'ai ajouté un écho bash pour écrire chaque ligne à l'écran et elle s'est bien mieux comportée bien que beaucoup plus lente.
#! / bin / bash set -x verbose / sbin / iptables -I INPUT -s XX.XX.XX.XX -j DROP ...
Identifiez l'ennemi:
Utilisez ce qui suit pour identifier et géolocaliser une adresse IP (InfoSniper.net):
Serveur Web Apache:
- Modules Apache: Désactivez les modules que vous n'allez pas utiliser. Si votre site Web ne dessert pas https, désactivez-le.
Avec les exploits antérieurs de SSL, ceux qui ont utilisé cette philosophie n’ont pas été brûlés. - Apache version exposition: (Version 1.3+) N'autorisez pas les pirates informatiques à déterminer la version du logiciel de serveur Web que vous exécutez en induisant une erreur et donc une réponse automatique du serveur. Les attaques sont souvent spécifiques à la version. Les spammeurs déclenchent également des erreurs pour trouver des adresses électroniques.
... Webmaster ServerAdmin chez megacorp dot com ServerSignature Off ...
De toute façon, la réponse risque d’être dénuée de sens si vous utilisez le serveur Web en tant que proxy pour un autre.
- Bloquez les pirates et les pays qui n'utiliseront jamais votre site Web.
Utilisez la directive Apache Refuser de bloquer l'accès.... ... ... Ordre permettre, refuser # Bots en forme de bloc Refuser à partir de 88.191.0.0/16 193.200.193.0/24 194.8.74.0/23 permettre à tous Pour une liste exhaustive des adresses IP à bloquer, voir la
Liste de blocage de Wizcrafts.net
SSH: (shell sécurisé)
Protocole SSH suite d'outils de connectivité réseau sont utilisés pour chiffrer
connexions sur Internet. SSH chiffre tout le trafic, y compris
identifiants et mots de passe pour éliminer efficacement le sniffing sur le réseau,
détournement de connexion et autres attaques au niveau du réseau.
Dans une session telnet classique, le mot de passe est transmis via Internet.
non chiffré.
SSH sur Linux fait référence à OpenSSH Secure Shell Terminal et aux connexions de transfert de fichiers sftp / scp. SSH est également un produit commercial mais disponible librement pour un usage non commercial
de SSH Communications Security à
http://www.ssh.com/.
Deux versions sont disponibles, SSH1 (maintenant très ancien) et SSH2 (actuel).
La version commerciale de SSH peut être achetée et / ou téléchargée à partir de leur
site Internet.
Notez que SSH1 présente un problème de vulnérabilité majeur.
Le groupe de craquage et de défiguration du site Web "woot-project" utilise cette vulnérabilité.
NE PAS UTILISER LE PROTOCOLE SSH1 !!!!!
("woot-project" exploit / attaque description / récupération)
OpenSSH a été développé par le
OpenBSD Project et est disponible gratuitement.
OpenSSH est compatible avec SSH1 et SSH2.
OpenSSH s'appuie sur le projet OpenSSL pour la couche de communication cryptée.
Les versions actuelles de Linux sont fournies avec OpenSSH / OpenSSL.
Liens:
OpenSSH:
- Télécharger:
Remarque: SSH et SSL sont inclus dans Red Hat Linux 7.0+.
- Installation:
- Commun au client et au serveur:
- Client:
- Red Hat / Fedora / CentOS:
rpm -ivh openssh-askpass-2.xxx-x.x.x86.rpm rpm -ivh openssh-clients-2.xxx-x.x.x86.rpm rpm -ivh openssh-askpass-gnome-2.xxx-x.x.x86.rpm - Utilisateurs de bureau Gnome
- Ubuntu / Debian:
apt-get installer openssh-client ssh-askpass-gnome
- Red Hat / Fedora / CentOS:
- Serveur:
Si vous mettez à niveau à partir de SSH1, vous devrez peut-être utiliser l'option RPM --Obliger.
Le rpm installera les fichiers binaires, les fichiers de configuration et les
openssh-server va installer le script d'initialisation /etc/rc.d/init.d/sshd
pour que sshd commencera au démarrage du système. - Configuration:
- Fichier de configuration du client / etc / ssh / ssh_config: (Défaut)
# $ OpenBSD: ssh_config, v 1.9 2001/03/10 12:53:51 deraadt Exp $ # Ceci est un fichier de configuration système client ssh. Voir ssh (1) pour plus # information. Ce fichier fournit des valeurs par défaut aux utilisateurs et les valeurs peuvent # être modifié dans les fichiers de configuration par utilisateur ou sur la ligne de commande. # Les données de configuration sont analysées comme suit: # 1. options de ligne de commande # 2. Fichier spécifique à l'utilisateur # 3. fichier du système # Toute valeur de configuration n'est modifiée que la première fois qu'elle est définie. # Ainsi, les définitions spécifiques à l’hôte doivent figurer au début de la # fichier de configuration, et les valeurs par défaut à la fin. # Valeurs par défaut pour l'ensemble du site pour diverses options # Hôte * # ForwardAgent no # ForwardX11 non # RhostsAuthentication no # RhostsRSAAuthentication oui # RSAAuthentication oui # Password Authentification oui # FallBackToRsh no # UseRsh no # BatchMode no # CheckHostIP yes # StrictHostKeyChecking oui # IdentityFile ~ / .ssh / identity # IdentityFile ~ / .ssh / id_rsa # IdentityFile ~ / .ssh / id_dsa # Port 22 # Protocole 2.1 - Remplacez cette ligne par: Protocole 2 # Cipher 3des # Chiffres aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, aes192-cbc, aes256-cbc # EscapeChar ~ Hôte * ForwardX11 oui
Changer la ligne: # Protocole 2,1
à: Protocole 2
Cela éliminera l'utilisation du protocole SSH1.Décommentez les options requises ou acceptez les valeurs par défaut codées en dur.
Les valeurs par défaut codées en dur pour le client OpenSSH sont compatibles avec SSH1
fichiers client et serveur sshd. Une mise à niveau vers le client OpenSSH
ne nécessite aucune modification des fichiers $ HOME / .ssh /. - Fichier de configuration du serveur / etc / ssh / sshd_config:
Défaut:# $ OpenBSD: sshd_config, v 1.38 2001/04/15 21:41:29 deraadt Exp $ # Ce sshd a été compilé avec PATH = / usr / bin: / bin: / usr / sbin: / sbin # Ceci est le fichier de configuration système du serveur sshd. Voir sshd (8) # pour plus d'informations. Port 22 #Protocole 2,1 - Changer en: Protocole 2 #ListenAddress 0.0.0.0 #ListenAddress :: Clé de l'hôte / etc / ssh / ssh_host_key Clé de l'hôte / etc / ssh / ssh_host_rsa_key HostKey / etc / ssh / ssh_host_dsa_key ServerKeyBits 768 LoginGraceTime 600 - Changer en: LoginGraceTime 120 KeyRegenerationInterval 3600 PermitRootLogin oui - Changer en: PermitRootLogin no # # Ne pas lire les fichiers ~ / .rhosts et ~ / .shosts IgnoreRhosts oui # Supprimer le commentaire si vous ne faites pas confiance à ~ / .ssh / known_hosts pour RhostsRSAAuthentication #IgnoreUserKnownHosts oui StrictModes oui X11Forwarding oui X11DisplayOffset 10 PrintMotd oui #PrintLastLog no KeepAlive oui # Enregistrement SyslogFacility AUTHPRIV LogLevel INFO #obsoletes QuietMode et FascistLogging RhostsAuthentication non # # Pour que cela fonctionne, vous aurez également besoin de clés d'hôte dans / etc / ssh / ssh_known_hosts RhostsRSAAuthentication non # similaire pour la version 2 du protocole Authentification par l'hôte non # Authentification RSAA oui # Pour désactiver les mots de passe en texte clair tunnelés, choisissez non ici! Authentification par mot de passe oui PermitEmptyPasswords no # Un-comment pour désactiver les mots de passe s / key #ChallengeResponseAuthentication no # Supprimer le commentaire pour activer l'authentification interactive au clavier PAM # Avertissement: l'activation de cette option peut contourner le paramètre 'PasswordAuthentication' #PAMAuthenticationViaKbdInt yes # Pour changer les options de Kerberos #KerberosAuthentication no #KerberosOrLocalPasswd oui #AFSTokenPassing no #KerberosTicketCleanup no # Kerberos TGT Passing ne fonctionne qu'avec le kaserver AFS #KerberosTgtPassing oui #CheckMail oui #UseLogin no #MaxStartups 10:30:60 #Banner /etc/issue.net #ReverseMappingCheck Oui Sous-système sftp / usr / libexec / openssh / sftp-server
- Fichier de configuration du client / etc / ssh / ssh_config: (Défaut)
- Générer des clés système: / etc / ssh /
- ssh-keygen -q -t rsa -f / etc / ssh / ssh_host_rsa_key -C '' -N ''
- ssh-keygen -q -t dsa -f / etc / ssh / ssh_host_dsa_key -C '' -N ''
- Clés privées générées: chmod 600 / etc / ssh / ssh_host_dsa_key / etc / ssh / ssh_host_rsa_key
- Clés publiques générées: chmod 644 /etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
- Pour SELinux:
- / sbin / restorecon /etc/ssh/ssh_host_rsa_key.pub
- / sbin / restorecon /etc/ssh/ssh_host_dsa_key.pub
- Générer des clés utilisateur:
- Client:
Utilisez la commande: / usr / bin / ssh-keygen -t rsaGénération d'une paire de clés rsa publique / privée. Entrez le fichier dans lequel enregistrer la clé (/ home /identifiant d'utilisateur/.ssh/id_rsa): Entrez mot de passe (vide pour aucun mot de passe): Entrez à nouveau le même mot de passe: Votre identification a été enregistrée dans / home /identifiant d'utilisateur/.ssh/id_rsa. Votre clé publique a été enregistrée dans / home /identifiant d'utilisateur/.ssh/id_rsa.pub. L'empreinte digitale clé est: XX: bl: ab: la: bl: aX: XX: af: 90: 8f: dc: 65: 0d: XX: XX: XX: XX: XX: XX user-id@nom de noeud
Fichiers générés:
$ HOME / .ssh / id_rsa - binaire $ HOME / .ssh / id_rsa.pub - ssh-rsa ... 223564257432 adresse électronique - Plusieurs clés / lignes autorisées.
Options de commande:
- -t rsa (pour la version 2 du protocole)
- -t dsa (pour la version 2 du protocole)
- -t rsa1 (pour la version 1 du protocole)
- -b 2048 (spécifie la longueur de la clé en bits)
- Serveur:
- FTP le fichier $ HOME/.ssh/id_rsa.pub au serveur
- cd $ HOME / .ssh /
- cat id_rsa.pub >> registered_keys2
- Client:
- Utilisation de ssh: sur le client, utilisez la commande suivante
et connectez-vous comme vous le feriez normalement avec une session telnet:
ssh nom-du serveur
La première fois que vous utilisez ssh, le message suivant sera envoyé:L'authenticité de l'hôte 'node.your-domain.com (XXX.XXX.XXX.XXX) 'ne peut être établi. L'empreinte de la clé RSA est XX: bl: ab: la: bl: aX: XX: af: 90: 8f: dc: 65: 0d: XX: XX: XX: XX: XX. Êtes-vous sûr de vouloir continuer à vous connecter (oui / non)? Oui Attention: ajouté en permanence 'node.your-domain.com,XXX.XXX.XXX.XXX'(RSA) à la liste des hôtes connus. utilisateur@node.your-domainMot de passe .com:
Répondez oui. Il ne demandera plus.
Pour utiliser un nom d'utilisateur différent pour la connexion, indiquez-le sur la ligne de commande:
ssh -l nom d'utilisateur nom du serveur
Note: Vous pouvez maintenant aussi utiliser la commande sftp pour des transferts de fichiers ftp sécurisés avec ssh.
OpenSSH Man Pages:
- ssh – Client OpenSSH SSH (programme de connexion à distance)
- sshd – démon OpenSSH ssh
- ssh-keygen – Utilisé pour créer des clés RSA (clés d'hôte et clés d'authentification d'utilisateur)
- ssh_config – Fichier de configuration du client OpenSSH SSH
- sshd_config – Fichier de configuration du démon OpenSSH SSH
- ssh-add – ajoute les identités RSA ou DSA pour l'agent d'authentification. Utilisé pour enregistrer de nouvelles clés avec l'agent.
- scp – copie sécurisée (programme de copie de fichier à distance)
- ssh-agent – agent d'authentification
Ceci peut être utilisé pour conserver des clés RSA pour l'authentification. - sftp – Programme de transfert de fichiers sécurisé
- sftp-server – sous-système de serveur SFTP
Autres liens OpenSSH:
SSH pour les liens MS / Windows:
Notes SSH:
- Le sshd ne doit pas être démarré avec xinetd / inetd en raison du temps nécessaire pour effectuer
calculs quand il est initialisé. - Le client ssh va rechercher la racine. sshd sur le serveur est exécuté en tant que root.
Les privilèges root sont nécessaires pour communiquer sur les ports inférieurs à 1024.
L'option -p peut être utilisée pour exécuter SSH sur un autre port. - RSA est utilisé pour l'échange de clés et un chiffrement conventionnel (Blowfish par défaut)
est utilisé pour chiffrer la session. - Le cryptage est démarré avant l’authentification, et aucun mot de passe ou autre
l'information est transmise en clair. - Authentification:
- La connexion est appelée par l'utilisateur.
Le client indique au serveur la clé publique que l'utilisateur souhaite utiliser.
utiliser pour l'authentification. - Le serveur vérifie ensuite si cette clé publique est admissible.
Si oui, un nombre aléatoire est généré et crypté avec le public
clé et envoie la valeur au client. - Le client déchiffre ensuite le numéro avec sa clé privée et calcule une
somme de contrôle. La somme de contrôle est renvoyée au serveur - Le serveur calcule une somme de contrôle à partir des données et compare les sommes de contrôle.
- L'authentification est acceptée si les sommes de contrôle correspondent.
- La connexion est appelée par l'utilisateur.
- SSH utilisera $ HOME / .rhosts (ou $ HOME / .shosts)
- Pour établir une connexion réseau sécurisée sur un autre port TCP, utilisez
Options "tunneling" avec la commande ssh:- Transférer le port local TCP vers hostport sur l'hôte distant:
ssh hôte distant -L Port: localhost:commande hostport
Spécifier des ports inférieurs à 1024 nécessitera un accès root.
FTP ouvre plusieurs ports et n’est donc pas un bon candidat. Le port 21 est seulement
utilisé pour établir la connexion. - Transférer le port local TCP vers hostport sur l'hôte distant:
Pages de manuel:
- ssh – client shell sécurisé (programme de connexion à distance)
- sshd – démon shell sécurisé (serveur)
- ssh-keygen – Utilisé pour créer des clés RSA (clés d'hôte et clés d'authentification d'utilisateur)
- ssh-keyscan – récupère les clés publiques ssh
- ssh-add – ajoute des identités pour l'agent d'authentification Utilisé pour enregistrer de nouvelles clés avec l'agent.
- scp – copie sécurisée (programme de copie de fichier à distance)
- slogin
- sftp – client du programme de transfert de fichiers sécurisé.
- sftp-server – serveur de programme de transfert de fichiers sécurisé.
- ssh-agent – Agent d'authentification.
Ceci peut être utilisé pour conserver des clés RSA pour l'authentification. - telnet – interface utilisateur avec le protocole TELNET
Documentation:
- / usr / share / doc / openssh-XXX /
- / usr / share / doc / openssh-askpass-XXX /
- /usr/share/doc/openssl-0.XXX/
Tester:
Le renifleur de réseau Ethereal (maintenant Wireshark) était utilisé pour renifler les transmissions réseau
entre le client et le serveur pour telnet et ssh
avec les résultats suivants:
- Testez la connexion telnet en texte clair: (port 23)
Le texte envoyé par le client est un texte vert sur fond noir.
Le reste du texte a été transmis par le serveur.
Notez que l'identifiant ("JoeUser") et le mot de passe ("super-secret-password") ont été capturés. - Testez la connexion cryptée ssh: (port 22)
Notez que tout l’échange de login et de mot de passe était crypté.
Fail2ban: bloquer les connexions échouées répétées
Tout site sur Internet public sera soumis à des attaques par mots de passe dictionnaires, essayant constamment de nouveaux mots, séquences de mots et séquences ASCII à partir de programmes d'attaque automatisés provenant de serveurs compromis.
Utilisez fail2ban pour bloquer ces tentatives.
Fail2ban examinera les fichiers journaux pour rechercher les tentatives de connexion infructueuses répétées et bloquera de manière temporaire ou permanente les adresses IP du système attaquant.
La configuration par défaut de fail2ban examine le fichier journal sshd. / var / log / secure pour trouver le système attaquant et autorisera 5 tentatives de connexion infructueuses avant le blocage pendant 600 secondes (10 minutes).
Fail2ban peut être configuré pour surveiller les processus suivants:
- sshd
- smtp
- Apache httpd
- lumière
- vsftpd
- postfix
- bind9 nommé
- mysqld
- astérisque
- …
Sommaire
Installation:
- Chapeau rouge: yum installer fail2ban
- Ubuntu: sudo apt-get install fail2ban
Configuration:
- /etc/fail2ban/fail2ban.conf
[Definition] # 1 = ERREUR # 2 = WARN # 3 = INFO # 4 = DEBUG loglevel = 3 # Values: fichier STDOUT STDERR SYSLOG Par défaut: /var/log/fail2ban.log # Une seule cible de journal peut être spécifiée. logtarget = SYSLOG socket = /var/run/fail2ban/fail2ban.sock pidfile = /var/run/fail2ban/fail2ban.pid
- /etc/fail2ban/jail.conf (souvent copié dans jail.local et édité pour les directives locales)
[DEFAULT] ignoreip = 127.0.0.1/8 bantime = 3600 findtime = 600 maxretry = 3 backend = auto usedns = non [ssh-iptables] enabled = true filtre = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=user@megacorp.com] logpath = / var / log / secure maxretry = 3
Remarque: si votre serveur est attaqué, fail2ban peut livrer beaucoup de courrier électronique. Vous voudrez peut-être enlever le sendmail-whois déclaration.
[DEFAULT] directives:
Directif La description ignorer Les adresses IP à ne jamais interdire, comme votre système de passerelle. Plusieurs IP sont séparées par un espace. Ceci est votre liste blanche. Valeur par défaut 127.0.0.1 (localhost) trouver le temps période au cours de laquelle l'échec se produit. Par exemple, 600 fait référence au nombre maximal d'échecs survenant pendant cette période de recherche sera banni. 600 secondes par défaut maxretry spécifier le nombre d'échecs avant qu'une adresse IP ne soit bannie. Par défaut 3 bantime nombre de secondes qu'une adresse IP est bannie activée true = surveiller le processus spécifié. false pour aucune surveillance. La valeur par défaut n'est vraie que pour sshd
Redémarrez après avoir modifié la configuration: service sudo fail2ban redémarrer
Configurez init pour démarrer fail2ban au démarrage: sudo chkconfig --level 345 fail2ban on
Voir aussi le fichier journal: / var / log / messages
Vérifiez le blocage des pirates informatiques:
Affichez les règles de pare-feu générées par les connexions ayant échoué:
[host]# iptables -L Chaîne INPUT (politique ACCEPT) cible cible source opt opt fail2ban-SSH tcp - n'importe où n'importe où tcp dpt: ssh Chaîne À SUIVRE (politique ACCEPTER) cible cible source opt opt Chaîne OUTPUT (politique ACCEPT) cible cible source opt opt Chain fail2ban-SSH (1 références) cible cible source opt opt REJETTEZ tous - 122.189.194.238 n'importe où rejetez-avec icmp-port-inaccessible REJET tout - 183.94.11.208 n'importe où rejetez-avec icmp-port-inaccessible REJETER tout - 58.218.204.132 n'importe où rejetez-avec icmp-port-inaccessible RETOURNEZ tout - n'importe où
Vérifier le statut fail2ban:
Afficher le statut de sshd fail2ban:
[host]# fail2ban-client status Statut | - Nombre de prison: 1 `- Liste de prison: ssh-iptables [host]# fail2ban-client status ssh-iptables Statut de la prison: ssh-iptables | - filtre | | - Liste de fichiers: / var / log / secure | | - Échec actuel: 0 | `- Total échoué: 102 `- action | - Actuellement banni: 3 | `- Liste IP: 122.189.194.238 183.94.11.208 58.218.204.132 `- Total interdit: 26
Liens:
rssh: shell restreint à utiliser avec OpenSSH sftp
FTP utilise un accès en texte clair à votre serveur. Cela convient si tous les systèmes du centre de données sont sécurisés et que personne ne peut renifler le réseau.
Les configurations de routeur et de commutateur rendent pratiquement impossible le reniflage de la plupart des réseaux de nos jours, mais des problèmes de sécurité au niveau du centre de données sur un autre serveur peuvent entraîner des problèmes pour vos serveurs si vous autorisez les mots de passe non chiffrés utilisés par FTP.
VsFTPd permet également de limiter la vue du système de fichiers à ses propres répertoires.
C'est bon. OpenSSH "sftp" ne fournit pas cette fonctionnalité (jusqu'à la version 4.9. RHEL / CentOS 5 utilisait OpenSSH 4.3).
Le transfert de fichier "sftp" crypte les mots de passe (bien) mais nécessite également un accès shell (bash, csh, …) pour le compte permettant un accès complet au système de fichiers (mauvais).
le rssh shell peut être utilisé avec sftp, scp, cvs, rsync, et rédiger et peuvent chrooter les utilisateurs vers leurs propres répertoires et limiter la fonction à un accès sftp uniquement (refuser l'accès au shell complet).
Pour les systèmes plus récents (RHEL6 / CentOS6 / Fedora 11) avec OpenSSH 4.9+, voir la configuration sftp chrootée préférée pour OpenSSH 4.9+.
La solution est d'utiliser rssh en tant que shell avec OpenSSH "sftp":
Installation: rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
Cela installe:
- / usr / bin / rssh
- /etc/rssh.conf
- aussi programme de soutien / usr / libexec / rssh_chroot_helper et pages de manuel
Vérifiez la configuration installée: rssh -v
Configuration:
- Configuration OpenSSH: / etc / ssh / sshd_config
... PermitUserEnvironment no ... Sous-système sftp / usr / libexec / openssh / sftp-server ...
Note de sécurité: Soyez également conscient du réglage AllowTcpForwarding qui contrôle la redirection de port.
- Ajouter shell à la liste des shell utilisables: / etc / shells
/ bin / sh / bin / bash / sbin / nologin / bin / tcsh / bin / csh / bin / ksh / bin / zsh / opt / bin / ftponly / usr / bin / rssh
Ubuntu: Vous pouvez utiliser la commande: add-shell / usr / bin / rssh
- Changer le shell de l'utilisateur en rssh (choisissez une méthode)
- Autoriser l'exécution à: chmod u / s / usr / libexec / rssh_chroot_helper
Cela empêche l’erreur suivante dans / var / log / messages20 déc. 00:23:44 nodex rssh_chroot_helper[27450]: chroot () a échoué, 2: opération non autorisée
- Définir l'accès pour rssh: /etc/rssh.conf
logfacility = LOG_USER permetftp umask = 022 #chrootpath = / users / chroot utilisateur = "utilisateur1: 022: 00010: / home /utilisateur1"
Global security allowable options include: allowscp, allowcvs, allowrdist, allowrsync
Specify global chroot or omit for none.
Specific user security:- User login id
- First set of three number represent the umask
- Second set of five number represent the bitmask to allow
1 1 1 1 1 rsync rdist cvs sftp scp - Specify the global chrooted directory for all using rssh. If omitted, then not chrooted. Can be overwritten by user configuration.
Note: User configuration overrides the shared chroot settings. Omitted user settings do not default to shared chroot settings.
- Configuring the chrooted directory:
This is true for a global user chroot or individual chroot.
In this example we will show a user chrooted to their own home directory /home/user1. When chrooted, the user does not have access to the rest of the filesystem and thus is blind to all of its executables and libraries.
It will therefore be necessary to copy local executables and libraries for their local use.La description User directory System equivalent System devices /home/user1/dev /dev Configuration files /home/user1/etc /etc
/etc/ld.so.cache
/etc/ld.so.cache.d/*
/etc/ld.so.conf - dynamic linker configuration
/etc/nsswitch.conf
/etc/passwd
/etc/group
/etc/hosts
/etc/resolv.confShared libraries (32 and 64 bit) /home/user1/lib
/home/user1/lib64/lib
/lib64Executables and libraries /home/user1/usr /usr
/usr/libexec/openssh/sftp-server
/usr/libexec/rssh_chroot_helperExecutables /home/user1/bin /bin Use script to add chroot required files: /opt/bin/userchroot
#!/bin/bash # First and only argument ($1) is user id si [ -d /home/$1 ]; puis USERDIR=/home/$1 autre echo "Error: Directory /home/$1 does not exist" sortie Fi mkdir $USERDIR/etc mkdir $USERDIR/lib mkdir -p $USERDIR/usr/libexec/openssh mkdir -p $USERDIR/var/log mkdir $USERDIR/dev mknod -m 666 $USERDIR/dev/null c 1 3 cp -p /etc/ld.so.cache $USERDIR/etc # If directory exists si [ -d /etc/ld.so.cache.d ]; puis cp -avRp /etc/ld.so.cache.d $USERDIR/etc Fi grep $1 /etc/passwd > $USERDIR/etc/passwd cp -p /etc/ld.so.conf $USERDIR/etc cp -p /etc/nsswitch.conf $USERDIR/etc cp -p /etc/group $USERDIR/etc cp -p /etc/hosts $USERDIR/etc cp -p /etc/resolv.conf $USERDIR/etc cp -ap /usr/libexec/openssh/sftp-server $USERDIR/usr/libexec/openssh/sftp-server cp -ap /usr/libexec/rssh_chroot_helper $USERDIR/usr/libexec/rssh_chroot_helper # Authentication libraries required for login (32 bit and 64 bit systems) si [ -d /lib64 ]; puis mkdir $USERDIR/lib64 cp -ap /lib64/libnss_files.so.? $USERDIR/lib64 cp -ap /lib64/libnss_files-*.so $USERDIR/lib64 autre cp -p /lib/libnss_files.so.? $USERDIR/lib cp -p /lib/libnss_files-*.so $USERDIR/lib Fi FILES=`ldd /usr/libexec/openssh/sftp-server | perl -ne 's:^[^/]+::; s: (.*)$::; print;'` for ii in $FILES faire rtdir="$(dirname $ii)" [ ! -d $USERDIR$rtdir ] && mkdir -p $USERDIR$rtdir || : /bin/cp -p $ii $USERDIR$rtdir terminé FILES=`ldd /usr/libexec/rssh_chroot_helper | perl -ne 's:^[^/]+::; s: (.*)$::; print;'` for ii in $FILES faire rtdir="$(dirname $ii)" [ ! -d $USERDIR$rtdir ] && mkdir -p $USERDIR$rtdir || : /bin/cp -p $ii $USERDIR$rtdir terminé
Remarque:
Blocking FTP: Setting up rssh does not turn off or block FTP access to your system. You must still turn off vsftp: /etc/init.d/vsftpd stop. There is little point to setting up secure chrooted sftp access with rssh and also running a FTP service.
Debugging:
- One can pull in the full root path by issuing an internal mount:
- mount --bind /dev /home/user1/dev
- mount --bind /dev /home/user1/lib
- mount --bind /dev /home/user1/lib64
- mount --bind /dev /home/user1/usr
This technique can be used to narrow down the error to find which directory has the missing files. It should not be used as a final solution.
Unmount when done: umount /home/user1/dev - If authenticating to ldap, nis, etc, pull in the appropriate libraries.
You can test with all: cp -p /lib/libnss_* /home/user1/lib
This can be performed for /lib64 ainsi que. - Checklog files for errors: /var/log/messages
Man pages:
Using gFTP as a Linux sftp client:
- Start program through menu or command line: gftp&
- Select "FTP" from toolbar
- Select "Options"
- Select "SSH" tab
- Select "Apply" amd "Ok"
- On the upper right hand side of the gftp window, select "SSH" from the pull-down menu.
Using FileZilla as a Linux sftp client:
- Select "File" + "Site Manager"
- Select "New Site" (bottom left)
- Enter "Host:"
- Choose "Servertype:" "SFTP using SSH2"
- Select "Logontype:" "Normal"
- Enter "User:" and click on "Connect".
Links:
- Multi-platform GUI client FileZilla
- MS/Windows client WinSCP (supports sftp)
SentryTools: PortSentry
This tool will monitor the network probes and attacks against your server.
It can be configured to log and counter these probes and attacks.
PortSentry can modify your /etc/hosts.deny (PAM module) file and
issue IP firewall commands automatically to block hackers.
PortSentry can be loaded as an RPM but this tutorial covers compiling
PortSentry from source to configure a more preferable system logging.
Note: Version 1.2 of portsentry can issue iptables, ipchains or route commands
to thwart attacks. Iptables/Ipchains is a Linux firewall system built into the Linux kernel.
Linux kernel 2.6/2.4 uses iptables, kernel 2.2 (old) uses ipchains.
References to ipfwadm are for even older Linux kernels.
Route commands can be used by any Unix system including those non-Linux systems which do not support Iptables/Ipchains.
Steps to install and configure portsentry:
- Download and unzip source code
- Edit include file and compile
- Start PortSentry
- Read logs
- Download and unzip source code:
- Edit include file and compile:
cd portsentry_beta/
Read file README.install. It details the following:-
Edit file: portsentry_config.h
Set file paths and configure separate log file for Portsentry:
Set options:
- CONFIG_FILE – PortSentry run-time configuration file.
- WRAPPER_HOSTS_DENY – The path and name of TCP wrapper hosts.deny file.
#define CONFIG_FILE "/opt/portsentry/portsentry.conf" #define WRAPPER_HOSTS_DENY "/etc/hosts.deny" #define SYSLOG_FACILITY LOG_DAEMON - Default. Change to LOG_LOCAL6 #define SYSLOG_LEVEL LOG_NOTICE
(Note: I use /opt/portsentry/ because I like to locate "optional"
files/software there.
It allows for an easy backup by separating it from the OS.
If you prefer, you can use /etc/portsentry/ pour
configurations files and follow the Linux/Unix file system logic)The above default, "LOG_DAEMON", will log messages to the /var/log/messages file.
To log to a separate file dedicated to PortSentry logging:
(This will eliminate logging clutter in the main system logging file)- Add logging directives to syslogd configuration file: /etc/syslog.conf
Change the following line by adding an extra log facility for portsentry messages which are
not going to be logged to the regular syslog output
fichier /var/log/messages.
This lists what messages to filter out from /var/log/messages.*.info;mail.none;news.none;authpriv.none;cron.none;local6.none /var/log/messages
Add the following line to assign a portsentry log facility:
local6.* /var/log/portsentry.log
Note: Use tab not spaces in the syslog configuration file.
Restart syslogd: /etc/init.d/syslog restart
- Ensemble portsentry_config.h entry to new log facility:
Change from default setting:#define SYSLOG_FACILITY LOG_DAEMON
To:
#define SYSLOG_FACILITY LOG_LOCAL6
FYI: Options for the SYSLOG_FACILITY are defined in /usr/include/sys/syslog.h
They include:SYSLOG_FACILITY Facility Name La description LOG_LOCAL0 local0 reserved for local use LOG_LOCAL1 local1 reserved for local use LOG_LOCAL2 local2 reserved for local use LOG_LOCAL3 local3 reserved for local use LOG_LOCAL4 local4 reserved for local use LOG_LOCAL5 local5 reserved for local use LOG_LOCAL6 local6 reserved for local use LOG_LOCAL7 local7 reserved for local use LOG_USER utilisateur random user-level messages LOG_MAIL courrier mail system LOG_DAEMON démon system daemons LOG_SYSLOG syslog messages generated internally by syslogd LOG_LPR lpr line printer subsystem LOG_NEWS nouvelles network news subsystem LOG_UUCP uucp UUCP subsystem LOG_CRON cron clock daemon LOG_AUTHPRIV authpriv security/authorization messages (private) LOG_FTP ftp ftp daemon Options for the SYSLOG_LEVEL include:
SYSLOG_LEVEL Priorité La description LOG_EMERG 0 system is unusable LOG_ALERT 1 action must be taken immediately LOG_CRIT 2 critical conditions LOG_ERR 3 error conditions LOG_WARNING 4 warning conditions LOG_NOTICE 5 normal but significant condition LOG_INFO 6 informatif LOG_DEBUG 7 debug-level messages -
Edit file: portsentry.conf to set paths for configuration files and ports to monitor.
TCP_PORTS="1,11,15,20,21,23,25,69,79, ... " UDP_PORTS="1,7,9,69,161,162,513,635, ... " ... ... IGNORE_FILE="/opt/portsentry/portsentry.ignore" HISTORY_FILE="/opt/portsentry/portsentry.history" BLOCKED_FILE="/opt/portsentry/portsentry.blocked" #KILL_ROUTE="/sbin/route add -host $TARGET$ reject" - Generic Unix KILL_ROUTE I prefer iptables/ipchains options below
Un-comment and modify if necessary the appropriate statements. le
TCP_PORTS=, UDP_PORTS= lists are ignored for stealth scan detection
modes. Add common but unused services. i.e. add port 25 if the system is not accepting email as port 25 is included in most scans.
I added UDP port 68 (BOOTP) and TCP 21 (ftp), 22 (ssh), 25 (smtp
mail), 53 (dns bind), 80 (http web server), 119 (news) to the
ADVANCED_EXCLUDE_UDP and ADVANCED_EXCLUDE_TCP statements respectively.ADVANCED_EXCLUDE_TCP="21,22,25,53,80,110,113,119" - server ADVANCED_EXCLUDE_UDP="21,22,53,110,520,138,137,68,67" OU ADVANCED_EXCLUDE_TCP="113,139" - workstation ADVANCED_EXCLUDE_UDP="520,138,137,68,67"
PAM options:
- KILL_HOSTS_DENY="ALL: $TARGET$"
For more on PAM see YoLinux network Admin Tutorial
Choose one option: (Options: network "route" or firewall command "iptables/ipchains")
- For those using iptables (Linux Kernel 2.6/2.4+):
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
(Note: The default used in portsentry.conf utilise le
incorrect path for Red Hat.
Changement /usr/local/bin/iptables
à /sbin/iptables)
- For Linux 2.2.x kernels (version 2.102+) using ipchains: (Best option)
KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l"
OU
KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY"
Remarque: The second option is without the "-l" or logging option so ipchains won't keep logging the portscan in /var/log/messages - Simple method to drop network return routes if iptables or ipchains are not compiled into your kernel:
KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
You can check the addresses dropped with the command: netstat -rn They will be routed to interface "-".
Red Hat: Portsentry uses iptables (and it must be running) and not the older ipchains.
To see if iptables is invoked during system boot, use the command: chkconfig --list | grep iptables.
You can NOT use portsentry to issue iptables rules if your kernel is configured to use ipchain rules.
More info on iptables and ipchains support/configuration in Red Hat. -
Edit file: portsentry.ignore (contains IP addresses to ignore. )
127.0.0.1 0.0.0.0 Your IP address
The at Home network routinely scans for news servers on port 119 from
a server named authorized-scan1.security.home.net.
Adding the IP address of this server (24.0.0.203)
greatly reduces the logging. I also added their BOOTP server.
(24.9.139.130)I manually issued the iptables (kernel 2.6/2.4)
commands on my workstation
to drop the hosts and deny their scans.
At Home users may add the commands to the file
/etc/rc.d/rc.local/sbin/iptables -I INPUT -s 24.0.0.203 -j DROP /sbin/iptables -I INPUT -s 24.9.139.130 -j DROP
-
Edit file: Makefile
INSTALLDIR = /opt
And remove the line under "uninstall": (dangerous line!!)
# /bin/rmdir $(INSTALLDIR)
And remove the line under "install": (troublesome line!!)
# chmod 700 $(INSTALLDIR)
To:
# chmod 700 $(INSTALLDIR)/$(CHILDDIR)
-
Compile: make linux
Fix the following compile errors in portsentry.c
- Changement printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
sourceforget dot net>n");
to one line: printf ("Copyright 1997-2003 Craig H. Rowlandn"); - Fix warning: warning: passing argument 3 of ‘accept’ from incompatible pointer type
Separate and change declaration of "length" to: unsigned int length;
- Changement printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
-
Install (as root): make install
-
- Run PortSentry for advanced UDP/TCP stealth scan detection:
- portsentry -atcp
- portsentry -audp
OU use init scripts below in next section.
- Check logfile for hacker attacks. Voir: /var/log/messages
ou /var/log/portsentry.log if you are logging to a dedicated file.
Also check /etc/hosts.deny to see a list of IP addresses that
PortSentry has deemed to be attackers.
Check the "HISTORY_FILE" /opt/portsentry/portsentry.history
Note: Is is possible to have all logging sent to a logging daemon on a single
server. This will allow the administrator to check the logs on only one server
rather than individually on many.
Note on Red Hat RPMs:
RPM layout:
- /usr/sbin/portsentry – (chmod 700) executable
- /etc/portsentry/ – (chmod 700) Directory used for configuration files.
- /etc/portsentry/portsentry.conf (chmod 600)
- /etc/portsentry/portsentry.ignore (chmod 600)
- /var/portsentry/portsentry.history
- /var/portsentry/portsentry.blocked
Instead of using a firewall command (ipchains/iptables), a false route is used: /sbin/route add -host $TARGET$ gw 127.0.0.1.
My init script calls the portsentry executable twice with the appropriate command line arguments to monitor tcp and udp ports.
The Red Hat RPM init script uses the file /etc/portsentry/portsentry.modes
and a for loop in the
init script to call portsentry the appropriate number of times.
Their init script also recreates the portsentry.ignore file each time
portsentry is started by including the IP addresses found with ip addr show ou ifconfig
and the addresses 0.0.0.0 and localhost.
Persistent addresses must be placed above a line stating:
Do NOT edit below this otherwise it is not included in the creation
of the new file.
The Red Hat RPM portsentry version logs everything to /var/log/messages. My configuration avoids log clutter by logging to a separate file.
Notes on DOS (Denial of Service) possibility:
If portsentry is configured to shut down an
attack with firewall rules, an attacker may use this feature to slow down
your machine over time by creating a huge set of firewall rules.
It would require the hacker to use (or spoof) a new IP address each time.
It is probably a good idea to monitor or even clear the firewall rules from
time to time.
- iptables:
- List firewall rules: iptables -L
- Clear firewall rules: iptables -F
- ipchains:
- List firewall rules: ipchains -L
- Clear firewall rules: ipchains -F
Clean-up script: /etc/cron.monthly/reset-chainrules
(-rwx------ 1 root root)
This script is run automatically once a week by cron. (The presence of this
script in this directory for the Red Hat configuration makes it so)
#!/bin/bash # Purge and re-assign chain rules ipchains -F ipchains -A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT ipchains -A input -p udp -s 0/0 -d 0/0 2049 -j REJECT ipchains -A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT ipchains -A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT ipchains -A input -p tcp -s 0/0 -d 0/0 515 -y -j REJECT ipchains -A input -p udp -s 0/0 -d 0/0 515 -j REJECT ipchains -A input -p tcp -s 0/0 -d 0/0 111 -y -j REJECT ipchains -A input -p udp -s 0/0 -d 0/0 111 -j REJECT ipchains -A input -j REJECT -p all -s localhost -i eth0 -l
Regarde aussi:
Other tools to detect portscans and network based hacker attacks:
- scanlogd – Attack detection.
- InterSect Alliance – Intrusion analysis. Identifies malicious or unauthorized access attempts.
- snort – Instead of monitoring
a single server with portsentry, snort monitors the network, performing
real-time traffic analysis and packet logging on IP networks for the
detection of an attack or probe.
Also see: YoLinux IDS and Snort links
Using an init script to start and stop the portsentry program.
Init configuration: /etc/rc.d/init.d/portsentry
The init script needs to be executable: chmod a+x /etc/rc.d/init.d/portsentry
After adding the following script, enter it into the init process with
the command: chkconfig --add portsentry ou
chkconfig --level 345 portsentry on
See YoLinux Init Tutorial for more information.
#!/bin/bash # # Startup script for PortSentry # # chkconfig: 345 85 15 # description: PortSentry monitors TCP and UDP ports for network attacks # # processname: portsentry # pidfile: /var/run/portsentry.pid # config: /opt/portsentry/portsentry.conf # config: /opt/portsentry/portsentry.ignore # config: /opt/portsentry/portsentry.history # config: /opt/portsentry/portsentry.blocked # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ $NETWORKING = "no" ] && exit 0 # See how we were called. case "$1" in start) echo -n "Starting portsentry: " daemon /opt/portsentry/portsentry -atcp /opt/portsentry/portsentry -audp écho touch /var/lock/subsys/portsentry ;; stop) echo -n "Shutting down portsentry: " killproc portsentry écho rm -f /var/lock/subsys/portsentry rm -f /var/run/portsentry.pid ;; status) status portsentry ;; restart) $0 stop $0 start ;; reload) echo -n "Reloading portsentry: " killproc portsentry -HUP écho ;; *) echo "Usage: $0 stop" sortie 1 esac exit 0
Logrotate Configuration:
Create the following file to have your logs rotate.
Fichier: /etc/logrotate.d/portsentry
/var/log/portsentry.log vrai endscript
Also see the YoLinux Sys Admin tutorial covering logrotate.
Tests:
- Portscan your workstation – Use your web browser to go to this site. Select "Probe my ports" and it will
scan you. You can then look at the file /opt/portsentry/portsentry.blocked.atcp
to see that portsentry dropped the scanning site:Host: shieldsup.grc.com/207.71.92.221 Port: 23 TCP Blocked
The file /var/log/portsentry.log will show the action taken:
portsentry[589]: attackalert: SYN/Normal scan from host: shieldsup.grc.com/207.71.92.221 to TCP port: 23 portsentry[589]: attackalert: Host 207.71.92.221 has been blocked via wrappers with string: "ALL: 207.71.92.221" portsentry[589]: attackalert: Host 207.71.92.221 has been blocked via dropped route using command: "/sbin/ipchains -I input -s 207.71.92.221 -j DENY -l"
- nmap: portscanner – This is
the hacker tool responsible for many of the portscans you may be receiving.Command arguments:
Argument La description -sO IP scan. Find open ports. -sT TCP scan. Full connection made. -sS SYN scan (half open scan). This scan is typically not logged on receiving system. -sP Ping ICMP scan. -sU UDP scan. -P0 Don't ping before scan. -PT Use ping to determine which hosts are available. -F Fast scan. Scan for ports listed in configuration. -T Set timing of scan to use values to avoid detection. -O Determines operating system. -p 1000-1999,5000-5999 Scan port ranges specified. Also see: nmap man page for a full listing of nmap command line arguments.
Exemples:
nmap -sT -F IP-address Scan nmap -sS -F IP-address SYN Scan nmap -sU -F IP-address Scan UPD ports nmap -sF -F IP-address FIN Scan nmap -O -F IP-address Determine OS nmap -p22 -F -O IP-address
nmap -p 1-30,40-65535 IP-Address Scan given port rangesAdd the option -v (verbose) or -vv (super verbose) for more info.
The ports will be determined to be open, filtered or firewalled.Sample output from command: nmap -sS -F -O IP-Address
Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )
...
..
(The 1067 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
111/tcp open sunrpc - Shut down the portmap (RPC) daemon: /etc/rc.d/init.d/portmap stop 137/tcp filtered netbios-ns - Turn off netbios services: /etc/rc.d/init.d/smb stop 138/tcp filtered netbios-dgm 139/tcp filtered netbios-ssn TCP Sequence Prediction: Class=random positive increments Difficulty=2727445 (Good luck!) Remote operating system guess: Linux 2.1.122 - 2.2.16 Nmap run completed -- 1 IP address (1 host up) scanned in 36 seconds - nmap/nmapfe: nmapfe = nmap front end – GUI front end to nmap.
It's an amazingly easy and useful tool which will help
you make discoveries about your servers before the hackers do.
Linux packages:- Red Hat RPMs: nmap-XXX.x86_64.rpm, nmap-frontend-XXX.noarch.rpm (GTK+ GUI)
- Ubuntu: nmap, zenmap
Links:
Tripwire: (security monitoring)
Tripwire monitors your file system for changes. Tripwire is used to create an
initial database of information on all the system files then runs periodically
(cron) to compare the system to the database.
Use the command tripwire --version ou
rpm -q tripwire to determine the version.
Red Hat includes Tripwire as an optional package during install.
The Ubuntu/Debian install is as easy as apt-get install tripwire.
Upon installation it will proceed to scan your entire filesystem to create
a default database of what your system looks like. (files and sizes etc)
It took about ten minutes to run on my server!
Tripwire configuration files:
- Tripwire 2.3.0:
- /etc/tripwire/twcfg.txt
- /etc/tripwire/twpol.txt
These files are first edited and then processed by the script
/etc/tripwire/twinstall.sh which configures Tripwire after the
installation of the Tripwire RPM package.Edit and change file: /etc/tripwire/twcfg.txt
Change:
LOOSEDIRECTORYCHECKING =false
à
LOOSEDIRECTORYCHECKING=TRUEThis was recommended in the comments of the file twpol.txt
Edit and change file: /etc/tripwire/twpol.txt
Change:
severity = $(SIG_XXX)
à
severity = $(SIG_XXX),
emailto = root@localhost
ou
severity = $(SIG_XXX),
emailto = root@localhost;admin@isp.comoù XXX is the severity level.
This will cause Tripwire to email a report of discrepancies for the
rule edited. Set the email address to one appropriate for you.I also added:
- "User binaries" rule: directory /opt/bin
- "Libraries" rule: directory /opt/lib
I removed/commented out:
- the rule "System boot changes" as it reports changes due to system boot.
- Rule: "Root config files": Many of the non-existent
files listed under /root were commented out to reduce the number of
errors reported. - Rule "File System and Disk Administraton Programs": Many
of the non-existent binaries listed under /sbin were commented out to
reduce the number of errors reported.
After configuration files have been edited run the script: /etc/tripwire/twinstall.sh
The script will ask for a "passphrase" for the site and local system.
This is a similar concept to a password – remember it!If at any point you want to
make configuration/policy changes, edit these files and re-run the
configuration script. The script will generate the true configuration
files used by Tripwire:- /etc/tripwire/tw.cfg
(View with command: twadmin --print-cfgfile) - /etc/tripwire/tw.pol
(View with command: twadmin --print-polfile) - /etc/tripwire/site.key
- /etc/tripwire/ServerName-a-local.key
These files are binary and not human readable.
- Tripwire 1.2-3 (Red Hat 6.2 Powertools): /etc/tw.config
Tripwire initialization:
If at any time you change the configuration file to monitor your system
differently or install an upgrade (changes a whole lot of files which
will "trip" tripwire into reporting all changes) you may want to generate
a new database.
- Tripwire 2.3.0-58: /usr/sbin/tripwire --init
You will be prompted for your "local passphrase".
This will generate a tripwire database file: /var/lib/tripwire/ServerName-a.twd - Tripwire 1.2-3: /usr/sbin/tripwire -initialize
This will generate a tripwire database file: ./databases/tw.db_ServerName
If you are in root's home directory, this will create the file /root/databases/tw.db_ServerName
At this point copy it to a usable location:cp -p /root/databases/tw.db_ServerName /var/spool/tripwire/tw.db_ServerName
Don't change /etc/tw.config
without first running tripwire -initialize
otherwise it will show differences due to settings in tw.config file rather
than true differences.
Cron and tripwire:
Cron runs tripwire:
- Tripwire 2.3.0-58:
Fichier: /etc/cron.daily/tripwire-check#!/bin/sh HOST_NAME=`uname -n` si [ ! -e /var/lib/tripwire/$HOST_NAME.twd ] ; puis echo "**** Error: Tripwire database for $HOST_NAME not found. ****" echo "**** Run "/etc/tripwire/twinstall.sh" and/or "tripwire --init". ****" autre test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check Fi
You may move this cron script to the directory /etc/cron.weekly/
to reduce reporting from a daily to a weekly event.
Tripwire reports will be written to: /var/lib/tripwire/report/HostName-Date.twr - Tripwire 1.2-3:
Fichier: /etc/cron.daily/tripwire.verify
script which runs the command: /usr/sbin/tripwire -loosedir -q
Note: You may want to move the script to /etc/cron.weekly/tripwire.verify
to reduce email reporting to root.
Read tripwire report:
- Tripwire 2.3.0-58: twprint --print-report -r /var/lib/tripwire/report/report-file.twr
Interactive mode:
- Tripwire 1.2-3:
Update tripwire database – run:
tripwire -interactive
This will allow you to respond Y/N to files if they should be permanently
updated in the tripwire database. This will still run tripwire against the
whole file system.
I ran it from /root and it updated
/root/databases/tw.db_ServerNameYou must then cp -p to /var/spool/tripwire/
to update the tripwire database.
Default configuration file:
- Tripwire 2.3.0-58: /etc/twcfg.txt
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t - Tripwire 1.2-3: /etc/tw.config
# Log file
@@define LOGFILEM E+pugn
# Config file
@@define CONFM E+pinugc
# Binary
@@define BINM E+pnugsci12
# Directory
@@define DIRM E+pnug
# Data file (same as BIN_M currently)
@@define DATAM E+pnugsci12
# Device files
@@define DEVM E+pnugsc
# exclude all of /proc
=/proc E
#=/dev @@DIRM
/dev @@DEVM
#=/etc @@DIRM
/etc @@CONFM
# Binary directories
#=/usr/sbin @@DIRM
/usr/sbin @@BINM
#=/usr/bin @@DIRM
/usr/bin @@BINM
#=/sbin @@DIRM
/sbin @@BINM
#=/bin @@DIRM
/bin @@BINM
#=/lib @@DIRM
/lib @@BINM
#=/usr/lib @@DIRM
/usr/lib @@BINM
=/usr/src E
=/tmp @@DIRMAjouter:
/var/named @@CONFM - If you are running Bind DNS slave /home/httpd/cgi-bin @@BINM
Delete/comment out:
#/dev @@DEVM
This eliminated the reporting of too much junk due to a reboot of the system.
Man pages:
Tripwire 2.3.0-58:
- tripwire – a file integrity checker for UNIX systems
- twintro – introduction to Tripwire software
- twadmin – Tripwire administrative and utility tool
- twprint – Tripwire database and report printer
- siggen – signature gathering routine for Tripwire
- twconfig – Tripwire configuration file reference
- twpolicy – Tripwire policy file description reference (For file /etc/tripwire/twpol.txt)
- twfiles – Overview of files used by Tripwire and file backup process
Regarde aussi:
CHKROOTKIT: Performing a trojan/worm/virus file scan.
Tripwire will monitor your filesystems for intrusion or addition of a file
so you may determine what changes have occurred on your system in sensitive
areas. Chkrootkit will scan your system for known exploits,
Trojan commands, and worms used to compromise a system.
Download chkrootkit from http://www.chkrootkit.org. It is a shell script which should be run as root as well as a
small collection of C programs.
- Installation:
- avoir du sens (Compile C programs)
- ./chkrootkit (Run shell script and call programs.)
- Usage:
- ./chkrootkit
OU - ./chkrootkit -h (help)
- ./chkrootkit
See the README file for more info.
Remarque:
- This software is constantly being upgraded and updated to include
scans for new exploits. - If running portsentry, chkrootkit may return a false error while performing the bindshell test.
NESSUS: Performing a network vulnerability scan/security assessment of your system.
Let me start by saying that this should only be performed on your own systems.
It is considered and attack to run this against the systems of others
and legal action may be taken against you for performing such an audit.
This is not a scan like NMAP. NESSUS will search and locate vulnerabilities
on your system by actively trying to perform known exploits against the
système.
Nessus is amazingly complete and effective. In fact it is awesome!!
It will identify services on your system and try to exploit them.
If a vulnerability is found it will make recommendations about upgrades,
configuration changes and where to find patches. It will also explain
any causes for concern in detail and explain why your system is vulnerable.
And that's not all! It can output reports in various formats including HTML
with pie charts and bar charts!! The HTML reports will have hyperlinks to the
security reports, upgrades and patches. (I'm impressed)
It can scan Unix, Linux and Windows systems for vulnerabilities.
Remarque:
- Running "Dangerous Plugins" may cause a crash of the system being audited!!
The NESSUS software is available from http://Nessus.org.
If compiling source:
- Edit file: nessus-core/include/config.h (Set USE_AF_UNIX to define socket type)
It is also available in RPM form: (See http://freshrpms.net)
- nessus-client-….rpm
- nessus-common-….rpm
- nessus-plugins-….rpm
- nessus-server-….rpm : Nessus plugins which are used to perform
the various checks. (Scripts in nasl scripting language) Note that the
RPM installs an init script which starts nessusd during boot. Disable
avec chkconfig --del nessusd - nessus-devel-….rpm : Nessus development libraries and headers.
Running NESSUS:
Configuration file: /etc/nessus/nessusd.conf
You may also consider a popular branch of Nessus, OpenVAS: Open Vulnerability Assessment System
Useful links and resources:
"Linux Firewalls"
This is the newer version. It includes updates on the Linux 2.4 kernel, |
|
|
"Linux Firewalls"
Most complete Linux firewall/security book in publication. |
|
|
"Hack Proofing Linux : A Guide to Open Source Security" |
|
|
"Real World Linux Security: Intrusion Prevention, Detection and Recovery" |
|
|
"Hacking Linux Exposed" From the same authors of "Hacking Exposed". |
|
|
"Maximum Linux Security: A Hacker's Guide to Protecting Your Linux Server and Workstation"
Covers not only audit and protection methods but also investigates and |
|
|
"Network Intrusion Detection: An Analyst's Handbook" |
|
|
"SSH, the Secure Shell : The Definitive Guide" |
|
|
"Nessus Network Auditing (Jay Beale's Open Source Security)" |
|
|
"Computer Security Incident Handling Step by Step" |
|
|
"Security Assessment: Case Studies for Implementing the NSA IAM" |
|
|
"Network Security Assessment" |
|
|
"A Practical Guide to Security Assessment" |
|
|
"Aggressive Network Self-defense" |
|
|
Security Source Magazine Security Source Magazine's cover story is about keeping |
Libre Subscription |
|
Info Security Magazine Business and management of information security. C'est un |
Libre Subscription |
Commentaires
Laisser un commentaire