Categorías
Sen categorizar

$ sudo en Debian 12

Porque en Debian “root” existe e “sudo” non é un grupo por defecto para as contas dos mortais. Aos que vimos de distribucións da famila de “Red Hat”-“Fedora” pódesenos facer traumático:

user@host:~$ su -l root
Password:
root@host:~# adduser user sudo
Engadindo usuario <<user>> ao grupo <<sudo>> ...
Feito.

Isto é para solucionar o problema directamente dende a conta de usuario, nese xusto momento en que precisabas “sudo” e non o tés. E encima, sen o “-l” do “login” non funciona. Recordatorio:

-, -l, --login                  make the shell a login shell
Categorías
Sen categorizar

Driver ST7036I – Arduino

O driver ST7036I é un driver para pantallas LCD COG moi similar ao ST7032 e a outros da mesma familia da marca Sitronix. Neste caso sendo os dous de 2 liñas, só se diferencian no número de caracteres por liña; os ST7038 e ST7039 serían de 16 caracters x 3 liñas.

As probas foron realizadas coas seguintes pantallas, ambas de 20 x 2 caracteres e coa única diferencia da cor de retroiluminación:

MIDAS MCCOG22005A6W-SPTLYI
MIDAS MCCOG22005A6W-BNMLWI

A diferencia é importante a nivel de luz porque a azul é unha pantalla transmisiva e a verde-amarela transflectiva. Isto fai que a pantalla azul sexa prácticamente imposible de ver o que pon sen a retroiluminación activa, aínda que á vista queda moito mellor.

Os modelos anteriores comunícanse por I2C e pódense alimentar dende 3 a 5VDC, a forma de facelo é a seguinte:

Conexión a 3.0VDC
Conexión a 5.0VDC

Para utilizar esta pantalla en Arduino, necesitase a librería Wire.h para comunicarnos polo porto I2C

A pantalla necesita inicializarse na funcion void setup(){} e cada vez que se encenda, coa configuración que se desexe. Neste caso está para alimentación a 3VDC como detalle importante, o resto pódese consultar no manual para personalizar o funcionamento:

Wire.beginTransmission (ScreenAddressI2C);
Wire.write ( 0x00 ); // Send command to the display
delay(10);
Wire.write ( 0x38 );
delay(10);
Wire.write ( 0x39 );
Wire.write ( 0x14 ); // Set BIAS – 1/5
Wire.write ( 0x70 ); // Set contrast low byte
Wire.write ( 0x54 ); // ICON disp off, Booster on, Contrast high byte
Wire.write ( 0x6F ); // Follower circuit (internal), amp ratio (6)
Wire.write ( 0x0C ); // Display on
Wire.write ( 0x01 ); // Clear display
Wire.write ( 0x06 ); // Entry mode set – increment
Wire.endTransmission ();

Para unha tensión de alimentación de 5.0VDC:

Wire.beginTransmission (ScreenAddressI2C);
Wire.write ( 0x00 ); // Send command to the display
delay(10);
Wire.write ( 0x38 );
delay(10);
Wire.write ( 0x39 );
Wire.write ( 0x14 ); // Set BIAS – 1/5
Wire.write ( 0x79 ); // Set contrast low byte
Wire.write ( 0x50 ); // ICON disp off, Booster off, Contrast high byte
Wire.write ( 0x6C ); // Follower circuit (internal), amp ratio (_)
Wire.write ( 0x0C ); // Display on
Wire.write ( 0x01 ); // Clear display
Wire.write ( 0x06 ); // Entry mode set – increment
Wire.endTransmission ();

Por defecto, nestas pantallas a dirección I2C é a 0x3C

Para enviar os textos desexados uso a seguinte función á que chamo cada vez que quero imprimir algo. Indico os caracteres que desexo imprimir, a fila e a columna na que empezar:

void printscreen (String texto, int row, int col){
int j;
int pos = 0;

if (row==1){
pos = 0x40;
}
pos = pos + col + 128;

Wire.beginTransmission(ScreenAddressI2C);
Wire.write(0b00000000); //Prepara para comando
Wire.write(pos); //Coloca cursor en posicion “pos”
Wire.endTransmission();

Wire.beginTransmission(ScreenAddressI2C);
Wire.write(0b01000000); //Prepara para enviar caracter
for (j=0; j<texto.length(); j++){
Wire.write(texto[j]); //Envía caracter
}
Wire.endTransmission();
delay(1);
}

Categorías
Sen categorizar

fail2ban

Cousa acabada para evitar que descoñecidos accedan ao teu sistema. Necesita saber como controlar os intentos de acceso e que facer en caso de que se cumpran os criterios definidos.

Neste caso funciona en Fedora 32, se o SO é CentOS hai que habilitar previamente os repositorios EPEL:

sudo dnf install epel-release
$ sudo dnf install fail2ban

No directorio /etc/fail2ban/filter.d/ aparecen unha chea de filtros preconfigurados como o de sshd, pero algún que pode ser interesante como o de Nextcloud non está.

O filtro para NextCloud pódese engadir de forma sinxela creando un arquivo co nome nextcloud.conf no mesmo directorio e co seguinte contido:

[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
            ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"

Feito na casa, o seguinte filtro pode ser válido para detectar os intentos de acceso a WordPress a través do log de Apache, cando teña o formato por defecto. O nome do arquivo que uso é wp-login.conf:

[Definition]

failregex = ^<HOST> -.*"POST /wp-login.php.*$

datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}

# Author: 3s11

Necesítase configurar unha gaiola para habilitar a supervisión do servizo que se desexe. Para iso engadimos un arquivo no directorio /etc/fail2ban/jail.d No caso de sshd crease co nome sshd.local e o seguinte contido:

[sshd]
enabled = true

Para Nextcloud hai que engadir algún parámetro máis porque hai que especificar a ruta onde está o arquivo de log do propio Nextcloud que dependerá de cada instalación. Nas instalacións por defecto atoparase en data/nextcloud.log dentro do directorio web. A maiores pódense engadir máis cousas para modificar os parámetros que veñen por defecto. Exemplo para Nextcloud:

/etc/fail2ban/jail.d/nextcloud.local

[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 86400
findtime = 43200
logpath = /var/www/external/cloud.3s11/data/nextcloud.log

Exemplo para o filtro de WordPress:

[wp-login]
enabled  = true
filter   = wp-login
logpath  = /your/path/your_apache_wordpress_site.log
port     = 80,443
maxretry = 3
bantime  = 86400
findtime = 120

Sempre é interesante lembrarse de iniciar e habilitar o servicio:

$ sudo systemctl enable --now fail2ban

E podes ver cousiñas, argallar mirando ou solucionar algún problema:

# sudo fail2ban-client status
# sudo fail2ban-client status <nome da gaiola>
# sudo tail -f /var/log/fail2ban.log

https://www.fail2ban.org
https://docs.nextcloud.com/server/19/admin_manual/

Categorías
Sen categorizar

Uns básicos de MariaDB / MySQL

O primeiro é realizar a instalación:

$ dnf install mariadb mariadb-server

Iniciamos o servizo e executamos o asistente de instalación segura:

$ systemctl start mariadb
$ systemctl enable mariadb
$ mysql_secure_installation

A este respecto é interesante contestar a todo que si pero sabendo o que se fai por se pola nosa configuración non nos interesa algo. As preguntas que fará son:

  • Set root password?
  • Remove anonymous users?
  • Disallow root login remotely?
  • Remove test database and access to it?
  • Reload privilege tables now?

Para conectarse por terminal:

$ mysql -u root -p mysql

mysql é opcional para crear usuarios, bases de datos, xestionar permisos… Faise necesario se se queren realizar consultas, é o nome da base de datos á que te conectas.

O necesario para preparar unha conexión para un servizo que se poda conectar:

MariaDB [mysql]> CREATE DATABASE database_name;

MariaDB [mysql]> CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'database_user_password';

MariaDB [mysql]> GRANT ALL ON database_name.* TO 'database_user'@'localhost';

MariaDB [mysql]> DROP USER database_user;

MariaDB [mysql]> DROP DATABASE database_name;

Unhas consultas para poder ir vendo un pouco como están as cousas:

MariaDB [mysql]> show databases;

MariaDB [mysql]> select User from user;

MariaDB [mysql]> select Host,Db,User from db;

A forma máis sinxela de facer unha copia de seguridade para bases de datos non excesivamente grandes podería ser usando mysqldump

$ mysqldump database_name > database_backup_file.sql -p

Para restaurar damos a volta á frecha. É necesario que se a restauración é nun sistema novo, a base de datos debe estar creada previamente á restauración do contido:

$ mysqldump database_name < database_backup_file.sql -p

Pódese introducir o contrasinal de root directamente, non é un bo sitio para introducila porque é visible pero unha solución se se usa nun script. Para iso abonda co parámetro -p seguido do contrasinal, sen espazo intermedio.

E se queres facer unha copia programada cada día sempre podes tirar de cron e gravar un arquivo coa data no nome cada vez:

#!/bin/sh

dt=`date +%y%m%d`

mysqldump database_name > databaseBackup-$dt.sql

https://mariadb.com/kb/en/documentation/
https://fedoraproject.org/wiki/MariaDB

Categorías
Sen categorizar

Fedora 32 nunha Raspberry Pi 4 sen pantalla

Pola Internet atópanse moitos sitios onde se describe como instalar Fedora nunha Raspberry Pi pero se o limitamos a unha Raspberry Pi 4 redúcense as posibilidades enormemente, e se encima non dispós dunha pantalla aínda que só sexa para poder iniciar a configuración, a cousa complícase moito. Hai que ter en conta que esta versión vén con conector micro HDMI polo que ao mellor ata nos pilla un pouco despistados e non o temos.

Habemos de ter en conta que isto fíxose dende un ordenador con Fedora 32 como SO e a Raspberry Pi 4 na súa variante de 4GB de RAM. Sempre poden aparecer problemas ou pasos diferentes con outras opcións. Ter en conta que Raspberry Pi OS só está dispoñible oficialmente e neste momento en 32bit.

Como a miña idea orixinal partía de usar a Raspberry como un pequeno servidor de arquivos en rede, pois pareceume máis que suficiente “Fedora Minimal” para arquitectura ARM® aarch64 descargado dende aquí:
https://alt.fedoraproject.org/alt/

Seguindo as instruccións da documentación de fedora hai varias formas de gravar nunha tarxeta SD. A ferramenta oficial de Raspberry non a probei nin a coñezo, usei fedora-arm-installer que permite facer algunhas modificacións na imaxe descargada. A idea é eliminar o contrasinal de root por defecto ou permitir o inicio de sesión identificado por unha clave pública RSA a través de SSH.
Podes comprobar se tés o teu par de claves xeradas no cartafol ./ssh do teu directorio persoal. Se non existe nin o directorio ou está vacío:

$ ssh-keygen -t rsa

Para instalar fedora-arm-installer:

$ dnf install -y arm-image-installer

Para gravar a imaxe de Fedora na tarxeta SD:

$ sudo fedora-arm-image-installer --image </pat/to/fedora_image> --target rpi4 --media /dev/<sd_card_device> --resizefs --addkey /home/<my_home>/.ssh/id_rsa.pub

Hai que mudar os datos que corresponden:
</path/to/fedora_image> polo directorio da imaxe de Fedora descargada.
<sd_card_device> polo nome co que o sistema recoñece a tarxeta SD.
<my_home> polo nome de usuario no sistema.
Ollo co nome da clave, se se cambia o nome dos arquivos das claves no momento en que se xeren, hai que cambialo aquí tamén.

Cando remate de gravar a tarxeta SD, introdúcese na Raspberry Pi, conéctase polo cable de rede e dáselle alimentación. Pódese consultar no router a IP asignada automáticamente por DHCP e logo intentar acceder por SSH. A sesión iniciarase automáticamente ao intentar conectarse dende o mesmo ordenador co que se crearon as claves e o que se queira facer despois é cousa doutro capítulo.

Moitos saúdos.

https://docs.fedoraproject.org/es/quick-docs/raspberry-pi/
https://fedoramagazine.org/install-fedora-on-a-raspberry-pi/

Raspberry Pi is a trademark of the Raspberry Pi Foundation.