Le hardware est identique au zotac précédemment reçu, un ND-01 à part le processeur et la ram (ici 2 x 512 Mo).
On peut donc obtenir les températures du processeur et de la carte graphique de la même manière.
Le disque dur étant également un 160 go, 2 partition sont créées :
- une première de 2 go pour le swap (qui ne servira surement pas...)
- une 2è formée en ext4, montée en /

Concernant le réseau, l'integrée en gigabit servira pour la connexion au réseau local, et une 2è interface réseau sera ajoutée grâce à une carte USB précédemment achetée, et sera reliée à la freebox (en mode bridge, donc en simple modem avec la partie routeur désactivée).

Une fois le système fonctionnel, et le réseau (local uniquement pour le moment) configuré, on va se définir un script de firewall ne permettant d'autoriser que ce que l'on souhaite, et refuser le reste.
On édite (en root) le fichier /etc/init.d/firewall:

#!/bin/bash

### BEGIN INIT INFO
# Provides:        firewall
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:    1
# Description:     IPtables security
### END INIT INFO


. /lib/lsb/init-functions


## interfaces
ILAN=eth0
ILAN_IP=192.168.1.1
ILAN_MASK=192.168.1.0/24
IWAN=eth1
IWAN_IP=xxx.xxx.xxx.xxx

IPT=$(which iptables)

fw_stop()
{

  echo 0 > /proc/sys/net/ipv4/ip_forward
  echo 0 > /proc/sys/net/ipv4/tcp_syncookies

  modprobe -r ip_nat_ftp
  modprobe -r ip_conntrack_ftp

  $IPT -F
  $IPT -X
  $IPT -t nat -F
  $IPT -t nat -X

  $IPT -P INPUT ACCEPT
  $IPT -A INPUT -i $IWAN -j DROP
  $IPT -P OUTPUT ACCEPT
  $IPT -P FORWARD ACCEPT

}

fw_start()
{

  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  modprobe ip_nat_ftp
  modprobe ip_conntrack_ftp

  $IPT -F
  $IPT -X
  $IPT -t nat -F
  $IPT -t nat -X

  ## chains
  $IPT -N wan-me
  $IPT -A INPUT -i $IWAN -j wan-me
  $IPT -N lan-me
  $IPT -A INPUT -i $ILAN -s $ILAN_MASK -j lan-me
  $IPT -N lan-wan
  $IPT -A FORWARD -i $ILAN -s $ILAN_MASK -o $IWAN -j lan-wan
  $IPT -N wan-lan
  $IPT -A FORWARD -i $IWAN -o $ILAN -j wan-lan

  ## defaults
  $IPT -P INPUT DROP
  $IPT -P OUTPUT ACCEPT
  $IPT -P FORWARD DROP

  ## autorise le local
  $IPT -A INPUT -i lo -j ACCEPT

  ## autorise le lan
  $IPT -A lan-me -j ACCEPT

  ## drope les invalides et tcp ne commencant pas par un syn
  $IPT -A INPUT -m state --state INVALID -j DROP
  $IPT -A INPUT -m state --state NEW -p tcp ! --tcp-flags ALL SYN -j DROP

  ## refuse les connections venant d'ip privées sur la publique
  $IPT -A wan-me -s 127.0.0.0/8 -j DROP
  $IPT -A wan-me -s 10.0.0.0/8 -j DROP
  $IPT -A wan-me -s 169.254.0.0/16 -j DROP
  $IPT -A wan-me -s 172.16.0.0/12 -j DROP
  $IPT -A wan-me -s 192.168.0.0/16 -j DROP

  # accepte les connexions entrantes directes relatives et etablies
  $IPT -A wan-me -d $IWAN_IP -m state --state RELATED,ESTABLISHED -j ACCEPT

  ## connections entrantes directes
  $IPT -A wan-me -d $IWAN_IP -p icmp -s 1.2.3.4 -j ACCEPT
  $IPT -A wan-me -d $IWAN_IP -p tcp --dport 22 -j ACCEPT

  ## nat entrant
  $IPT -A wan-lan -m state --state RELATED,ESTABLISHED -j ACCEPT
  $IPT -A wan-lan -p tcp -d 192.168.1.2 --dport 22 -j ACCEPT
  $IPT -t nat -A PREROUTING -i $IWAN -d $IWAN_IP -p TCP --dport 222 -j DNAT --to-destination 192.168.1.2:22
  $IPT -A wan-lan -p tcp -d 192.168.1.20 --dport 6883 -j ACCEPT
  $IPT -t nat -A PREROUTING -i $IWAN -d $IWAN_IP -p TCP --dport 6883 -j DNAT --to-destination 192.168.1.20

  ## nat sortant
  $IPT -A lan-wan -j ACCEPT
  $IPT -t nat -A POSTROUTING -o $IWAN -j SNAT --to-source $IWAN_IP
  
  ## drop les input restants
  $IPT -A INPUT -p tcp -j TARPIT
  $IPT -A INPUT -j DROP

  ## drop les forward restants
  $IPT -A FORWARD -j DROP
}


case "$1" in
  start)
    log_begin_msg "Starting firewall ... "
    fw_start
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping firewall ... "
    fw_stop
    log_end_msg 0
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  test)
    $0 start
    echo "APPUYEZ SUR CTRL+C POUR ANNULER LE REBOOT DANS 30 SECONDES"
    sleep 30
    reboot
    ;;
  status)
    log_action_msg "----------------- [FILTER] ------------------"
    echo ""
    $IPT -L -v
    echo ""
    log_action_msg "----------------- [NAT] ------------------"
    echo ""
    $IPT -t nat -L -v
    echo ""
    ;;
  *)
    log_action_msg "Usage: /etc/init.d/firewall {start|stop|restart|test|status}"
    exit 1
    ;;
esac
exit 0

Vous pouvez télécharger directement ce script en cliquant ici ;)

Explications : - Dans la partie "interfaces", on déclare les interfaces réseau et leur adresse IP.
- Ensuite on bloque par défaut les input et les forward
- on autorise l'interface locale (lo) et le réseau local (sur eth0) à se connecter au firewall
- on définit des protections de base pour rejetter des paquets n'ayant rien à faire la
- on passe aux connexions entrantes directes
- on autorise l'ip source 1.2.3.4 à pinger notre machine
- on autorise la connexion sur le port 22 pour le ssh
- maintenant le NAT entrant, c'est à dire les connections venant de l'exterieur qui vont être redirigées vers des machines sur le réseau local
- on redirige le port 222 vers la machine interne 192.168.1.2 sur le port 22
- on redirige le port 6883 vers la machine interne 192.168.1.20
- puis on autorise les machines du réseau local à sortir, en utilisant en adresse IP source notre ip publique définie précédemment
- enfin, on fait un TARPIT et DROP sur tout le reste :D

Pour le DROP, cela indique que la connexion est fermée, et surtout qu'on n'y répond pas (afin d'éviter le flood...)
Pour le TARPIT, il faut avoir installé une version récente d'iptables et xtables. c'est une règle très sympathique, valable uniquement en TCP, indiquant à l'émetteur qu'il ne peut plus émettre vers notre IP et doit ré-essayer plus tard, ce qui le ralentit considérablement ! :p
Pour plus d'explications la dessus, voire cet article de Philippe Humeau sur wikigento.com
Tarpit n'étant pas installé de base sur ubuntu 9.10 vous pouvez commenter cette ligne.

Afin d'installer ce script de firewall, téléchargez le puis mettez le dans /etc/init.d/firewall, et rendez le executable.

Le Firewall étant maintenant configuré, on peut alors brancher notre freebox sur notre raccord usb/rj45, puis activer le firewall

/etc/init.d/firewall start


On fait en sorte que le module asix et le firewall se chargent automatiquement au démarrage de la machine

echo asix >> /etc/modules
update-rc.d -f firewall defaults


Pour arreter le firewall si besoin :

/etc/init.d/firewall stop


Pour afficher le status des règles :

/etc/init.d/firewall status

(c'est toujours intéressant de noter combien de paquets ont été acceptés ou tarpités/droppés lol )


On peut alors profiter du net sereinement :)