Administration avancée sous Linux Anthony Busson 1 Plan du cours 1. Compilation (gcc) 2. Gestion des utilisateurs et des groupes 3. Montage des périphériques et des systèmes de fichiers 4. Scripts 5. Archivage et backup (crond) 6. Commandes réseaux et fichiers de configuration 1. Configuration interface route nat firewall tunnel 2. Routeur zebra 7. Services (démarrage-arrêt-fichiers) 8. Le super démon xinetd 9. Les services 1. DNS 2. NIS-NFS 3. SAMBA 4. Web 5. Radius 2 1
Configuration interface et routage statique 3 Configuration d une interface On doit assigner à chaque interface (NIC: Network Interface Card) une adresse IP Un masque de sous réseau En IPv4: En IPv6: ifconfig eth0 192.168.0.1 netmask 255.255.255.0 ip -6 addr add 2001::1/64 dev eth0 4 2
Rajout d une route Les routes de la table de routage sont réinitialisés à chaque démarrage. Le rajout d une route consiste à rajouter une entrée dans la table de routage. Les informations à fournir sont: Adresse réseau (adresse et masque) Prochain saut Nom de l interface pour une liaison point à point Adresse IP du prochain saut pour une liaison multipoint (Ethernet, Wi-Fi, etc.) En IPv4: En IPv6: route add 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1 route add 192.168.1.0 netmask 255.255.255.0 dev serial0 route add default gw 192.168.0.3 ip -6 route add 2001:1::/64 dev serial0 ip -6 route add 2001:1::/64 via 2001::2 ip -6 route add default via 2001::3 //Route par défaut //Route par défaut route add --inet6 2001:1::/64 gw 2001::2 5 Affichage des tables de routage En IPv4 netstat rn, route ou ip route En IPv6 route --inet6 ou ip -6 route 6 3
Interface graphique 7 Les fichiers de configuration Les effets des commandes précédentes sont éphémères. Il existe un certain nombre de fichiers de configuration lu au démarrage ou régulièrement par le système permettant de fixer la configuration IP su système. Configuration IP (lu à chaque démarrage du réseau) Sous Debian/Ubuntu /etc/network/interfaces (un fichier global) Sous RedHat /etc/sysconfig/network-scripts/ifcfg-eth0 (un fichier par interface) 8 4
Debian/Ubuntu: /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.2 dns-nameservers 192.168.1.1 dns-search esgi.fr Interface activée lors de ifup -a Interface IP correspondant à l interface de bouclage (loopback). Interface IP correspondant à l interface physique eth0. Configuration par dhcp. Interface IP correspondant à l interface physique eth0. Configuration statique. 9 Debian/Ubuntu: /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.2 dns-nameservers 192.168.1.1 dns-search esgi.fr pre-up /etc/network/pre-up.d/script1 post-up /etc/network/post-up.d/script2 pre-down /etc/network/pre-down.d/script3 post-down /etc/network/post-down.d/script4 Permet l exécution d un script avant ou après l activation d une interface ou encore avant ou après la désactivation de l interface. 10 5
auto lo iface lo inet loopback Debian/Ubuntu: /etc/network/interfaces iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.2 dns-nameservers 192.168.1.1 dns-search esgi.fr pre-up /etc/network/pre-up.d/script1 post-up /etc/network/post-up.d/script2 pre-down /etc/network/pre-down.d/script3 post-down /etc/network/post-down.d/script4 up route add -net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2 up route add default gw 192.168.1.200 down route del default gw 192.168.1.200 down route del -net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2 Peut être fait à l activation/désactivation de l interface. Peut-être directement une commande. 11 Tunnel IPv4/IPv4 et IPv4/IPv6 Tunnel ipv4/ipv4 ip tunnel add montunnel mode gre remote @IP local @IP ttl 255 ip tunnel add montunnel mode ipip remote @IP local @IP ttl 255 ip link set montunnel up Tunnel ipv6/ipv4 ip tunnel add montunnel mode sit remote @IP local @IP ttl 255 ip link set montunnel up 6
Arrêter/Démarrez le réseau ifup eth0: active une interface (ici eth0). Il lit le fichier /etc/network/interfaces ifup a: active toutes les interfaces notées «auto» dans le fichier /etc/network/interfaces ifdown eth0 : désactive eth0. ifdown -a : désactive toutes les interfaces du fichier /etc/network/interfaces ifconfig eth0 up/down: active/désactive l interface eth0 mais sans la lecture du fichier /etc/network/interfaces /etc/init.d/networking start stop restart démarre/arrête/redémarre le réseau (ifup/ifdown a sont utilisés). 13 Forwarding IP Un PC sous Linux n est pas censé traiter un paquet si l adresse destination ne correspond à aucune de ces interfaces. Par défaut, un PC sous linux n est pas un routeur (il n achemine pas les paquets). Pour changer ce comportement, il faut activer le forwarding (acheminement). Il est relatif au protocole IPv4/IPv6 (et peut-être relatif à une interface). Un pseudo-fichier permet d interagir avec le système. Ce fichier contient 1 si le forwarding est activé et 0 sinon. echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/all/forwarding echo 1 > /proc/sys/net/ipv6/conf/all/forwarding echo 0 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv6/conf/all/forwarding 14 7
Interaction avec le système Linux prévoit une manière de modifier les paramètres du réseau par défaut. Le répertoire /proc/sys/net/ contient des fichiers permettant d interagir avec le système : Modifier/voir la configuration du réseau Consulter les différentes tables (routage, nat, etc.). 15 Quelques exemples Dans /proc/sys/net/ipv4 icmp_echo_ignore_all : désactive le traitement des messages icmp echo. ip_default_ttl : valeur par défaut du TTL (en général 64). conf/all/accept_redirects : accepte les messages ICMP redirect conf/all/send_redirects : envoi les messages ICMP redirect conf/proxy_arp : indique si le routeur agit comme proxy ARP etc. Dans /proc/net route: la table de routage IPv4 ipv6_route : la table de routage IPv6 arp: contenu de la table arp 16 8
Commandes de bases: observation du réseau ifconfig netstat rn ; route ping, pingv6 Traceroute Ethereal / wireshark 17 Nat / firewall 9
Netfilter Netfilter: Sous-système du noyau en charge du filtrage (firewall) et de la translation d adresse (NAT). Il fournit une interface aux modules du noyau permettant de manipuler les paquets à différent étapes (les hooks) de leur traitement. Pre-routing Route Route Ip_forward Post-routing Local_in Route Route Local_out 19 Netfilter: hooks Pre-routing: après réception du paquet et la vérification de base (non-tronqué checksum) Route (n est pas un hook): décision de routage (interface local, acheminement ou rejet ) Local_in: paquet destiné à la machine local. Ip_forward: le paquet est destiné à une autre interface Local_out: pour les paquets provenant de la machine locale. Appelé avant le routage. Post_routing: après routage (qu il provienne de la machine locale ou du réseau). 20 10
Netfilter: opérations Les modules s enregistrent pour écouter les paquets sur les différents hooks. Les modules fixent une priorité. Les modules sont traités par ordre de priorité. Les modules examinent les paquets aux différents hooks. Pour un paquet donné, les opérations possibles du module (elles sont effectuées par Netfilter pour le paquet en cours de traitement à la demande du module): ACCEPT: continue sans modification DROP: jette le paquet STOLEN: le paquet est pris par le module (qui le traite), netfilter doit oublier ce paquet. QUEUE: le paquet est passé dans le userspace. 21 Filtrage (firewall) iptables: module/commande permettant de manipuler les paquets ip sous linux. Sur quel(s) hooks sont effectués les opérations de filtrages et le nat? 22 11
NAT et Firewall Pre-routing Conntrack Mangle Nat (Dst) Route Route Local_in Filter Conntrack Mangle Filter Mangle Ip_forward Route Route Local_out Mangle NAT (Src) Conntrack Post-routing Filter Mangle NAT (Dst) Conntrack 23 Filtrage / NAT Pour chaque paquet, l opération de filtrage n est effectué qu une seule fois: Local_in pour les paquets sortant de la machine locale. Local_out pour les paquets à destination de la machine locale. Ip_forward pour le paquets routé par la machine locale. Source NAT: Les paquets sont traités après le routage car seul l adresse source sera modifié (on modifie l adresse source du premier paquet). Local_in peut aussi être une accroche. Destination NAT: Les paquets sont traités avant le routage car l adresse destination va être modifié (on modifie l adresse destination du premier paquet). Local_out peut aussi être une accroche. ConnTrack: le connection tracking est appliquée sur tous les hooks manipulés par le NAT (Src ou Dst). Il permet de modifier les paquets pour tous les paquets appartenant à la même connexion. Plus précisément: NAT est utilisé pour les nouvelles connexions. ConnecTrack est utilisé pour les autres paquets. 24 12
Port forwarding et Transparent proxy Port forwading: implémentation particulière du Destination NAT. Indique que pour une adresse et un port donnée, l adresse destination (et eventuellemnt le port) doit être modifié. Transparent Proxy: implémentation particulière du destination NAT. Les connexions sur un port donné sont «interceptés» et redirigés (en local ou ailleurs). Packet Mangling: changement des champs du paquet IP (par exemple le champ TOS). Peut être effectué sur tous les hooks. 25 Iptables iptables [-t table] IAD chain rule table: table: nat, nat, filter filterou ou mangle. Suivant la la table, table, les les hooks hooksne ne sont sont pas pas les les mêmes. Type Type d opération à effectuer (Ajouter/supprimer une une règle). règle). Hook: Hook: INPUT; INPUT; OUTPUT; FORWARD; PREROUTING; POSTROUTING. 26 13
Iptables: firewall Principe de base: Autoriser uniquement les communications explicitement autorisées Empêcher les communications qui ont été explicitement interdites La table est filter 2 règles : Allow Drop Les règles ont un ordre précis. Par défaut, la règle entrée la dernière est consultée la première. 27 Iptables : firewall (2) Autoriser uniquement les communications explicitement autorisées Iptables L permet de lister les règles en places. Par défaut tout est accepté: Règle par défaut qui est #iptables L appliqué si aucune Chain INPUT (policy ACCEPT) autre règle ne s applique au paquet. Target prot opt source destination #iptables A INPUT m state state ESTABLISHED, RELATED j ACCEPT #iptables A INPUT p tcp i eth0 --dport ssh j ACCEPT #iptables A INPUT--dport 53 j ACCEPT #iptables A INPUT p udp s 10.15.3.2 j ACCEPT #iptable P INPUT DROP Modifie la règle par défaut. Si aucune règle ne s applique au paquet, il sera jeté. 28 14
Iptables : firewall (2) Empêcher les communications qui ont été explicitement interdites Iptables F : réinitialise toutes les chaînes (ou une chaîne en particulier si elle est spécifiée). #iptables A INPUT p tcp i eth0 --dport ssh j DROP #iptables A INPUT --dport 53 j DROP #iptables A INPUT p udp s 10.15.3.2 j DROP #iptable P INPUT ACCEPT Modifie la règle par défaut. Si aucune règle ne s applique au paquet, il est accepté. 29 Source NAT: iptables: nat #iptables t nat A POSTROUTING o eth0 j MASQUERADE #iptables t nat A POSTROUTING o eth0 j SNAT --to 69.15.14.2 On modifie les paquets en sortie sur l interface eth0 en changeant l adresse source avec l adresse (ici publique) 69.15.14.2 #iptables t nat A POSTROUTING o eth1 j SNAT --to 69.15.14.2-69.15.14.8 On peut aussi spécifier une plage d adresses sources à utiliser. 30 15
Destination NAT: iptables: nat (2) #iptables t nat A PREROUTING i eth1 j DNAT --to 10.1.1.1 On modifie les paquets en entrée sur l interface eth1 avant le routage en changeant l adresse destination avec l adresse (ici privée) 10.1.1.1 #iptables t nat A PREROUTING i eth1 --dport 80 j DNAT --to 10.1.1.1:80 Tous les paquets (connexions) sur le port 80 sont redirigés à l adresse 10.1.1.1 (utilisé pour le Port Forwarding). #iptables t nat A PREROUTING i eth1 --dport 80 j DNAT --to 10.1.1.1-10.1.1.5 Partage de charges entre sur plusieurs serveurs webs. 31 16