# Esempio di /etc/rc.conf per un nodo Tutanum su FreeBSD, allineato a Tutanum Classico. # Difesa a due livelli: ipfw al livello 2 (ethernet/MAC) e pf ai livelli 3 e 4 (IP, porte, NAT). # L'host non offre servizi: Tor, I2P e i servizi stanno nelle jail. # Sistema hostname="nodo" # generico: non dice nulla del nodo ne' di chi lo gestisce keymap="it.kbd" clear_tmp_enable="YES" syslogd_flags="-ss" # niente socket di rete: nessun syslog remoto sendmail_enable="NONE" dumpdev="NO" # niente crash dump su disco zfs_enable="YES" ntpd_enable="NO" # niente NTP in chiaro: vedi "Il tempo come vettore d'attacco" auditd_enable="YES" # auditing degli eventi di sicurezza moused_nondefault_enable="NO" sshd_enable="YES" # ascolta solo sulla LAN: ListenAddress in sshd_config # Rete: indirizzo statico (sshd, sshguard e pf lo danno per fisso), MAC casuale a ogni # avvio, niente IPv6. Con DHCP e MAC casuale l'indirizzo cambierebbe a ogni riavvio. ifconfig_em0="ether random" # prima il MAC... ifconfig_em0_alias0="inet 192.168.178.3/24" # ...poi l'indirizzo (non esiste ifconfig_em0_ipv4) defaultrouter="192.168.178.1" ipv6_network_interfaces="none" ipv6_activate_all_interfaces="NO" # Interfaccia delle jail: l'host vi ha 10.0.0.1, CBSD vi aggiunge gli indirizzi delle jail cloned_interfaces="lo1" ifconfig_lo1="inet 10.0.0.1/24" # Livello 2 ISO/OSI: ipfw (filtro ethernet/MAC e anti-fingerprint) # Richiede net.link.ether.ipfw=1 in /etc/sysctl.conf firewall_enable="YES" firewall_script="/etc/ipfw.rules" firewall_logging="YES" firewall_logif="YES" # Livelli 3 e 4 ISO/OSI: pf (filtro IP, NAT per le jail tor e i2p, anti-bruteforce) pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" pflog_logfile="/var/log/pflog" # Anti-bruteforce: blacklistd, sshguard e fail2ban fanno la stessa cosa. Per il principio # KISS se ne tiene uno solo, sopra la tabella di overload di pf: sshguard. sshguard_enable="YES" #blacklistd_enable="YES" # alternativa nel sistema di base ("UseBlacklist yes" in sshd_config) # DNS cifrato: dnscrypt-proxy, unico processo dell'host che esce in rete dnscrypt_proxy_enable="YES" dnscrypt_proxy_mac_portacl_enable="YES" # porta 53 al demone non privilegiato # Jail (CBSD) e limiti di risorse per jail (/etc/rctl.conf; kern.racct.enable=1 nel loader) cbsd_workdir="/jails" cbsdd_enable="YES" rctl_enable="YES" # Securelevel: 2 impedisce anche di scrivere sui dischi non montati, quindi sul codice di # avvio (gptzfsboot) che sta fuori dal pool cifrato. Le tabelle "persist" di pf restano # modificabili, e con loro il contenimento automatico. kern_securelevel_enable="YES" kern_securelevel="2" # Tor NON gira sull'host: tor_enable si imposta dentro la jail tor.