Perte ssh

bonjour à tous.
j’ai installé 1 debian sur un dockstar, en ‘prod’ chez moi depuis + 3 ans (domotique, asterisk, muni, mysql principalement).
j’ai voulu modifier mon firewall.sh qui fonctionnait jqa aujourd’hui. J’ai simplement ajouté 1 ip, lancé le fichier comme à l’habitude. Mais je ne sais pas ce qui s’est passé. Le fichier n’est pas arrivé au bout, et j’ai perdu la main. Depuis, impossible de me reconnecté dessus.

Merci d’avance si vous avez des solutions (j’espere !) à m’apporter .
Arnaud

Dans un premier temps il faut absolument reprendre la main sur ton serveur, il n’existe pas de d’incantation vodoo pour réparer cela sans toucher à la machine.

Donc enlever et remettre l’alimentation est déjà un premier pas. Si ça ne fonctionne pas il faut penser a démonter le disque et a l’aide d’un autre système regarder les fichiers de logs.

Tu n’as pas un moyen d’agir directement sur ton serveur ? s’il est chez toi, bien sûr.

bonjour,
merci pour vos réponses.
Si, il est chez moi. C’est un disque dur usb, donc je peux le monter sur une VM par ex. Mais je pensais qu’il y aurait 1 autre moyen. Je ne travaille pas souvent avec les VM.

J’ai essayé le Off/On, mais rien.

Impossible de prendre la main via ssh. Et comme c’est un serveur, pas de visu :frowning:.

J’essaie via 1 VM afin de voir effectivement les logs.

Merci
Arnaud

Salut,
T’es comme devant un pont-levis levé. Non il n’y a pas moyen de reprendre la main.
Sauf à avoir une autre solution prévue à l’avance (Webmin par exemple).

Et ce n’est même pas sur, ça dépend de ce que tu as fait…
Si tu as interdit ton IP, c’est marron (à moins de passer par une autre IP).

[quote=“acognard”]j’ai voulu modifier mon firewall.sh qui fonctionnait jqa aujourd’hui. J’ai simplement ajouté 1 ip, lancé le fichier comme à l’habitude[/quote]Bref… Tu nous expliques un peu plus la manip ?

ok je vais explorer cette voiequi m’intéresse fortement par contre étant donné que je suis sur une disque dure usb j’espère pouvoir reprendre la main via VM.
je vous tiens informé de l’avancement de mes recherches
Arnaud

Re,
Tu peux simplement faire un chroot.

Bonjour a Oui il faut c juste que je me rappelle comment :confused:

Euh, si j’ai bien compris, ton serveur est un Seagate FreeAgent DockStar, donc basé sur une plate-forme SheevaPlug, donc une architecture ARM. Pour amorcer le disque dans une machine virtuelle, il faut un émulateur d’ARM. De même, faire un chroot ne marchera que sur une autre machine d’architecture ARM, pas sur un PC standard.

De toute façon je ne vois pas l’intérêt des ces manipulations. Il devrait suffire de brancher le disque sur n’importe quelle machine, monter le volume contenant le fichier à corriger et modifier ce dernier.

oui, je galere…

voila, j’ai tenté via oracle vm virtualbox, pb de montage usb.
du coup, hop, via linutop. la pas de pb, j’accède bien a quasi tous mes fichiers.

j’essaie via ce tuto doc.ubuntu-fr.org/chroot pour faire 1 chroot, mais pb sur exec(). Je pense que c 1 soucis arm 32 et 64.

du coup, je ne sais plus quoi faire.

Le fichier firewall.sh que j’avais mis en place se situait en faisant cd en root. Mais impossible d’accéder au rep root car je n’ai pas les droits depuis mon linutop.

D’ailleurs, je suis pret a tout réinstaller, car j’avais qqes instabilités. faut juste que j’arrive a faire un backup complet. Mais comme il m’est impossible d accéder a certains répertoire, la j’hésite.

En tout cas merci pour vos réponses ! ca rassure de ne pas se sentir seul.
Arnaud

Comme je l’écrivais plus haut, c’est un problème entre le type d’architecture de la machine (Linutop = AMD Geode ou Intel Atom = x86) et le type d’architecture des binaires exécutables sur le disque (ARM). En faisant un chroot tu demandes à une machine x86 d’exécuter un binaire ARM, forcément ça ne marche pas.

Gni ? Tu n’as pas les droits root sur ton Linutop ? Tu n’as pas une autre machine sur laquelle tu as les droits root ?

[quote=“PascalHambourg”]
De toute façon je ne vois pas l’intérêt des ces manipulations. Il devrait suffire de brancher le disque sur n’importe quelle machine, monter le volume contenant le fichier à corriger et modifier ce dernier.[/quote]
Oui, c’est exactement à ça que je pensais si ce serveur est chez lui.

non,
The root account is not enabled on the Linutop OS. All administrative tasks need to be executed using sudo…

c’est balo, et pas d’autre system unix sous la main, je vais retenter avec la vm.

Arnaud

ou plus sauvage :
[code]sudo su[/code]
Ca ne marche pas ?

ou plus sauvage :

Ca ne marche pas ?

RAssurez moi, je suis obligé de passer par une machine unix, via windows c’est impossible, non ?

Arnaud

N’importe quel système capable de monter le système de fichiers. Pourquoi pas Windows avec le pilote correspondant installé.

Bon alors avec sudo tu les as, les droits root, non ?

Pour obtenir un shell root, utiliser plutôt

Merci les gars, je suis aller chercher trop loin…
bon voilu, j’ai accès grace a mon syno !

donc mon fichier firewall.sh que j’avais lancé, et qui a du etre intérompu car il y a un fichier .firewall.sh.swp
(MONIP est correctement renseigné dans le vrai fichier :wink:).

#!/bin/bash

#Firewall
echo Setting firewall rules...
##
##
##

# description: Firewall
IPT=/sbin/iptables
MON=XX.XXX.XXX.XXX

# Debut Initialisation ######
# Interdire toute connexion entrante
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
echo - Interdire toute connexion entrante : [OK]

# Interdire toute connexion sortante
$IPT -t filter -P OUTPUT DROP
echo - Interdire toute connexion sortante : [OK]

# Vider les tables actuelles
$IPT -t filter -F
$IPT -t filter -X
echo - Vidage : [OK]

#MAIL
#Creation d'une chaine
$IPT -N LOG_REJECT_SMTP
$IPT -A LOG_REJECT_SMTP -j LOG --log-prefix ' SMTP REJECT PAQUET : '
$IPT -A LOG_REJECT_SMTP -j DROP

# Anti-Taiwanais
$IPT -t filter -A INPUT -i eth0 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
$IPT -t filter -A INPUT -i eth0 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
$IPT -t filter -A INPUT -i eth0 -s 168.95.0.0/16 -j LOG_REJECT_SMTP
echo - Bloquer Taiwanais : [OK]

#Protocoles principaux
# Ne pas casser les connexions etablies
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Ne pas casser les connexions etablies : [OK]

# Autoriser la Supervision du serveur (SNMP)
#$IPT -t filter -A INPUT -p tcp --dport 161 -s IP_SUPERVISION/32 -j ACCEPT
#$IPT -t filter -A INPUT -p udp --dport 161 -s IP_SUPERVISION/32 -j ACCEPT
#echo - Autoriser Supervision : [OK]

# Autoriser les requetes DNS, FTP, HTTP, NTP
$IPT -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
$IPT -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

#$IPT -t filter -A OUTPUT -p tcp --dport 420 -j ACCEPT
#$IPT -t filter -A OUTPUT -p udp --dport 2987 -j ACCEPT
#$IPT -t filter -A OUTPUT -p udp --dport 5987 -j ACCEPT
#$IPT -t filter -A OUTPUT -p tcp --dport 2187 -j ACCEPT
#$IPT -t filter -A OUTPUT -p tcp --dport 8081 -j ACCEPT
echo - Autoriser les requetes DNS, FTP, HTTP : [OK]

#le PING et loopback:
# Autoriser loopback
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -j ACCEPT
echo - Autoriser loopback : [OK]

# Autoriser ping
$IPT -t filter -A INPUT -p icmp -j ACCEPT
$IPT -t filter -A OUTPUT -p icmp -j ACCEPT
echo - Autoriser ping : [OK]

#autoriser les serveurs locaux:
# HTTP
$IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

$IPT -t filter -A INPUT -p tcp --dport 420 -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 8081 -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 8000 -j ACCEPT
echo - Autoriser serveur Apache : [OK]

#serveur FTP avec le port 21:
modprobe ip_conntrack_ftp
$IPT -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo - Autoriser serveur FTP : [OK]

#serveur mail sur les ports 25 (SMTP), 110 (POP) et 143 (IMAP):

# Mail
$IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
echo - Autoriser serveur Mail : [OK]

#7) Autorisation du SSH et protection

# Autoriser SSH
#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 420 -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j LOG --log-prefix "SSH REJECT"

#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 420 -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP
#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 420 -m state --state NEW -m recent  --set --name SSH -j ACCEPT

#Dans la rèe, nous autorisons le port 420 pour le SSH, avec deux essais d'identification possibles. 
#Si les 2 essais éouent, l'IP est bloquépendant une minute.

echo - Autoriser serveur SSH : [OK]

#Si jamais vous voulez accér au SSH par le port 22 (par exemple de votre boulot) 
#car le port 420 est bloqué vous pouvez rajouter une règle d'exception:

#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 22 -s $MONIP/32 -m recent --update  --seconds 60 --hitcount 4 --name SSH -j DROP

#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 22 -s $MONIP/32 -m recent --set  --name SSH

#//Sur une seule ligne
$IPT -t filter -A INPUT -p tcp --dport 22 -s $MONIP/32 -j ACCEPT
echo - Autoriser serveur SSH from JOB 22 : [OK]

#nginx
$IPT -A INPUT -i lo -s localhost -d localhost -j ACCEPT
$IPT -A OUTPUT -o lo -s localhost -d localhost -j ACCEPT
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT  -p tcp --dport http -j ACCEPT
echo - Autoriser nginx : [OK]

# SIP on UDP port 5060. Other SIP servers may need TCP port 5060 as well
#Creation d'une chaine
$IPT -N LOG_REJECT_SIP
$IPT -A LOG_REJECT_SIP -j LOG --log-prefix ' SIP REJECT PAQUET : '
$IPT -A LOG_REJECT_SIP -j DROP

# Anti-Taiwanais
#$IPT -t filter -A INPUT -i eth0 -s :212.27.52.5 -j LOG_REJECT_SMTP

 $IPT -A INPUT -p udp -m udp --dport 5060 -j ACCEPT

 # IAX2- the IAX protocol
 $IPT -A INPUT -p udp -m udp --dport 4569 -j ACCEPT

 # IAX - most have switched to IAX v2, or ought to
 $IPT -A INPUT -p udp -m udp --dport 5036 -j ACCEPT

 # RTP - the media stream
 # (related to the port range in /etc/asterisk/rtp.conf) 

 $IPT -A INPUT -p udp --dport 5060 -i eth0 -m state --state NEW -m recent --set
   $IPT -A INPUT -p udp --dport 5060 -i eth0 -m state --state NEW -m recent --rcheck --seconds  600 --hitcount  20 -j DROP
   $IPT -A INPUT -p udp --dport 5060 -i eth0 -m state --state NEW -m recent --rcheck --seconds  300 --hitcount  10 -j DROP
   $IPT -A INPUT -p udp --dport 5060 -i eth0 -m state --state NEW -m recent --rcheck --seconds  180 --hitcount   5 -j DROP
   $IPT -A INPUT -p udp --dport 5060 -i eth0 -m state --state NEW -m recent --rcheck --seconds   60 --hitcount   3 -j DROP

 $IPT -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
echo - Autoriser SIP : [OK]

dans le fichier /var/log/messages, je trouve ceci

Mar 29 10:01:49 CHTIDS kernel: [ 58.793519] EXT4-fs (sda3): warning: maximal mount count reached, running e2fsck is recommended Mar 29 10:01:49 CHTIDS kernel: [ 59.098743] EXT4-fs (sda3): mounted filesystem with ordered data mode [...] Mar 29 10:01:57 CHTIDS nagios: SERVICE NOTIFICATION: nagiosadmin;localhost;Root Partition;WARNING;notify-service-by-email;DISK WARNING - free space: / 445 MB (11% inode=50%): Mar 29 10:01:58 CHTIDS nagios: Warning: Attempting to execute the command "/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: PROBLEM\n\nService: Root Partition\nHost: localhost\nAddress: 127.0.0.1\nState: WARNING\n\nDate/Time: Fri Mar 29 10:01:55 CET 2013\n\nAdditional Info:\n\nDISK WARNING - free space: / 445 MB (11% inode=50%):\n" | /bin/mail -s "** PROBLEM Service Alert: localhost/Root Partition is WARNING **" nagios@localhost" resulted in a return code of 127. Make sure the script or binary you are trying to execute actually exists...
Vers ou dois je regarder maintenant ?
Merci.
Arnaud

Comment ça, “interrompu” ? Il n’est pas complet ?
A quoi sert ce fichier .firewall.sh.swp, que contient-il ?

La variable $MONIP n’est pas initialisée dans ce script. En revanche il y a une variable $MON qui n’est pas utilisée.

Comment ça, “interrompu” ? Il n’est pas complet ?
A quoi sert ce fichier .firewall.sh.swp, que contient-il ?

La variable $MONIP n’est pas initialisée dans ce script. En revanche il y a une variable $MON qui n’est pas utilisée.[/quote]

j’ai changé à la main a l’instant afin de faire évoluer le script et surtout de ne pas rendre mon ip publique… dsl.
j’ai bien ca : MONIP=XX.XXX.XXX.XXX, et dans le code, par ex $IPT -t filter -A INPUT -p tcp --dport 22 -s $MONIP/32 -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP…

le .swp est un fichier que je constate. je ne sais pas d ou il vient et il a la date du plantage ! Il est illisible.

Salut,
Oui, le chroot n’était pas une bonne idée… :033

Il sort d’ou ce script ? T’es fâché avec Taiwan ?
Le problème est que c’est tout emmêlé… j’y comprend pas grand chose à ton script (enfin j’ai pas trop envie d’éplucher… c’est plein de règles un peu exotiques pour moi).
Tu sais à quoi servent toutes les règles ?

Mon parefeu est beaucoup plus simple, et je n’ai jamais été pris au dépourvu.
Chaque règle est claire et je la comprend.
Tout est interdit, sauf quelques ports qui sont ouverts. (web, ftp, ssh, etc.).
Je vois que ton SSH n’est pas sur le port 22, c’est déjà en soit une bonne protection; Si tu as fail2ban par dessus, et un mot de passe digne de ce nom, ce n’est pas la peine d’aller chercher des règles alambiquées…