Mostrando las entradas para la consulta sudo ordenadas por fecha. Ordenar por relevancia Mostrar todas las entradas
Mostrando las entradas para la consulta sudo ordenadas por fecha. Ordenar por relevancia Mostrar todas las entradas

Actualizar Pi-Hole

En una entrada anterior ya recomendamos la utilización de Pi-Hole para realizar un bloqueo por denegación de DNS de direcciones maliciosas o la publicidad de las páginas que visitamos o de los equipos que queremos monitorizar.
Para actualizarlo, accederemos a través de SSH al terminal donde tendremos corriendo Pi-hole y ejecutaremos la instrucción:

pihole -up 1

Y ya está, ha sido sencillo. 

  [i] Checking for updates...

  [i] Pi-hole Core:     update available

  [i] Web Interface:    update available

  [i] FTL:              update available


  [i] Pi-hole core files out of date, updating local repo.

  [✓] Check for existing repository in /etc/.pihole

  [i] Update repo in /etc/.pihole...HEAD is now at cbc3fbd Merge pull request #3989 from pi-hole/release/v5.2.3

  [✓] Update repo in /etc/.pihole


  [i] If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'


  [i] Pi-hole Web Admin files out of date, updating local repo.

  [✓] Check for existing repository in /var/www/html/admin

  [i] Update repo in /var/www/html/admin...HEAD is now at 3ff33a3 Merge pull request #1704 from pi-hole/release/v5.3

  [✓] Update repo in /var/www/html/admin


  [i] If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'


  [i] FTL out of date, it will be updated by the installer.


  [✓] Root user check


        .;;,.

        .ccccc:,.

         :cccclll:.      ..,,

          :ccccclll.   ;ooodc

           'ccll:;ll .oooodc

             .;cll.;;looo:.

                 .. ','.

                .',,,,,,'.

              .',,,,,,,,,,.

            .',,,,,,,,,,,,....

          ....''',,,,,,,'.......

        .........  ....  .........

        ..........      ..........

        ..........      ..........

        .........  ....  .........

          ........,,,,,,,'......

            ....',,,,,,,,,,,,.

               .',,,,,,,,,'.

                .',,,,,,'.

                  ..'''.


  [✓] Update local cache of available packages

  [i] Existing PHP installation detected : PHP version 7.4.3

  [i] Performing unattended setup, no whiptail dialogs will be displayed


  [✓] Checking apt-get for upgraded packages... 19 updates available

  [i] It is recommended to update your OS after installing the Pi-hole!


  [i] Installer Dependency checks...

  [✓] Checking for dhcpcd5

  [✓] Checking for git

  [✓] Checking for iproute2

  [✓] Checking for whiptail

  [✓] Checking for dnsutils


  [✓] Supported OS detected

  [i] SELinux not detected

  [i] Performing reconfiguration, skipping download of local repos

  [✓] Resetting repository within /etc/.pihole...

  [✓] Resetting repository within /var/www/html/admin...

  [i] Main Dependency checks...

  [✓] Checking for cron

  [✓] Checking for curl

  [✓] Checking for iputils-ping

  [✓] Checking for lsof

  [✓] Checking for netcat

  [✓] Checking for psmisc

  [✓] Checking for sudo

  [✓] Checking for unzip

  [✓] Checking for wget

  [✓] Checking for idn2

  [✓] Checking for sqlite3

  [✓] Checking for libcap2-bin

  [✓] Checking for dns-root-data

  [✓] Checking for libcap2

  [✓] Checking for lighttpd

  [✓] Checking for php7.4-common

  [✓] Checking for php7.4-cgi

  [✓] Checking for php7.4-sqlite3

  [✓] Checking for php7.4-xml

  [✓] Checking for php7.4-json

  [✓] Checking for php7.4-intl


  [✓] Enabling lighttpd service to start on reboot...

  [✓] Checking for user 'pihole'


  [i] FTL Checks...


  [✓] Detected x86_64 processor

  [i] Checking for existing FTL binary...

  [✓] Downloading and Installing FTL

  [✓] Installing scripts from /etc/.pihole


  [i] Installing configs from /etc/.pihole...

  [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!

  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf


  [i] Installing blocking page...

  [✓] Creating directory for blocking page, and copying files

  [i] Backing up index.lighttpd.html

      No default index.lighttpd.html file found... not backing up


  [✓] Installing sudoer file


  [✓] Installing latest Cron script


  [✓] Installing latest logrotate script

  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old

  [✓] man pages installed and database updated

  [i] Testing if systemd-resolved is enabled

  [i] Systemd-resolved does not need to be restarted

  [✓] Restarting lighttpd service...

  [✓] Enabling lighttpd service to start on reboot...

  [i] Restarting services...

  [✓] Enabling pihole-FTL service to start on reboot...

  [✓] Restarting pihole-FTL service...

  [✓] Deleting existing list cache

  [i] Neutrino emissions detected...

  [✓] Pulling blocklist source list into range


  [✓] Preparing new gravity database

  [i] Using libz compression


  [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

  [✓] Status: Retrieval successful

  [i] Received 58568 domains


  [i] Target: https://mirror1.malwaredomains.com/files/justdomains

  [✗] Status: Not found

  [✗] List download failed: no cached list available


  [i] Target: https://www.sunshine.it/blacklist.txt

  [✓] Status: Retrieval successful

  [i] Received 82108 domains


  [✓] Storing downloaded domains in new gravity database

  [✓] Building tree

  [✓] Swapping databases

  [i] Number of gravity domains: 140676 (131363 unique domains)

  [i] Number of exact blacklisted domains: 6

  [i] Number of regex blacklist filters: 0

  [i] Number of exact whitelisted domains: 16

  [i] Number of regex whitelist filters: 1

  [✓] Flushing DNS cache

  [✓] Cleaning up stray matter


  [✓] DNS service is listening

     [✓] UDP (IPv4)

     [✓] TCP (IPv4)

     [✓] UDP (IPv6)

     [✓] TCP (IPv6)


  [✓] Pi-hole blocking is enabled


  [i] The install log is located at: /etc/pihole/install.log

Update Complete! 


  Current Pi-hole version is v5.2.3.

  Current AdminLTE version is v5.3.

  Current FTL version is v5.4.

Reutilizar últimos comandos en Linux con history

Muchos de los comandos que utilizamos en Linux los solemos invocar varias veces. El propio sistema recuerda dichos comandos y podemos recorrer la lista utilizando las flechas arriba ▲ y abajo ▼ del teclado para recorrer uno por uno los que hemos utilizado últimamente.

Flechas teclado

Para obtener el historial de comandos que hemos utilizado últimamente, lo haremos con:

history

Nos mostrará un listado con un número y el comando asociado a ese número.

    1  sudo -V

    2  root@sololinux-demo:~$ sudo -V

    3  Sudo versión 1.8.21p2

    4  versión del complemento de políticas de sudoers 1.8.21p2

    5  versión de gramática del archivo Sudoers 46

    6  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

    7  Sudo versión 1.8.21p2

    8  versión del complemento de políticas de sudoers 1.8.21p2

    9  versión de gramática del archivo Sudoers 46

   10  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   11  Sudo versión 1.8.21p2

   12  versión del complemento de políticas de sudoers 1.8.21p2

   13  versión de gramática del archivo Sudoers 46

   14  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   15  Sudo versión 1.8.21p2

   16  versión del complemento de políticas de sudoers 1.8.21p2

   17  versión de gramática del archivo Sudoers 46

   18  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   19  Sudo versión 1.8.21p2

   20  versión del complemento de políticas de sudoers 1.8.21p2

   21  versión de gramática del archivo Sudoers 46

   22  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   23  Sudo versión 1.8.21p2

   24  versión del complemento de políticas de sudoers 1.8.21p2

   25  versión de gramática del archivo Sudoers 46

   26  Sudoers I/O plugin version 1.8.21p2

   27  wget https://www.sudo.ws/sudo/dist/packages/1.9.4p2/sudo_1.9.4-3_ubu2004_amd64.deb

   28  ls

   29  sudo gdebi sudo_1.9.4-3_ubu2004_amd64.deb

   30  sudo apt install gdebi-core

   31  apt update

   32  sudo apt install gdebi-core

   33  sudo gdebi sudo_1.9.4-3_ubu2004_amd64.deb

   34  sudo -V

   35  apt update

   36  apt list --upgradable

   37  apt full-upgrade

   38  history

Si por ejemplo queremos ejecutar el comando: sudo apt install gdebi-core que corresponde a la fila 32, utilizaremos el símbolo de final de exclamación ! seguido del número de la fila.

!32

Si queremos ejecutar el último comando que tecleado utilizaremos dos finales de exclamación !!

!!

Sin embargo si queremos limitar la lista de búsqueda, utilizaremos history seguido de número de comandos que queremos visualizar

history 3

Si queremos buscar un script con una cadena de texto determinada utilizaremos history | grep seguido de aquello que queremos buscar, como por ejemplo

history | grep sudo

Si queremos borrar todo el historial de comandos utilizaremos:

 history -c

Si queremos borrar tanto el contenido de la memoria como el contenido del archivo ~/.bash_history tendremos que ejecutar el siguiente comando:

history -c && history -w 

E: Sub-process /usr/bin/dpkg returned an error code (1)

A la hora de hacer uso de apt-get bien para instalar, borrar, o actualizar el sistema. Al principio parece que toda va bien pero al final del proceso me indica que ha habido un error y me muestra:

E: Sub-process /usr/bin/dpkg returned an error code (1)

Al parecer al realizar las tareas cotidianas de actualización del sistema, algún paquete a quedado retenido y no permite continuar.

Uno de las formas que encontrado para poder liberar el proceso, que ha quedado atrapado. Es accediendo a la carpeta:

/var/lib/dpkg/info

En esta carpeta se recoge información sobre los paquetes instalados, o en proceso de instalación.

La solución es descubrir que paquete ha quedado retenido y borrar la información sobre el. Por ejemplo utilizando el comando

sudo apt-get update

Nos saldrá el paquete que está creando esta situación, seguido de E: Sub-process /usr/bin/dpkg returned an error code (1)

Accedemos al directorio:

cd /var/lib/dpkg/info

Y borramos los archivos relacionados con el paquete que ha quedado retenido. En mi caso eran varios y último era man-db

sudo rm man-db.*

Volvemos a actualizar las lista de paquetes:

sudo apt-get update

Y ya podemos actualizar nuestro sistema e instalar nuevos paquetes. 

Reproductor VLC

VLC media player

"VLC es un reproductor multimedia libre y de código abierto multiplataforma y un «framework» que reproduce la mayoría de archivos multimedia, así como DVD, Audio CD, VCD y diversos protocolos de transmisión."


El reproductor del cono de obra, es uno de los más versátiles que he utilizado. Es gratuito, distribuido bajo la licencia GPLv2.1+.2​, y multiplataforma, tanto para ordenadores como para dispositivos móviles: como tablet y smartphone, sin importar el sistema operativo. También nos permite reproducir gran variedad de códecs y formatos de audio y vídeo, y/o escuchar medios en línea y emitir en streaming para que se pueda ver en otro dispositivo. E incluye herramientas para la conversión de archivos cambiando el formato de compresión, para que por ejemplo sea compatible con nuestra SmartTV. Es prácticamente una navaja suiza para nuestros medios audio-visuales.


Formatos de video que soporta:

MPEG-1/2, DivX® (1/2/3/4/5/6), MPEG-4 ASP, XviD, 3ivX D4, H.261, H.263 / H.263i, H.264 / MPEG-4 AVC, Cinepak, Theora, Dirac / VC-2, MJPEG (A/B), WMV 1/2, WMV 3 / WMV-9 / VC-1, Sorenson 1/3, DV, On2 VP3/VP5/VP6, Indeo Video v3 (IV32), Real Video (1/2/3/4).

Formatos de audio que soporta

MPEG Layer 1/2, MP3 - MPEG Layer 3, AAC - MPEG-4 part3, Vorbis, AC3 - A/52, E-AC-3, MLP / TrueHD>3, DTS, WMA 1/2, WMA 3, FLAC, ALAC, Speex, Musepack / MPC, ATRAC 3, Wavpack, Mod, TrueAudio, APE, Real Audio, Alaw/µlaw, AMR (3GPP), MIDI, LPCM, ADPCM, QCELP, DV Audio, QDM2/QDMC, MACE.

Subtítulos que soporta:

DVD, Text files (MicroDVD, SubRIP, SubViewer, SSA1-5, SAMI, VPlayer), Closed captions, Vobsub, Universal Subtitle Format (USF), SVCD / CVD, DVB, OGM, CMML, Kate.
ID3 tags, APEv2, Vorbis comment.

Formatos soportados de entrada:

UDP/RTP Unicast, UDP/RTP Multicast, HTTP / FTP, MMS, TCP/RTP Unicast, DCCP/RTP Unicast, File, DVD Video, Video CD / VCD, SVCD, Audio CD (no DTS-CD), DVB (Satellite, Digital TV, Cable TV), MPEG encoder, Video acquisition.

Formato soportados de salida

MPEG (ES,PS,TS,PVA,MP3), AVI, ASF / WMV / WMA, MP4 / MOV / 3GP, OGG / OGM / Annodex, Matroska (MKV), Real, WAV (including DTS), Raw Audio: DTS, AAC, AC3/A52, Raw DV, FLAC, FLV (Flash), MXF, Nut, Standard MIDI / SMF, Creative™ Voice.




No te conformes con el reproductor predeterminado de tu sistema operativo y atrévete a probar VLC.
En sistemas basados en Debian, esta incluido en los repositorios oficiales, solo tendremos que entrar en nuestro terminal y teclear el comando:
sudo apt install vlc

 O también podemos instalarlo desde el repositorio de paquetes SNAP:

sudo snap install vlc

Navegador Brave. Te mereces un Internet mejor.

Brave es un navegador web, multiplataforma, de código abierto basado en Chromium, creado por la compañía Brave Software en el año 2016, fundada por el cofundador del Proyecto Mozilla y creador de JavaScript, Brendan Eich.2

Al estar basado en Chromium nos permite la instalación de extensiones creadas para Chrome al igual que nos ocurre con Vivaldi


Brave, el nuevo internet


Un navegador que nos ofrece privacidad real y más velocidad al bucear en la red de redes. Y lo consigue bloqueando todos los anuncios y rastreadores dañinos que aparecen mientras realizamos nuestras visitas a páginas web. También incorpora para nuestra privacidad y seguridad, el modo incógnito con navegación a través de la red TOR, de la hemos hablado en otro post.


Importación y configuración


Pero lo que hace diferente a Brave de otros navegadores que nos ofrecen lo mismo, es la posibilidad, si queremos, de que nos paguen por anuncios. Si os habéis frotado las manos, y pensais en cambiar vuestra residencia a Andorra, que sepáis que  no es tan simple como 10 anuncios un euro. 

Elegimos cuantos anuncios, no invasivos queremos que se nos muestre a la hora. Y dependiendo de cuantos anuncios visitemos obtendremos un número determinado de Tokens de Atención Básica (BAT) que suponen el 70% de los ingresos publicitarios con los que trabaja la compañia.


Brave Rewards

Brave Rewards


Brave Rewards

Acumula tokens mientras navegas

Activa Brave Rewards para acumular tokens mientras navegas por ver anuncios que respetan la privacidad. Puedes configurar el número de anuncios que ves por hora. Actualmente puedes apoyar a tus creadores web favoritos con tus tokens; pero pronto podrás utilizar tokens para acceder a contenido premium, tarjetas de regalo y mucho más. 

 

Estas ganancias las podremos transferir a nuestra carteras virtuales o donar una parte de ellas a los desarrolladores de las páginas, blogs, o servicios de redes sociales o videos que visites; siempre y cuando el desarrollador se encuentre registrado en Brave Rewards

Como he dicho es multiplataforma y actualmente se encuentra disponible para:


La instalación en sistemas Linux basados en Debian:

sudo apt install apt-transport-https curl

sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list

sudo apt update

sudo apt install brave-browser

 

Para sistemas Fedora 28+, CentOS/RHEL 8+

sudo dnf install dnf-plugins-core

sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/

sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

sudo dnf install brave-browser

 

Y los comandos para la instalación en OpenSUSE 15+

sudo zypper install curl

sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

sudo zypper addrepo https://brave-browser-rpm-release.s3.brave.com/x86_64/ brave-browser

sudo zypper install brave-browser

¿Una propina 😋🙏? 

Como cambiar el password a un usuario en Linux

 Hay distribuciones, como Raspberry, que ya en su instalación tienen un usuario y contraseña predeterminadas 🔐 y es recomendable cambiar. O es posible que queramos cambiar nuestro password por que ha habido una brecha de seguridad en el sistema.

Para cambiar la contraseña de un usuario desde terminal en Linux, utilizaremos el comando:

passwd <Nombre del usuario>

Nos pedirá que introcutacamos la "Nueva contraseña" y en una segunda instancia la volvamos a repetir para confirmar que la hemos escrito bien.

Recuerda que en la mayoría de los casos deberemos tener privilegios de administrador para poder cambiar la contraseña de nuestros usuarios. La sintaxis completa sería:

sudo passwd <Nombre del usuario>

Como instalar paquetes desde terminal

Para poder instalar el paquete alojado en nuestro disco duro utilizaremos el comando

dpkg Gestor de paquetes .deb para instalar aplicaciones Debian manualmente.

La sintaxis es muy sencilla:

sudo dpkg -i nombre_archivo.deb

  • sudo Ejecutara nuestro comando con privilegios de administrador
  • dpkg  Es una herramienta para instalar, compilar, eliminar y manipular los paquetes de Debian.
  • -i (install) Parámetro que indica que ha de realizar la acción de instalar
  • nombre_archivo.deb Nombre del paquete que hemos descargado previamente.

Como borrar y eliminar todos los archivos de una aplicación

 Si necesitas más espacio, o la aplicación que instalaste no ha cumplido tus expectativas. Tienes que desinstalar la aplicación, pero si lo utilizas con las herramientas gráficas puede ser que los archivos de configuración y de perfil del programa permanezcan en el disco duro.

En terminal vamos a desinstalar y purgar la aplicación, vamos a borrar con una sola línea todos los archivos y carpetas relacionados con el programa.

sudo apt-get --purge remove <Nombre del paquete a desistalar>

  • sudo: Nos permitirá ejecutar el comando con privilegios de administrador
  • apt-get: Comando que puede agregar o eliminar paquetes del sistema.
  • --purge: Le indicamos al comando que borre los archivos de configuración relacionados con la aplicación que queremos desinstalar.
  • remove: Borrar el paquete nombrado.


No tiene suficiente espacio libre en /var/cache/apt/archives/

 No tiene suficiente espacio libre en /var/cache/apt/archives/


sudo du -sh /var/cache/apt/archives

Quedarse sin espacio no es lo más habitual si utilizas grandes computadoras. Pero es problema muy común en ordenadores antiguos, o como es el caso en una Raspberry a la hora de actualizar el sistema operativo.

Primero vamos a averiguar que cantidad de memoria está ocupando los archivos en la caché. Utilizaremos el comando du (Uso de Disco) con el argumento -sh

  • -s, pantalla Resumir sólo un total para cada argumento.
  • -h, tamaños de impresión. Formato legible por el hombre (por ejemplo, 1K 234M 2G)

sudo du -sh /var/cache/apt/archives


sudo apt clean

En mi caso el espacio ocupado por la caché de los repositorios es de 85Mb. Y después de utilizar el comando apt clean reducimos al tamaño de una carpeta vacía.
sudo apt clean

sudo apt-get clean

 

 




Como enviar correo electronico con archivo adjunto en PHP

Como enviar un correo electrónico con archivos adjuntos con PHP 📨. 
Puede ser que necesitemos crear una función para enviar un correo electrónico con un archivo adjunto, como respuesta a un formulario o para realizar publicaciones en otros servidores.
Si utilizamos una plataforma que en al que podemos programar y ejecutar PHP debemos asegurarnos que se encuentre instalado sendmail
Si somos el administrador de nuestro propio servidor, podremos instalarlo desde el terminal:
sudo apt-get install sendmail
Si somos invitados en el servidor, lanzaremos un script para comprobar si podemos utilizar la función mail:

<?php
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );    //Comprobaremos si ha sido enviado o no
    $from = "TU CORREO ELECTRONICO"; //La dirección de correo desde que la enviamos
    $to = "DESTINATARIO";    //Dirección de correo a la que enviamos el mail
    $subject = "Probando PHP mail";    //Encabezado del correo
    $message = "PHP mail funciona correctamente";    //El mensaje
    $headers = "From:" . $from;    //Cabecera que dejamos tal cual
    mail($to,$subject,$message, $headers);    //Enviamos el correo
    echo "The email message was sent.";    //Confirmamos que el correo ha sido enviado

?>

Si hemos recibido el correo, podremos continuar con la programación de nuestra función.


//Recipiente
$to = 'DESTINATARIO';     //A quien le enviamos nuestro correo

//remitente del correo
//Desde que correo le envamos y quien será el destinatario de la respuesta si lo hubiera
$from = 'NUESTRO CORREO ELECTRONICO';
$fromName = 'UN NOMBRE, O NICK DESCRIPTIVO';    //Quienes somos o nuestra organización

//Asunto del email
//Utilizamos la función utf8_decode() para que nos reconozca las tildes y la ñ, entre otros caracteres
$subject = utf8_decode('ASUNTO DEL CORREO'); 

//Ruta del archivo adjunto
$file = 'DIRECCIÓN GLOBAL DEL ARCHIVO QUE VAMOS A ENVIAR';

//Contenido del Email
//La función htmlentities() nos convertira las tildes ñ y caracteres especiales en etindades HTML
$htmlContent = htmlentities('CONTENIDO DEL CORREO CODIFICADO EN HTML'); 

//Encabezado para información del remitente
$headers = "De: $fromName"." <".$from.">";

//Limite Email
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

//Encabezados para archivo adjunto 
$headers .= "\n MIME-Version: 1.0 \n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

//límite multiparte
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n"; 

//preparación de archivo
if(!empty($file) > 0){
    if(is_file($file)){
        $message .= "--{$mime_boundary}\n";
        $fp =    @fopen($file,"rb");
        $data =  @fread($fp,filesize($file));
        @fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" . 
        "Content-Description: ".basename($file)."\n" .
        "Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

//Enviar EMail
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

Esta función requiere mucho tiempo de ejecución y no es recomendable para el envio masivo de correos electronicos.

Como borrar las claves almacenadas ssh de un equipo

Al iniciar la conexión ssh con un nuevo servidor, nos advierte que no es de confianza y si queremos almacenar las claves. Esta asociación es almacenada y nos permitirá encriptar las conexiones con el ordenador que queremos conectarnos.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

En los siguientes inicios de sesion a traves de ssh no nos pedirá esta confirmación de seguridad, por que la asociación ya ha sido almacenada. 
Pero si en algún momento la confianza entre el servidor y el cliente se corrompe. La conexión no será posible.


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@                                   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!                                                              @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.


Por una reinstalación del equipo o una actualización del sistema....., la clave maestra se modificara, y por lo tanto no coincidirá con la que nuestro cliente tiene almacenada, y por lo tanto la conexión ya no será segura, y no se permitirá. Esto requiere por nuestra parte una doble confirmación.
Tendremos que almacenar los datos almacenados de nuestro servidor.

Primero tendremos que borrar de la base de datos la dirección ip y la clave maestra a ella asociada.

sudo ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.100.2"

Y nos responderá, la dirección ip del servidor ha sido encontrada y borrada del almacén y archivo actulizado. Pero por si fuera necesario se ha guardado una copia del original.

 # Host 192.168.100.2 found: line 2
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

Y Segundo, al volver a conectar nos pedirá confirmación para almacenar el servidor SSH  y su clave SHA256.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

Temas relacionados:


 

Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

E: No se pudo bloquear /var/lib/dpkg/lock-frontend - open (11: Recurso no disponible temporalmente)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Alguna vez nos podemos encontrar con este mensaje al intentar instalar un paquete en nuestra distribución Linux. Esto es debido a que hemos realizado una instalación fallida, se ha apropiado de alguno de los archivos necesarios para ejecutar apt-get.
Vamos a averiguar que proceso ha secuestrado nuestros archivos utilizando el comando: lsof

lsof [PARÁMETROS] [ARCHIVO..]
En la invocación del comando lsof, se permite identificar que procesos están utilizando el o los archivos indicados.

Ejecutando este comando para averiguar quien nos tiene bloqueado el archivo que necesitamos para comenzar nuestro nuevo proceso de instalación.

sudo lsof /var/lib/dpkg/lock-frontend

Obtenemos dos informaciones un WARNING y el culpable:

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get             15206 root    4uW  REG    8,2                     0 9962051 /var/lib/dpkg/lock-frontend


El usuario root intentó lanzar el comando apt-get y por alguna razón no termino con exito y bloqueo el archivo. De la información anterior nos quedamos con el PID, que es el identificador para matarlo

sudo kill -9 15206

Y con esto liberamos del secuestro los archivos necesarios que nos impedía continuar con nuestra tarea. En este caso la instalación de un nuevo paquete. 
 



 

Conectar a servidor base de datos MariaDB

Puede ser el caso que además de gestionar una base de datos SQL en local, necesitamos gestionarla en remoto. En la mayoría de los servidores de hospedaje web, no nos permiten conectarnos a la servidor de base de datos en remoto, tenemos que hacerlo en local. Una de las herramientas más utilizadas es PhpMyAdmin. Este caso en concreto he instalado un servidor de base de datos MariaDB Server en una Raspberry. Tengo muy oxidado el lenguaje SQL como para acceder al servidor a través de SSL y realizar todas las tareas de instalación de rablas y mantenimiento desde el cliente de MariaDB. Quiero gestionarla en un entorno más amigable, pero no quiero instalar a mayores un servidor Apache con PHP para poder utilizar PhpMyAdmin.

Logo MariaDBMariaDB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius —fundador de MySQL—, la fundación MariaDB y la comunidad de desarrolladores de software libre.1​ Introduce dos motores de almacenamiento nuevos, uno llamado Aria —que reemplaza a MyISAM— y otro llamado XtraDB —en sustitución de InnoDB—. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
Aunque el tutorial es para MariaDB, este puede ser extensible si así fuera un servidor de MySQL.

De forma predeterminada y por seguridad no permiten el acceso remoto, solo se permite acceso atraves de localhost.

Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

Enter current password for root (enter for none): Pulsa enter
 Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y
 ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password
 Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password
 Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y
¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y
¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y
 ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y
 ¿Recargar privilegios a las tablas ahora? [Y/n]: Y

No vamos a permitir al root acceder desde remoto, no es considerado de una buena praxis de seguridad que el administrador se pueda conectar en remoto. Por el contrario vamos a crear un usuario nuevo y le vamos a dar privilegios de acceso desde remoto. En este caso indicaremos que el usuario se puede conectar desde cualquier equipo de nuestra LAN. Con 192.168.100 indicamos que subred se puede conectar usando el carácter % como comodín para indicarle que cualquier equipo de esta. También podríamos limitar aun más indicando la dirección ip del equipo desde el que únicamente puede acceder en remoto. Creando un entorno aun más seguro

CREATE USER 'nuevo usuario'@'192.168.100.%';
 
GRANT ALL PRIVILEGES ON *.* TO 'nuevo usuario'@'192.168.100.%' IDENTIFIED BY 'nueva contraseña' WITH GRANT OPTION;

Seguidamente configuraremos de forma manual, no solo el acceso en local, si no el acceso en remoto.
Deberemos localizar los archivos de configuración de MySQL o de MariaDB.
  • /etc/my.cnf                         
  • $MYSQL_HOME/my.cnf
  • /etc/mysql/my.cnf                      
  • SYSCONFDIR/my.cnf                     
  • DATADIR\my.ini                           Windows
Editando el archivo de configuración /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf
 

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Nos indica los directorios donde se encuetra el archivo que estamos buscando para editarlo. 50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Buscaremos la sección [mysqld]  donde editaremos los valores que nos permitan conexiones externas. Este es un ejemplo real de configuración que me ha permitido conectarme al servidor desde otro equipo.

[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0

.......................................................

 # * Security Features
#
# Read the manual, too, if you want chroot!
#chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
ssl-cipher = TLSv1.2
# ..when MariaDB is compiled with YaSSL (default in Debian):
#ssl = on

Te explico de forma más detallada las lineas a editar para un correcto funcionamiento. 

  •  port                    = 3306 Es el puerto por defecto, no es necesario cambiarlo, pero si fuera necesario podríamos especificar otro puerto de accesos.
  • #skip-external-locking Comentamos esta linea para permitir que el servidor sea accesible desde el exterior. Comentamos añadiendo el carácter #
  • #bind-address            = 127.0.0.1 Tambien aañadimso el caracter # para comentar esta linea.
  • bind-address            = 0.0.0.0 Añadiremos una linea con los parametros indicados.
  • ssl-cipher = TLSv1.2 Esta parte hay que tenerla en cuenta si tenemos problemas a la hora de concetar con los certificados. Al utilizar OpenSSL descomentamos esta linea
  • #ssl = on Y comentamos esta otra. Que era la que estaba activa de forma predeterminada pero, que en mi caso no me permitía conectarme.
Una vez modificado las lineas señalas. Guardamos y salimos del editor de textos. Y reiniciamos el servicio.

sudo systemctl restart mariadb.service

Tenemos que tener en cuenta, si en nuestro servidor, tenemos instalado y corriendo un cortafuegos, debemos permitir las conexiones a través del puerto 3306, si lo hemos dejado por defecto, o el puerto que asignemos al servicio. Para añadir el permiso abrir el mencionado puerto utlizando ufw seria:

sudo ufw allow 3306/tcp

Y si solo vamos a permitir el acceso en remoto a un equipo, con una dirección ip en concreto:

 sudo ufw allow from 192.168.100.2 to any port 3306

Instalar servidor base de datos MariaDB

Uno de los primeros gestores de bases de datos con licencia GNU GPL que utilice, en un proyecto anterior, fue MySQL. En aquel entonces cree una pagina web dinámica, programada en PHP que obtenía los datos, utilizando SQL. Aquella idea quedó aparcada por falta de tiempo, pero ahora quería retomar parte de aquel antiguo proyecto.
Años después me he encontrado que los creadores de MySQL abandonaron la compañía para crear una nueva, MariaDB. Un nuevo gestor que evolucionó y han mejoró con respecto al su predecesor.


MySql vs MariaDB
Para instalar el servidor MariaDB podemos descargarla de la página oficial. Pero también se encuentra en los repositorios oficiales:

sudo apt install mariadb-server mariadb-client
 
Con este script instalaremos el servidor y el cliente del gestor. Seguidamente arrancaremos el servicio

sudo systemctl start mariadb.service

Y lo habilitamos para que cuando lo haga el sistema.

sudo systemctl enable mariadb.service

 Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

 Enter current password for root (enter for none): Pulsa enter Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y ¿Recargar privilegios a las tablas ahora? [Y/n]: Y



En este caso solo le vamos a permitir el acceso al administrador solo en local. De forma predeterminada no esta permitida el acceso en remoto a ningún usuario. Si tenemos la necesidad de hacerlo en este post te explico como.


Comprobaremos que funciona accediendo con el mismo cliente que hemos instalado:

sudo mariadb
 

Accediendo al gestor MariaDB

 



Done potencia informática proyecto COVID-PHYM

3D medical animation coronavirus structure
 
El CSIC e Ibercivis lanzan un proyecto de ciencia ciudadana que busca fármacos contra el coronavirus.Cualquier persona puede colaborar desde casa dejando que su ordenador realice operaciones de cálculo. El objetivo es estudiar si medicamentos ya usados contra el ébola o la gripe logran inhibir la replicación del virus.
Acerca del proyecto
  • Cualquier persona puede colaborar desde casa descargando un programa informático y dejando que su ordenador realice operaciones de cálculo.
  • El objetivo es estudiar si medicamentos ya usados contra el ébola o la gripe logran inhibir la replicación del virus.
  • Los ordenadores de los voluntarios formarán una red de computación distribuida con una potencia de cálculo similar a la de un supercomputador.
En articulo anterior, Done potencia informática a Folding@Home, compartimos un proyecto de investigación y simulación sobre como se plegaban las proteínas y asi encontrar inhibidores para su propagación. En esta pandemia que nos ha tocado pasar la mayoría de los recursos se centran en buscar una cura al Coronavirus (COVID-19). Un proyecto español  esta realizando simulaciones como se comporta el virus al interactuar con medicamentos usados con medicamentos utilizados para combatir virus similares. Estas simulaciones requieren de muchas horas de calculo. O tenemos un superordenador o utilizamos la computación distribuida.
El proyecto que encabeza por la fundación Ibercivis:

es una fundación privada sin ánimo de lucro que tiene como objetivos realizar, promover y visibilizar la Ciencia Ciudadana.

Nuestra Misión:
  • Para la consecución de sus objetivos, y en colaboración con diversos agentes científicos y sociales, la Fundación Ibercivis:
  • Promueve investigaciones en muy diferentes áreas de conocimiento científico en los ámbitos local, nacional e internacional.
  • Proporcionar apoyo técnico, difusión y formación de modo que cualquier persona pueda participar en la investigación científica, en función de sus intereses y capacidades siempre dinámicas.
 
Para realizar estas simulaciones compartidas utilizan el gestor de proyectos de computación distribuida BOINC.


Wikipedia: La Infraestructura Abierta de Berkeley para la Computación en Red (en inglés Berkeley Open Infrastructure for Network Computing), o BOINC por sus siglas en inglés, es una infraestructura para la computación distribuida, desarrollada originalmente para el proyecto SETI@home, pero que actualmente se utiliza para diversos campos como física, medicina nuclear, climatología, etc. La intención de este proyecto es obtener una capacidad de computación enorme utilizando computadores personales alrededor del mundo. Los proyectos en los que trabaja este software tienen un denominador común, y es que requieren una gran capacidad de cálculo.
 Para colaborar en el proyecto descargaremos la aplicación que corresponda al nuestro sistema operativo. Descargar aqui

En distribuciones Linux basados en Debian, la aplicación se encuentra en los repositorios oficiales, para su instalación podemos instalarlo desde la linea de comandos o desde Gestor de Software:

sudo apt-get install boinc-client boinc-manager

Gestor de Programas
 
 
Lanzamos la aplicación. Nos registramos si aun si somos usuarios nuevos y nos mostrará un listado de los proyectos a los que queremos colaborar, nosotros ingresaremos en el apartado.
Url del proyecto: https://boinc.ibercivis.es
 

Elegimos proyecto

Iniciamos nuestra colaboración

 
 Podremos controlar el uso de nuestra CPU. De forma predeterminada ocupara el tiempo que nuestro ordenador se encuentra desocupado. Esta configuración podemos cambiarla, así como colaborar con otros proyectos.

Servicio multimedia con Plex

Una alternativa para organizar nuestros archivos multimedia es instalando un servidor Plex. Plex es un software privativo, que podremos utilizar de forma gratuita con algunas limitaciones, para embellecer nuestra bibilioteca multimedia y añadir portadas y metadatos, que si utilizamos un servidor DLNA Por ejemplo en el cliente para Smartphone solo nos permite ver un minuto en streaming. En este caso vamos a instalar su servidor en una Raspberry en la que hemos conectado un disco duro, donde se encuentran alojados nuestros archivos. Pero también podremos instalarlo en nuestro ordenador o en un NAS. Esta aplicación es multiplataforma y es posible instalar el servidor y/o su cliente en múltiples dispositivos y plataformas. La APP se encuentra disponible en el catálogo de las principales Smart TV.




Para tener la garantía de que nuestro servidor se encuentre actualizado en todo momento, añadiremos su repositorio en en nuestra lista.

echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

Añadiremos las fimras del nuevo repositorio
 
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add

Refrescaremos las lista de repositorios:

 sudo apt-get update

Y una vez que acabe la operación de actualización realizaremos la instalación de nuestro servidor Plex

 sudo apt-get install plexmediaserver

Instalar Plex server
 
Al final de la instalación nos pedira confirmación para reescribir el archivo que hemos creado al principio donde incluimos donde se encuentra los repositorios de Plex. Confirmaremos la acción por omisión que sera N.

Y ya tendremos  instalado nuestro servidor multimedia. La configuración la realizaremos desde el servicio web creado por le servidor.


En tudireccionip pondremos la dirección ip donde hemos instalado nuestro servidor multimedia Plex.



 La utilización de Plex requiere el registro de una cuenta. Si disponemos de ella podemos vincularlo a nuestro servidor, si no es asi deberemos crear una cuenta nueva.




Nos recuerdan que podremos aumentar las prestaciones si pagamos por el servicio premium.




Daremos nombre a nuestro servidor y añadiremos bibliotecas vinculadas a las carpetas donde se encuentren nuestros archivos mutiltimedia. Caundo más organicemos seamos más elegante será nuestra biblioteca y más facil sera acceder a aquello que queremos reproducir.




Hay muchas opciones de configuración, que resulta muy interesante de investigar para sacarle el maximo rendimiento. Al vincular nuestra cuenta si queremos volver a la configuración de nuestro servidor, podemos volver desde el navegador a través de l a dirección web

 
Ya solo nos quedaría instalar el cliente de Plex en nuestro reporductor multimedia y disfrutar de nuestra biblioteca.



Usuario desconocido redis en el archivo statoverride

Uno de los problemas que arrastra Linux en la desinstalación de aplicaciones es que no se purgan completamente. Todos los archivos de configuración y librerías de las que dependia pernmanecen instaladas en el sistema. Eso, como ha sido en mi caso, puede causar un problema de secuestro de procesos. En este caso no podía instalar ni actualizar mi distribución Linux.

Mensaje de error al actualizar Linux


dpkg: erro fatal irrecuperable, abortando::
usuario desconocido 'redis' en el archivo statoverrride
E: Sub-process /usr/bin/dpkg returned an error code (2)
Un paquete no se puedo esntalar. Tratando de recuperrarlo:

Buscando al usuario 'redis' no aparece en el sistema lo único que encuentro es una referencia en el arranque del sistema Boot system : Systemd.

redis-server

Redis, que significa Remote Dictionary Server (servidor de diccionarios remoto), es un rápido almacén de datos clave-valor en memoria de código abierto que se puede utilizar como base de datos, caché, agente de mensajes y cola. El proyecto se inició cuando Salvatore Sanfilippo, el desarrollador original de Redis, trataba de mejorar la escalabilidad de su startup italiana. Redis ofrece ahora tiempos de respuesta inferiores al milisegundo, lo que permite que se realicen millones de solicitudes por segundo para aplicaciones en tiempo real de videojuegos, tecnología publicitaria, servicios financieros, sanidad e IoT. Redis es una opción muy habitual en aplicaciones de almacenamiento en caché, administración de sesiones, videojuegos, tablas de clasificación, análisis en tiempo real, datos geoespaciales, servicios de vehículos compartidos, chat/mensajería, streaming de contenido multimedia y publicación/suscripción.

Deshabilitamos el arranque automático. Redis no es un programa que se encuentre actualmente en mi sistema y al no haber purgado correctamente me esta impidiendo actualizarme.
La siguiente acción es acceder al archivo statoverride y borrar la linea creada por "usuario" "redis"

sudo nano /var/lib/dpkg/statoverride

Fichero statoverride
 

Buscando veo que el servidor se instaló al probar Steam. Asi que continuo con la desinstación y purga de redis-server
 
sudo apt-get purge redis-server
sudo apt-get purge redis-server
 

Una vez borrado la carpeta /home/usuario,/steam Ya podremos operar con normalidad y nos permite actualizar el sistema.