Archive for the ‘Linux/Unix’ Category



17
août

Dé-enregistrer une Redhat Entreprise

Supprimer le fichier

/etc/sysconfig/rhn/systemid
9
août

Configuration cliente SSH avancée

Voir cet article concernant le « multiplexage » des connections.

Cet exemple de configuration ne vérifie pas le hash et ne le stock pas

Host 192.168.1.1
        HashKnownHosts          no
        StrictHostKeyChecking   no
        ControlMaster           auto
        ControlPath             ~/.ssh/sockets/%r-%h-%p
        Compression             yes
        KeepAlive               yes
        CheckHostIP             no

Cet exemple de configuration s’applique a tous les autre host, stock le hash

Host *
        HashKnownHosts          yes
        StrictHostKeyChecking   ask
        ControlMaster           auto
        StrictHostKeyChecking   yes
        ControlPath             ~/.ssh/sockets/%r-%h-%p
        Compression             yes
        KeepAlive               yes
        CheckHostIP             yes

Dans les deux exemple, une socket de connexion sera créé dans le dossier ~/.ssh/sockets
Celui ci doit etre accessible uniquement pour votre utilisateur, toutes les utilisateurs pouvant accéder a ces sockets pourront utiliser vos connections SSH sans authentification !

9
août

Générer une ISO Debian avec Jigdo

Prerequis :
- Avoir une distribution Debian récente

Procédure :

  1. Installation du client
  2. Se connecter en root sur la machine sous débian et installé le client

    apt-get install jidgo-file

    ou

    aptitude install jigdo-file
  3. trouver le fichier de ressource jigdo :
  4. http://cdimage.debian.org/cdimage/archive/

    Puis choisir la version / architecture / et jigdo-[cd|dvd]/fichier.jigdo

    Exemple :

    http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-31r8-i386-binary-1.jigdo
    
    http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-update-3.1r8-i386-DVD-1.jigdo
  5. Lancer sur le serveur le client jidgo
  6. 45 root@debian [/var/3.1] 0 # jigdo-lite http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-31r8-i386-binary-1.jigdo
    
    Jigsaw Download "lite"
    Copyright (C) 2001-2005  |  jigdo@
    Richard Atterer          |  atterer.net
    Loading settings from `/root/.jigdo-lite'
    
    Downloading .jigdo file
    --2010-08-09 13:42:39--  http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-31r8-i386-binary-1.jigdo
    Résolution de cdimage.debian.org... 130.239.18.163, 130.239.18.173, 2001:6b0:e:2018::173, ...
    Connexion vers cdimage.debian.org|130.239.18.163|:80...connecté.
    requête HTTP transmise, en attente de la réponse...200 OK
    Longueur: 211325 (206K) [text/plain]
    Saving to: `debian-31r8-i386-binary-1.jigdo'
    
    100%[==========================>] 211 325      446K/s   in 0,5s
    
    2010-08-09 13:42:40 (446 KB/s) - « debian-31r8-i386-binary-1.jigdo » sauvegardé [211325/211325]
    Images offered by `http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-31r8-i386-binary-1.jigdo':
    1: 'Debian GNU/Linux 3.1 r8 "Sarge" - Official i386 Binary-1' (debian-31r8-i386-binary-1.iso)
    
    Further information about `debian-31r8-i386-binary-1.iso':
    Generated on Sun, 13 Apr 2008 18:05:56 +0200
    If you already have a previous version of the CD you are
    downloading, jigdo can re-use files on the old CD that are also
    present in the new image, and you do not need to download them
    again. Mount the old CD ROM and enter the path it is mounted under
    (e.g. `/mnt/cdrom').
    Alternatively, just press enter if you want to start downloading
    the remaining files.
    Files to scan: [ TAPER ENTER ]
    The jigdo file refers to files stored on Debian mirrors. Please
    choose a Debian mirror as follows: Either enter a complete URL
    pointing to a mirror (in the form
    `ftp://ftp.debian.org/debian/'), or enter any regular expression
    for searching through the list of mirrors: Try a two-letter
    country code such as `de', or a country name like `United
    States', or a server name like `sunsite'.
    Debian mirror [http://archive.debian.org/debian-archive/debian/]: http://archive.debian.org/debian-archive/debian/

    Si ce n’est pas le cas bien spécifier l’url :

    http://archive.debian.org/debian-archive/debian/

    Downloading .template file
    --2010-08-09 13:43:57--  http://cdimage.debian.org/cdimage/archive/3.1_r8/i386/jigdo-dvd/debian-31r8-i386-binary-1.template
    Résolution de cdimage.debian.org... 130.239.18.173, 130.239.18.163, 2001:6b0:e:2018::173, ...
    Connexion vers cdimage.debian.org|130.239.18.173|:80...connecté.
    requête HTTP transmise, en attente de la réponse...200 OK
    Longueur: 17926304 (17M) [text/plain]
    Saving to: `debian-31r8-i386-binary-1.template'
    
    100%[==========================>] 17 926 304  2,44M/s   in 6,3s
    
    2010-08-09 13:44:03 (2,73 MB/s) - « debian-31r8-i386-binary-1.template » sauvegardé [17926304/17926304]

Merci SZU

9
avr

Les best practices OpenSSH

Utilisez le protocole SSH 2

La version 1 du protocole 1 est obsolète et doit être évitée à tout prix. Ouvrir le fichier sshd_config et vérifiez que la ligne suivante existe:

Protocole 2

Controlez les utilisateurs qui peuvent se connecter en SSH

Par défaut, tous les utilisateurs des systèmes peuvent se connecter via SSH en utilisant leur mot de passe ou une clé publique. Parfois, vous créez UNIX / Linux pour compte d’utilisateur FTP ou le but de messagerie. Toutefois, les utilisateurs peuvent se connecter au système en utilisant ssh. Ils auront un accès complet aux outils système, y compris les compilateurs et les langages de script tels que Perl, Python qui peuvent ouvrir des ports réseau et de nombreux autres choses fantaisistes.

Autoriser seulement les administrateurs, par exemple pascal. pour cela dans le fichier de configuration sshd_config:

AllowUsers pascal

Alternativement, vous pouvez permettre à tous les utilisateurs de se connecter via SSH, mais nie que quelques utilisateurs, avec la ligne suivante:

DenyUsers root postfix www-data

Configurer la déconnection des session inactive

Utilisateur peut se connecter au serveur via ssh et vous pouvez définir un délai d’inactivité après lequel ils seront déconnectez. Dans le fichier sshd_config assurez-vous les valeurs suivantes sont configurées:

ClientAliveInterval 300
ClientAliveCountMax 0

Vous définissez un intervalle de délai d’inactivité en secondes (300 secondes = 5 minutes). Passé ce délai est passé, l’utilisateur sera automatiquement déconnectés.

Désactiver. Rhosts

Ne pas lire utilisateur ~/.Rhosts et ~/.Shosts fichiers. Modifiez dans sshd_config les paramètres suivants:

IgnoreRhosts yes

SSH peut émuler le comportement de rsh, il suffit de désactiver l’accès via rsh.

Désactiver l’authentification basé sur l’hôte

Pour l’authentification basée sur l’hôte désactiver, mettez à jour sshd_config avec l’option suivante:

HostbasedAuthentication no

Désactiver la connexion root via SSH

Il n’est pas nécessaire de se connecter en tant que root. Les utilisateurs normaux peuvent utiliser su ou sudo pour avoir accès root. Cela permet aussi de tracer/log ce qui est fait avec les droit root. Pour désactiver la connexion de root via SSH, éditez sshd_config et vérifier le paramètre suivant :

PermitRootLogin no

Utilisez une authentification par clef

Il est preferable de se connecter via une authentification par clef plutôt qu’avec un mot de passe.
Votre clef privée doit être protégé par mot de passe.

Interdire les connection via mot de passe vide

Vous devez explicitement interdire la connexion à distance à partir de comptes avec des mots de passe vide, dans sshd_config :

PermitEmptyPasswords no

Protection contre le brute-force

Voici la liste des outils permetant de bloquer les tentative de brute-force :

Derniers paramètres a vérifier

UsePrivilegeSeparation yes
StrictModes yes
# Verifier le reverse DNS
VerifyReverseMapping yes

#  Spécifie si l'authentification par mot de passe est autorisée.
PasswordAuthentication no
29
mar

Les fonctions Crontab & at

1. Pour quoi faire

Crontab est un utilitaire bien utile et plutôt simple à mettre en oeuvre. Il permet de programmer des actions régulières sur votre machine. Par exemple est ce que tel process tourne toujours, est ce que ma ligne ADSL est toujours active, éventuellement faire des sauvegardes.

at permet quant à lui de lancer des actions à une heure donnée, un jour donné, mais sans répétition.

2. L’installation

Pas grand chose à dire sur l’installation de crontab sur votre machine, ni même de la commande at. Par défaut cela tourne déjà. Si ce n’est pas le cas installer les paquetages suivants :at-3.1.7-….rpm et crontabs-1.7-8mdk….rpm.

Vous devez voir le démon crond et atd tourner sur votre machine, si vous souhaitez les utiliser.

3. crontab

Un demon nommé cron lit le fichier (qui se trouve dans le répertoire /var/spool/cron) et exécute les commandes qui s’y trouvent. Pour créer ce fichier taper

crontab -e

(crontab est une commande). Vous ouvrez alors vi et il vous reste à entrer votre ligne en respectant la syntaxe. Une fois sorti de vi (Escape puis :wq !), votre commande est mémorisée (vous obtenez le message crontab : installing new crontab). Pour visualiser toutes les crontab tapez

crontab -l

Lorsque vous créez une crontab, elle est créée pour l’utilisateur que vous êtes. Si vous souhaitez voir, créer, modifier ou détruire une crontab d’un autre utilisateur indiquer

>crontab -u toto -l

(-l pour voir, -e pour créer ou modifier, -r pour détruire.

La syntaxe des entrées est la suivante (avec un espace entre chacun) :

minute : de 0 à 59
heure : de 0 à 23
jour du mois de : 1 à 31
mois de : 1 à 12
jour de la semaine : de 0 à 6, 0 étant le dimanche et ainsi de suite.
commande : peut comporter plusieurs commandes.

les mois et les jours peuvent aussi être donnés avec les abréviations anglaises :jan,feb,… et mon,tue,…

On sépare les jours, les mois par des , (virgules), par exemple pour lancer une action tous les 15 et 30 du mois tapez 15,30 à la place de jour du mois.

Le – signifie jusqu’à, ainsi 15-30 signifie du 15 au 30.
Le / permet de spécifier une répétition, */3 indique toutes les 3 minutes.

* peut être utilisée et indique tous les jours de semaine, tous les mois, toutes les heures.

4. Exemples

0 1 1 * * commande veut dire que vous n'exécutez que le premier jour du mois à 1 heure.
0 1 * * mon commande veut dire une fois par semaine le lundi à 1 heure.
0 1 1,15 * * commande veut dire tous les 1 et 15 du mois à 1 heure.
0 1 1-15 * * commande veut dire tous les 15 premiers jours du mois à 1 heure.
0 1 */5 * * commande veut dire tous les 5 jours à 1 heure.
*/3 * * * * commande veut dire toutes les trois minutes.

La commande suivante efface tous les jours, les fichiers présents dans le répertoire /var/log depuis plus de 7 jours.

0 1 * * * find /var/log -atime 7 -exec rm -f {} \;

atime permet de trouver les fichiers non utilisés depuis 7 jours.

5. at

La commande at permet de lancer une commande un jour donné, à une heure donnée. Une fois que cette commande a été exécutée, elle n’existe plus. Pour utiliser la commande at taper at puis l’heure. ainsi at 12:30 déclenchera la commande à 12 heures 30.

La syntaxe des entrées est la suivante :

at 12:30 11/30/00 déclenchera la commande le 30 novembre 2000 (le jour étant indiqué sous la forme mm/jj/aa.
at now + 1 hour déclenchera la commande dans 1 heure à partir de maintenant.

at 00:00 + 2 days
pour exécuter la commande dans 2 jours à minuit.

Jusque là nous n’avons entré aucune commande à exécuter. Lorsque vous tapez la commande at 12:30, vous obtenez l’invite de la commande

at
at 12:30
$ at 12:30
>ping -c 1 192.168.0.1
> ^D
$

vous avez alors le message suivant, qui vous indique que votre demande a été prise en compte, avec numéro d’ordre le 1.

job 1 at 2000-11-10 12:30

La commande va envoyer un ping sur la machine 192.168.0.1 à 12 heures 30 (j’avais pas d’autres idées sur le moment… !). On peut bien sur faire exécuter un script. Puis at envoi par mail le résultat de cette commande.
Si vous souhaitez voir ce qui va se passer taper at -c 1 (1 étant le numéro d’ordre). Si vous ne connaissez plus toutes les commandes en attente tapez at -l (ou atq).

Pour supprimer une commande en attente atrm 1 (pour supprimer le job 1).

Attention un des grands risques lorsque l’on utilise at est de ne pas vérifier l’heure et le jour de l’exécution de la commande.

6. Contrôle

Dans le cas de at ou de crontab, il est possible de définir qui a le droit d’utiliser ces commandes. Pour cela il existe les fichiers /etc/cron.allow /etc/cron.deny et pour at /etc/at.allow et /etc/at.deny. Pour interdire par exemple l’utilisation de la commande at saisissez le nom des utilisateurs dans le fichiers at.deny (un par ligne).

7. Remarques

Il existe des interfaces graphiques pour créer, modifier, enlever des crontab, mais est-ce bien nécessaire ?

Si votre machine n’est pas allumée en permanence, il est alors possible que votre commande crontab ne puisse s’exécuter. Vous pouvez alors utiliser anacron (qui va vérifier les crontab non exécutées et les exécuter dès la remise en route de la machine).

29
mar

Compresser / Decompresser

Compression

tar

.tar est une archive non compressé

tar -cvf nouvelle_archive.tar /dossier/fichier /dossier/dossier

tar.gz

.tar.gz est une archive compressé

tar -czvf archive.tar.gz /dossier/fichier /dossier/dossier

tar.gz2

tar -cjvf archive.tar.gz2 /dossier/fichier /dossier/dossier

Decompression

tar

tar -xvf /dossier/archive.tar

tar.gz

tar -xzvf /dossier/archive.tar.gz

tar.gz2

tar -xjvf /dossier/archive.tar.bz2
29
mar

Utilisation d’iptable

Voici un exemple commenté, cela est plus simple que de longue explications ;)

#!/bin/bash

# Vider les tables actuelles
iptables -t filter -F
iptables -t filter -X

# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Monitoring Dedibox
iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p udp --sport 161 -m state --state ESTABLISHED -j ACCEPT

# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP

# Interdire toute connexion sortante
iptables -t filter -P OUTPUT DROP

# Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour)
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# Autoriser ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# HTTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

# FTP
modprobe ip_conntrack_ftp
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# DNS
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# Mail
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

# Steamcast
iptables -t filter -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8001 -j ACCEPT

# Syn-Flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT

# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
29
mar

Transfère de linux à linux avec SCP

Cette commande permet de recopier un fichier ou répertoire de manière sécurisée (encryptage) de ou vers une machine distante.

Pour copier un fichier local ‘le_fichier’ vers le compte de l’utilisateur « username » sur la machine distante « nom_de_machine.nom_de_domaine », tapez la commande suivante :

scp le_fichier username@nom_de_machine.nom_de_domaine:

Pour copier le fichier distant ‘le_fichier’ situé dans le sous répertoire ‘directory’ d’un compte de l’utilisateur « username » de la machine « nom_de_machine.nom_de_domaine ».

scp username@nom_de_machine.nom_de_domaine:directory/le_fichier

Pour copier le répertoire local ‘directory’ vers le compte de l’utilisateur « username » sur la machine « nom_de_machine.nom_de_domaine » :

scp -r directory username@nom_de_machine.nom_de_domaine:

Pour copier le répertoire distant ‘directory’ (et tous ses sous-répertoire) d’un compte de l’utilisateur « username » de la machine « nom_de_machine.nom_de_domaine ».

scp -r username@nom_de_machine.nom_de_domaine:directory
22
mar

Remonter une partition en lecture/ecriture

Dans le cas ou votre /tmp est passé en lecture seul (probleme d’acces disque par exemple)
Vous pouvez remonter la partition le lecture/ecriture sans la demonter. Cela est plus utile pour le / ;)

mount /tmp -o remount,rw
19
mar

Changer le domaine ou l’adresse mail a l’envoie

Ajoutez dans le fichier de configuration main.cf :

smtp_generic_maps = hash:/etc/postfix/generic

Dans ce fichier, vous y indiquerez ce qui doit être réécrit

@domaine.local   @domaine.net
root@domaine.local   noreply@domaine.net
  • Le premier exemple remplace domaine.local par domaine.net
  • Le deuxième exemple remplace l’adresse root@domaine.local par noreply@domaine.net

Postfix utilisera le hash de ce fichier, générez le avec postmap

postmap /etc/postfix/generic
Celadon theme by the Themes Boutique