OVH Cloud OVH Cloud

Samba et la sécu

2 réponses
Avatar
Stéphane
Bonjour,

sur lea, j'ai trouvé mon bonheur pour installer samba mais ils précisent
bien que côté sécurité, leur article n'en parle pas et considère qu'on
n'est pas connecté au net... Ma question est donc toute simple : comment
fait-on pour sécuriser un serveur linux sur lequel tourne samba (sachant
que le pc est connecté par adsl et sert également à partager la
connexion pour le pc sous windows...)

Si vous avez quelques liens qui traitent le sujet, je suis preneur !

Stéphane

2 réponses

Avatar
TiChou
Dans l'article news:403135fc$0$16509$,
Stéphane écrivait :

Bonjour,


Bonsoir,

comment fait-on pour sécuriser un serveur linux sur lequel tourne samba
(sachant que le pc est connecté par adsl et sert également à partager la
connexion pour le pc sous windows...)


Pour que Samba ne soit pas accessible depuis Internet on peut dans un
premier temps le configurer pour qu'il n'écoute que sur l'adresse IP et
l'interface réseau locale du serveur Linux et qu'il n'accèpte que les
connexions des hôtes locaux, ce qui peut être fait en plaçant les lignes
suivantes dans la section global du fichier de configuration smb.conf :

[global]
...
interfaces = eth0
socket address = 192.168.150.1
bind interfaces only = yes
hosts allow = 192.168.150. 127.
...

Deuxième chose, il est recommandé d'avoir un firewall configuré sur votre
serveur Linux au moyen de règles Netfilter/iptables. Il existe bon nombre de
scripts permettant d'installer facilement un firewall, comme Shorewall.

--
TiChou

Avatar
LECLERCCQ Hubert
Bonsoir


Deuxième chose, il est recommandé d'avoir un firewall configuré sur votre
serveur Linux au moyen de règles Netfilter/iptables. Il existe bon
nombre de
scripts permettant d'installer facilement un firewall, comme Shorewall.

Voilà une base de firewall qui, je l'espère, vous sera utile:


N'hésitez pas à m'écrire SANS FAUTE si vous ne comprenez pas tout


------------------------------------------------------------------------

#!/bin/sh

ETH0=eth0 # Connexion Intranet
PPP0=ppp0 # Connexion Internet

PRIVATE2.168.0.0/16 # Réseau privé global
PRIVATE12.168.0.0/24 # Réseau privé avec accès internet

function Clear()
{
iptables -F
iptables -t nat -F
iptables -t filter -F
}

function Open()
{
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
}

function Close()
{
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
}

function Local()
{
Clear
Close

######################
# Autorise le loopback
iptables -A INPUT -i $ETH0 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -i $ETH0 -d 127.0.0.1 -j ACCEPT

########################################
# Autorise le trafic sur le réseau privé global
iptables -A INPUT -i $ETH0 -s $PRIVATE -d $PRIVATE -j ACCEPT

############################################################
# Bloque les sorties sur internet pour le réseau privé
iptables -A OUTPUT -o $PPP0 -j REJECT
iptables -A FORWARD -o $PPP0 -j REJECT

Open
}

function Stop()
{
Clear
Open
}

function Start()
{
Clear
Close
#########################################################################
# Gestion des protections #
#########################################################################

#############################################
# Loopback ne peut pas transiter par internet
iptables -A INPUT -i $PPP0 -s 127.0.0.1 -j DROP
iptables -A FORWARD -i $PPP0 -s 127.0.0.1 -j DROP
iptables -A INPUT -i $PPP0 -d 127.0.0.1 -j DROP
iptables -A FORWARD -i $PPP0 -d 127.0.0.1 -j DROP

##################################################
# Adresses privées ne peuvent pas venir d'internet
iptables -A INPUT -i $PPP0 -s 10.0.0.0/8 -j DROP
iptables -A FORWARD -i $PPP0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i $PPP0 -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i $PPP0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i $PPP0 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $PPP0 -s 192.168.0.0/16 -j DROP

#########################################
# Bloque les sorties Netbios sur internet (ne gêne pas le trafic local)
iptables -A FORWARD -o $PPP0 -p TCP --dport 137:139 -j REJECT
iptables -A FORWARD -o $PPP0 -p UDP --dport 137:139 -j REJECT
iptables -A OUTPUT -o $PPP0 -p TCP --dport 137:139 -j REJECT
iptables -A OUTPUT -o $PPP0 -p UDP --dport 137:139 -j REJECT

###########################################################
# Les sorties sur internet doivent provenir du réseau privé
iptables -A FORWARD -i $ETH0 -s ! $PRIVATE -j DROP

#########################################################################
# Gestion des redirections #
#########################################################################

#########################################################################
# Gestion du réseau privé #
#########################################################################

######################
# Autorise le loopback
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -d 127.0.0.1 -j ACCEPT

########################################
# Autorise le trafic sur le réseau privé global
iptables -A INPUT -i $ETH0 -s $PRIVATE -d $PRIVATE -j ACCEPT

############################################################
# Autorisation des sorties sur internet pour le réseau privé
iptables -A FORWARD -o $PPP0 -s $PRIVATE -j ACCEPT

#########################################################################
# Adresses autorisées #
#########################################################################

#########################################################################
# Gestion des services #
#########################################################################
# ping
iptables -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT
# dns
iptables -A INPUT -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
# smtp
iptables -A INPUT -p TCP --dport 25 -j ACCEPT
# pop3
iptables -A INPUT -p TCP --dport 110 -j ACCEPT
# ssh
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
# Trafic VPN
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

#########################################################################
# Ajustement final #
#########################################################################
# Connections venant de l'extérieur
iptables -A INPUT -i $PPP0 -p TCP --syn -j LOG --log-level notice
iptables -A INPUT -i $PPP0 -p TCP --syn -j DROP
# Masquage du réseau privé vers internet
iptables -t nat -A POSTROUTING -o $PPP0 -s $PRIVATE -j MASQUERADE
# Ouverture du trafic
Open
}

case "$1" in
open)
Open
;;
close)
Close
;;
local)
Local
;;
stop)
Stop
;;
start)
Start
;;
*)
echo $"Usage: $0 {open | close | local | stop | start}"
exit 1
esac
Bonjour,


ce petit message simplement pour te remercier.
Ca fait 3 semaines que je galere avec shorewall et iptables (j'étais
même sur le point d'abandonner et de retourner sous Windows...)

Une fois adapté à mon cas tout s'est mis à fonctionner nickel.

Je sais pas si c'est important, mais je me suis permis de supprimer la
ligne :
# dns
iptables -A INPUT -p TCP --dport 53 -j ACCEPT

pour ne laisser que
iptables -A INPUT -p udp --dport 53 -j ACCEPT

Ca rend invisible le port 53 sur le site de test
https://grc.com/x/ne.dll?bh0bkyd2

J'oubliai,
j'ai pas très bien compris la présence de cette ligne :

PRIVATE12.168.0.0/24 # Réseau privé avec accès internet

puisque PRIVATE1 n'apparait qu'une seule fois au tout début alors que
PRIVATE est présent à plusieurs reprises ??


Ne me reste plus qu'à automatiser le lancement de ton script.
Mais ça c'est une autre histoire.

Dur dur les débuts sous linux !

Encore Merci pour tout.
Hubert Leclercq
75003 Paris