Raspberry Pi

Descargar imagen
$ cd ~/Descargas && wget -c https://downloads.raspberrypi.org/raspbian_full_latest 

Instalar imagen
# fdisk -l
# dd bs=4M if=2017-11-29-raspbian-stretch.img of=/dev/sd@ conv=fsync


Configuración con cable HDMI 

Necesitaremos el cable HDMI y arrancar con una pantalla en inicio, después podremos hacer todo desde SSH y prescindir de la pantalla

Haremos las siguientes adaptaciones a nuestro gusto:
cambiar:
idioma
teclado
hora
nombre host Rpi

desactivar bluetooth
desactivar wifi

ip fija eth0
Ninguna casilla marcada
IPv4 Address    192.168.1.200
Router        192.168.1.1
DNS Servers    127.0.0.1


SSH

En router
Application / Application list
TCP and UDP con todos los puertos a 29001

Application / Port Forwarding (Application list)
192.168.1.200 -- SSH

En RPI cambiar puerto ssh

$ sudo nano /etc/ssh/sshd_config

Añadir Port 29001

$ sudo service restart ssh



Cambiar usuario por defecto de RPI

$ sudo passwd root
$ sudo nano /etc/ssh/sshd_config
PermitRootLogin yes

Una vez que hemos puesto la clave de root, salimos de la terminal y volvemos a iniciar sesión pero cuando nos pida el usuario pondremos root y la clave del usuario root. Una vez que estemos en el sistema como root tecleamos el siguiente comando:

$ usermod -l pacanis pi -md /home/pacanis

Lo que hace este comando es renombrar el usuario y mover todo el contenido del /home/ del usuario actual al nuevo /home/ del nuevo usuario. De esta forma habremos cambiado el nombre del usuario de forma limpia

Una vez que hayamos hecho esto, nos logueamos con el nuevo usuario pacanis y la clave que tuviera el usuario anterior, y procedemos a deshabilitar (borramos la clave) el usuario root por seguridad.

$ groupmod -n pacanis pi

$ sudo nano /etc/ssh/sshd_config
Comentar PermitRootLogin yes

$ sudo passwd -l root

Cambia la contraseña de usuario actual (pacanis) la contraseña por defecto es ‘raspberry’

$ passwd

$ passwd root


Más información aquí


Actualizar

# aptitude update && aptitude dist-upgrade && aptitude clean && rpi-update


Nextcloud
puerto 26001



DUCKDNS
$ mkdir duckdns
$ cd duckdns
$ nano duck.sh

/home/pacanis/Seguridad/RPI/duckdns.txt

$ chmod 700 duck.sh

Crontab PI

$ crontab -e

# Cada 5 minutos actualizamos IP
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Ejecutamos
$ ./duck.sh

Comprobamos que aparece OK
$ cat duck.log

Probamos conexión desde PC
$ ssh -p 29001 pi@nombre.duckdns.org



Eliminar todo rastro de sudo o sudo

# nano /etc/sudoers
y comentar con # las lineas que contengan root o sudo

#root   ALL=(ALL:ALL) ALL
#%sudo  ALL=(ALL:ALL) ALL


# nano /etc/sudoers.d/010_pi-nopasswd
y comentar con # las lineas que contengan root

#pi ALL=(ALL) NOPASSWD: ALL

exit



Generar claves SSH

PI
Generar claves ssh y copiarlas en PC
$ ssh-keygen -t rsa
$ ssh-copy-id pacanis@192.168.1.2

PC
Generar claves ssh y copiarlas en PI
$ ssh-keygen -t rsa
$ ssh-copy-id -p 29001 pi@192.168.1.200





VPN

ROUTER

application / Application list
UDP con todos los puertos a 27001

Application / Port Forwarding (Application list)
192.168.1.200 -- VPN





PI

$ curl -L https://install.pivpn.io | bash

puerto 27001

pacanis.duckdns.org

DNS OpenDNS

$ pivpn add

paco
ana
nestor
pc
portatil

Los usuarios creados estarán aquí /home/NUESTRO_USUARIO/ovpns

# nano /etc/dnsmasq.conf
listen-address=127.0.0.1, 192.168.1.200, 10.8.0.1

# service restart dnsmasq
# service restart openvpn

Copiamos el ovpn en PC
# scp /home/pi/ovpns/*.ovpn pacanis@192.168.1.2:/home/pacanis/Seguridad/VPN



Mas información aquí y aquí



Pi-hole

$ curl -sSL https://install.pi-hole.net | bash

reseteamos contraseña
$ sudo pihole -a -p

http://192.168.1.200/admin

Permitimos que Pi-Hole filtre la publicidad también en VPN (puerto de VPN)

# ifconfig tun0

inet 10.8.0.1  netmask 255.255.255.0  destination 10.8.0.1

# nano /etc/openvpn/server.conf

cambiar
push "dhcp-option DNS 208.67.220.220"

por

push "dhcp-option DNS 10.8.0.1"

# nano /etc/openvpn/client-common.txt

remote pacanis.duckdns.org 27001

# pihole -a hostrecord pacanis.duckdns.org 192.168.1.200

# service restart dnsmasq
# service restart openvpn

Mas información aquí




Bloqueo publicidad con fichero HOST
cp /etc/hosts /etc/hosts.back
wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts
cat /etc/hosts.back >> /etc/hosts

Editamos crontab

Más información aquíhttps://lignux.com/bloqueando-toda-la-publicidad-con-el-fichero-hosts/


Crontab ROOT

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Cada 15 minutos reiniciamos bot
*/15 * * * * /root/scripts/reiniciar_bot.sh

# Cada día actualizamos (00:00 AM)
@daily       /root/scripts/actualizacion.sh

# En cada reboot generamos log
@reboot      /root/scripts/log_reinicio.sh

#
# Extras
#

# Cada lunes apaga de 00:15 a 06:30
#15   0 * * 1 shutdown -r 06:30

# Cada semana actualizamos lista de hosts
#@weekly      wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts; cat /etc/hosts.back >> /etc/hosts

crontab -l



UFW

# Activamos
ufw enable

# Permitimos tráfico NAT
nano /etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

# Permitir ipv4 forward
nano /etc/ufw/sysctl.conf

net.ipv4.ip_forward=1

# Permitimos todo el tráfico de salida
ufw default allow outgoing

# Negamos todo el tráfico de entrada
ufw default deny incoming

# HTTP
ufw allow 80

# HTTPS
ufw allow 443

# NFS
ufw allow 111
ufw allow 2049

# SAMBA
ufw allow 137/udp
ufw allow 138/udp
ufw allow 139/tcp
ufw allow 445/tcp

# Nextcloud
ufw allow 26001

# VPN
ufw allow 27001/udp

# Transmission
ufw allow 28001

# SSH
ufw allow 22
ufw allow 29001

# Toda la red interna VPN
ufw allow from 10.8.0.0/24

# Toda la red interna
ufw allow from 192.168.1.0/24 to 192.168.1.200

# Activar un registro de logs, que se almacenarán en /var/log/ufw.log
ufw logging on

# Verificamos las reglas
ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80                         ALLOW IN    Anywhere                 
443                        ALLOW IN    Anywhere                 
111                        ALLOW IN    Anywhere                 
2049                       ALLOW IN    Anywhere                 
137/udp                    ALLOW IN    Anywhere                 
138/udp                    ALLOW IN    Anywhere                 
139/tcp                    ALLOW IN    Anywhere                 
445/tcp                    ALLOW IN    Anywhere                 
26001                      ALLOW IN    Anywhere                 
27001/udp                  ALLOW IN    Anywhere                 
28001                      ALLOW IN    Anywhere                 
22                         ALLOW IN    Anywhere                 
29001                      ALLOW IN    Anywhere                 
Anywhere                   ALLOW IN    10.8.0.0/24              
192.168.1.200              ALLOW IN    192.168.1.0/24           
80 (v6)                    ALLOW IN    Anywhere (v6)            
443 (v6)                   ALLOW IN    Anywhere (v6)            
111 (v6)                   ALLOW IN    Anywhere (v6)            
2049 (v6)                  ALLOW IN    Anywhere (v6)            
137/udp (v6)               ALLOW IN    Anywhere (v6)            
138/udp (v6)               ALLOW IN    Anywhere (v6)            
139/tcp (v6)               ALLOW IN    Anywhere (v6)            
445/tcp (v6)               ALLOW IN    Anywhere (v6)            
26001 (v6)                 ALLOW IN    Anywhere (v6)            
27001/udp (v6)             ALLOW IN    Anywhere (v6)            
28001 (v6)                 ALLOW IN    Anywhere (v6)            
22 (v6)                    ALLOW IN    Anywhere (v6)            
29001 (v6)                 ALLOW IN    Anywhere (v6) 



# Con esto desactivamos
ufw disable

# Con esto activamos
ufw enable

# Con esto borramos las reglas
ufw reset

# Con esto reiniciamos servicio
service restart ufw

# Verificamos intrusiones
tail -n 20 /var/log/ufw.log

# Limpiamos fichero de mensajes
cat /dev/null >  /var/log/ufw.log

Entradas populares de este blog

Debian 12 (Bookworm)

Debian 11 (Bullseye)

Gestionar servicios de almacenamiento en la nube con Rclone