= Porcherie informatiche per risolvere in modo artistico i piu` disparati e disperati problemi. = ---- == Bloccare con iptables un intero AS == Metodo molto crudo per bloccare il traffico da un intero AS quando si sospetta che tutto l' AS sia infestato da malware oppure sia stato sequestrato da qualcuno e usato per attaccarci. * prendere almeno un ip degli attaccanti dai log / da fail2ban / da dove volete voi. * scoprire chi e` l' AS con un {{{whois | grep origin}}} * scoprire quali reti possiede quell' AS con un {{{whois -h whois.ripe.net -- '-i origin ' | grep route }}} * L'output del comando seguente produce gia` delle belle righe di iptables pronte per essere eseguite per bloccare tutto dal firewall: {{{whois -h whois.ripe.net -- '-i origin ' | grep route: | sed 's/route:/iptables -I INPUT -j DROP -s /'}}} == Conversione della mail da Outlook Express a mailbox unix (thunderbird per esempio) == Mi e` capitato di doverlo fare per piu` di 900 cartelle di email (files dbx di outlook express) e il programma che mi ha risolto il problema e` questo: http://www.ukrebs-software.de/english/dbxconv/dbxconv.html. E` sufficiente lanciare il programma da una console (windows) passandogli i parametri richiesti, e lui si converte tutti i files in mailbox unix standard. A questo punto e` sufficiente togliere l'estensione "mbx" dai files mailbox unix, copiarli dentro al profilo di Thunderbird nella cartella della mail locale, e con un riavvio di Thunderbird tutte le cartelle si vedranno sotto l'account "cartelle locali". Piu` semplice di cosi` non si puo`. Per sicurezza, perche` non vada perso, allego il programma di conversione dbxconv anche a questa pagina del wiki. [[attachment:dbxconv.zip]] == Web server in una sola riga di python == Se vi serve un web server per servire files statici, per esempio firmware per qualche dispositivo, la soluzione piu` semplice in assoluto e` quella di posizionarsi nella directory che vogliamo che sia la nostra documentroot e poi eseguire: {{{ python -m SimpleHTTPServer }}} Questo comando avvia un web server sulla porta 8000. Per cambiare la porta, fornire la porta come parametro, tipo: {{{ python -m SimpleHTTPServer 80 }}} == Gestire web hosting dove non hai console == * Se serve fare un dump o un restore, o fare qualche operazione su un mysql su un web hostato dove non si ha accesso se non al web, allora phpminiadmin e` quello che fa per voi. Un singolo file php di 30K risolve un sacco di problemi. Si scarica da qui: http://phpminiadmin.sourceforge.net/ * Un altro gestore di database in php single file: Adminer https://www.adminer.org/ * File manager php: Webadmin https://tuxen.de/webadmin/ == Gestire directory con troppi files dentro == Se per qualche motivo una directory di cache o altro si e` riempita di troppi files (diciamo 10.000 o piu`) puo` essere molto difficile fare qualsiasi operazione. Un "ls" puo` impiegare decine di minuti per creare la lista dei files da mostrarti, e qualsiasi comando con delle wildcard puo` riportare il classico errore "Argument list too long". Per aiutarsi nel capire cosa e` successo occorre tanta pazienza e l'uso di "find". Con find e` possibile infatti operare su liste di files troppo grandi in quanto find li tratta uno alla volta, e non tutti assieme. Questo non riduce il tempo di esecuzione, ma permette di dare comandi senza ottenere errori, e inoltre l'output e` visibile da subito, non solo quando una lista dei files e` stata completamente caricata in ram. Ecco qualche esempio. Ovviamente al posto di "*" potete mettere quello che vi serve. Fate sempre molta molta attenzione quando giocate con i comandi che cancellano roba. * Al posto di "ls" {{{ find . -name "*" }}} * Al posto di "rm" {{{ find . -name "*" -delete }}} * Per fare un "mv" (il path deve esistere. prova sempre l'output con "echo" al posto di "mv" prima) {{{ find . -name "*" -exec mv {} /path/destinazione/ \; }}} == Verifica se un file e` una mailbox == Teapop tende a danneggiare i file di mailbox lasciandoci della roba spuria in cima. Per convertire le mailbox in maildir, uso un tool che si incazza se la mailbox non e` a posto. Un rapido check di consistenza (verifica che il file non sia lungo 0 e che inizi con "From ") si puo` fare con questo script: {{{ if [ -s $1 ] ; then if [ "`cat $1 | awk ' { if (FNR == 1) print substr($0,1,5) } '`" != "From " ] ; then echo $1 "Non e valido" fi fi }}} Il quale puo` essere invocato in una directory per provare tutti i files cosi`: {{{ find . -type f -exec ./checkmail.sh {} \; }}} == Print server misteriosi == Mi e` capitato di avere un print server con tre parallele, con aperte una quantita` di porte tcp dalla 9100 in poi, per la stampa via protocollo "jetdirect", delle quali non era affatto chiaro quale porta tcp stampasse su quale porta parallela. Come se non bastasse, facendo nmap risultavano aperte decine di porte nel range 9000-10000, diverse ogni volta che lanciavo nmap. (questo perche` il print server veniva saturato dalle connessioni di nmap e non rispondeva piu` ai SYN in modo pseudorandom) La soluzione per scoprire quale porta tcp stampa su quale porta parallela, la soluzione e` stata questa: attaccare una stampante ad aghi ad una delle porte, poi eseguire su una macchina Linux questo script: {{{ for (( a=9000 ; a<9300 ; a=a+1)) ; do echo $a | netcat -vv -w 1 192.168.0.251 $a sleep 1s done }}} Questo script in pratica scrive il numero della porta sulla porta numero X (da 9000 a 9300 nell'esempio). Il risultato e` che su ogni stampante collegata al print server verranno stampati i numeri di porta che pilotano la stampante stessa. == Inviare allegati via email automaticamente == Per inviare automaticamente dei files per e-mail, ad esempio dei log, si puo` fare cosi`. {{{ for LOG in `ls /var/log/argus/*.[0-9]*[0-9] /var/log/nsa/*.[0-9]*[0-9]` do gzip $LOG -c > /tmp/`echo $LOG | sed 's/.*\///'`.gz metasend -f /tmp/`echo $LOG | sed 's/.*\///'`.gz -s $LOG -t utente@domain.tld -b -e base64 \ -m "application/x-gzip; name=\"`echo $LOG | sed 's/.*\///'`.gz\"" -S 100000000 sleep 5s rm /tmp/`echo $LOG | sed 's/.*\///'`.gz done }}} Per estrarli dalla mail dall'altra parte, e salvarli dove si vuole, mantenendo il filename originale (path escluso), si puo` mettere nel .forward dell'utente una cosa tipo: {{{ | /usr/bin/munpack -C }}} Per fare questo occorre avere installati i programmi che fanno parte del pacchetto metamail. Il nome del file che verra` visto dal ricevente e` generato dal sender, nella parte name=xxxx. Attenzione che occorre mettere fra virgolette (") il nome del file se contiene caratteri che non siano alfanumerici. == Usare un router generico su una Alice Business == Per prendere, in pppoe o pppoa, l'IP statico assegnato a una Alice Business usando un router non fornito da Telecom. Procedura mai verificata, non so se funzioni davvero. È sufficiente impostare i seguenti valori per l'username e password: * Username: {{{MACADDRESSROUTERTELECOM–0013C8-t@alicebiz.it}}} * Password: {{{alicewag}}} Il Mac Adrress non dovrà contenere alcun simbolo (due punti o trattini), esempio: {{{"3039F2C276D2-0013C8-t@alicebiz.it"}}} == Error2 in Java e Entratel == Aprire {{{C:\ProgramData\Oracle\Java}}} (hidden) e rinominare la directory javapath in javapath2 o altro. Non so perche` funzioni e cosa altro possa rompere.