Raspberry con Owncloud Raspbian Buster Letsencrypt Apache

Raspberry con Owncloud Raspbian Buster Letsencrypt ApacheRaspberry con Owncloud Raspbian Buster Letsencrypt Apache

Guida su come realizzare un proprio server cloud, utilizzando owncloud, su raspberry pi 3/4, con Raspbian Buster, ma in alternativa si puo utilizzare un’altro modello di single board o Pc, con OS Debian based. Avevo gia fatto una guida precedentemente, utilizzando Raspbian Stretch. Inoltre utilizzando Let’s Encrypt si avranno certificati SSL gratuiti tramite un processo completamente automatizzato, progettato per eliminare la creazione manuale di certificati, per la convalida, l’installazione e il rinnovo. I certificati rilasciati da Let’s Encrypt sono validi per 90 giorni dalla data di emissione e sono oggi considerati affidabili da tutti i principali browser.

Prerequisiti ed info

  • Negli esempi sotto utilizzerò come nome di dominio example.com ed i comandi verranno eseguiti da root
  • Il raspberry dovrà avere quindi come dominio l’equivalente di example.com. Questo può essere modificato in /etc/hostname e poi riavviare.
  • Il vostro ip pubblico dovrà puntare quindi al dominio, nel caso non si avesse un ip pubblico, utilizzare un servizio di DNS.
  • Assicurarsi prima di aprire le porte 80/443 verso il proprio server, altrimenti non si potranno ottenere i certificati. Successivamente rimarrà aperta solo la 443.
  • La guida è stata testata su una installazione pulita di Raspbian Buster

Raspberry con Owncloud Raspbian Buster Letsencrypt Apache

Step 1) Installare i pacchetti necessari:

$ sudo su
# apt update; apt upgrade
# apt install apache2 mariadb-server libapache2-mod-php7.3 php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-intl php-imagick php7.3-zip php7.3-xml php7.3-mbstring ntfs-3g fail2ban certbot

Step 2) Configurazione Apache e Virtual Host basic

# rm -rf /var/www/html/
# mkdir -p /var/www/example.com/public_html
# nano /var/www/example.com/public_html/index.html

ed incollare dentro:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html
# nano /etc/apache2/sites-available/example.com.conf

ed incollare dentro:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html

<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>

ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

poi:

# chown -R www-data: /var/www/example.com/
# mv /etc/apache2/sites-available/000-default.conf 000-default.conf.bak
# mv /etc/apache2/sites-enabled/000-default.conf 000-default.conf.bak
# a2ensite example.com
# systemctl restart apache2
# systemctl enable apache2

a questo punto collegandosi al server dovremmo vedere che funziona:

Raspberry con Owncloud Letsencrypt ApacheStep 3) Chiave e Letsencrypt

Creare una chiave robusta Dh (Diffie-Hellman) a 1024 oppure a 2048 bit, ci vorrà circa 20 minuti.

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 1024

Per ottenere i certificati utilizzeremo certbot, installato precedentemente, che si occuperà dell’acquisizione e del rinnovo degli stessi. Utilizzeremo il plug-in Webroot che funziona creando un file temporaneo nella ${webroot-path}/.well-known/acme-challenge a cui si collegherà Letsencrypt per risolvere il DNS:

# mkdir -p /var/lib/letsencrypt/.well-known
# chgrp www-data /var/lib/letsencrypt
# chmod g+s /var/lib/letsencrypt

creare primo file di configurazione:

# nano /etc/apache2/conf-available/letsencrypt.conf

ed incollare dentro:

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>

creare secondo file raccomandato:

# nano /etc/apache2/conf-available/ssl-params.conf

ed incollare dentro:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

abilitare moduli e files di configurazione:

# a2enmod ssl
# a2enmod headers
# a2enmod http2
# a2enconf letsencrypt
# a2enconf ssl-params
# systemctl reload apache2

a questo punto siamo pronti ad ottenere i certificati SSL utilizzando certbot:

# certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

se tutto è andato bene visualizzeremo questo:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem.
Your cert will expire on 2019-02-28. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you lose your account credentials, you can recover through
e-mails sent to xxxxxxx@gmail.com.
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

adesso andiamo a riconfigurare il file Virtual Host come sotto:

# nano /etc/apache2/sites-available/example.com.conf
ed incollare dentro:
<VirtualHost *:80> 
ServerName example.com
ServerAlias www.example.com

Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com

Protocols h2 http:/1.1

<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>

DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem


</VirtualHost>
ricaricare la nuova configurazione:
# systemctl reload apache2

adesso si può fare un TEST SSL

Rinnovo automatico dei certificati: Come dicevo all’inizio, i certificati di Let’s Encrypt hanno una durata di 90 giorni, dopodichè dovrebbero autorinnovarsi traminte un cronjob, altrimenti aggiornare manualmente con il comando:
# certbot renew --dry-run

Step 4) Installazione Owncloud

# cd /tmp
# wget https://download.owncloud.org/download/community/owncloud-latest.tar.bz2
# tar -xvf owncloud-latest.tar.bz2
# chown -R www-data:www-data owncloud
# mv owncloud /var/www/example.com/public_html/
# rm /var/www/example.com/public_html/index.html
# nano /etc/apache2/sites-available/example.com.conf

e fare puntare la DocumentRoot ad owncloud:

DocumentRoot /var/www/example.com/public_html/owncloud

Creazione database ed user mysql:

# mysql -u root -p

inserire password di root, e poi i 5 comandi sotto, e settare la password per l’utente owncloud

1) create database owncloud;
2) create user owncloud@localhost identified by ‘password‘;
3) grant all privileges on owncloud.* to owncloud@localhost identified by ‘password‘;
4) flush privileges;
5) exit;
fare una modifica al file php.ini, nella sezione File Uploads, portando upload_max_filesize = 5000M.
# nano /etc/php/7.3/apache2/php.ini

come ultimo ritocco, aumentare la capacità di upload, andando a modificare il file .user.ini

# nano /var/www/example.com/public_html/owncloud/.user.ini

portando: upload_max_filesize, e post_max_size a 5000M

# systemctl restart apache2

a questo punto il server owncloud è installato, ed è raggiungibile all’indirizzo https://example.com. Se si volesse utilizzare come storage un disco esterno, la guida continua:

Step 5) Creazione della cartella di storage e relativi permessi:

# mkdir /media/owncloud-usb
# groupadd www-data
# usermod -a -G www-data www-data
# chown -R www-data:www-data /media/owncloud-usb
# chmod -R 775 /media/owncloud-usb

adesso abbiamo bisogno di conoscere UUID del disco usb ed user e group di www-data, che serviranno per configurare /etc/fstab per il montaggio automatico:

# id -u www-data; id -g www-data
# blkid
# nano /etc/fstab

ed aggiungere in una sola riga qualcosa del genere in /etc/fstab:

UUID=32E49E5027A4F8A7 /media/owncloud-usb auto nofail,uid=33,gid=33,umask=0027$,dmask=0027,noatime 0 0
# reboot

Se tutto è andato bene andare all’indirizzo https://ip_dominio_del_server ed apparirà la pagina iniziale, dove si dovrà inserire nome utente e password per l’accesso al server owncloud, nome del database, user e password dell’utente owncloud, ed infine il punto di mount. Username: owncloud Password: password Database: owncloud Server: localhost

Raspberry con Owncloud Letsencrypt Apache

Raspberry con Owncloud Raspbian Buster Letsencrypt Apache

enjoy 😉

Pen drive con Debian Buster Live Custom Persistente Criptata

Pen drive con Debian Buster Live Custom Persistente CriptataPen drive con Debian Buster Live Custom Persistente Criptata

Guida su come creare una chiavetta usb, equipaggiata con Debian Buster, in  modalità Live, con partizione persistente, e boot in  UEFI mode. L’obiettivo è quello di avere una usb bootable con i propri tools preferiti, e che ci permette di navigare in internet in piena sicurezza senza rinunciare ad una partizione dove poter stipare tutti i dati sensibili. Per cifrare la partizione persistente userò LUKS. Tutti i comandi verranno eseguiti come root, con il comando ” su  – ” per non avere errori simili a questo:

Pacchetti da installare:

# su -
# apt install fuse libfuse-dev libicu-dev bzip2 libbz2-dev cmake clang git libattr1-dev zlib1g-dev libfuse3-dev debootstrap squashfs-tools rsync

Creazione Environment:

# mkdir $HOME/debian_live
# debootstrap --arch=amd64 --variant=minbase buster $HOME/debian_live/chroot http://ftp.it.debian.org/debian/
# chroot $HOME/debian_live/chroot
# echo "debian-live" > /etc/hostname
# echo 'deb http://ftp.it.debian.org/debian/ buster main contrib non-free' > /etc/apt/sources.list
# apt update

Installazione kernel:

# apt-cache search linux-image
# apt install -y linux-image-4.19.0-6-amd64 linux-headers-4.19.0-6-amd64

Installazione dei pacchetti personalizzati (nel mio caso quelli sotto)

# apt install -y mate-desktop-environment-extra task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd live-boot systemd-sysv network-manager net-tools wireless-tools nano gparted x11-xserver-utils x11-utils pciutils usbutils ntfs-3g rsync dosfstools syslinux firefox-esr chromium xserver-xorg-input-synaptics vpnc network-manager-gnome network-manager-vpnc-gnome network-manager-openvpn-gnome gtkterm vsftpd putty openssh-client firmware-linux-nonfree firmware-iwlwifi firmware-linux-free vlc terminator synaptic p7zip-full rar unrar zip ssh wget curl mesa-utils dnsmasq grub2-common grub-efi-amd64 grub-pc-bin xkb-data keyboard-configuration tzdata locales encfs wireshark-gtk aircrack-ng nmap zenmap

a questo punto abbiamo bisogno di installare la versione di cryptsetup 2:2.2.1-1  presente nei repo testing, per evitare il problema di cui sotto:

cryptsetup: WARNING: The initramfs image may not contain cryptsetup binaries
nor crypto modules. If that's on purpose, you may want to uninstall the
'cryptsetup-initramfs' package in order to disable the cryptsetup initramfs

Aggiungere i repo testing ed installare cryptsetup:

# echo 'deb http://ftp.it.debian.org/debian/ testing main contrib non-free' > /etc/apt/sources.list
# apt update
# apt install -t testing cryptsetup
# apt clean

Reinserire i repo stable:

# echo 'deb http://ftp.it.debian.org/debian/ buster main contrib non-free' > /etc/apt/sources.list
# apt update

Aggiungere utenti e password:

# passwd root
# adduser nome_utente
# exit

Comprimere il tutto in uno squash filesystem:

# mkdir -p $HOME/debian_live/image/
# mksquashfs $HOME/debian_live/chroot $HOME/debian_live/image/filesystem.squashfs -noappend -e boot

Copiare kernel e initramfs fuori chroot:

# cp $HOME/debian_live/chroot/boot/vmlinuz-4.19.0-6-amd64 $HOME/debian_live/image/vmlinuz-4.19.0-6-amd64
# cp $HOME/debian_live/chroot/boot/initrd.img-4.19.0-6-amd64 $HOME/debian_live/image/initrd.img-4.19.0-6-amd64

Preparazione chiavetta usb: (nel mio caso /dev/sdb di 16G). Negli steps successivi verranno create 3 partizioni:

  1. partizione in fat32 EFI
  2. partizione in fat32 che contiene il sistema Linux
  3. partizione in ext4 persistente criptata con LUKS
# fdisk -l
# umount /dev/sdb*
# dd count=1 bs=512 if=/dev/zero of=/dev/sdb
# parted -s -- /dev/sdb mktable gpt mkpart efi 1 100M set 1 boot on
# parted -s -- /dev/sdb mkpart system 100 2G
# parted -s -- /dev/sdb mkpart persistence 2G 16G
# mkdir -p /mnt/{usb,efi,persistence}
# mkfs.fat -F32 -n EFI /dev/sdb1
# mkfs.fat -F32 -n SYSTEM /dev/sdb2
# mkfs.ext4 -L persistence /dev/sdb3

Montaggio delle partizioni EFI e di Sistema:

# mount /dev/sdb1 /mnt/efi/
# mount /dev/sdb2 /mnt/usb/

Installazione di Grub-EFI:

# grub-install --target=x86_64-efi --efi-directory=/mnt/efi --boot-directory=/mnt/usb/boot --removable --recheck

Copiare il sistema nella seconda partizione:

# rsync -rv $HOME/debian_live/image/ /mnt/usb/live/

Creare il file grub.cfg:

# nano /mnt/usb/boot/grub/grub.cfg

ed incollare dentro:

set default="0"
set timeout=3
menuentry "Debian Custom Live" {
linux /live/vmlinuz-4.19.0-6-amd64 boot=live persistence persistence-encryption=luks
initrd /live/initrd.img-4.19.0-6-amd64
}

Creazione della partizione persistente criptata con LUKS:

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3

rispondere YES e creare la password:

# cryptsetup luksOpen /dev/sdb3 live
# mkfs.ext4 -L persistence /dev/mapper/live
# mount /dev/mapper/live /mnt/usb
# echo "/ union" > /mnt/usb/persistence.conf
# umount /mnt/usb/
# cryptsetup luksClose live
# umount /dev/sdb*
# exit

sopra non abbiamo fatto altro che creare una cartella live che verrà montata in /dev/mapper/, ed aprire e chiudere la partizione persistente. Per accedere alla partizione da adesso in poi bisognerà digitare una password al boot, dopodichè si potranno mettere i files importanti da portarsi dietro. Al primo avvio dare i comandi:

# apt update
# apt upgrade
# apt install -f

Pen drive con Debian Buster Live Custom Persistente Criptata

enjoy 😉

 

Broadcom BCM94352Z su Debian 10

Broadcom BCM94352Z su Debian 10Broadcom BCM94352Z su Debian 10

Guida su come installare la scheda wireless Broadcom BCM94352Z/BCM4352 su Debian 10:

$ lspci -vvnn | grep 14e4

output:

edmond@debianbox:~$ lspci -vvnn | grep 14e4
08:00.0 Network controller [0280]: Broadcom Limited BCM4352 802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)

 

Aggiungere i repository backport:

# printf "deb http://deb.debian.org/debian buster-backports main contrib" > /etc/apt/sources.list.d/buster-backports.list
# apt update

Installazione:

# apt-get install linux-image-$(uname -r|sed 's,[^-][I]-[^-][/I]-,,') linux-headers-$(uname -r|sed 's,[^-][I]-[^-][/I]-,,') broadcom-sta-dkms -y
# modprobe -r b44 b43 b43legacy ssb brcmsmac bcma
# modprobe wl
# reboot

Broadcom BCM94352Z su Debian 10

enjoy 😉

 

TorBrowser su Debian 10

TorBrowser su Debian 10TorBrowser su Debian 10

Tor (acronimo di The Onion Router) è un sistema di comunicazione anonima per Internet basato sulla seconda generazione del protocollo di rete di onion routing. Tramite l’utilizzo di Tor è molto più difficile tracciare l’attività Internet dell’utente; difatti l’uso di Tor è finalizzato a proteggere la privacy degli utenti, la loro libertà e la possibilità di condurre delle comunicazioni confidenziali senza che vengano monitorate.  Per installare TorBrowser su Debian 10 Buster:

Aggiungere i repository backport:

# printf "deb http://deb.debian.org/debian buster-backports main contrib" > /etc/apt/sources.list.d/buster-backports.list
# apt update

Installazione:

# apt -t buster-backports install torbrowser-launcher tor tor-geoipdb torsocks

Workaround errore black screen all’avvio:

# nano /etc/apparmor.d/local/torbrowser.Browser.firefox

ed aggiungere:

owner /{dev,run}/shm/org.mozilla.*.* rw,
# reboot

poi lanciare tor:

$ torbrowser-launcher

TorBrowser su Debian 10

enjoy 😉

 

Nvidia Optimus con Bumblebee su Debian 10

Nvidia Optimus con Bumblebee su Debian 10Nvidia Optimus con Bumblebee su Debian 10

Tanti laptop hanno la doppia scheda video Intel e Nvidia, e quindi si può installare Bumblebee che supporta i laptop con tecnologia NVIDIA Optimus Praticamente si fa il rendering con Nvidia che sarà visalizzata con la scheda Intel.

Per identificare le schede:

$ su -
# apt install inxi
# inxi -G

output:

Graphics:
Device-1: Intel 4th Gen Core Processor Integrated Graphics driver: i915
v: kernel
Device-2: NVIDIA GM107M [GeForce GTX 860M] driver: N/A
Display: server: X.Org 1.20.4 driver: modesetting unloaded: fbdev,vesa
resolution: 1920x1080~60Hz
OpenGL: renderer: Mesa DRI Intel Haswell Mobile v: 4.5 Mesa 18.3.6

Installazione:

# dpkg --add-architecture i386
# apt-get update
# apt-get install bumblebee-nvidia primus primus-libs:i386 libgl1-nvidia-glx:i386 mesa-utils libgl1-nvidia-glx

aggiungere il proprio nome utente al gruppo bumbeblee:

$ sudo adduser $USER bumblebee
$ sudo reboot

per testare scheda intel:

$ glxgears -info

per testare scheda nvidia:

$ optirun glxgears -info

Nvidia Optimus con Bumblebee su Debian 10

enjoy 😉

 

(Solved) Fdisk command not found Debian 10

(Solved) Fdisk command not found Debian 10

In Debian Buster si presenta un errore quando si danno alcuni comandi con privilegi root, uno di questi è il comando fdisk-l, che risponde con: command not found. Questo problema si risolve in 2 modi:

1) eseguire il comando con:

# /sbin/fdisk -l

2) con un link simbolico:

# ln -s /sbin/fdisk /bin/fdisk

(Solved) Fdisk command not found Debian 10

enjoy 😉

Trovare informazioni sensibili su Facebook con FBI

Trovare informazioni sensibili su Facebook con FBI

Trovare informazioni sensibili su Facebook con FBI

Questa guida, testata su Debian 10, fa vedere come dopo avere installato un interessante tool di Information gathering, FBI (Facebook Information)) si possono ottenere velocemente dati sensibili sui propri amici di Facebook.

$ sudo apt update; apt upgrade -y
$ sudo apt install git python2
$ git clone https://github.com/xHak9x/fbi.git
$ cd fbi/
$ sudo pip2 install -r requirements.txt

Avviare con:

$ python2 fbi.py

loggarsi con il proprio id facebook e dare il comando:

token

scaricare le info di tutti gli amici:

get_data
get_info

ottenere i numeri di telefono:

dump_phone

Trovare informazioni sensibili su Facebook con FBI

scoprire tutte le mail:

dump_mail

Trovare informazioni sensibili su Facebook con FBI

Trovare informazioni sensibili su Facebook con FBI

ecc. ecc. ecc.

enjoy 😉

Trovare profili Social col riconoscimento immagine

trovare profili Social col riconoscimento immagine

Come trovare profili Social col riconoscimento immagine, utilizzando Eagle Eye su Debian 1o. L’obiettivo sarà quello di partire da una immagine, e tramite una scansione della rete trovare i profili social, come Facebook, Instagram, Pinterest e Twitter.

$ sudo apt update; sudo apt upgrade -y
$ sudo apt install build-essential devscripts cmake python3-pip git python3 python3-dev libffi-dev libgtk-3-dev libboost-all-dev
$ git clone https://github.com/ThoughtfulDev/EagleEye
$ cd EagleEye
$ sudo pip3 install -r requirements.txt
$ sudo pip3 install --upgrade beautifulsoup4 html5lib spry

Scaricare geckodriver

$ wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
$ tar xvf geckodriver-v0.23.0-linux64.tar.gz
$ chmod +x geckodriver
$ sudo mv geckodriver /usr/bin/

per avviare Eagle Eye

$ cd EagleEye
$ python3 eagle-eye.py

di seguito un video screen fatto da me che ne mostra il funzionamento:

enjoy 😉

 

Anonsurf su Debian 10

Anonsurf su Debian 10

Anonsurf su Debian 10

Anonsurf è la modalità anonima di ParrotOS per forzare le connessioni attraverso Tor e/o la rete i2p.  Tor è un protocollo di crittografia SOCKS4 e SOCKS5. Tor esegue il tunnelling di tutto il traffico che circola nella rete dell’utente in modo anonimo. Tor nasconde la posizione di un utente e i dati di rete da chiunque monitora l’utente localmente e in remoto. L’utilizzo di Anonsurf si può avviare anche da terminale, ed oltre ad essere integrato in ParrotOS ed in Kali Linux, si può installare in Debian 9 Stretch o Debian 10 Buster.

$ sudo apt install git
$ git clone https://github.com/ParrotSec/anonsurf
$ cd anonsurf/
$ chmod a+x ./anonsurf.sh
$ sudo ./anonsurf.sh start

Anonsurf su Debian 10i comandi sono i seguenti:

anonsur start - Start system-wide TOR tunnel
anonsurf stop - Stop anonsurf and return to clearnet
anonsurf restart - Combines "stop" and "start" options
anonsurf changeid - Restart TOR to change identity
anonsurf status - Check if AnonSurf is working properly
anonsurf myip - Check your ip and verify your tor connection
anonsurf mymac - Check your mac and verify your change mac address

enjoy 😉

Server DHCP su Debian 10 Buster

Server DHCP su Debian 10 Buster

Server DHCP su Debian 10 Buster. Installazione e configurazione di un server dhcp su Debian Buster:

# apt install isc-dhcp-server

settare la scheda di rete da utilzzare, nel mio caso eth0:

# nano /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

poi modificare il file dhcpd.conf inserendo i parametri della nostra rete, nel mio caso 192.168.100.0/24:

# nano /etc/dhcp/dhcpd.conf
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.150 192.168.100.160;
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.254;
option domain-name-servers 192.168.100.1, 192.168.100.2;
option ntp-servers 192.168.100.1;
option netbios-name-servers 192.168.100.1;
option netbios-node-type 8;
}
#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

dopo le modifiche riavviare il servizio:

# systemctl restart isc-dhcp-server.service
Server DHCP su Debian Buster

enjoy 😉