small busness server
Transcription
small busness server
SMALL BUSNESS LINUX SERVER (dhcp Server ;Internet Sharing; Caching Server & File Sharing… ) Nous allons dans le tutorial configuré un serveur Linux (Gentoo) pour notre réseau composé presque exclusivement d’hôtes fonctionnant sous Windows, le tutoriel suivant n’est pas forcement une référence en matière de configuration néanmoins je l’ai appliqué dans mon cas et il fonctionne a ce jour dans bien de PME et de forte belle manière, de plus aucune configuration n’étant statique des contributeurs peuvent bien sur apporter un plus afin peu être de trouvé un Linux-éden en matière de configuration….. PART 1 : INSTALLATION DE GENTOO LINUX I - Préparation du Disque Dur Pour cette installation je possède nous utiliserons un Pentium 4 avec 80 Go de Disque dur et 512 Mo de RAM. Allons-y je télécharge le minimal CD gentoo (il existe une multitude de miroirs a travers le monde) donc moi j’ai choisi de le faire par là “http://mirror.qubenet.net/mirror/gentoo/releases/x86/2008.0/installcd/install-x86-minimal-2008.0.iso” Puis je lance mon logiciel de gravure favorite (dans le cas actuel Nero burning rom) puis je grave mon image iso sur un cd .lorsque tout est ok je boot sur le CD (après bien avoir configuré le bios afin que le first boot device soit bien le lecteur de CD). Donc jusque la tout baigne le live cd reconnais bien la majeur partie de mes périphériques, Comme l’installation se fait a partir du mini cd faut bien comprendre qu’il faudrait configurer sa carte réseau pour la suite. Bien alors je configure ma connexion internet Les paramètres de ma connexion internet Ip address: 10.11.57.3 Mask: 255.255.255.0 Gateway: 10.11.57.1 dns: 172.18.0.1 J’ouvre mon éditeur favori: [Code] Vi /etc/conf.d/net Config_eth0=( “10.11.57.3/24” ) Route_eth0=( “default gw 10.11.57.1” ) Puis [ code] vi /etc/resolv.conf nameserver 172.18.0.1 Lorsque tout est Ok alors je passe à la préparation de mon disque [code] #fdisk /dev/sda /dev/sda1 -> "n, p, 1, entrée, +200M" /dev/sda2 -> "n, p, 2, entrée, +3072M" puis pour définir le type en tapant les commandes suivantes "t, 3, 82" /dev/sda3 -> "n, e, entrée (utilisation de tout le reste de l'espace libre) /dev/sda5 -> "n, l, ….. /dev/sda12 -> "n, l, 13, entrée, +3072M" Mon Schéma de partitionnement Devices Mount point Size Mo/Go System Files /dev/sda1 /boot 200Mo mke2fs (ext2) /dev/sda2 Swap 3Go Swap /dev/sda3 extended /dev/sda5 / 5Go /dev/sda6 /home 21Go /dev/sda7 /usr 20Go mke2fs -j -O dir_index /dev/sda8 /opt 5Go /dev/sda9 /var 18Go (journlise ext3) /dev/sda10 /tmp 2Go /dev/sda11 /crypto 2Go /dev/sda12 /filebase 3Go 2- Application d'un système de fichiers sur une partition Pour appliquer le system fichier désiré sur les partitions je procède comme suit : [code] #mke2fs /dev/sda1 #mke2fs -j -O dir_index /dev/sda5 (j’opère de même jusqu'à /dev/sda12) Création du swap # mkswap /dev/sda2 Activation du swap # swapon /dev/sda2 3-Monter les partitions mount /dev/sda5 /mnt/gentoo mkdir /mnt/gentoo/boot && mount /dev/sda1 /mnt/gentoo/boot mkdir /mnt/gentoo/home && mount /dev/sda6 /mnt/gentoo/home mkdir /mnt/gentoo/usr && mount /dev/sda7 /mnt/gentoo/usr mkdir /mnt/gentoo/opt && mount /dev/sda8 /mnt/gentoo/opt mkdir /mnt/gentoo/var && mount /dev/sda9 /mnt/gentoo/var mkdir /mnt/gentoo/tmp && mount /dev/sda10 /mnt/gentoo/tmp mkdir /mnt/gentoo/crypto && mount /dev/sda11 /mnt/gentoo/crypto mkdir /mnt/gentoo/filebase && mount /dev/sda12 /mnt/gentoo/filebase 3-a Mise a jour de la date système (mois, jour, heure, minute, année) # date mmjjHHMMaaaa Puis on se positionne sur notre disque dur # cd /mnt/gentoo #links http://mirror.qubenet.net/mirror/gentoo/releases/x86/2008.0/stages/ Je sélectionne une release stage3 suivant Mon architecture ("i686"). Donc je sélectionne et garde le fichier nommé "stage3-i6862008.0.tar.bz2". Ensuite je Décompresse ce fichier : # tar -xvjpf stage3-i686-2008.0.tar.bz2 Cette étape réalisée je poursuis en Récupérant snapshot le plus à jour #links http://mirror.qubenet.net/mirror/gentoo/releases/snapshots/current/ Ou je récupère “portage-2008.0.tar.bz2” puis je décompresse comme suit : # tar -xvjf portage-2008.0.tar.bz2 -C /mnt/gentoo/usr Configurons ensuite les options de compilation, la variable "USE”, ainsi que les miroirs gentoo que nous utiliserons lors de l’installation des différents outils et programmes « notamment avec l’utilisation de emerge » # vi /mnt/gentoo/etc/make.conf Moi je suis un prudent moi dans la mesure ou j’ai pas vraiment besoin de changer les valeurs par défaut notamment la valeur CHOST alors je touche a rien j’ajoute juste ce qui me plais MAKEOPTS="-j2" Puis mes miroirs GENTOO_MIRRORS="ftp://gentoo.chem.wisc.edu/gentoo/ http://mirror.mcs.anl.gov/pub/gentoo/ ftp://mirror.mcs.anl.gov/pub/gentoo/ http://gentoo.chem.wisc.edu/gentoo/ http://prometheus.cs.wmich.edu/gentoo ftp://mirror.datapipe.net/gentoo http://adelie.polymtl.ca/ ftp://mirrors.tera-byte.com/pub/gentoo http://mirror.csclub.uwaterloo.ca/gentoo-distfiles/ ftp://mirror.csclub.uwaterloo.ca/gentoo-distfiles/ http://gentoo.localhost.net.ar/ ftp://ftp.las.ic.unicamp.br/pub/gentoo/ http://mirror.ovh.net/gentoo-distfiles/ ftp://mirror.ovh.net/gentoodistfiles/ ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo http://gentoo.mneisen.org/ http://ftp.udc.es/gentoo/ http://mirror.bytemark.co.uk/gentoo/ http://ftp.jaist.ac.jp/pub/Linux/Gentoo/" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" Suivi de mon USE USE="gif latin1 -X symlink nptl nptlonly gtk gnome qt kde dvd alsa cdr apache2 mysqli gd mysql curl gd cgi cli nls xml ctype snmp fastbuild pcre sockets session mod_ssl ssl sasl libwww imap maildir unicode" Poursuivons en montant le dossier proc pour pouvoir utiliser le noyau du liveCD sur le disque dur # mount -t proc none /mnt/gentoo/proc Assurons nous de d’avoir la resolution dns sur le disque en copiant le fichier resolv.conf du live CD # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf (le cp -L pour être sur de pas copier un symbolic link) A present entrons dans notre environnement (émulation de shell sur le disque dur ou chroot) # chroot /mnt/gentoo /bin/bash Mise à jour de l’environnement # env-update && source /etc/profile configurons le fuseau horaire # ln -sf /usr/share/zoneinfo/Africa/Malabo /etc/localtime Synchronisation et Mise à jour de portage # emerge –sync && emerge -u portage Installation des sources du noyau # emerge gentoo-sources Nous voici venu a la croisée des chemins il sera question ici de compiler son kernel selon ses préférences alors 2 choix s’offrent a nous :soit simplifier sa compilation avec l’aide de genkernel (outil permettant de simplifier l'installation d'un noyau ) ou alors configurer et compiler tout a la main en ce qui me concerne le conseil que je donnerais a ceux qui ne sont pas habitues aux compilation de base ou qui ne savent pas exactement quoi annuler et quoi ajouter alors je conseil pour le moment d’utiliser genkernel afin d’avoir un environnement fonctionnel et par la suite pouvoir recompiler tout fin en laissant bien sur dans son boot loader une entrée pour la compilation faite avec genkernel pour apporter une solution en cas de kernel panic …. Allons-y ….Installons genkernel # emerge genkernel Puis lançons la compilation du noyau avec # genkernel all Vérifions les noms de l'image du noyau et du fichier initrd puis notons le résultat de cette commande ca nous servira plus tard dans la configuration de Grub. # ls /boot/kernel* /boot/initramfs* Configurons le système Nous devons modifier le fichier /etc/fstab qui a été installé par Gentoo, car celui-ci n'est qu'un exemple et le système ne démarrera pas si Nous le laissons tel quel. Pour des raisons de sécurité Nous ne souhaitons pas que la partition /boot soit montée automatiquement au démarrage alors on y mettra pour option <noauto> # nano -w /etc/fstab # <fs> <mountpoint> <type> <opts> <dump/pass> /dev/hda1 /boot ext2 noauto,noatime 1 2 /dev/hda5 / ext3 noatime 01 /dev/hda2 none swap sw 00 /dev/hda6 /home ext3 noatime 01 /dev/hda7 /usr ext3 noatime 01 /dev/hda8 /opt ext3 noatime 01 /dev/hda9 /var ext3 noatime 01 /dev/hda10 /crypto ext3 noatime 01 /dev/hda11 /tmp ext3 noatime 01 /dev/hda12 /filebase ext3 noatime 01 /dev/cdrom /mnt/cdrom auto none /proc proc none /dev/shm tmpfs noauto,ro 00 defaults 00 nodev,nosuid,noexec 00 Nom d'hôte, network, etc. # nano -w /etc/conf.d/hostname HOSTNAME="serverotc" nano -w /etc/conf.d/net dns_domain_lo="fosternet" config_eth0=( “10.11.57.3/24” ) routes_eth0=( “default gw 10.11.57.1” ) config_eth1=( “172.17.0.1/24” ) Ajouter net.eth0 et net.eth1 au runlevel « default » # rc-update add net.eth0 default # ln –s /etc/init.d/net.eth0 /etc/init.d/net.eth1 # rc-update add net.eth1 default Information système Définition du mot de passe root # passwd éditons le fichier /etc/conf.d/clock pour configurer les options relatives à l'horloge : # nano -w /etc/conf.d/clock CLOCK="local" Installer les outils système Installons un système de journalisation des évènements # emerge syslog-ng # rc-update add syslog-ng default Afin de planifier des commandes nous installerons un démon cron # emerge vixie-cron # rc-update add vixie-cron default Dans le but d’indexer nos fichiers dans le but de pouvoir les retrouver rapidement Installons slocate # emerge slocate Configurons le Boot Loader #emerge grub Création de /boot/grub/grub.conf # nano -w /boot/grub/grub.conf Servons nous alors du résultat de la commande "ls /boot/kernel* /boot/initramfs*" optenue precedement default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux kernel /boot/kernel-genkernel-x86-2.6.24-gentoo-r8 root=/dev/sda5 initrd /boot/initramfs-genkernel-x86-2.6.24-gentoo-r8 mise à jour du fichier /etc/mtab #cp /proc/mounts /etc/mtab Installation automatique de GRUB #grub-install --no-floppy /dev/sda Ou alors installation manuelle de GRUB # grub --no-floppy grub> root (hd0,1) (Indique où se trouve la partition /boot. /dev/sda2) grub> setup (hd0) (Écrit GRUB dans le MBR.) grub> quit (Quitte le shell GRUB.) Redémarrage du système quittons l'environnement "chroot" # exit # cd # umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo # reboot PART 2: SERVEUR APPLICATIF A- SERVEUR SAMBA Samba est un serveur de fichiers pour Linux (en licence GNU GPL, donc libre) compatible avec les réseaux Microsoft Windows. C'est-à-dire qu'il permet de partager les fichiers et les imprimantes d'un serveur linux avec les ordinateurs windows de notre réseau: Notre gentoo server passera pour un serveur Windows NT pour nos hôtes Windows. a- Installons samba linuxotc ~ # USE="nls zlib pam perl tcpd X xml dri nptl xorg acl cups pam python readline gtk" emerge –av samba après l’installation de samba occupons nous du fichier de configuration linuxotc ~ # vi /etc/samba/smb.conf *************/etc/samba/smb.conf******************************** [global] # votre workgroup/domaine workgroup = OTC # %v affiche la version de Samba que nous utilisons server string = Samba map to guest = Bad User # Nous allons utiliser cups, donc nous l'indiquons ici ;-) printcap name = cups printing = cups load printers = yes # Nous desirons un fichier de log et nous ne le voulons pas plus gros que 2000 Ko. log file = /var/log/samba/log.%m max log size =2000 # Nous alons mettre quelques options pour nos interfaces... socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 preferred master = No local master = No dns proxy = No security = User # lions le serveur samba a notre reseau local. # comme eth1 est notre interface de reseau local interfaces = lo eth1 bind interfaces only = yes # a present, nous allons specifier qui nous autorisons, nous sommes # apres tout, tres conscients de la securite, vu que cette configuration # n'utilise pas de mots de passe ! hosts allow = 127.0.0.1 172.17.0.0/16 hosts deny = 0.0.0.0/0 # a present, nous allons implementer l'acces au scanner de virus. # NOTE : En ajoutant ceci a notre section [Global], nous activons la protection # pour TOUS les partages, vous pouvez eventuellement deplacer ceci # dans un partage specifique et seulement ce dernier sera scanner. # Pour Samba 3.x. ces lignes activent l'acces de ClamAV pour verifier les virus. vfs object = vscan-clamav vscan-clamav: config-file = /etc/samba/vscan-clamav.conf # creons les partages [Admon] path = /home/samba/admon valid users = admon read only = No create mask = 0644 directory mask = 0755 [Admin] path = /home/samba/admin valid users = admin read only = No create mask = 0644 directory mask = 0755 [technico] path = /home/samba/technico valid users = technico read only = No create mask = 0644 directory mask = 0755 [Secret] path = /home/samba/secret valid users = secret read only = No create mask = 0644 directory mask = 0755 [Proyecto] path = /home/samba/proyecto valid users = proyecto read only = No create mask = 0644 directory mask = 0755 [Conta] path = /home/samba/conta valid users = conta read only = No ########################################################################## A présent créons les répertoires nécessaires pour la configuration minimum de Samba afin de partager les ressources réseau linuxotc ~ # mkdir /home/samba linuxotc ~ # mkdir /home/samba/public linuxotc ~ # mkdir /home/samba/admin linuxotc ~ # mkdir /home/samba/admon linuxotc ~ # mkdir /home/samba/technico linuxotc ~ # mkdir /home/samba/secret linuxotc ~ # mkdir /home/samba/proyecto linuxotc ~ # mkdir /home/samba/conta Permissions linuxotc ~ # chmod 775 /home/samba linuxotc ~ # chmod 775 /home/samba/public linuxotc ~ # chmod 775 /home/samba/admin linuxotc ~ # chmod 775 /home/samba/technico linuxotc ~ # chmod 775 /home/samba/secret linuxotc ~ # chmod 775 /home/samba/conta linuxotc ~ # chmod 775 /home/samba/admon linuxotc ~ # chmod 775 /home/samba/proyecto ####Créons les utilisateurs linuxotc ~ # useradd -c "directora" admin linuxotc ~ # useradd -c "administration" admon linuxotc ~ # useradd -c "technico" technico linuxotc ~ # useradd -c "secretaria" secret linuxotc ~ # useradd -c "proyecto beca" proyecto linuxotc ~ # useradd -c "contabilidad" conta linuxotc ~ # useradd -c "para todos" publico ####password smbpasswd -a admin smbpasswd -a admon smbpasswd -a technico smbpasswd -a proyecto smbpasswd -a secret smbpasswd -a conta smbpasswd -a publico Nous devons aussi mettre a jour /etc/nsswitch.conf afin que les systèmes Windows puissent être trouvés facilement en utilisant NetBIOS : # vi /etc/nsswitch.conf (Éditez la ligne « hosts: ») hosts: files dns wins Et enfin demarrons le service [root@linuxotc ~]# /etc/init.d/smb restart Maintenant, nous allons utiliser une lettre de lecteur d'installation sous Windows afin de pouvoir facilement accéder à ces fichiers. Start -> run -> cmd <enter> At the prompt type: net use z: \\ip_of_your_samba_server\share /user: smbuser password_you_assigned ############################################################################## b- Protection antivirale Installons clamav linuxotc ~ # emerge -av clamav configurer # /etc/samba/vscan-clamav.conf [samba-vscan] ; configuration d'exécution pour vscan-samba utilisant ; clamd ; toutes les options sont mises aux valeurs par défaut ; Ne verifie pas les fichiers plus gros que X bytes. Si mis a 0 (par ; defaut), cette option est désactivée (tous les fichiers sont scannées) max file size = 0 ; Note tous les acces aux fichiers (oui/non). Si mis à oui (yes), ; Chaque acces sera consigné. Si mis a non (no) (option par défaut), seulement ; les acces a des fichiers infectes seront consignés. verbose file logging = no ; si mis a oui (yes) (défaut), un fichier sera scanné quand il est ouvert scan on open = yes ; si mis à oui (yes), un fichier sera scanné à la fermeture (yes par defaut) scan on close = yes ; si la communication avec clamd echoue, doit-on interdire l'acces aux fichiers ? (defaut : yes) deny access on error = yes ; si le daemon échoue avec une erreur mineure (corruption, etc.), l'accès au fichier doit-il être refusé ? deny access on minor error = yes ; envoyer un message par Windows Messenger service quand un virus est trouvé ? ; (défaut: yes) send warning message = yes ; que faire avec un fichier infecté ; quarantine: essayer de déplacer dans le répertoire de quarantaine, suppression si le déplacement échoue ; delete: supprime le fichier infecté ; nothing: ne rien faire infected file action = delete ; déplacer les fichiers infectés- vous devriez vraiment changer ceci ! ; ca ne devrait pas etre sur le même périphérique physique que le partage ! quarantine directory = /tmp ; préfixe pour les fichiers en quarantaine quarantine prefix = vir; vu que Windows essaie d'ouvrir un fichier de nombreuses fois dans une ; (courte) période, samba-vscan utilise un mécanisme des derniers fichiers ; Récemment ouverts pour éviter le scan multiple d'un fichier. Cette option ; spécifie le nombre maximum d'éléments dans la liste des derniers fichiers ; Récemment ouverts. (par défaut: 100) max lru files entries = 100 ; une entrée est invalide après la durée de vie depuis l'entrée dans le fichier lru (en secondes). ; (par défaut: 5) lru file entry lifetime = 5 ; nom de socket de clamd (défaut: /var/run/clamd) clamd socket name = /tmp/clamd ; numéro du port d'écoute du daemon de vérification de virus oav port = 8127 Vérifiez où sont vos fichiers de journalisation /etc/init.d/samba restart # nano /etc/clamd.conf Pour vérifier la correction de votre smb.conf tapons, ce qui suit dans un terminal: testparm /etc/samba/smb.conf ############################################################################################## B-SERVEUR DHCP Installons linuxotc ~ # emerge -av dhcp Créons le fichier de configuration linuxotc ~ # vi /etc/dhcp/dhcpd.conf # option definitions common to all supported networks... option domain-name "internal"; option domain-name-servers 172.18.0.1; option routers 172.17.0.1; ddns-update-style none; authoritative; default-lease-time 600; max-lease-time 7200; subnet 172.17.0.0 netmask 255.255.255.0 { range 172.17.0.100 172.17.0.200; # If you want to provided WINS Server option netbios-name-servers 172.17.0.1; option netbios-node-type 8; } Demarrons et assurons nous que cela se fera également a chaque reboot linuxotc ~ # /etc/init.d/dhcpd start linuxotc ~ # rc-update add dhcpd default C- PARTAGE DE CONNEXION INTERNET & FIREWALL Pour réaliser ce partage nous utiliserons le firewall netfilter (iptables), Nous aurons besoin de compiler iptables dans le noyau. Nous pouvons soit faire une configuration manuelle ou alors utiliser genkernel. Modifions les sources du noyau puis nous modifierons notre configuration: linuxotc ~ # cd /usr/src/linux linuxotc ~ # make menuconfig Networking ----> Networking options ----> Network packet filtering framework (Netfilter)---> Core Netfilter Configuration ----> <*> Netfilter connection tracking support <*> Netfilter Xtables support (required for ip_tables) <*> "NFLOG" target support <*> "conntrack" connection tracking match support <*> "state" match support IP: Netfilter Configuration ---> <*> IPv4 connection tracking support (required for NAT) <*> IP tables support (required for filtering/masq/NAT) <*> Packet Filtering <*> REJECT target support <*> Full NAT <*> MASQUERADE target support enfin Nous souhaitons charger iptables en temps que modules ajoutons ceci [*] Enable loadable module support ---> [*] Automatic kernel module loading Puis compilons #make && make modules_install Installons le nouveau kernel compilé #mount /boot #cp arch/i686/boot/bzImage /boot/kernel-2.6.25-gentoo-r6 #cp System.map /boot/System.map-2.6.25-gentoo-r6 #cp .config /boot/config-2.6.25-gentoo-r6 En fin éditons le fichier de configuration de GRUB et ajoutons la nouvelle entrée NB : Voici une alternative rapide peu mais certainement pas la plus belle des façons de faire tout ce travail. (L’utilisation de genkernel all) cela a pour conséquence vous devez le savoir de grossir énormément la taille de votre kernel, donc dans le cas de figure actuel si vous avez utilisé genkernel lors de l’installation tout ce qui vous reste a faire : Installer iptables puis ipp2p (Pour gérer le p2p Vraiment très bien ce programme chez moi il marche du tonnerre avec la mangle rule) linuxotc ~ # emerge iptables ipp2p Puis charger certains modules qui bien sur seront perdu a chaque reboot, donc pour empecher ce désagrement penser a placer les dit modules dans le fichier /etc/modules.autoload.d/kernel-2.6 modprobe iptable_nat modprobe ip_tables modprobe iptable_filter modprobe ipt_MASQUERADE modprobe iptable_mangle modprobe ipt_TCPMSS modprobe xt_pkttype modprobe ipt_ipp2p modprobe ipt_TOS modprobe ipt_TTL modprobe xt_multiport modprobe xt_state modprobe xt_tcpudp modprobe ipt_REJECT modprobe xt_limit Voila le Script que j’ai concocté pour le filtrage, le partage de connexion et le squid transparent de même que la limite de P2p #################################################################################### #!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 depend() { use net } start() { ebegin "Starting firewall" #!/bin/bash # Kernel parameters # #Author Fossua Marcel # # IFCUSTOMERS # LAN # Eth1: 172.17.0.0/24 # 172.17.0.5 - --\ | # 172.17.0.6 - - -\ | # 172.17.0.7 - --- switch -------------------------------------- firewall ---- ----- internet # 172.17.0.8 - - -/ | # 172.17.0.9 - - / DHCP WAN | # 172.17.0.10 - / | eth0 # 172.17.0.11 -/ IP: 10.11.57.3/24 # 172.17.0..- / DNS: 172.18.0.1 # GW: 10.11.53.1 # # # Location of the commands IPTABLES=/sbin/iptables ROUTE=/sbin/route echo "seting some kernel parameters"; # Disable response to broadcasts we are not an Smurf amplifier. /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # No source routed packets. /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route # Disable ICMP redirect acceptance. /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # disable sending of icmp redirects echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects # Enable bad error message protection. /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Turn on reverse path filtering. for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do /bin/echo "1" > ${interface} # Log spoofed packets, source routed packets, redirect packets. /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians # IP forwarding on. /bin/echo "1" > /proc/sys/net/ipv4/ip_forward # ignore broadcasts echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # enable proxy arp on WAN side #ifconfig eth0 up ; echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp ######################################################################## # The magic begins... ######################################################################## # Flush existing firewall rules $IPTABLES -F $IPTABLES -t nat -F # Delete any extraneous chains which may exist from a previous script $IPTABLES --delete-chain # Change the default policy of all three chains to DROP $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT echo "Starting of FIREWALLING rules"; # icmp filter $IPTABLES -N ICMPFILTER $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 0 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 3 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 11 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 8 -m limit --limit 10/sec -j ACCEPT #iptables -A ICMPFILTER -p icmp -j SILENT # Mangle rules $IPTABLES -t mangle -A PREROUTING -p tcp -m tcp --dport 33434:33542 -j TTL --ttl-inc 1 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 22,53,80,443,4569 -j TOS --set-tos 0x10 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 22,53,80,443,4569 -j TOS --set-tos 0x10 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 119,5813 -j TOS --set-tos 0x02 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 119,5813 -j TOS --set-tos 0x02 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 161,162,25 -j TOS --set-tos 0x04 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 161,162,25 -j TOS --set-tos 0x04 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 22,53,80,25,110,4569 -j TOS --set-tos 0x08 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 22,53,80,25,110,4569 -j TOS --set-tos 0x08 # All ingoing already establish connections should be agreed $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Agree some ingoing connections on TCP ports # (to make my FTP server recheable from outside) $IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT # Makes TCP port 22 (SSH) recheable from outside $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 22 -j ACCEPT #Complete access on server echo " Server towards internet"; $IPTABLES -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # Makes TCP port 80 (HTTP) and 443 (HTTPS) recheable $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT # Makes TCP et UDP port 139 recheable # but only on internal interface "eth1" # to make my samba server recheable from my LAN $IPTABLES -A INPUT -p tcp --dport 137:139 -i eth1 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 137:139 -i eth1 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 445 -i eth1 -j ACCEPT # Authorize "pings" $IPTABLES -A INPUT -p icmp -j ACCEPT # No filtring on "loopback" $IPTABLES -A INPUT -i lo -j ACCEPT # the default rule for INPUT chain becomes "REJECT" # (it's not possible to use REJECT as default rule) $IPTABLES -A INPUT -j REJECT # Makes FORWADED connections to be agreed by default $IPTABLES -P FORWARD ACCEPT # Makes outgoing connections agreed by defaut $IPTABLES -P OUTPUT ACCEPT # End of default rules echo "End of FIREWALLING rules"; echo "starting of Internet share connection"; # I need my firewall to act as NAT server" $IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE # End of Internet share connection # echo "Start of FORWARDING rules"; # Makes my firewall to acts as proxy_cache (means capture tcp requests # receive on port 80 and forward them at 172.17.0.1:3128) #echo "Start of transparent proxy rules" $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.1:3128 # End of FORWARDING rules echo "firewall setup completed.. exit 0 "; eend $? } stop() { ebegin "Stopping firewall" eend $? } #####################################################################################################Testons le script avec l’avoir rendu exécutable linuxotc ~ # chmod 755 /etc/init.d/firewall && /etc/init.d/firewall start Afin que le script soit lancé automatiquement a chaque boot , ajoutons le au runlevel par défaut linuxotc ~ # rc-update add firewall default CACHE SERVER « SQUID » #Network Options http_port 3128 transparent http_port 172.17.0.1:3128 transparent http_port 127.0.0.1:3128 transparent icp_port 3131 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY #Squidguard redirection #redirect_program /usr/bin/squidGuard -c /etc/squidGuard/squidGuard.conf #Cache cache_mem 256 MB maximum_object_size 50 MB maximum_object_size_in_memory 300 KB cache_dir ufs /var/spool/squid 2048 160 512 cache_access_log /var/log/squid/access_transparent.log cache_log /var/log/squid/cache_transparent.log cache_store_log /var/log/squid/store_transparent.log cache_swap_log /var/log/squid/cache_swap_log_transparent pid_filename /var/run/squid_transparent.pid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 refresh_pattern -i exe$ 0 50% 999999 refresh_pattern -i zip$ 0 50% 999999 refresh_pattern -i tar\.gz$ 0 50% 999999 refresh_pattern -i tgz$ 0 50% 999999 quick_abort_min 16 KB quick_abort_max 16 KB quick_abort_pct 98 negative_ttl 3 minutes #ACL acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost acl our_networks src 172.16.0.0/16 172.17.0.0/16 10.0.0.0/8 http_access allow our_networks http_access deny all http_reply_access allow all icp_access allow all visible_hostname proxy.otc always_direct allow all forwarded_for off acl local-servers dstdomain .machintruc.com always_direct allow local-servers coredump_dir /var/cache/squid Dans ma configuration actuelle j’ai pas vraiment eu bésoin de configurer un DNS serveur ,mais dans le cadre d’une configuration a peu pres similaire j’ai eu a installer un serveur applicatif distinct de mon firewall alors j’ai souhaité configurer un serveur dns dans la mesure ou cette configuration n’utilisais pas de serveur dhcp j’ai donc ajouter a mon firewall une autre interface reseau Ce qui donne une configuration a peu comme celle ci # # IFCUSTOMERS # # # 172.19.0.3 \ eth3 # 172.19.0.4- -\ | # 172.19.0.5 --- switch -------------------------------- | ------ firewall --------- internet # 172.19.0.6 -/ | | # 172.19.0.7- / | eth0 # 172.19.0.8- / eth1 # 172.19.0.10- / DMZ hosts # 172.16.0.0/24 # 172.16.0.1 # # # # # Mon Serveur applicatif se trouve a l’adresse ip 172.16.0.2 et les hotes sous le sous reseau 172.19.0.0/24 SERVEUR DNS Pour le serveur dns nous avons 2 choix soit utiliser BIND ou alors djbdns il va sans dire que moi je prefere le second pour la clarté de sa configuration ce qui n’est pas forcement le cas de bind … linuxotc ~ # emerge djbdns Daemontools sera installé comme une dépendance, et nous l'exécuterons , car c’est ce processus qui va démarrer et contrôler les différents services de djbdns: linuxotc ~ # /etc/init.d/svscan start linuxotc ~ # rc-update add svscan default Note: en function de notre configuration nous aurons bésoin d’ajouter svscan au boot: linuxotc ~ # rc-update add svscan boot Les Accounts "tinydns," "dnscache," et "dnslog" doivent avoir été creer,Verifier dans /etc/passwd pour confirmer: linuxotc ~ # grep dns /etc/passwd dnscache:x:1003:200::/nonexistent:/bin/false dnslog:x:1004:200::/nonexistent:/bin/false tinydns:x:1005:200::/nonexistent:/bin/false a- CONFIGURATION DU DNS CACHE Tout d'abord, nous allons configurer la mise en cache DNS. Selon la nature de votre installation, vous aurez voudrez peut-être besoin que l’adresse IP de votre fournisseur d'accès DNS puisse être forwarder (rediriger) linuxotc ~ # dnscache-setup Appuyer deux fois sur appuyer, pour commencer le processus de configuration et accepter l’installation dans le répertoire par défaut. Currently running IP addresses: 172.16.0.2 127.0.0.1 IP to bind cache to [127.0.0.1]> 172.16.0.2 Here, type what IP address the DNSCache server will listen on. See the important note above. If you choose the localhost loopback IP 127.0.0.1, the installer will create the configuration directory /var/dnscache. If you choose the external IP, the directory will be /var/dnscachex. tapez l'adresse IP des serveur DNS qu’écouterons notre serveur DNSCache. Si vous choisissez localhost loopback IP 127.0.0.1, le programme d'installation va créer le répertoire de configuration /var / dnscache. Si vous choisissez l'IP externe, le répertoire sera /var /dnscachex. enter forward-to IP> 172.18.0.1 enter forward-to IP [hit Enter to stop]>208.67.222.222 enter forward-to IP [hit Enter to stop]> 208.67.220.220 enter forward-to IP [hit Enter to stop]> 213.133.98.98 enter forward-to IP [hit Enter to stop]> 213.133.99.99 enter forward-to IP [hit Enter to stop]> 213.133.100.100 enter forward-to IP [hit Enter to stop]> 205.166.226.38 enter forward-to IP [hit Enter to stop]> 38.97.212.53 enter forward-to IP [hit Enter to stop]> [Enter] Ici, vous pouvez généralement entrée l’adresse IP de votre fournisseur DNS.(Dans le cas present j’ai utilisé beaucoup plus les dns public qui n’ont a mon avis pas grand choses a envier a ceux payant notamment Opendns & Nornet ) Appuyez sur Entrée pour arrêter les ajouts. Ps : Je joint en fin de tuto une liste non exhaustive de quelques DNS présumer gratuits (certains ne le sont pas) * Configuring clients Enter IP> 172.16 Enter IP (hit Enter to stop)>172.17 Enter IP (hit Enter to stop)>172.19 Enter IP (hit Enter to stop)> [Enter] (Note: vous ne verrez pas cette étape si vous avez choisi de lier DNSCache à 127.0.0.1). Cela vous permet de spécifier les sousréseaux ou des machines sont autorisés à se connecter à votre DNSCache (par défaut, seul est autorisé localhost). Appuyez sur Entrée un temps supplémentaire pour terminer l'ajout de clients autorisés. Par exemple, pour permettre à tous les hôtes sur 192.168.0 .*, vous devez d'entrée: 192.168.0 Le programme d'installation va maintenant sauvegarder votre fichier /etc /resolv.conf dans /etc /resolv.conf.orig et configurer le serveur de noms dans le fichier / etc / resolv.conf avec l’adresse IP de la dnscache que vous avez fourni lors de la première étape. Selon votre configuration, Néanmoins assurez-vous de fixer votre fichier /etc / resolv.conf si nécessaire. Vérifier que votre installation * Resolve du: localhost et du reseau interne * call: svstat /service/* et verifier que l’uptime est >10 secondes * Installer bind-tools puis Lancer [email protected] <url> deux fois et vérifier que la requête est plus rapide après la première requête dnscache est prêt pour le démarrage. On y est presque. Appuyez sur la touche Entrée et un lien vers votre répertoire de configuration sera créé pour vous dans /service (ce qui va démarrer le dnscache si vous avez svscan fonctionnel). Vous pouvez aussi appuyer sur le contrôl-C pour seulement créer les répertoires de configuration sans démarrer le serveur. Pour démarrer le serveur plus tard, vous devrez créer manuellement le lien: # ln -s /var/dnscache /service Nul besoin de creer ce lien avec la version: 1.05-r19 En fonction de votre config vous aurez peu etre bésoin de creer un lien plutot vers /var/dnscachex. Dépannage ********* Vérifiez s'il existe déjà un processus d'écoute sur 53/tcp ou 53/udp netstat -ln | grep ":53" Chercher un autre pid fuser 53/tcp Identifier le process ps -lea | grep <pid> éventuellement tuer le processus killall <pid> Et voila notre serveur dns est configurer et fonctionnel reste maintenant a permettre a mes utilisateurs de pouvoir l’utiliser pour leur resolution pour ce faire je fait appel a mon firewall (souvenez vous que dans le cas actuel j’ai separé mon serveur applicatif de mon firewall) ##################################################################################################### #!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 depend() { use net } start() { ebegin "Starting firewall" #!/bin/bash # Kernel parameters # #Author Fossua Marcel # # IFCUSTOMERS # # # 172.19.0.3 \ eth2 # 172.19.0.4- -\ | # 172.19.0.5 --- switch -------------------------------- | ------ firewall --------- internet # 172.19.0.6 -/ | | # 172.19.0.7- / | eth0 # 172.19.0.8- / eth1 # 172.19.0.10- / DMZ hosts # 172.16.0.0/24 # 172.16.0.1 # # # Location of the commands IPTABLES=/sbin/iptables ROUTE=/sbin/route # interfaces IFCUSTOMER=eth2 IFINTERNET=eth0 IFDMZ=eth1 #important ips NAMESERVER=172.16.0.2 echo "seting some kernel parameters"; # Disable response to broadcasts we are not an Smurf amplifier. /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # No source routed packets. /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route # Disable ICMP redirect acceptance. /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # disable sending of icmp redirects echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects # Enable bad error message protection. /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Turn on reverse path filtering. for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do /bin/echo "1" > ${interface} # Log spoofed packets, source routed packets, redirect packets. /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians # IP forwarding on. /bin/echo "1" > /proc/sys/net/ipv4/ip_forward # ignore broadcasts echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # enable proxy arp on WAN side #ifconfig eth0 up ; echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp ######################################################################## # The magic begins... ######################################################################## # Flush existing firewall rules $IPTABLES -F $IPTABLES -t nat -F # Delete any extraneous chains which may exist from a previous script $IPTABLES --delete-chain # Change the default policy of all three chains to DROP $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT echo "Starting of FIREWALLING rules"; # icmp filter $IPTABLES -N ICMPFILTER $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 0 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 3 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 11 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 8 -m limit --limit 10/sec -j ACCEPT #iptables -A ICMPFILTER -p icmp -j SILENT # Mangle rules $IPTABLES -t mangle -A PREROUTING -p tcp -m tcp --dport 33434:33542 -j TTL --ttl-inc 1 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 22,53,80,443,4569 -j TOS --set-tos 0x10 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 22,53,80,443,4569 -j TOS --set-tos 0x10 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 119,5813 -j TOS --set-tos 0x02 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 119,5813 -j TOS --set-tos 0x02 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 161,162,25 -j TOS --set-tos 0x04 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 161,162,25 -j TOS --set-tos 0x04 $IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --sports 22,53,80,25,110,4569 -j TOS --set-tos 0x08 $IPTABLES -t mangle -A PREROUTING -p udp -m multiport --sports 22,53,80,25,110,4569 -j TOS --set-tos 0x08 #Adieu les emuliens avec le modules ipp2p $IPTABLES -t mangle -A INPUT -m ipp2p --kazaa --gnu --edk --dc --bit --apple --soul --winmx --ares -j DROP $IPTABLES -t mangle -A FORWARD -m ipp2p --kazaa --gnu --edk --dc --bit --apple --soul --winmx --ares -j DROP $IPTABLES -t mangle -A OUTPUT -m ipp2p --kazaa --gnu --edk --dc --bit --apple --soul --winmx --ares -j DROP # icmp filter $IPTABLES -N ICMPFILTER $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 0 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 3 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 11 -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -m icmp --icmp-type 8 -m limit --limit 10/sec -j ACCEPT $IPTABLES -A ICMPFILTER -p icmp -j SILENT echo "setting up prerouting"; # make appllcation server reachable by internet & customers interfaces $IPTABLES -t nat -A PREROUTING -d 172.16.0.2 -i $IFINTERNET -j ACCEPT $IPTABLES -t nat -A PREROUTING -s 172.16.0.2 -i $IFCUSTOMER -j ACCEPT #NAT chain # route all traffic to the new dns server # the -s ! 172.16.0.2 it to prevent accidential loops $IPTABLES -t nat -A PREROUTING -s ! 172.16.0.2 -i eth2-p tcp -m tcp --dport 53 -j DNAT --to-destination 172.16.0.2:53 $IPTABLES -t nat -A PREROUTING -s ! 172.16.0.2 -i eth2-p udp -m udp --dport 53 -j DNAT --to-destination 172.16.0.2:53 #Squid stuff # intercept all traffic to port 80 and relay to squid proxy (transparent) $IPTABLES -t nat -A PREROUTING -s ! 172.16.0.2 -i $IFCUSTOMER -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.0.2:3128 # All ingoing already establish connections should be agreed $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Agree some ingoing connections on TCP ports # (to make my FTP server recheable from outside) $IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT $IPTABLES -A OUTPUT -o IFINTERNET--state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i IFINTERNET--state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o IFCUSTOMER --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i IFCUSTOMER --state ESTABLISHED,RELATED -j ACCEPT # we do not accept anything from or to internet (except icmp) $IPTABLES -A INPUT -i $IFINTERNET -j HOSTREJECT $IPTABLES -A OUTPUT -o $IFINTERNET -j HOSTREJECT # we do not accept anything from our customers (execpt icmp) $IPTABLES -A INPUT -i $IFCUSTOMER -j HOSTREJECT $IPTABLES -A OUTPUT -o $IFCUSTOMER -j HOSTREJECT # reject all other connection attemps with port unreachable $IPTABLES -A INPUT -i $IFDMZ -j PORTREJECT $IPTABLES -A OUTPUT -o $IFDMZ -j PORTREJECT $IPTABLES -A INPUT -i $IFADMIN -j PORTREJECT $IPTABLES -A OUTPUT -o $IFADMIN -j PORTREJECT # just to be sure that the policy is working: $IPTABLES -A INPUT -j PORTREJECT $IPTABLES -A OUTPUT -j PORTREJECT # Makes TCP port 80 (HTTP) and 443 (HTTPS) recheable $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT # Makes TCP et UDP port 139 recheable but only on internal interface "eth3, make my samba server recheable from my LAN $IPTABLES -A INPUT -p tcp --dport 137:139 -i IFCUSTOMER -j ACCEPT $IPTABLES -A INPUT -p udp --dport 137:139 -i IFCUSTOMER -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 445 -i IFCUSTOMER -j ACCEPT # I need my firewall to act as NAT server" $IPTABLES -t nat -A POSTROUTING -o IFINTERNET -j MASQUERADE # allow outgoing http/dns/rsync/snmp echo "allow firewall to perform updates and ssh connections from the admin network "; # allow http outbound from the firewall (updates etc.) to the internet $IPTABLES -A INPUT -i $IFINTERNET -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $IFINTERNET -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # Allow https outbound to 443. $IPTABLES -A INPUT -i $IFINTERNET -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $IFINTERNET -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # allow rsync outbound from the firewall (updates etc.) to the internet $IPTABLES -A INPUT -i $IFINTERNET -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $IFINTERNET -p tcp --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT # we accept ssh(22) connections from dmz $IPTABLES -A OUTPUT -o $IFDMZ -m state --state RELATED,ESTABLISHED -m tcp -p tcp --sport 22 -j ACCEPT $IPTABLES -A INPUT -i $IFDMZ -m state --state NEW,RELATED,ESTABLISHED -m tcp -p tcp --dport 22 -j ACCEPT # allow dns outbound from the firewall to the dmz $IPTABLES -A INPUT -i $IFDMZ -p udp -s $NAMESERVER --sport 53 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A INPUT -i $IFDMZ -p tcp -s $NAMESERVER --sport 53 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $IFDMZ -p udp -d $NAMESERVER --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $IFDMZ -p tcp -d $NAMESERVER --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT # FORWARD chain echo "setup forward chain"; $IPTABLES -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu $IPTABLES -A FORWARD -p tcp -j TCPFILTER $IPTABLES -A FORWARD -p udp -j UDPFILTER $IPTABLES -A FORWARD -p icmp -j ICMPFILTER $IPTABLES -A FORWARD -f -j FRAGMENTFILTER # allow all to NAMESERVER $IPTABLES -A FORWARD -s NAMESERVER - -state NEW -j ACCEPT $IPTABLES -A FORWARD -d NAMESERVER --m state --state NEW -j ACCEPT #Routing stuff echo "init of interfaces"; ifconfig eth0:10.11.57.3 netmask 255.255.255.0 up ; ifconfig eth2:172.16.0.1 netmask 255.255.255.0 up ; ifconfig eth1:172.19.0.1 netmask 255.255.255.0 up ; echo "routing to applications server"; $ROUTE add -host 172.16.0.2 dev eth2 echo "default route"; $ROUTE add default gw 10.11.57.1 echo "firewall setup completed.. exit 0 "; eend $? } stop() { ebegin "Stopping firewall" eend $? } ###################################################################################################### Donc dans le cas de mon firewall le fichier /etc/conf.d/net restera vide car l’exécution du firewall au boot configure les cartes reseaux. (eth1,eth2,eth3).La configuration des hotes sera comme suit Ex : IP address : 172.19.0.5 Gateway : 172.19.0.1 DNS : 172.16.0.2 FICHIER JOINT DE DNS PUBLIC (CERTAINS NE LE SONT PAS OU PLUS ) FAI NordNet Alice ADSL Bluewin CEGETEL (Ex SKYWORLD) Colt DeWinter EVC Freesurf LibertySurf M6net Magic Online Océanes Oleane Sunrise Tele2 Texio M1 Texio M3 Tiscali Belgique Tiscali Suisse TiscaliNet.fr Université Paris Sud Université Versailles VnuNet Waika9 Arachnet Freesbee Global Intranet Global Intranet Orange ns1.de.opennic.glue (Cologne, DE) DNS 194.206.126.253 212.216.172.62 195.186.1.111 / 195.186.4.111 194.6.128.3 / 194.6.128.4 195.68.0.1 / 195.68.0.2 195.68.0.11 / 195.68.0.12 80.86.194.10 212.95.66.1 / 212.95.66.2 212.43.206.2 / 212.43.206.3 194.149.160.1 / 195.154.223.1 194.149.160.1 / 194.149.160.9 194.149.160.1 / 195.154.223.1 212.30.96.108 / 212.30.96.123 Serveur DNS 1 ns0.gaoland.net / 80.118.192.100 Serveur DNS 2 ns1.gaoland.net / 80.118.196.36 Serveur DNS 3 ns2.gaoland.net / 80.118.192.110 212.43.206.2 / 212.43.206.3 195.115.116.10 / 195.115.116.11 194.2.0.20 / 194.2.0.50 194.158.230.53 / 194.158.230.54 dns1.swip.net: 130.244.127.161 dns2.swip.net: 130.244.127.169 dns1-fr.swip.net: 212.151.136.242 dns2-fr.swip.net: 212.151.136.246 NS1.TEXIONET.COM : 62.23.140.68 NS2.TEXIONET.COM : 62.23.140.67 NS3.TEXIONET.COM : 213.41.66.202 NS4.TEXIONET.COM : 213.41.66.203 212.233.1.34 / 212.233.2.34 212.40.0.10 / 212.40.5.50 212.47.227.206 / 212.47.227.207 193.55.10.101 / 193.55.10.102 193.51.24.1 194.149.160.9 / 194.149.160.1 212.27.32.5 / 212.27.32.6 203.30.44.23 / 203.30.44.24 212.129.0.2 217.109.143.240 / 217.109.143.252 217.109.143.240 / 217.109.143.252 80.10.246.2 / 80.10.246.129 217.115.138.24 NO NO NO NO NO OPERABILITE OK OK OK OK OK NO NO NO NO NO NO OK OK OK OK OK OK NO OK NO NO OK OK NO OK NO OK NO OK NO NO NO NO NO NO NO NO NO NO NO NO NO OK OK OK OK OK OK OK OK OK OK OK OK OK ns1.jp.opennic.glue (Tokyo, JP) 219.127.89.34 NO OK ns2.jp.opennic.glue (Tokyo, JP) 219.127.89.37 NO OK ns1.nz.opennic.glue (Auckland, NouvelleZélande) 202.89.131.4 NO OK ns1.uk.opennic.glue (Londres, Royaume-Uni) 194.164.6.112 NO OK ns1.phx.us.opennic.glue (Phoenix, AZ, États-Unis) 63.226.12.96 NO OK REMARQUES 643ms ttl=50ms ns1.sfo.us.opennic.glue (San Francisco, Californie, ÉtatsUnis) 64.151.103.120 NO OK ns1.co.us.opennic.glue (Longmont, CO, États-Unis) 216.87.84.209 NO OK ns1.ca.us.opennic.glue (Los Angeles, Californie, ÉtatsUnis) 67.102.133.222 NO OK bigguy.gte.net 206.124.64.1 NO OK ns1.granitecanyon.com 205.166.226.38 NO OK ns2.granitecanyon.com 69.67.108.10 NO OK - 199.166.29.3 NO OK NS1.QUASAR.NET - Orlando, Floride, États-Unis 199.166.31.3 NO OK Speakeasy Nameservers 66.93.87.2 216.231.41.2 216.254.95.2 64.81.45.2 64.81.111.2 64.81.127.2 64.81.79.2 64.81.159.2 66.92.64.2 66.92.224.2 66.92.159.2 64.81.79.2 64.81.159.2 64.81.127.2 64.81.45.2 216.27.175.2 66.92.159.2 66.93.87.2 NO OK SprintLink général DNS 204.117.214.10 199.2.252.10 204.97.212.10 NO OK Cisco 128.107.241.185 192.135.250.69 NO OK ns1.mailworx.net 69.1.200.68 NO OK usenet.net.nz 202.49.59.6 NO OK zbasel.fortytwo.ch 193.138.215.60 NO OK ns.second-ns.de 213.133.105.2 NO OK ns2.your-server.de 213.133.106.251 NO OK nl.public.rootfix.net Nederlands Speakeasy Nameservers Le tutoriel reste ouvert je reteste certaines configuration enfin de pouvoir étendre les fonctionnalités du SMALL BUSNESS LINUX SERVER Au fait il y a cacti pour le monitoring des hosts aller voir sur mon site http://www.familyfossua.com sous la rubrique tutoriels linux d’ailleurs j’etendrais le tutoriel actuel avec une configuration actualisé de l’installation de cacti . Bonne Lecture