Serveur d'impression

Tutoriel sur la sécurité et la configuration de Linux Internet Server – Serveur d’impression

Le 2 mai 2019 - 58 minutes de lecture

É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
                    

    • 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
  • 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.
  • 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 off

        Cela 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

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:

  • 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
                      
    • 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
              
  • 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 rsa

      
      
      Gé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
  • 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.
  • 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.

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

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, [email protected]]
    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:

  1. 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.

  2. 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

  3. Changer le shell de l'utilisateur en rssh (choisissez une méthode)
  4. Autoriser l'exécution à: chmod u / s / usr / libexec / rssh_chroot_helper

    Cela empêche l’erreur suivante dans / var / log / messages

    
    
    20 déc. 00:23:44 nodex rssh_chroot_helper[27450]: chroot () a échoué, 2: opération non autorisée
        
  5. 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:

    1. User login id
    2. First set of three number represent the umask
    3. Second set of five number represent the bitmask to allow

      1 1 1 1 1
      rsync rdist cvs sftp scp
    4. 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.

  6. 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.conf
    Shared libraries (32 and 64 bit) /home/user1/lib
    /home/user1/lib64
    /lib
    /lib64
    Executables and libraries /home/user1/usr /usr
    /usr/libexec/openssh/sftp-server
    /usr/libexec/rssh_chroot_helper
    Executables /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

    gftp FTP Options for SSH
  • 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:

  1. Download and unzip source code
  2. Edit include file and compile
  3. Start PortSentry
  4. Read logs

  1. Download and unzip source code:
  2. 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")

      1. 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)
      2. 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
      3. 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;

    • Install (as root): make install


  3. Run PortSentry for advanced UDP/TCP stealth scan detection:
    • portsentry -atcp
    • portsentry -audp

    OU use init scripts below in next section.

  4. 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 ranges

    Add 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=TRUE

    This 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 = [email protected]


    ou

    severity = $(SIG_XXX),
    emailto = [email protected];[email protected]

    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_ServerName

    You 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 @@DIRM

    Ajouter:

    /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)

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:

Livres:

"Linux Firewalls"

by Robert L. Ziegler, Carl Constaintine

ISBN #0735710996, New Riders 10/2001

This is the newer version. It includes updates on the Linux 2.4 kernel,
    VPN's and SSH.

Amazon.com

"Linux Firewalls"

Robert L. Ziegler

ISBN #0-7357-0900-9, New Riders 11/1999

Most complete Linux firewall/security book in publication.
    Covers ipchains, bind and a complete review of possible firewall configurations.

Amazon.com

"Hack Proofing Linux : A Guide to Open Source Security"

by James Stanger, Patrick T. Lane

ISBN #1928994342, Syngress

Amazon.com

"Real World Linux Security: Intrusion Prevention, Detection and Recovery"

by Bob Toxen

ISBN #0130281875, Prentice Hall

Amazon.com

"Hacking Linux Exposed"

by Brian Hatch, James B. Lee, George Kurtz

ISBN #0072225645, McGraw-Hill (2nd edition)

From the same authors of "Hacking Exposed".

Amazon.com

"Maximum Linux Security: A Hacker's Guide to Protecting Your Linux Server and Workstation"

by Anonymous and John Ray

ISBN #0672321343, Sams

Covers not only audit and protection methods but also investigates and
    explains the attacks and how they work.

Amazon.com

"Network Intrusion Detection: An Analyst's Handbook"

by Stephen Northcutt, Donald McLachlan, Judy Novak

ISBN #0735710082, New Riders Publishing

Amazon.com

"SSH, the Secure Shell : The Definitive Guide"

by Daniel J. Barrett, Richard Silverman

ISBN #0596000111, O'Reilly & Associates

Amazon.com

"Nessus Network Auditing (Jay Beale's Open Source Security)"

by Renaud Deraison, Noam Rathaus, HD Moore, Raven Alder, George Theall, Andy Johnston, Jimmy Alderson

ISBN #1931836086, Syngress

Amazon.com

"Computer Security Incident Handling Step by Step"

by Stephen Northcutt

ISBN #0967299217

Amazon.com

"Security Assessment: Case Studies for Implementing the NSA IAM"

by Russ Rogers, Greg Miles, Ed Fuller, Ted Dykstra

ISBN #1932266968, Syngress

Amazon.com

"Network Security Assessment"

by Chris McNab

ISBN #059600611X, O'Reilly

Amazon.com

"A Practical Guide to Security Assessment"

by Sudhanshu Kairab

ISBN #0849317061, Auerbach Publications

Amazon.com

"Aggressive Network Self-defense"

by NEIL R. WYLER

ISBN #1931836205, Syngress Publishing

Amazon.com

Security Source Magazine

Security Source Magazine's cover story is about keeping
the network secure, from the gateway to the desktop. Subscribe now and
continue to learn about valuable security topics and strategies in each
quarterly issue.

Libre
Subscription

Info Security Magazine

Business and management of information security. C'est un
international magazine, with an European focus. It is published in both
print and digital editions, the latter containing the full content of
the print publication, accessible via the web. Its experienced
editorial team delivers stories that deal with the big picture issues
of information security. Our sources and columnists are the expert
security researchers and practitioners who define, drive, and lead the
field. And our journalists are in demand by the IT trade and broadsheet
press.

Libre
Subscription

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.