Archives de catégorie : Ipfire

Une distribution Linux From Scratch orientée firewall.

Création de machine virtuelle dans ipfire

Cette page explique la procédure pour créer une machine virtuelle dans ipfire. Ne pas oublier d’installer le paquet qemu avec pakfire.

Mise à jour le 23 aout 2016.

Je déplace mes fichiers de configuration sur github.com.

Mise à jour le 29 octobre 2016.

Avec l’aide d’un plugin faisant le liens entre SynthaxHighLighter et pastacode, je réaffiche les scripts.

Ajout du drivers virtio pour le disque dur virtuel.

1/ Création de la carte réseau virtuelle tuntap en orange0

Copier le script dans le repertoire /etc/init.d, il sert à créer la carte réseau pour notre machine virtuelle

Le script est téléchargeable ici.

Donner les droits d’exécution, établir les liens symboliques pour le boot, lancer le script et setup pour attribuer la carte virtuelle à la zone orange.

chmod +x /etc/init.d/tap
ln -s /etc/init.d/tap /etc/rc.d/rc3.d/S17tap
ln -s /etc/init.d/tap /etc/rc.d/rc0.d/K84tap
ln -s /etc/init.d/tap /etc/rc.d/rc6.d/K84tap
/etc/init.d/tap start
setup

2/ Création de(s) bridge(s) en vue du raccordement d’une machine virtuelle

Copier le script dans le répertoire /etc/init.d, il sert à créer un pont réseau. Le script lit les lignes d’un fichier et créée le pont si la variable portant le nom de la carte est à yes.

Le script est téléchargeable ici.

Créer le fichier de configuration des bridges, donner le droits d’exécution du script, établir les liens symboliques pour le boot et lancer le script pour créer le bridge.

cat << EOF > /etc/default/bridge
orange=yes
EOF
chmod +x /etc/init.d/bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc3.d/S21bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc0.d/K83bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc6.d/K83bridge
/etc/init.d/bridge start

3/ Création d’une machine virtuelle

Copier le script dans le répertoire /etc/init.d, il sert à créer si besoin le disque dur virtuel et boot dans la foulé sur une iso (à spécifier dans le script), si l’image disque existe déjà, la machine y boot.

Le script est téléchargeable ici.

Créer le fichier d’attribution des bridges, donner le droits d’exécution du script, établir les liens symboliques pour le boot et lancer le script pour créer le bridge.

chmod +x /etc/init.d/vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc3.d/S99vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc0.d/K01vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc6.d/K01vhost

Il est nécessaire de créer un fichier .vhost par machine virtuelle dans le répertoire /etc/vhost/ pour que le script lance une nouvelle virtualisation.

mkdir /etc/vhost
cat << EOF > /etc/vhost/une_machine.vhost
INDEX=1
RAM=512M
DISK=/PATH/TO/IMG/XXX.img
SIZE=10G
MAC_TAP="01:AA:01:AA:01:AB"
MAC_NET="01:AA:01:AA:01:AA"
ISO=/PATH/TO/ISO
EOF

/etc/init.d/vhost start une_machine

Pour que la machine virtuelle puisse communiquer, il ne reste plus qu’à lui attribuer une adresses IP de même réseau.

Pour que la machine virtuelle s’éteigne correctement, il manque un script perl  (grand merci à hadfl du forum d’Ipfire).
Le script est téléchargeable ici.

4/ Redirection des ports de red0 vers orange0

Surtout, ne pas ajouter d’autres règles comme ACCEPT en entrée sur red, seul une redirection NAT est nécessaire pour accéder à la machine virtuelle dans la DMZ orange. Remplir le formulaire comme ci-dessous.

Ipfire : Configurer Nagios

Voici la procédure que j’ai suivis pour configurer nagios dans ipfire.nagios dans ipfire

Procédure :

  • Créer l’utilisateur nagios et lui attribuer la propriété sur nagios.

[code lang= »bash »]
useradd nagios -s /bin/false -d /var/nagios
chown nagios: /etc/nagios/*.cfg
chown nagios: /etc/nagios/objects/*.cfg
chown nagios: /var/nagios/ -R
sed -i.bak ‘s/^nagios_user=.*/nagios_user=nagios/’ /etc/nagios/nagios.cfg
sed -i.bak ‘s/^nagios_group=.*/nagios_group=nagios/’ /etc/nagios/nagios.cfg
sed -i.bak ‘s/^NagiosUser=.*/NagiosUser=nagios/’ /etc/init.d/nagios
sed -i.bak ‘s/^NagiosGroup=.*/NagiosGroup=nagios/’ /etc/init.d/nagios
[/code]

  • Configurer son compte utilisateur, modifier /etc/nagios/objects/contacts.cfg

[code lang= »bash »]define contact{
contact_name webmaster; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias webmaster ; Full name of user

email webmaster@jbsky.fr ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members webmaster
}[/code]

  • Modifier le mot de passe:

[code lang= »bash »]htpasswd -c /etc/nagios/htpasswd.users webmaster
[/code]

  • Ajouter la commande dans le fichier /etc/nagios/objects/commands.cfg

[code lang= »bash »]# ‘check_https_ipfire’ command definition
define command{
command_name check_https_ipfire
command_line $USER1$/check_http -S -I $HOSTADDRESS$ $ARG1$ -p 444 -a admin:motdepass
}[/code]

  • Rectifier le service https sur le port 444, chercher check_http dans le fichier cat /etc/nagios/objects/localhost.cfg et le tout remplacer par

[code lang= »bash »]define service{
use local-service ; Name of service template to use
host_name localhost
service_description HTTPS_444
check_command check_https_ipfire
notifications_enabled 0
}[/code]

  • Changer le format de date dans /etc/nagios/nagios.cfg

[code lang= »bash »]
sed -i.bak ‘s/^date_format=.*/date_format=euro/’ /etc/init.d/nagios
[/code]

  • Modifié les commandes de notification dans  /etc/nagios/objects/commands.cfg pour que nagios envoie des mails, ajouter le package sendEmail depuis pakfire.

[code lang= »bash »]
# ‘notify-host-by-email’ command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n** " | /usr/local/bin/sendEmail -f agent.nagios@jbsky.fr -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ ** " -s 10.0.0.4 -xp motdepass -v
}

# ‘notify-host-by-email’ command definition
define command{
command_name host-notify-by-email
command_line /usr/bin/printf "%b ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n** " | /usr/local/bin/sendEmail -f agent.nagios@jbsky.fr -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ ** " -s 10.0.0.4 -xp motdepass -v
}

# ‘notify-service-by-email’ command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f agent.nagios@jbsky.fr -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -s 10.0.0.4 -xp motdepass -v

}

# ‘notify-service-by-email’ command definition
define command{
command_name service-notify-by-email
command_line /usr/bin/printf "%b ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f agent.nagios@jbsky.fr -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -s 10.0.0.4 -xp motdepass -v
}
[/code]

  • Recharger Nagios:

[code lang= »bash »]/etc/init.d/nagios reload[/code]

  1. Application Iphone intéressante:

TM-Lite
Fournir l’URL complète: http://IP:1008/nagios/cgi-bin