Garantire l'accesso SSH su un server stressato


11

Qualche tempo fa ho avuto un problema con un server in cui Apache e Snort occupavano il 100% del processore, rendendo l'sshd non rispondente attraverso l'accesso remoto. Ho dovuto andare fisicamente al server per accedere a un TTY locale e quindi interrompere apache / snort.

Mi chiedo se esiste un modo per garantire la connettività ssh in una situazione di CPU / memoria caricata al 100%. Impostare una "bella" priorità sarebbe sufficiente?

Grazie!

Risposte:


10

Oltre all'utilizzo di un metodo fuori banda, non c'è modo di garantire che SSH sarà disponibile su un server completamente caricato. Se il tuo servizio è così caricato che non può nemmeno servirti un terminale SSH di base, allora hai altri problemi.

Sì, renicee assegnando un nicevalore inferiore migliorerà le prestazioni in carichi pesanti, ma invece usare qualcosa come pam_security (esempio mostrato qui ) eviterà che Apache / qualunque cosa diventi ingestibile all'inizio.


Giusto. Sta cercando di trattare il sintomo, non il vero problema.
ewwhite,

@ewwhite Esattamente. E trattare il sintomo si tradurrà semplicemente in inseguimento della coda cercando di capire perché altre cose si rompono di conseguenza. :)
Nathan C,

Sto cercando un modo per estinguere il fuoco, ma ovviamente stabilirò dei limiti per gli altri demoni. Questo è per una situazione di emergenza, devo avere la tranquillità di sapere che avrò sempre SSH reattivo per l'accesso remoto.
Renato Todorov,

@RenatoTodorov in questo caso non puoi trattare il sintomo. Se il tuo sistema ha un processo in fuga che consuma tutti {CPU, RAM, Socket, PIDs} non puoi garantire che anche un nicecolpevole verrà avviato dalla CPU abbastanza velocemente da assicurarti di avere accesso SSH (o del resto) qualsiasi accesso alla console che hai sarebbe utilizzabile). Il problema di fondo (risorse-maiale) deve essere affrontato. Antincendio è una cattiva gestione del sistema.
voretaq7,

1
Bene, voi ragazzi mi avete convinto, userò iDRAC 7 Express finché lo avrò già. Grazie a tutti!
Renato Todorov,

7

La soluzione per questo scopo generale è uno strumento di gestione fuori banda, come Dell iDRAC, IBM Remote Supervisor o HP iLO. Può sempre presentare una console (indipendentemente dal fatto che il sistema operativo possa rispondere o meno a seconda della situazione specifica) e applicare gli stati di alimentazione desiderati secondo necessità.


Ok, iDRAC è una buona opzione poiché sto usando i server Dell ma stavo pensando a una soluzione più semplice, forse qualcosa come riservare la CPU a sshd (compresi i figli generati), una sorta di "QoS" per i servizi locali.
Renato Todorov,

Alcune aziende sono al verde o all'avidità: in tal caso, sysrqd può essere un'alternativa economica a iDRAC, iLO, KVM ...
bgtvfr,

0

Ho avuto un certo successo dando privilegio in tempo reale a sshd, tuttavia ciò ha il costo di dover riavviare la macchina se uno dei processi in tempo reale scappa.

Quindi, se vuoi seguire questa strada, avvia un secondo demone ssh che è solo per le emergenze. :)


1
realtimeing sshd mi sembra pericoloso, in particolare sulla porta 22 (una scansione SSH potrebbe diventare un attacco DoS - l'esecuzione su una porta alternativa può mitigarlo, ma sarei ancora spaventato ...)
voretaq7

non è un problema se blocco l'accesso da Internet, in realtà il mio unico percorso verso questo server è tramite VPN. grazie per il suggerimento!
Renato Todorov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.