Bonjour,

Je n'arrrive pas à ouvrir une connexion SSH à distance en dépit du fait que ma machine Linux (Fedora 18 qui est chez moi) qui joue le rôle de serveur SSH est configurée en SSh serveur, et que la machine Linux (CentOs au boulot) a le service SSH activé et en écoute sur port 22. J'essaye de me connecter du boulot -> chez moi.

Je suppose -dans mes connaissances encore maigres en Linux et en réseau- que l'IP de la Freebox qui est du genre 82.242.xxx.xxx et qui ne correspond pas à celle de mon pc maison qui elle est du genre 192.168.0.xx foutent la pagaille; car de l'extérieur le système ne sait pas où aller derière la Freebox. Quand j'essaie de me connecter en tapant la commande : ssh monindentifiant@82.242.xxx.xxx cela ne donne rien. Je précise qu'à la maison j'ai deux PC derrière la Freebox, le mien et un autre qui lui tourne sous Windows. Je voudrais me connecter du boulot à celui qui tourne sur la Fedora 18.

Je précise que j'ai configuré mon réseau dans la machine Fedora en dhcp détection automatique.

J'ai vaguement lu en questionnant mon copain Google qu'il y aurait une histoire de resdistribution de ports dans la config de la Freebox? Je nage... :roll:

Merci pour vos conseils. 😉
Ca s'appelle le NAT et tu dois le configurer. En résumé c'est un aiguillage qui indique que selon le type d'appel on dirige les paquets vers tel ou tel poste, ou si on l'ignore.

De plus je te rappelle que c'est le serveur qui écoute sur le port 22. Le client à ton boulot, lui, n'écoute rien du tout.

En outre si tu veux te protéger encore plus tu peux indiquer à ton serveur à la maison d'utiliser un port inconnu genre 8734. Il faudra que tu passes ce paramètre aussi lors de l'appel.
dans la gestion de la freebox, il y a une fonction nat (configurer mon routeur) qu'il faut activer et qui est très facile à configurer au moins sur la v4 car je n'ai pas de v6
Tu dois te connecter sur ta freebox avec l'adresse 82.242.xxx.xxx
Ta freebox doit avoir été paramétrée avec une redirection du port 22 vers ton PC serveur.

Fait tes tests d'abord avec le port 22. Les autres ports ne seront pas forcément autorisé.
D'ailleurs le port 22 aussi peut ne pas être autorisé. C'est cas dans ma boite.

Dans ce cas, il faut utiliser le port 443 ou 80 qui eux sont plus souvent autorisés ...

http://www.infos-du-net.com/actualite/dossiers/274-5-freebox-revolution-astuces.html

Je te conseille aussi d'utiliser iptables sur ton serveur pour autoriser ta connexion ssh uniquement à partir de ton boulot en vérifiant l'adresse IP et l'adresse MAC.

Et fail2ban, ça sera aussi un plus.
Merci de ces précieux conseils, 🙂 j'ai vraiment l'impression de tenir la solution à mon problème. Je vais faire tout cela ce soir en rentrant chez moi et je vous tiens au courant. 😉
philippe_PMA wrote:Et fail2ban, ça sera aussi un plus.
Pour un SSH à la maison le port 22 c'est bon pour se faire pinger en permanence... Autant faire sur un port exotique ça évitera de gêner trop la connexion :-D
MarbolanGos wrote:
philippe_PMA wrote:Et fail2ban, ça sera aussi un plus.
Pour un SSH à la maison le port 22 c'est bon pour se faire pinger en permanence... Autant faire sur un port exotique ça évitera de gêner trop la connexion :-D
Le problème c'est que ma boite verrouille les ports "exotiques", voire pas exotique non plus puisque le 22 est vérouillé. Où alors il faut demander explicitement vers quelle IP ...
Donc, je passe par un port qui est ouvert et je le redirige sur ma BOX.

Pour la sécurité, chez moi, je bride sur l'adresse IP et l'adresse MAC source.
Et uniquement accès via certificat.
Et j'ai aussi un fail2ban qui bloque les IP dès la première erreur et me remonte les connexions KO et aussi les OK ...
Là, je pense que c'est quand même pas mal.
Pour la sécurité, chez moi, je bride sur l'adresse IP et l'adresse MAC source.
Et uniquement accès via certificat.
Et j'ai aussi un fail2ban qui bloque les IP dès la première erreur et me remonte les connexions KO et aussi les OK ...
T'es consultant à la Banque de France ?
nouvo09 wrote:
Pour la sécurité, chez moi, je bride sur l'adresse IP et l'adresse MAC source.
Et uniquement accès via certificat.
Et j'ai aussi un fail2ban qui bloque les IP dès la première erreur et me remonte les connexions KO et aussi les OK ...
T'es consultant à la Banque de France ?
Je peux pas le dire, ça fait partie de nos procédures de sécurité. Désolé

😉



Non, mais quand je fais quelques chose, j'essaye de bien le faire.
Dans ce cas, me donner un accès et uniquement à moi ...
Bon j'ai modifié la redirection de port de ma Freebox et c'est ok, c'est simple.

J'ai modifié aussi mon fichier /etc/ssh/sshd_config en enlevant le # devant :

Port 22
PermitRootLogin no
MaxStartups 5:15:20

Pour le port 22 je le garde pour l'instant, je le changerai quand ça marchera.

Je crois qu'il faudrait aussi autoriser le port 22 pour SSH dans le firewall en connexion depuis l'extérieur, mais après lecture de l'aide ici: Firewall ... j'ai pris un mal de tête et j'ai laissé tomber! Help! :-?
Tu ne nous dis pas si en local ça fonctionne déjà ?

dans un terminal:

ssh localhost
nouvo09 wrote:Tu ne nous dis pas si en local ça fonctionne déjà ?

dans un terminal:

ssh localhost
Ah oui j'oubliais ça fonctionne.
Alors il faut que tu stoppes firewalld, tu fais des essais de connexion depuis l'internet. Si ça fonctionne, tu remets en route le firewall et tu verras le résultat.

Poste ça ici de toutes manières.
nouvo09 wrote:Alors il faut que tu stoppes firewalld, tu fais des essais de connexion depuis l'internet. Si ça fonctionne, tu remets en route le firewall et tu verras le résultat.
Poste ça ici de toutes manières.
Cela marche, avec le firewalld fermé chez moi! Youpi! 🙂
Prochaine étape changer le port 22 en autre chose, modifier le Firewalld pour qu'il accepte ce port xxxx et relancer le Firewalld.

Put... entrer sur son pc à distance c'est magique... :-P
Changer le port dans le fichier sshd_config ne marche pas car SeLinux n'est pas d'accord semble-t-il, si je comprends bien les messages logs. Comment faire pour changer de port? SeLinux pour moi c'est du chinois.
Et après il y aura le firewall à modifier puis la redirection de ports à faire dans la Box. Cette dernière opération ça ira... Mais pour les autres...
J'ai essayé de trouver de la doc mais je n'y comprend rien.

Voilà les messages des logs secure:
Feb 25 17:42:49 localhost sshd[22958]: Server listening on :: port 22.
Feb 25 17:48:59 localhost sshd[22958]: Received signal 15; terminating.
Feb 25 17:49:03 localhost sshd[23024]: error: Bind to port 8734 on 0.0.0.0 failed: Permission denied.
Feb 25 17:49:03 localhost sshd[23024]: error: Bind to port 8734 on :: failed: Permission denied.
Feb 25 17:49:03 localhost sshd[23024]: fatal: Cannot bind any address.


Et ceux des logs messages:
Feb 25 17:49:03 localhost systemd[1]: Started OpenSSH server daemon.
Feb 25 17:49:03 localhost systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
Feb 25 17:49:03 localhost systemd[1]: Unit sshd.service entered failed state
Feb 25 17:49:04 localhost setroubleshoot: SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket . For complete SELinux messages. run sealert -l cb2732b7-ceae-4829-9e10-6ce52585acdb
Feb 25 17:49:04 localhost setroubleshoot: SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket . For complete SELinux messages. run sealert -l cb2732b7-ceae-4829-9e10-6ce52585acdb
For complete SELinux messages. run

sealert -l cb2732b7-ceae-4829-9e10-6ce52585acdb
voilà, fais ce qu'on te dit
Je l'ai fait et voilà le résultat... : :roll: Du chinois en somme... :-o

[jc@localhost ~]$ sealert -l cb2732b7-ceae-4829-9e10-6ce52585acdb
SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket .


***** Plugin bind_ports (92.2 confidence) suggests *************************

If you want to allow /usr/sbin/sshd to bind to network port 8734
Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 8734
où PORT_TYPE est l'une des valeurs suivantes : xserver_port_t, ssh_port_t.


***** Plugin catchall_boolean (7.83 confidence) suggests *******************

If vous souhaitez allow system to run with NIS
Then you must tell SELinux about this by enabling the 'nis_enabled' boolean.
You can read 'None' man page for more details.
Do
setsebool -P nis_enabled 1


***** Plugin catchall (1.41 confidence) suggests ***************************

If vous pensez que sshd devrait être autorisé à accéder name_bind sur tcp_socket par défaut.
Then vous devriez rapporter ceci en tant qu'anomalie.
Vous pouvez générer un module de stratégie local pour autoriser cet accès.
Do
autoriser cet accès pour le moment en exécutant :
# grep sshd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp



Additional Information:
Source Context system_u:system_r:sshd_t:s0-s0:c0.c1023
Target Context system_u:object_r:unreserved_port_t:s0
Target Objects [ tcp_socket ]
Source sshd
Source Path /usr/sbin/sshd
Port 8734
Host localhost.localdomain
Source RPM Packages openssh-server-6.1p1-5.fc18.x86_64
Target RPM Packages
Policy RPM selinux-policy-3.11.1-79.fc18.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name localhost.localdomain
Platform Linux localhost.localdomain 3.7.9-201.fc18.x86_64
#1 SMP Mon Feb 18 21:07:56 UTC 2013 x86_64 x86_64
Alert Count 4
First Seen 2013-02-25 17:31:19 CET
Last Seen 2013-02-25 17:49:03 CET
Local ID cb2732b7-ceae-4829-9e10-6ce52585acdb


Raw Audit Messages
type=AVC msg=audit(1361810943.949:1368): avc: denied { name_bind } for pid=23024 comm="sshd" src=8734 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket



type=SYSCALL msg=audit(1361810943.949:1368): arch=x86_64 syscall=bind success=no exit=EACCES a0=3 a1=7f2e3a84d050 a2=1c a3=7fff340cf034 items=0 ppid=1 pid=23024 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 ses=4294967295 tty=(none) comm=sshd exe=/usr/sbin/sshd subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 key=(null)

Hash: sshd,sshd_t,unreserved_port_t,tcp_socket,name_bind

audit2allow

#============= sshd_t ==============
#!!!! This avc can be allowed using the boolean 'nis_enabled'


allow sshd_t unreserved_port_t:tcp_socket name_bind;

audit2allow -R

#============= sshd_t ==============
#!!!! This avc can be allowed using the boolean 'nis_enabled'


allow sshd_t unreserved_port_t:tcp_socket name_bind;


[jc@localhost ~]$
Voilà:


autoriser cet accès pour le moment en exécutant :
# grep sshd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
Jo67 wrote:... Du chinois en somme...
Non, c'est du franglais.
Et en plus, il te dit vraiment ce qu'il faut faire !
If you want to allow /usr/sbin/sshd to bind to network port 8734
Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 8734
    où PORT_TYPE est l'une des valeurs suivantes : xserver_port_t, ssh_port_t.
Pour la redirection de port, on peut toujours garder le port standard sur la machine, et un port différent à distance.
C'est la régle NAT qui configure ça aussi : une requête au port 8794 est redirigé sur la machine locale 192.XXX.XXX.XXX sur le port 22.

l'avantage est de garder une configuration standard en local.