Vous n'êtes pas identifié.
Suite aux différents vers ou attaques qui commencent à émerger (ici, là et surtout Le premier ver voleur de données personnelles), je vous propose d'augmenter le niveau de sécurité de votre iphone jailbreaké (les autres, vous êtes tellement secure que ça ne risque rien
)
ATTENTION LES MODIFICATIONS CI-DESSOUS SI ELLES SONT MAL RÉALISÉES PEUVENT VOUS EMPÊCHER DE VOUS CONNECTER EN SSH A VOTRE IPHONE.
Vous pourrez toujours utiliser MobileTerminal (dispo dans cydia) pour corriger (quoique c'est pas super pratique le clavier de l'iPhone n'étant pas très adapté à la ligne de commande, mais ça à le mérite d'exister)
1- Changer le mot de passe de l'utilisateur mobile
Connectez-vous en ssh sur l'iPhone avec Putty ou n'importe quel client SSH (MobileTerminal peut aussi faire l'affaire)
login as: mobile mobile@iPhone's password:
Tapez passwd pour changer de mot de passe, il va vous demandez l'ancien mot de passe, qui est : alpine.
Tapez ensuite un mot de passe de votre choix.
Un bon mot de passe est composé de lettres (majuscules ET minuscules), de chiffres de caractères spéciaux (!@&_?:;, etc) et d'exactement 8 caractères (l'os de l'iPhone n'accepte pas plus de 8 caractères, tout ce qui est au-delà est ignoré, ce n'est pas vrai sur d'autres systèmes, à voir si cela peut être changé par un paramètre...)
iPhone-de-Sioban:~ mobile$ passwd mobile Changing password for mobile. Old password: New password: Retype new password: iPhone-de-Sioban:~ mobile$
2- Changer le mot de passe de l'utilisateur root
Idem que pour mobile, mais pour se connecter on va utiliser la commande su, car on empêchera root de se connecter dorénavant, et il faut bien se connecter en root pour exécuter certaines actions de temps en temps, donc autant apprendre tout de suite comment faire (mot de passe par défaut : alpine).
iPhone-de-Sioban:~ mobile$ su - Password:
On change le mot de passe avec la commande passwd :
iPhone-de-Sioban:~ root# passwd Changing password for root. New password: Retype new password: iPhone-de-Sioban:~ root#
Ceci est le minimum à mettre en pratique si vous ne voulez pas vous faire hacker.
Pour aller plus loin (pour utilisateurs expérimentés uniquement) :
1 - Interdire à l'utilisateur root de se connecter
L'objectif est d'interdire à root de se connecter, seul mobile pourra le faire.
En étant parfaitement paranoïaque on pourrait créer un nouvel utilisateur totalement inconnu qui serait le seul à pouvoir se connecter (paramètre AllowUser de sshd_config).
Avant toutes modifications d'un fichier système pensez à faire une copie :
iPhone-de-Sioban:~ root# cd /etc/ssh iPhone-de-Sioban:/etc/ssh root# cp sshd_config sshd_config.old
Il faut modifier le fichier /etc/ssh/sshd_config (à éditer avec votre éditeur favori, pour moi c'est vim et son utilisation ne fait pas l'objet de ce tuto).
iPhone-de-Sioban:/etc/ssh root# vim sshd_config
Modifiez la ligne suivante comme ceci :
PermitRootLogin no
2 - Limiter le nombre d'essais de connexions pour limiter les brute force
Tant que l'on est dans sshd_config, on va limiter le nombre de tentatives de connexions infructueuses afin de ralentir fortement les tentatives de cassage de mot de passe par brute force (Essai de tous les mots de passes possibles).
Modifiez la ligne suivante comme ceci :
MaxAuthTries 3
3 - Interdire l'usage d'un autre compte que mobile pour se connecter
Ceci afin d'éviter que l'un des comptes systèmes (nobody, daemon, _securityd, _ssd, etc) puisse être utilisé (pour l'instant on ne connait pas les mots de passe de ceux-ci mais on ne sait jamais...)
Donc toujours dans sshd_config, modifiez la ligne suivante comme ceci :
AllowUsers mobile
On peut maintenant fermer sshd_config.
Il faut relancer ssh pour que ces modifications soient prisent en compte (par exemple en utilisant SBSettings)
4 - Changer le port d'écoute du service SSH
Choisissez un autre port que 60022 (ceci est un exemple et si tout le monde prend le même port, changer le port devient moins utile), n'importe lequel mais je conseille un port au delà de 49151 afin de ne pas interagir avec un service existant (la commande netstat -tln ne sert pas à grand chose car la plupart des ports sont ouverts à la demande, il n'y a pas de services qui écoute sur un port précis)
4a - Dans /etc/services
Il faut modifier le fichier /etc/services afin d'attribuer un nom au port que l'on souhaite utiliser pour ssh.
On sauvegarde le fichier :
iPhone-de-Sioban:~ root# cd /etc iPhone-de-Sioban:/etc/ssh root# cp services services.old
On édite le fichier :
iPhone-de-Sioban:/etc/ssh root# vim services
On ajoute à la fin du fichier (l'ordre n'a pas d'importance) la ligne suivante :
ssh-alt 60022/tcp
4b - Dans /Library/LaunchDaemons/com.openssh.sshd.plist
Il faut modifier le fichier /Library/LaunchDaemons/com.openssh.sshd.plist.
On le sauvegarde :
iPhone-de-Sioban:~ root# cd /Library/LaunchDaemons iPhone-de-Sioban:/etc/ssh root# cp com.openssh.sshd.plist com.openssh.sshd.plist.old
On édite le fichier :
iPhone-de-Sioban:/etc/ssh root# vim com.openssh.sshd.plist
Recherchez la ligne suivante, j'ai volontairement fait apparaitre les lignes avec vim (commande :set nu dans vim pour les afficher, commande :set nonu pour les faire disparaitre) :
21 <key>Sockets</key>
22 <dict>
23 <key>Listeners</key>
24 <dict>
25 <key>Bonjour</key>
26 <array>
27 <string>ssh</string>
28 <string>sftp-ssh</string>
29 </array>
30
31 <key>SockServiceName</key>
32 <string>ssh</string>
33 </dict>
34 </dict>
Et remplacez là comme suit :
21 <key>Sockets</key>
22 <dict>
23 <key>Listeners</key>
24 <dict>
25 <key>Bonjour</key>
26 <array>
27 <string>ssh</string>
28 <string>sftp-ssh</string>
29 </array>
30
31 <key>SockServiceName</key>
32 <string>ssh-alt</string>
33 </dict>
34 </dict>
Il faut relancer ssh pour que ces modifications soient prisent en compte (par exemple en utilisant SBSettings)
Enfin, sous Putty et sous WinSCP pensez à changer le port pour vous connecter ensuite à votre iPhone.
Voilà c'est tout 
Tapez moi si j'ai oublié un truc ou si j'ai mal écris un autre... 
Dernière modification par sioban (17-11-2009 09:24:08)
Hors ligne
Sioban, merci !!
à la linuxienne avec vim et tout le toutim ! Très clair ! Bravo !
La suite du tuto :
5- Connexion par paire de clefs publique/privée
Il y a deux façons de se connecter par SSH.
La première façon utilise le mot de passe de mobile ou root. Exemple :
(eimji@deb-pkg)~$: ssh -p 269 mobile@192.168.1.25 The authenticity of host '192.168.1.25 (192.168.1.25)' can't be established. RSA key fingerprint is 84:5d:56:fe:d3:5a:0d:c6:2e:02:a3:7d:e9:f7:11:22. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.25' (RSA) to the list of known hosts. mobile@192.168.1.25's password:
Ce qui signifie : je me connecte par ssh au port 269 de mon iPhone (dont l'adresse IP est 192.168.1.25) en tant que l'utilisateur mobile. L'hôte distant, ie l'iPhone, vous demande ensuite le mot de passe pour s'assurer de votre identité mobile. Notez bien à la première connexion par ssh, l'iPhone n'est pas connu de votre machine locale (PC ou Mac), ie du fichier known_hosts. Ce fichier contient les clés hôte RSA des serveurs SSH sur lesquels vous vous connectez depuis votre machine locale. Répondez donc par yes à la question pour ajouter la clef RSA de l'iPhone dans le fichier known_hosts de votre PC/Mac.
Cette méthode de connexion par mot de passe n'est pas "sûre" et reste sensible à une attaque brute force de cassage du mot de passe.
SSH s'appuie sur des algorithmes à paire de clefs (rsa ou dsa), autant donc les utiliser. Le principe est simple, vous disposez d'une paire de clefs : une clef publique que vous mettez sur l'hôte distant (le serveur SSH, ie l'iPhone dans notre cas) et une clef privée que vous gardez jalousement dans votre PC. Pour vous connecter ensuite sur l'iPhone par SSH, vous devez le faire à partir de votre PC qui a la clef privée correspondant à la clef publique dans l'iPhone, sinon la connexion ne se fera pas.
5a - Création de la paire de clefs
Choisissez l'algorithme RSA ou DSA, comme vous voulez. (J'aurais tendance à préférer DSA...).
Sur un terminal de votre PC Linux ou Mac, tapez ces commandes :
Clefs DSA :
(eimji@deb-pkg)~$: ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/eimji/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eimji/.ssh/id_dsa. Your public key has been saved in /home/eimji/.ssh/id_dsa.pub. The key fingerprint is: 00:9e:fb:37:38:44:2d:b6:6a:40:e6:21:e1:a5:b7:ea eimji@deb-pkg (eimji@deb-pkg)~$:
Clefs RSA
(eimji@deb-pkg)~$: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/eimji/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eimji/.ssh/id_rsa. Your public key has been saved in /home/eimji/.ssh/id_rsa.pub. The key fingerprint is: 4e:f2:65:9b:d3:5d:63:61:12:55:5a:75:f6:52:fa:6f eimji@deb-pkg (eimji@deb-pkg)~$:
Pour les deux algorithmes (DSA ou RSA), le système vous demande dans quel fichier sauvegarder la clef. Le fichier proposé par défaut est dans le répertoire .ssh de votre répertoire home : tapez sur Entrée si vous voulez garder ce fichier par défaut, sinon entrez le chemin complet du nom du ficher. On vous demande ensuite une passphrase, qui est un mot de passe supplémentaire (tapez sur Entrée si vous ne voulez pas de mot de passe, mais je vous conseille d'en choisir un !).
Je choisirai les clefs DSA dans la suite du tuto.
5b - Ajoutez la clef publique dans authorized_keys sur l'iPhone
Créez un répertoire nommé .ssh dans /private/var/mobile de votre iPhone
Transférez ensuite le fichier id_dsa.pub dans ce répertoire, puis nommez ensuite ce fichier par authorized_keys.
5c - Activez l'authentification par clefs dans sshd_config
Il faut modifier le fichier /etc/ssh/sshd_config dans l'iPhone.
Vérifiez que vous avez ces lignes suivantes :
DSAAuthentication yes
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Redémarrez ssh en utilisant SBSettings, ou bien en ligne de commande :
launchctl unload /Library/LaunchDaemons/com.openssh.sshd.plist launchctl load /Library/LaunchDaemons/com.openssh.sshd.plist
5d - Connectez vous avec votre clef privée
Veillez à utiliser le bon PC qui a la clef privée sinon vous ne pouvez pas vous connecter 
(eimji@deb-pkg)~$: ssh mobile@192.168.1.25
Entrez ensuite votre passphrase.
(Vous pouvez aussi utilisez ssh-agent pour retenir le mot de passe)
Hors ligne
Oui il faudrait la rajouter, mais là je suis à cours de temps 
Et sinon, oui à la linuxienne, c'est pour ça que j'ai un peu galéré pour comprendre comment fonctionnait l'iphone pour les services, ne connaissant pas grand chose à MacOSX.
Il faudrait aussi ajouter une période de ban à la manière de Fail2Ban, mais là sur l'iphone je ne sais pas trop 
Dernière modification par sioban (09-11-2009 16:56:06)
Hors ligne
Tuto complété avec la connexion par paire de clefs dsa ou rsa.
Hors ligne
cool merci !
Il ne me reste plus qu'à mettre la partie configuration client (putty et winscp) en intégrant la notion de port et d'authentification par clé.
Quoique je ne sais pas si je vais complétement l'implémenter chez moi. Je crains que mon ssh-fs en montage automatique n'aime pas trop la pass-phrase et que ça m'oblige à me rabattre en mode manuel...
La réflexion qui m'a été faite plusieurs fois (pas que par toi), sur le fait que de changer de port ne sert à rien, un simple scan nmap et c'est réglé m'a titillé cette nuit.
En effet vu que les ports sont ouverts "on-demand" le résultat du scan nmap n'est pas forcément trivial.
J'ai donc testé.
Le seul scan a pris plus de 7 minutes (je vous laisse trouver les paramètres vous-même :p)
Changez le port n'est donc pas anodin pour trois raisons :
- cela ralenti pas mal la tentative d'intrusion (7 minutes dans la vrai vie, genre hall de gare, ce n'est pas neutre)
- le hacker peut penser que l'iphone n'est pas jailbreaké et ne même pas chercher à aller plus loin
- un ver ne va pas s'amuser à scanner les ports, cela prend beaucoup trop de temps pour chaque téléphone, son objectif est une attaque en masse, pas une attaque ciblée.
Laisser ssh sur le port 22, c'est comme crier au monde : "Coucou mon iphone est jailbreaké, venez l'attaquer"
Hors ligne
De toute facon, le risque 0 n'existe pas comme tu l'as bien précisé sur le blog.
Changer le port est très bien, mais l'idéal serait en plus d'interdire la connexion par mot de passe (root ou mobile) et d'utiliser uniquement la connexion par paire de clefs et aussi d'interdire de se connecter en tant que root !
winscp/putty n'accepte pas les clefs faites avec openssh, il faut un outil spécifique, mais je suis pas expert en Windows 
Mais il y a aussi la commande ssh-keygen sur l'iPhone, il me semble.
Après il y a aussi d'autres mécanismes pour betonner, comme autoriser seulement une adresse IP client de se connecter. J'ai vu que le X11 forwarding était activé, on peut le désactiver.
Hors ligne
L'outil en question est fourni avec Putty, c'est puttygen.
PS : au passage merci pour les commandes de relance des services iphone 
EDIT: je viens de tester ça marche, au passage puttygen permet de convertir des clés openssh 
Dernière modification par sioban (10-11-2009 11:28:01)
Hors ligne
C'est marrant, il y a que nous deux sur ce topic 
Hors ligne
Non, je suis la...
Mais je reste pas. 
Hors ligne
hello evr'y body
Bon pour ma part j'ai installé openssh et terminal, je suis rentré sur terminal tapé,su root, puis password, mais j'ai des lignes type command not found.... et j'ai peur d'avoir fait une bourde. quelqu'un peut-il m'aider?
Hors ligne
c'est surement parce que c'est passwd qu'il faut taper...
Dernière modification par sioban (11-11-2009 19:26:15)
Hors ligne
merci sioban,
en effet çà marche beaucoup mieux ;-)
merci
Hors ligne
salut à vous.
je ne doute pas une seconde de vos expliquations? mais comprenez bien que nous n'avons helas pas tous le meme
niveau et la" my god " bien trop compliqué au risque de tout planter.
donc j'aimerai si c'est possible une solution simple pour pouvoir changer le fameux root et alpine mais juste
ça deja ça serait bien et si ensuite ça peut etre fait par le mobile terminale de cydia alors la ça serait deja
très tres bien mais bon pour ce faire il faudrait des petites capture d'ecran àfin de bien suivre 
merci à vous pour tout le taf que vous faites (au passage )
Hors ligne
desolé zuzu j'avais cherché pourtant visiblement mal
bon je vais essayer merci à vous 
Hors ligne
J'avais encore pas vu ce tuto, bravo sioban. (oui je n'étais pas beaucoup là ces jours ci)
Très beau tuto, très clair et efficace... Comme il faut !! 
Hors ligne
Merci 
Eimji m'a un peu poussé pour le faire 
Hors ligne
Un nouveau ver vient de faire son apparition : iPhone/Privacy.A.
Hors ligne
En fait ça fait déjà 1 semaine qu'il est de sorti celui-là, je ne l'avais pas mis en référence dans le tuto.
Zuzu en avait même fait un article sur iphonezine.
Et celui-là il est vraiment méchant ^^
Dernière modification par sioban (17-11-2009 09:15:09)
Hors ligne
Merci sioban, je n'ai pas revu l'article de ZuZu 
Hors ligne
Pour ne pas se faire hacker, il faut faire les deux premières solutions ou une seule suffie ?
Dernière modification par earl94 (23-11-2009 20:53:02)
Hors ligne
Il y a quelqu'un ??
Hors ligne
Les deux premier au minimum. 
Hors ligne
Okay, donc je récapitule :
D'abord il faut se connecter en SSH et ensuite il faut aller dans le terminale de l'iTouch/iPhone et entré les codes suivants.
C'est ça ?
Dernière modification par earl94 (23-11-2009 21:02:09)
Hors ligne
Oula 2msg en 5 minutes 
Il faut changer les mots de passe de mobile ET de root, c'est le minimum.
Hors ligne
Pour effectuer les commandes, soit tu te connectes en ssh si tu sais faire, soit tu utilise mobile terminal dispo dans cydia.
Hors ligne
Utilisez ce formulaire pour chercher sur le site :
Vous n'arrivez toujours pas à trouver ce que vous voulez ? Laissez nous un message sur le site ou contactez nous par mail.