Els que administrem servidors hem de portar un control el més estricte possible sobre tot el que succeeix al servidor, una de les coses que moltes vegades necessitem saber és quan es connecta un usuari per SSH (root inclòs), per a això amb un paquet i una línia ens arribaria al nostre email notificacions.
S'imaginen que cada vegada que algú es connecti per SSH amb root els arribi un correu electrònic que digui?
O sigui, rebrien un correu electrònic que els diria alguna cosa com això:
[Miserver] Alerta: Accés a Terminal de Root el: 2014/01/21 (200.55.51.151)
O sigui:
[$ NOMBRE_VPS] Alerta: Accés a Terminal de Root el: $ DATA ($ IP_DE_QUIEN_SE_CONECTO)
Per aconseguir això primer d'instal·lar un paquet anomenat mailx.
Suposant que el servidor faci servir Debian o alguna distro basada en ell (recomano només Debian, no Ubuntu ni similars per a servidors) seria:
apt-get install mailx
Després hem de posar al .bashrc de root la següent línia:
echo 'ALERTA - Acceso a Terminal de Root en:' `hostname` 'el:' `date +'%Y/%m/%d'` `who | grep -v localhost` | mail -s "[ `hostname` ] Alerta: Acceso a Terminal de Root el: `date +'%Y/%m/%d'` `who | grep -v localhost | awk {'print $5'}`" mi@email.com
Per editar /root/.bashrc facin servir algun editor en terminal com nano:
nano /root/.bashrc
Després de posar (en qualsevol lloc de l'arxiu) la línia que els vaig posar abans, vam salvar l'arxiu amb Ctrl + O (O d'ós) i vam sortir de el mateix amb Ctrl + X
A punt, cada vegada que algú entri a la terminal de root es carregarà l'arxiu .bashrc, que és una cosa que es fa per default sempre, i a l'carregar-se el fitxer s'executarà la línia que envia el correu electrònic, quedant-nos en la nostra safata d'entrada una mica com:
L'explicació de la línia és una cosa realment simple:
- Mitjançant mailx enviament el correu, amb el paràmetre -s «_____» específic l'assumpte, i li pas amb trobo «____» i una canonada el contingut de l'body.
- `Hostname` amb això trec el hostname o nom del sistema principal, és a dir, el nom de l'VPS.
- `Date + '% I /% m /% d'` la comanda date em mostra la data de sistema, la resta de les lletres simplement indica com desitjo que es em mostri la data.
- who | grep -v localhost` Si s'executen who en el seu ordinador els mostrarà els usuaris actius, amb un grep -v localhost m'asseguro que només mostri els que s'han connectat des d'una ubicació diferent a el servidor en si, és a dir, SSH bàsicament
- `Who | grep -v localhost | awk { 'print $ 5'} `El que diferencia aquesta línia de l'anterior és el awk, mitjançant el awk i la impressió de la 5a columna és que trec la IP des d'on es van connectar a l'SSH
En fi, la línia és una cosa extensa i pot semblar complexa d'entendre, no obstant això són molts caràcters rars però tot és bastant simple 🙂
Com sempre, espero els hagi resultat d'interès.
Salutacions
Un dubte, amb que servidor de correu s'envia? cal configurar algun compte d'enviament?
Has de tenir instal·lat el paquet mailx 😉
Un cop fet això, s'envia sense necessitat de configurar una mica més al servidor.
Ho prova, però crec que el meu correu no va acceptar rebre electrònic d'una font sense autentificar ...
Jo utilitzo exim4 amb un compte de 'gmail' per enviament de correus i funciona bé
- excepte les capçaleres de l'FROM TO i REPLY TO, que gmail posa el que vol però arriben bé -.
Per configurar gmail amb exim4 faci servir aquesta info:
http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/
Interessant, moltes gràcies 🙂
Amic @ KZKG ^ Gaara he instal·lat el paquet i he realitzat el manual pas a pas, l'únic que quan ho enviament es em queda el correu local, mai em va arribar a sortir, em pots ajudar amb això ?? ...... doncs la veritat necessito tenir conficgurado aquest tema en els meus servidors, salu2s.
Per la teva IP assumeixo que ets del meu mateix país 😉
El «problema» amb les nostres xarxes poques vegades tenen IPs reals com a tal, és a dir, estem ficats sota una subxarxa d'una xarxa d'un servidor intermediari d'un ministeri, o alguna cosa així. O sigui, que possiblement el problema el tinguis en que el servidor web per si sol no pot treure un correu de la xarxa o alguna cosa així, potser necessitis això: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/
interessant i si es col·loca en «/ etc / profile» donarà l'advertència quan qualsevol usuari es connecti?
Caldria provar, no se m'havia ocorregut 😀
Digueu-me paranoic, però posar un script que un desconegut em suguiere en una part important del meu sistema on guardo contrasenyes de comptes, dades com actes de naixement, documents d'índole personal i documents de la feina (exposant així als meus clients també) etc etc, i que impilica exposar també el meu compte de correu (!!!) ... doncs, és una cosa perillós, penso.
El perill de l'script presentat és inversament proporcional a l'enteniment de la mateixa.
I per paranoies, deixa d'instal·lar repositoris NON-FREE, ja que és possible que algú introdueixi un codi maliciós que et robi la cistella de la compra.
Vaig explicar què fa cada part de la línia d'ordres, però si creus que engany a algú, l'script o ordres està aquí mateix en el post, no té cap codi ocult o secret, ets benvingut a revisar tan a fons com vulguis les ordres que executa, si trobes alguna cosa sospitosa si us plau, comenta-ho aquí mateix 😉
S'agraeix.
Muyyy interessant.
Potser els fitxers ~ / .bashrc o / etc / profile no siguin els més adequats en el cas que accedim per SSH amb un usuari normal i executem alguna ordre puntual com a root. O si exportem les X11 del nostre VPS remot, cada vegada que obrim XNUMX xterm tindríem un nou correu.
Per al truc de mailx, crec que hauríem d'usar els fitxers ~ / .ssh / rc (individual de cada usuari) o / etc / ssh / sshrc
PostData: _NUNCA_ accedir per SSH com a usuari root. _NUNCA_ accedir per SSH usant password. _SIEMPRE_ utilitzar private keys.
interessant → ~ / .ssh / rc vaig a buscar mes informació a l'respecte gràcies 😀
Hola, molt bo el tut!
Podries fer un per ingressar aportar ssh des culquier ip, fora de la xarxa local?
gràcies !!
Aquest script funciona si el servidor de correu a què enviem no verifica que el correu font vingui d'un servidor autèntic, en aquest cas seria de la font root @ localhost, la majoria de servidors el prenguessin com a correu brossa.
Jo el que faig és configurar sendmail com a MTA, i després utilitzar mail que ve a totes les distros per enviament de correus.
http://vidagnu.blogspot.com/2009/02/configurar-sendmail-como-cliente-de.html
Gràcies pel tip el tendre a per provar-:]
molt útil gràcies
Un milió de gràcies pel consell amic @ KZKG ^ Gaara, vaig a tirar-li un ull al que de sendmail, espero resoldre, salu2s.
Fantàstic! Gràcies per l'aportació!
i que passa, si per exemple l'script aquesta manant massa correus, per ejmplo algú entra en terminal de root a les 8:00 am i enviament com 40 correus, després, algú va entrar a una altra hora i es van enviar més de 23 correus i després algú entra a una altra hora i es van enviar més de 150 correus, al fet que es podria deure?