Réseau@elaboratoire

De Breizh-Entropy
Aller à la navigation Aller à la recherche

Architecture physique

Une première proposition pourrait ressembler à ça:

Elabo.png


Architecture logique

Adressage IP

  • Réseau: 10.42.0.0/20
    • Infrastructure : 10.42.0.0/23
      • Serveurs etc : 10.42.0.0 /24
        • Routeur: 10.42.0.1
        • Serveurs: 10.42.0.2-254
      • Reservé : 10.42.1.0 /24
    • Hackerspace : 10.42.2.0/23
      • 10.42.2.1/24
        • Routeur : 10.42.2.1
        • Clients : 10.42.2.2-254
      • Reservé: 10.42.3.0/24
    • 48 : 10.42.4.0/23
      • Normal : 10.42.4.0/24
        • Routeur : 10.42.4.1
        • Clients : 10.42.4.2-254
      • Anonyme : 10.42.5.0/24
        • Routeur : 10.42.5.1
        • Clients : 10.42.5.2-254
    • Chardonet : 10.42.6.0/23
      • Normal : 10.42.6.0/24
        • Routeur : 10.42.6.1
        • Clients : 10.42.6.2-254
      • Anonyme : 10.42.7.0/24
        • Routeur : 10.42.7.1
        • Clients : 10.42.7.2-254
    • Reservé: 10.42.8.0/23
      • Reservé: 10.42.8.0/24
      • Reservé: 10.42.9.0/24
    • Reservé: 10.42.10.0/23
      • Reservé: 10.42.10.0/24
      • Reservé: 10.42.11.0/24
    • Reservé: 10.42.12.0/23
      • Reservé: 10.42.12.0/24
      • Reservé: 10.42.13.0/24
    • Reservé: 10.42.14.0/23
      • Reservé: 10.42.14.0/24
      • Reservé: 10.42.15.0/24


  • DN42: 172.22.108.0/23
    • Infra: 172.22.108.0/24
      • Routeur: 172.22.108.1
        Réservé: 172.22.108.2-254
        TODO: /25 pour les serveurs ?
    • Clients hackerspace: 172.22.109.0/24
      • Routeur: 172.22.109.1
      • Clients: 172.22.109.2-254

Topologie

  • 2 Vlan / SSIDs proposés sur le wifi:
    • 1 vlan pour les clients normaux
    • 1 vlan pour les clients anonymes.

Notes

  • Connexion anonyme via VPN toile-libre.
  • Accès IPv6 pour clients normaux.
  • Accès DN42 pour les clients normaux.
  • Chardonnet et 48 relié par pont wifi + VPN en backup (limité à 1Mb/s)
  • Pourquoi un/des serveur(s): Pour proposer quelques services, typiquement partage de fichier, boot réseaux vers des livecds etc
  • Pourquoi plein d'adresses reservées ? Pour prévoir une config un peu large permettant de ne pas avoir à tout casser en cas de nouveau besoin (typiquement, interco avec un autre site)

TODO

  • Documenter, documenter, documenter, documenter ...
  • Inventaire matos
  • Mise en place routeur
  • Mise en place premier AP wifi

Inventaire materiel

  • 1x Firebox x550: PC 1ghz 512 Mb ram 8 ports réseau 100Mb/s
  • 1x poweredge 1950: PC 2x Xeon 3Ghz , 2 go de ram , 2x36Go SCSI.
  • 2x NSLU2

Configurations

Routeur 1

Materiel

Firebox x550: PC 1ghz 512 Mb ram 8 ports réseau 100Mb/s

OS

Debian squeeze.

Partionnement:

  • /dev/sda5 : /boot => 100Mo
  • /dev/sda6 : LVM => Reste
    • / => 1Go
    • /usr => 2Go
    • /var => 2Go
    • swap => 1Go
    • reste => inutilisé

Interfaces

auto lo
iface lo inet loopback

#infra normal etc
auto eth1
iface eth1 inet static
    address 10.42.0.1
    netmask 255.255.255.0

# Hackerspace
auto eth2
iface eth2 inet static
    address 10.42.2.1
    netmask 255.255.255.0

# 48 normal
auto eth3
iface eth3 inet static
    address 10.42.4.1
    netmask 255.255.255.0

# 48 Anonyme
auto eth4
iface eth4 inet static
    address 10.42.5.1
    netmask 255.255.255.0

IPv6

nano /etc/network/interfaces
---
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
	endpoint 216.66.84.42
	address	TODO
	netmask 64
	up	ip -6 route add 2000::/3 dev he-ipv6
	down	ip -6 route add 2000::/3 dev he-ipv6
	mtu	1480

auto dummy0
iface dummy0 inet6 static
	address TODO
	netmask 64
---
apt-get install radvd

VPN

https://www.toile-libre.org/fr/node/102

Firewall

(work in progress)

#########################################################################################################
# RAZ
#########################################################################################################
iptables -F
iptables -X

ip6tables -F
ip6tables -X

iptables -t nat -F
iptables -t nat -X

#########################################################################################################
# On commence par definir une serie de variable pour associer les interfaces au type de réseau.
#########################################################################################################

# interfaces physiques
INTERNET=eth0
SERVEURS=eth1
HACKERSPACE=eth2
CLIENTS=eth3
ANONYMES=eth4

# interfaces virtuelles
VPN=tap0
DN42=tap1
INTERNET6=he-ipv6

#########################################################################################################
# On definit quelques fonctions utilitaires
#########################################################################################################

# iptables pour ipv6 et ipv4
ip46tables () {
    iptables $@
    ip6tables $@
}

# aliases
FW = ip46tables
FW4 = iptables
FW6 = ip6tables

# log et refuse le paquet
$FW -N LOGREJECT
$FW -A LOGREJECT -j LOG
$FW -A LOGREJECT -j REJECT

# log et efface le paquet
$FW -N LOGDROP
$FW -A LOGDROP -j LOG
$FW -A LOGDROP -j DROP

# log et accepte le paquet
$FW -N LOGACCEPT
$FW -A LOGACCEPT -j LOG
$FW -A LOGACCEPT -j ACCEPT

#########################################################################################################
# Cas du traffic entrant sur le routeur
#########################################################################################################

$FW -A INPUT -i $HACKERSPACE -j ACCEPT
$FW -A INPUT -i $CLIENTS -j ACCEPT
$FW -A INPUT -i $ANONYMES -j ACCEPT
$FW -A INPUT -i $SERVEURS -j ACCEPT

$FW -N INPUT_INTERNET
$FW -N INPUT_DN42
$FW -A INPUT -i $INTERNET -j INPUT_INTERNET
$FW -A INPUT -i $DN42 -j INPUT_DN42

$FW -A INPUT -j LOGDROP

#########################################################################################################
# Cas du traffic sortant depuis le routeur
#########################################################################################################

# on accepte tout
$FW -A OUTPUT $INTERNET -j ACCEPT

#########################################################################################################
# Cas du traffic que le routeur transfere
#########################################################################################################

###########################
# Clients
###########################
$FW -A FORWARD -i $CLIENTS -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $HACKERSPACE -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $ANONYMES -j ACCEPT

###########################
# Clients Anonymes
###########################
$FW -A FORWARD -i $ANONYMES -o $VPN -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $HACKERSPACE -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $CLIENTS -j ACCEPT

###########################
# hackerspace
###########################
$FW -A FORWARD -i $HACKERSPACE -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $INTERNET6 -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $CLIENTS -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $ANONYMES -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $DN42 -j ACCEPT

###########################
# Serveurs
###########################
$FW -A FORWARD -i $SERVEURS -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $CLIENTS -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $ANONYMES -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $HACKERSPACE -j ACCEPT

###########################
# Internet
###########################
$FW -A FORWARD -i $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
$FW -A FORWARD -i $INTERNET6 -m state --state RELATED,ESTABLISHED -j ACCEPT

$FW -N FWD_INTERNET
$FW -A FORWARD -i $INTERNET -J FWD_INTERNET
$FW -A FORWARD -i $INTERNET6 -J FWD_INTERNET

###########################
# VPN
###########################
$FW -A FORWARD -i $VPN -m state --state RELATED,ESTABLISHED -j ACCEPT

###########################
# DN42
###########################
$FW -A FORWARD -i $DN42 -m state --state RELATED,ESTABLISHED -j ACCEPT

$FW -N FWD_DN42
$FW -A FORWARD -i $DN42 -J FWD_DN42

###########################
# RESTE
###########################
$FW -A FORWARD -j LOGDROP

#########################################################################################################
# Cas particuliers
#########################################################################################################

# trafic internet -> routeur
$FW4 -A INPUT_INTERNET -p icmp -j ACCEPT
$FW6 -A INPUT_INTERNET -p icmpv6 -j ACCEPT
$FW -A INPUT_INTERNET -p tcp -m tcp --dport 22 -j ACCEPT

# trafic dn42 -> routeur
$FW4 -A INPUT_DN42 -p icmp -j ACCEPT
$FW6 -A INPUT_DN42 -p icmpv6 -j ACCEPT
$FW -A INPUT_DN42 -p tcp -m tcp --dport 22 -j ACCEPT

# TODO: mettre ici l'hébergement de services.

#########################################################################################################
#		NAT
#########################################################################################################

$FW4 -t nat -P PREROUTING ACCEPT
$FW4 -t nat -P POSTROUTING ACCEPT
$FW4 -t nat -P OUTPUT ACCEPT

$FW4 -t nat -A POSTROUTING -d -i $SERVEURS -o $INTERNET -j MASQUERADE
$FW4 -t nat -A POSTROUTING -d -i $HACKERSPACE -o $INTERNET -j MASQUERADE
$FW4 -t nat -A POSTROUTING -d -i $CLIENTS  -o $INTERNET-j MASQUERADE

$FW4 -t nat -A POSTROUTING -d -i $ANONYMES -o $VPN -j MASQUERADE

$FW4 -t nat -A POSTROUTING -d -i $HACKERSPACE -o $DN42-j MASQUERADE

#########################################################################################################
# END !
#########################################################################################################
iptables-save > /etc/iptables.conf
ip6tables-save > /etc/ip6tables.conf

DHCP

ddns-update-style none;
update-static-leases on;

//option domain-name "@DOMAIN";
//option domain-name-servers @DNSIP1, @DNSIP2;
option netbios-name-servers 10.42.0.2;


default-lease-time 600;
max-lease-time 7200;

authoritative;
log-facility local7;

// We don't use dhcp in the server range
//subnet 10.42.0.0 netmask 255.255.255.0 {
//  option routers 10.42.0.1;
//  option domain-name-servers 10.42.0.1, 10.42.0.2;
//
//  pool {
//     range 10.42.0.2 10.42.0.254;
//  }
//}

//hackerspace
subnet 10.42.2.0 netmask 255.255.255.0 {
  option routers 10.42.2.1;
  option domain-name-servers 10.42.2.1, 10.42.0.2;

  pool {
     range 10.42.2.2 10.42.2.254;
     range 172.22.109.2 172.22.109.254 // c'est valide ça ?
  }
}

// clients 48
subnet 10.42.4.0 netmask 255.255.255.0 {
  option routers 10.42.4.1;
  option domain-name-servers 10.42.4.1, 10.42.0.2;

  pool {
     range 10.42.4.2 10.42.4.254;
  }
}

// anonymes 48
subnet 10.42.3.0 netmask 255.255.255.0 {
  option routers 10.42.3.1;
  option domain-name-servers 10.42.3.1, 10.42.0.2;

  pool {
     range 10.42.5.2 10.42.5.254;
  }
}

DNS

apt-get install bind
nano /etc/bind/named.conf.options
nano /etc/bind/named.conf.local

Monitoring

apt-get install logcheck nano /etc/cron.d/logcheck apt-get install rkhunter apt-get install munin-node

Serveur

Materiel

poweredge 1950: PC 2x Xeon 3Ghz , 2 go de ram , 2x36Go SCSI.

OS

Debian squeeze.

2 disques partionnés de manière identique pour raid

  • 1x Raid 1 100 Mo => /boot
  • 1x Raid 1 X Go => LVM
    • / => 1Go
    • /usr => 2Go
    • /var => 2Go
    • Reste => TODO
  • 2x Swap 1Go

Disque de données ?

  • /srv/data
    • /srv/data/shared
    • /srv/data/homes

Monitoring

apt-get install logcheck nano /etc/cron.d/logcheck apt-get install rkhunter apt-get install munin munin-node

Samba

apt-get install samba
nano /etc/samba/smb.conf
---
security = TODO
wins support = yes

[partage]
    path = /srv/data/shared
    read only = no
    create mask = 0777
    directory mask = 0777
    guest ok = yes
---

NFS

apt-get install nfs-kernel-server
nano /etc/exports
---
# TODO: corriger
/srv/data/	 10.42.*.*(rw,async,fsid=0,no_subtree_check,root_squash)
---

FTPD

apt-get install pure-ftpd

TFTP

TODO

apache

apt-get install apache2

php (fcgid)

apt-get install php-cgi libapache2-mod-fcgi

mysql

apt-get install mysql-server mysql-client