Installation d'un serveur maison sous Ubuntu

Nos besoins

  • Serveur DHCP (Dhcpd)
  • Serveur DNS (DnsMasq)
  • Serveur FTP (Proftpd)
  • Serveur Partage (Samba)
  • Serveur NTP (ntp)
  • Serveur Proxy (Tinyproxy)
  • Serveur SSH (OpenSSH)
  • Serveur d'impression (CUPS)
  • Firewall (Firehol)

Situation

  • R : Interface internet eth1
  • G : Interface intranet eth0

Je pars d'une situation assez simple. Je suis chez Free avec la Freebox configurée sans Wifi ni Routeur, donc côté interface R nous configurons l'interface en dhcp. Et côté interface G nous configurons une IP fixe.

PNG - 6.7 ko

Configuration

Accès Root

Personnellement je préfère travailler sous root. Faites donc :

sudo passwd

Vous pourrez maintenant vous connecter sous root

Sources.list

deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted

# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas enlever les #)
# deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
# deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted


deb http://archive.ubuntu.com/ubuntu/ hardy universe multiverse
deb http://security.ubuntu.com/ubuntu hardy-security universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-updates universe multiverse

# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas enlever les #)
# deb-src http://archive.ubuntu.com/ubuntu/ hardy universe multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates universe multiverse
# deb-src http://security.ubuntu.com/ubuntu hardy-security universe multiverse

Serveur OpenSSH

Nous allons installer OpenSSH-server pour pouvoir travail depuis une station graphique :

apt-get install openssh-server

Le Réseau

/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# Internet
auto eth1
iface eth1 inet dhcp

#Intranet
auto eth0
iface eth0 inet static
name NOM
address 10.18.2.1
netmask 255.255.255.0
broadcast 10.18.2.255
network 10.18.2.0
gateway 10.18.2.1

/etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.ip_forward=1

Serveur Dhcpd

apt-get install dhcpd

/etc/default/dhcp

INTERFACES="eth0"

/etc/dhcpd.conf

option domain-name "VOTRE_NOM_DE_DOMAINE";
# Mettez ici l'adresse de votre serveur, où celles fournies par votre FAI
# qui se trouvent dans le fichier /etc/resolv.conf
option domain-name-servers VOS_SERVEURS_DNS;
option routers 10.18.2.1;
default-lease-time 3600;
max-lease-time 7200;
authorative;
log-facility local7;
ddns-update-style ad-hoc;

subnet 10.18.2.0 netmask 255.255.255.0 {
authoritative;
range 10.18.2.2 10.18.2.49;
option broadcast-address 10.18.2.255;
}

DNSMASQ

apt-get install dnsmasq

/etc/dnsmasq.conf

dhcp-range=10.18.2.2,10.18.2.49
interface=eth0
/etc/init.d/dnsmasq restart

Firewall

apt-get install firehol

/etc/default/firehol

#To enable firehol at startup set this everything != NO
START_FIREHOL=YES

/etc/firehol/firehol.conf

version 5

interface eth0 home
policy accept

interface eth1 internet
protection strong
# Serveurs auxquels on peut acceder depuis Internet
server "imap imaps smtp http ftp ssh dns" accept
# Sorties autorisees a partir du serveur
client "squid http https ftp smtp smtps ssh dns ping rsync ntp" accept

router home2internet inface eth0 outface eth1
route "ftp jabber telnet time cups ping pop3 pop3s dhcp dns http https rsync rtp icmp imap imaps nntp ntp smtp smtps ssh squid sip" accept
masquerade

#redirection Proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
/etc/init.d/firehol restart

Serveur Proxy

apt-get install tinyproxy

/etc/tinyproxy/tinyproxy.conf

#
# Port to listen on.
#
Port 3128

Allow 127.0.0.1
Allow 10.18.2.0/25
/etc/init.d/tinyproxy restart

Serveur NTP

apt-get install ntp

Serveur FTP

apt-get install proftpd

/etc/proftpd/proftpd.conf

ServerType standalone

MultilineRFC2228 on

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30

# Some logging formats
LogFormat default "%h %l %u %t \\"%r\\" %s %b"
LogFormat auth "%v [%P] %h %t \\"%r\\" %s"
LogFormat write "%h %l %u %t \\"%r\\" %s %b"

# Global settings


DeferWelcome off

#DefaultServer on
#ShowSymlinks on
ListOptions "-l"
DenyFilter \\*.*/

DisplayConnect before.msg
DisplayLogin welcome.msg
DisplayFirstChdir .message

MaxLoginAttempts 2
RequireValidShell no
MaxClients 50

# Umask 022 interdit l'écriture et la creation de fichier et de répertoire.
Umask 022 022
TimeoutLogin 120
TimeoutNoTransfer 900
TimeoutStalled 3600
TimeoutIdle 600

# utilisateur et groupe du serveur.
User ftp
Group nogroup

# Chroot PROFTPD
DefaultRoot ~

# Logging options
TransferLog /var/spool/syslog/proftpd/xferlog.legacy


DenyAll

Serveur CUPS

apt-get install hpijs-ppds linuxprinting.org-ppds hpijs cupsys

/etc/cups/cupsd.conf

# Only listen for connections from the local machine.
# Listen localhost:631
Port 631

# Show shared printers on the local network.
Browsing On

# Restrict access to the admin pages...

Order allow,deny
Allow localhost
Allow @LOCAL
/etc/init.d/cupsys restart

Serveur Samba

/etc/samba/smb.conf (exemple Ubuntu)
#remplacez "nomd'utilisateur" par le nom de l'utilisateur qui héberge les dossiers
#tapez whoami pour connaître ce nom d'utilisateur si vous n'êtes pas sûr
#Ces dossiers sont en lecture seule mais cela peut être modifié grâce à
#l'option "read only"

[global]
workgroup = workgroup
netbios name = %h
server string = serveur %h (Samba %v, Ubuntu)
security = share
hide dot files = yes
socket options = TCP_NODELAY

[Musique]
comment = Musique
path = /home/nomd'utilisateur/Musique
force user = nomd'utilisateur
force group = nomd'utilisateur
guest ok = yes
read only = yes
browseable = yes

[Videos]
comment = Videos
path = /home/nomd'utilisateur/Videos
force user = nomd'utilisateur
force group = nomd'utilisateur
guest ok = yes
read only = yes
browseable = yes

[Upload et Sauvegardes]
comment = Upload
path = /home/nomd'utilisateur/Upload
force user = nomd'utilisateur
force group = nomd'utilisateur
guest ok = yes
read only = no
browseable = yes
/etc/init.d/samba restart

Conclusion

Voilà c'est fini. Cependant sachez qu'il existe des solutions logiciels pour facilité tous cela, comme SME Serveur ou eBox. D'ailleurs, je suis de très prés le projet eBox, j'attends avec impatience la prochaine release.

PNG - 46.6 ko
status

Sources

L'article n'est pas fini, je vais compléter sous peu ;)

Vus : 878
Publié par TheLinuxFr : 61