Per masterizzare con openBSD è necessario avere installati i seguenti pacchetti:
cdrecord
mpg321
mkisofs
growisofs
Questi pacchetti di solito sono già presenti con l’installazione di default. Tuttavia è possibile recuperarli presso il repository ufficiale oppure nei rispettivi siti che supportano il progetto.
Per prima cosa è necessario individuare il device che utilizzeremo per masterizzare.
#cdrecord -scanbus
Di norma su openBSD il device è /dev/rcd0c. Per controllare che sia quello giusto digitiamo:
Di solito quando mi capitava un warning del genere, era consuetudine riavviare la macchina.
Al boot successivo OpenBSD eseguiva un check in automatico dell’hard disk e tutto andava a buon fine. Di solito questo warning mi capitava quando per svariati motivi staccavo l’hard disk dalla scheda madre.
Ma questa volta mi sono trovato ad una cosa del genere:
automatic boot in progtress: starting file system cheks./dev/rwd0c: file system is clean;not cheking
1366448 DUP I=329986/dev/rwd0c: UNEXPECTED INCONSISTENCY; RUN fsck_fss MANUALLY.
THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY:
fss:/dev/rwd0c /
Automatic file system chek failed; help!
Enter pahtname of shell or RETURN for sh:
L’output riportato sopra non è quello esatto ma una copia ritrovata in rete, tuttavia è utile per capire che genere di errore mi sono trovato davanti.
Per risolvere questo inghippo è bastato semplicemente premere enter e indicare il tipo di shell, nel mio caso ho adottato la classica “vt200″. Dopo di che è bastato eseguire il seguente comando e riavviare la macchina.
Poco tempo fa stavo stavo dando un occhiata ai miei log e mi sono subito accorto di un attacco brute force sulla porta ssh.
#tail /var/log/authlog
Dec 2619:22:31 maxbsd sshd[12620]: Failed password for root from 218.23.105.25 port 45219 ssh2
Dec 2619:22:31 maxbsd sshd[13293]: Received disconnect from 218.23.105.25:11: Bye Bye
Dec 2619:22:35 maxbsd sshd[6301]:reverse mapping checking getaddrinfo for 25.105.23.218.broad.static.hf.ah.cndata.com [218.23.105.25] failed - POSSIBLE BREAK-IN ATTEMPT!
Dec 2619:22:35 maxbsd sshd[6301]: Failed password for root from 218.23.105.25 port 45474 ssh2
Dec 2619:22:35 maxbsd sshd[2351]: Received disconnect from 218.23.105.25:11: Bye Bye
Dec 2619:22:39 maxbsd sshd[3801]:reverse mapping checking getaddrinfo for 25.105.23.218.bro
Per eliminare questo genere di attacchi possiamo:
Abilitare ssh in modo che dopo 3 tentativi sbagliati cada la connessione
Inserire una regola in pf in modo che non accetti più di 3 connessioni contemporaneamente dallo stesso Ip, per poi bannarlo in una blacklist
Creare uno script in modo che legga l’ip dell’attaccante dai log e lo inserisca nella blacklist.
Per risolvere il primo punto è sufficiente modificare il file di configurazione di ssh, sshd_config, decommentando l’opzione:
# nano /etc/ssh/sshd_config
MaxAuthTries 3
Per il secondo punto è necessario definire una tabella che contenga gli ip bloccati (la nostra blacklist). Dunque editiamo il file di configurazione di pf che si trova in /etc/pf.conf:
#nano /etc/pf.conf
table persist file "/etc/spammers"
Ora invece scriviamo la regola in modo che non accetti più di 3 connessioni contemporaneamente dallo stesso Ip e lo inserisca nella blacklist:
int="fxp0"
ssh_limit="(max-src-conn-rate 3/30, overload flush global)"
pass in log quick on $int inet proto tcp from any to $int port ssh flags S/SA keep state $ssh_limit
Infine per il terzo punto è sufficiente creare uno script, ssh_block_attack, come il seguente, in modo che legga il file di log e metta in blacklist l’indirizzo ip che ha sbagliato la password o l’username:
# nano /root/ssh_block_attack
#!/bin/shwhileread mm dd hms localhostname sshd word1 word2 word3 word4 host1 host2 rest;doif["$word1 $word2 $word4"="Invalid user from"];then
data=`date`
pfctl -t spammers -T add $host1
echo "Aggiunto $host1 a spammers il $data">>/root/ssh_log
elif ["$word1 $word2 $word3 $host1"="Failed password for from"];then
pfctl -t spammers -T add $host2
echo "Aggiunto $host2 a spammers il $data">>/root/ssh_log
fi
done
Per lanciarlo avvio dandogli in pasto il log da monitorare aggiungiamo questa riga in /etc/rc.local .
tail -f /var/log/authlog | sh ssh_block_attack &
Infine se vogliamo vedere la tabella degli ip bloccati è necessario utilizzare questo comando
pfctl -t spammers -T show
Ovviamente per non saturare la nostra macchina ogni tanto andrebbe svuotata: