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.
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.
Sources
L'article n'est pas fini, je vais compléter sous peu ;)