Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 01/11/2012, à 02:32

Turkal

[RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Bonjour,

vivant en collocation j'ai partager quelques dossiers de mon ordinateur en réseau local pour qu'ils soient accessibles aux personnes vivant avec moi. Cependant, étant aussi étudiant j'ai souvent l'occasion de me connecter au réseau wifi public de l'université.
Mon problème est que les dossiers que je partage avec mes collocs sont du coup accessibles aux autres étudiants connectés sur le réseau de l'université.

Etant un ancien utilisateur de Windows 7, il y avait il faut bien le dire une chose bien pratique qui était qu'à chaque connexion à un nouveau réseau wifi il fallait définir si c'était un "réseau public", "réseau d'entreprise", "réseau personnel". Le partage était ensuite désactiver ou non en fonction du type de réseau.

J'aimerais du coup trouver un moyen pour faire le même type de réglages sous ubuntu mais je n'ai pas trouvé quoi que ce soit qui permettrait de configurer automatiquement samba ou ufw en fonction du réseau Wifi auquel on est connecté.

Est-ce que quelqu'un aurait une solution ?

Merci d'avance.

Voir le script au message #7

Dernière modification par nesthib (Le 02/11/2012, à 17:24)

Hors ligne

#2 Le 01/11/2012, à 11:47

toutafai

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Bonjour,

un petit script pour arrêter ou relancer samba me parait être une bonne solution alternative en attendant mieux.


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres...et de 24 et quel 24 ...car pc au taff et pour le taff ^^

Hors ligne

#3 Le 01/11/2012, à 17:04

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Bonjour,

Oui je suis parti sur cette idée là aussi et j'y ai passé la matinée.

Script corrigé plus bas dans la discussion

Je l'ai placé dans le répertoire /etc/NetworkManager/dispatcher.d afin qu'il s'exécute lors d'une connexion à un réseau, j'ai suivi les consignes ici http://manpages.ubuntu.com/manpages/luc … ger.8.html pour que ça fonctionne (à part le not set-uid car je ne sais pas à quoi ça correspond...), mais rien à faire le script ne s'exécute pas lors d'une connexion à un réseau... Alors que si je le lance manuellement il semble marcher.

Donc si quelqu'un sait comment résoudre ce problème de lancement automatique je suis preneur.

Dernière modification par Turkal (Le 02/11/2012, à 01:51)

Hors ligne

#4 Le 01/11/2012, à 17:15

Vu

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Turkal a écrit :

(à part le not set-uid car je ne sais pas à quoi ça correspond...)

Vive wikipédia: https://fr.wikipedia.org/wiki/UID


Ubuntu 12.04

Hors ligne

#5 Le 01/11/2012, à 17:27

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

En effet, j'aurais pu chercher moi-même pour le coup... Merci.

Par contre ça ne résout pas mon problème car si j'ai bien compris mon fichier est bien "not set-uid". Voir le résultat de ls -l (mon script c'est le fichier 10ChoixPartage) :

XXX@M-Laptop:~$ cd /etc/NetworkManager/dispatcher.d/
XXX@M-Laptop:/etc/NetworkManager/dispatcher.d$ ls -l
total 12
-rwxr-xr-x 1 root root 1235 avril 12  2012 01ifupdown
-rwxr-xr-x 1 root root 1659 nov.   1 11:55 10ChoixPartage

Hors ligne

#6 Le 01/11/2012, à 17:55

toutafai

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

désolé, je suis pas assez calé en bash pour t'aider, par contre je t'encourage dans cette voie et te remercier par avance du partage de ton travail...


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres...et de 24 et quel 24 ...car pc au taff et pour le taff ^^

Hors ligne

#7 Le 02/11/2012, à 01:49

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Bon j'y ai passé du temps mais voilà normalement le tout fonctionnel.

C'est donc un script qui permet à la connexion à un nouveau réseau wifi de définir si on veut activer le partage de fichier sur ce réseau. La configuration est ensuite gardée pour les prochaines connexions.
Il est à placer dans /etc/NetworkManager/dispatcher.d

Il faut configurer les permissions de cette manière :

sudo chmode 755 NomDuScript
sudo chown root
sudo chgrp root

Le script en question :

#! /bin/bash

#Le script étant lancé par le système plusieurs variables sont à définir.

export DISPLAY=:0.0 #Définition de l'écran de l'utilisateur
user="UserName"  # Mettre son nom d'utilisateur 

#On récupère le /home de l'utilisateur connecté
export USER=$user 
home=`grep $USER /etc/passwd | cut -d':' -f 6`


#Début du script
if [ "$1" = "wlan0" ] && [ "$2" = "up" ] # On lance le script à la connexion sur l'interface wifi
then
	
	if [ ! -e $home/.config/ChoixPartage/liste_essid ] && [ ! -e $home/.config/ChoixPartage ]  #On créé le fichier liste des essid s'il n'existe pas
	then 
		mkdir $home/.config/ChoixPartage
		touch $home/.config/ChoixPartage/liste_essid
                chmod 664 $home/.config/ChoixPartage/liste_essid
	fi

	#Définitions de variable :
	essid_wlan0=`iwconfig wlan0 | grep -o 'ESSID:".*$'` #Nom du réseau	
	essid_enregistre=`grep ESSID $home/.config/ChoixPartage/liste_essid | cut -d'%' -f 1` #Noms de réseaux enregistrés dans le fichier liste_essid

	#Boucle afin de vérifier si le réseau a déjà été paramétré
	for essid in $essid_enregistre 
	do	
		if [ $essid = $essid_wlan0 ] #Initialisation d'une variable en fonction que le réseau soit déjà configuré ou non
		then
		existe="OUI"
		fi
	done
	
	

	if [ "$existe" = "OUI" ] #Si déjà paramétré
	then
		partage=`grep $essid_wlan0 $home/.config/ChoixPartage/liste_essid | cut -d'%' -f 2`

			if [ "$partage" = "NON" ] #Vérification s'il faut partager ou non les fichiers et notification en fonction.
			then
				/usr/bin/service smbd stop #Si NON on stop le service samba
				sudo -u $user notify-send "Le partage de fichiers est désactivé pour ce réseau" 
			else
				/usr/bin/service smbd start #Si OUI on start le service samba
				sudo -u $user notify-send "Le partage de fichiers est activé pour ce réseau"
			fi

	else	#Si réseau non paramétré alors on le paramètre grâce à Zenity :
			
			sudo -u $user /usr/bin/zenity --question --text "Voulez-vous activer le partage de fichiers sur ce réseau ?"
	
			if [ $? = 0 ] #Si oui
			then 
				echo "$essid_wlan0 %OUI" >> $home/.config/ChoixPartage/liste_essid
				/usr/bin/service smbd start #Si OUI on start le service samba + notification.
				sudo -u $user notify-send "Le partage de fichiers est activé pour ce réseau"
			else #Si non
				echo "$essid_wlan0 %NON" >> $home/.config/ChoixPartage/liste_essid
				/usr/bin/service smbd stop #Si NON on stop le service samba + notification.
				sudo -u $user notify-send "Le partage de fichiers est désactivé pour ce réseau"
			fi
	fi
fi
  • Le script donnait l'impression de ne pas se lancer car c'était root qui le lançait et du coup le ~ ne correspondant pas à mon /home.

  • zenity ne se lançait pas ensuite toujours pour la raison que c'était le root qui lançait le script. Il fallait donc définir l'écran et lancer certaines commandes avec 'sudo -u $user'

  • J'ai rajouté en plus de jolies notifications

  • Si quelqu'un sait comment récupérer le nom de l'utilisateur loggé automatiquement je suis preneur. Vu que c'est root qui lance le script je n'ai pas trouvé comment faire.

  • C'est l'un des premiers scripts que je fais. Donc si c'est crade, moche, mal codé, etc. je vous prie de me pardonner ! roll

EDIT : Je me pose tout de même une question, certes j'ai désactivé samba mais mes ports sur ufw restent ouverts. Est-ce que ça constitue une faille de sécurité sur un réseau public ?
EDIT 2 : dans le doute, l'ouverture et la fermeture des ports a été rajoutée au script.
EDIT 3 : correction d'une erreur dans la première boucle for qui faisait que le paramétrage du réseau auquel on est connecté n'était pas pris en compte s'il n'était pas le dernier réseau inscrit dans la liste.
               Suppression des lignes concernant le pare feu.

Dernière modification par Turkal (Le 30/04/2013, à 16:51)

Hors ligne

#8 Le 02/11/2012, à 02:24

toutafai

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

merci et bravo pour ton script que je range de suite dans mon dossier "bien sympatoche"

concernant la question sur la sécu, je dirais qu'a partir du moment ou tu laisse une porte ouverte, il y a un risque...d'autant plus quand quand c'est une porte bien classique comme le partage ...

si le coeur t'en dit, tu peux rajouter a ton script les modifications a effectuer dans iptables pour fermer (et re ouvirir) les ports du partage.... ce qui vaudra le privilège de voir ton script déplacé dans le dossier "bien sympatoche et aux petits oignons" lol


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres...et de 24 et quel 24 ...car pc au taff et pour le taff ^^

Hors ligne

#9 Le 02/11/2012, à 02:56

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Va pour le dossier petits oignons alors ! big_smile
Bon faut dire que c'était pas compliqué, à condition d'utiliser ufw => la fermeture ou l'ouverture de tous les ports de samba se fait en une commande.

Faut quand même faire attention, avant la première utilisation du script, à supprimer les règles déjà existante concernant samba.

J'ai mis à jour le script dans le post au-dessus.

Hors ligne

#10 Le 02/11/2012, à 11:23

toutafai

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

C'est royal, merci beaucoup a toi et bonne continuation !

PS : ton script mériterais aussi d'être dans la section 'truc, astuces et scripts utiles", je signale donc ton post afin qu'une modérateur le déplace si il juge  cette demande pertinente.

Dernière modification par toutafai (Le 02/11/2012, à 11:28)


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres...et de 24 et quel 24 ...car pc au taff et pour le taff ^^

Hors ligne

#11 Le 02/11/2012, à 13:19

HP

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

/usr/bin/service smbd stop #Si NON on stop le service samba
/usr/sbin/ufw deny samba 

Heu… quand samba est à l'arrêt, le port est fermé, puisque aucun programme n'écoute dessus… donc, inutile de l'interdire via un firewall, non ?! Je pense que ça ne fait qu'alourdir et complexifier le code et les dépendances.

Hors ligne

#12 Le 02/11/2012, à 15:31

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Ah bah c'est la question que je me posais quelques post plus haut. Mais j'avoue que je n'y connais pas grand chose dans tout ce qui est port, pare-feux, etc. Je vais me renseigner là-dessus.
Il faut de toute façon que je modifie le script, j'ai pu faire des tests un peu plus poussé aujourd'hui et j'ai remarqué des bugs. Je prendrais le temps pour ça ce WE.

Hors ligne

#13 Le 02/11/2012, à 18:35

Turkal

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

Bon du coup j'ai pris le temps plus tôt que prévu. J'ai corrigé une erreur que j'avais fais dans le script qui entraînait un bug (voir EDIT 3 du #7).
J'ai aussi supprimé les lignes concernant le pare feu car en effet il semblerait que ça soit inutile. Je pensais bêtement qu'un port ouvert dans un pare-feu c'était comme une porte constamment ouverte. En fait si j'ai bien compris c'est le logiciel (ici samba) qui se charge ensuite ou non d'ouvrir la porte.

Du coup, question un peu hors-sujet et pour ma culture informatique personnelle : lorsqu'un port est ouvert dans un pare-feu, ça constitue une faille de sécurité seulement dans le cas où le logiciel qui écoute le port (ici samba) contient une faille de sécurité ?

Dernière modification par Turkal (Le 02/11/2012, à 18:36)

Hors ligne

#14 Le 02/11/2012, à 21:34

HP

Re : [RESOLU] [SCRIPT] Désactiver partage de fichier sur un réseau public

# sudo service smbd stop
smbd stop/waiting
# nmap localhost -PN | egrep '^[0-9]+' | wc -l
8
# sudo service smbd start
smbd start/running, process 22390
# nmap localhost -PN | egrep '^[0-9]+' | wc -l
10

Avec samba à l'arrêt, j'ai 8 ports ouverts… et quand il fonctionne 10 ports sont ouverts.

Hors ligne

Haut de page ↑