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