1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823
|
<chapt><heading>Prima della compromissione</heading>
<sect id="keep-up-to-date"><heading>Aggiornare continuamente il sistema</heading>
<p>
Bisognerebbe eseguire spesso gli aggiornamenti per la sicurezza.
La maggior parte degli exploit deriva da vulnerabilit conosciute
cui non sia stato posto un rimedio tempestivo, come spiega il
<url id="http://www.cs.umd.edu/~waa/vulnerability.html" name="saggio di Bill Arbaugh"> presentato al Simposio sulla
sicurezza e la riservatezza dell'IEEE nel 2001. Gli aggiornamenti sono
descritti in <ref id="security-update">.</p>
<sect1><heading>Controllo manuale degli aggiornamenti di sicurezza disponibili</heading>
<p>
Debian ha uno strumento specifico per controllare se occorra
aggiornare un sistema (si veda pi sotto Tiger), anche se molti
utenti preferiranno il controllo manuale degli aggiornamenti di
sicurezza disponibili per il loro sistema.</p>
<p>
Se avrete configurato il sistema come mostrato in
<ref id="security-update">, baster dare il comando:
<example>
# apt-get update
# apt-get upgrade -s
</example></p>
<p>
La prima linea scaricher la lista dei pacchetti disponibili tra quelli
presenti sul sistema e configurati;
l'opzione <tt>-s</tt> simuler l'esecuzione, cio
<em>non</em> scaricher o installer i pacchetti ma piuttosto, comunicher
quali sarebbero scaricati/installati.
Dal risultato, si potr dedurre quali pacchetti siano stati corretti da Debian
e siano disponibili come aggiornamento di sicurezza. Per esempio:
<example>
# apt-get upgrade -s
Reading Package Lists... Done
Building Dependency Tree... Done
2 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable)
Inst libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable)
Conf cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable)
Conf libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable)
</example></p>
<p>
In questo esempio, si vede come il sistema necessiti di essere aggiornato
con i nuovi pacchetti cvs e cupsys trovati nell'archivio della sicurezza di
<em>woody</em>; se si vuole capire perch tali pacchetti siano necessari,
puntate il vostro browser presso <url id="http://security.debian.org">
e controllate i pi recenti Avvisi sulla Sicurezza di Debian relativi a
questo argomento, presso:
<url id="http://www.debian.org/security/2003/dsa-233" name="DSA-233">
(per cvs) e
<url id="http://www.debian.org/security/2003/dsa-232" name="DSA-232">
(per cupsys).</p></sect1>
<sect1 id="cron-apt"><heading>Controllo automatico degli aggiornamenti con cron-apt</heading>
<p>
Un altro metodo per l'aggiornamento automatico per la sicurezza l'uso di
<package>cron-apt</package>, strumento per aggiornare il sistema a intervalli
regolari (con l'impiego di cron), che, in modo predefinito, aggiorner la lista
dei pacchetti e scaricher i nuovi; pu essere configurato anche per inviare
messaggi all'amministratore di sistema.</p>
<p>
Se si vuole aggiornare automaticamente il proprio sistema (anche solo
scaricando dei pacchetti), prendete in considerazione l'opportunit
di controllare la versione della distribuzione, come descritto in
<ref id="check-releases">; in mancanza di questo controllo,
non potrete essere sicuri che i pacchetti provengano da fonte fidata.</p></sect1>
<sect1><heading>Usare Tiger per controllare automaticamente
gli aggiornamenti per la sicurezza</heading>
<p>
Se state cercando uno strumento per un controllo veloce e che riporti
le vulnerabilit di sicurezza del sistema, provate il pacchetto
<package>tiger</package>. Questo pacchetto un insieme di script
di shell Bourne, programmi C e file di dati usati per eseguire dei
controlli di sicurezza. Il pacchetto di Debian GNU/Linux ha degli
accorgimenti addizionali orientati fortemente alla distribuzione
Debian, che forniscono pi funzionalit che gli script di Tiger
forniti da TAMU (o persino TARA, una versione di Tiger distribuita
da ARSC). Leggete il file README.Debian e la pagina di manuale di
<manref name="tiger" section="8"> per pi informazioni.</p>
<p>
Una di queste aggiunte lo script <tt>deb_checkadvisories</tt>.
Questo script prende una lista di DSA e controlla i pacchetti
installati, riportando alla versione precedente tutti i pacchetti
che sono vulnerabili, in accordo con il Debian Security Team.
Ci leggermente differente, un approccio pi generale
implementato dallo script <tt>check_signatures</tt> di Tiger, che
controlla l'MD5sum di pacchetti dalle vulnerabilit note.</p>
<p>
Poich Debian attualmente non possiede una lista con gli MD5sum dei
pacchetti dalle vulnerabilit note (utilizzata da altri sistemi
operativi come Sun Solaris), utilizzato il metodo
<em>controllo-contro-DSA (check-against-DSA)</em>.
L'approccio del DSA e quello MD5sum soffrono entrambi del problema
che la firma deve essere aggiornata frequentemente.</p>
<p>
Ci attualmente risolto facendo una nuova versione del pacchetto
Tiger, ma il manutentore del pacchetto potrebbe non creare una nuova
versione ogni volta che un DSA viene annunciato. Un'aggiunta
interessante, che non ancora implementata, dovrebbe essere di fare
quest'operazione prima delle altre. Cio, scaricare il DSA via web,
produrre la lista e poi eseguire il controllo. Il DSA attualmente
aggiornato con l'aggiornamento del codice WML usato per la costruzione
di <url id="http://security.debian.org"> (il web server, proprio cos)
dal locale CVS del manutentore.</p>
<p>
Sarebbe necessario un programma che analizzi i DSA pubblicati,
sia ricevuti via mail
che disponibili in security.debian.org e che poi generi il file usato
da "deb_checkadvisories" per confermare che le vulnerabilit siano
state notate. Speditelo come un bug per <package>tiger</package>.</p>
<p>
Il controllo menzionato dovrebbe essere eseguito attraverso la
configurazione standard del programma una volta installato (vedete
<file>/etc/tiger/cronrc</file>):
<example>
# Check for Debian security measures every day at 1 AM
#
1 * * deb_checkmd5sums deb_nopackfiles deb_checkadvisories
#
</example></p>
<p>
C' un controllo ulteriore che si potrebbe voler aggiungere, che non
ancora parte degli standard degli script di <prgn>cron</prgn>.
Questo controllo lo script <tt>check_patches</tt>, che funziona nel
seguente modo:
<list>
<item><p>Esegue <tt># apt-get update</tt></p></item>
<item><p>Controlla se ci sono nuovi pacchetti disponibili</p></item>
</list></p>
<p>
Se state utilizzando un sistema <em>stable</em> e avete
aggiunto la sorgente security.debian.org per <prgn>apt</prgn> al vostro
<file>/etc/apt/sources.list</file> (come descritto in
<ref id="security-update">), questo script sar in grado di avvisarvi
se ci sono nuovi pacchetti che avete bisogno di installare. Poich
gli unici pacchetti che cambiano in questa configurazione sono gli
aggiornamenti di sicurezza, allora avrete proprio ci che desiderate.</p>
<p>
Naturalmente, questo non funzioner se state utilizzando
<em>testing</em> o <em>sid/unstable</em>, poich attualmente, i
nuovi pacchetti sono probabilmente pi numerosi di quelli di
sicurezza.</p>
<p>
Potete aggiungere questo script ai controlli eseguiti da
<prgn>cron</prgn> (nel file di configurazione precedentemente indicato)
e <prgn>tigercron</prgn> spedir una mail (a qualunque
<tt>Tiger_Mail_RCPT</tt> sia stato configurato in
<file>/etc/tiger/tigerrc</file>) con i nomi dei nuovi pacchetti:
<example>
# Check for Debian security measures every day at 1 am
#
1 * * deb_checkmd5sums deb_nopackfiles check_patches
#
</example></p></sect1>
<sect1><heading>Altri metodi per effettuare aggiornamenti per la sicurezza</heading>
<p>
Potete anche considerare un programma non ufficiale, scritto da Fruhwirth
Clemens, per aggiornamenti di sicurezza dal sito security.debian.org con firma
controllata: <url id="http://therapy.endorphin.org/secpack/" name="secpack">.</p></sect1>
<sect1><heading>Evitare di usare il ramo instabile</heading>
<p>
A meno che non vogliate dedicare tempo a riparare i pacchetti da soli
quando sorge una vulnerabilit, dovreste <em>non</em> usare il ramo
instabile di Debian per sistemi di produzione. La principale ragione
per questo che non ci sono aggiornamenti di sicurezza per
<em>unstable</em> (Vedete <ref id="sec-unstable">).</p>
<p>
Il fatto che alcuni problemi di sicurezza potrebbero apparire nella
distribuzione <em>unstable</em> e <em>non</em> nella <em>stable</em>.
Questo dovuto alle nuove funzionalit costantemente aggiunte alle
applicazioni l fornite, come anche nuove applicazioni che vengono
incluse e non hanno avuto ancora un test approfondito.</p>
<p>
Allo scopo di eseguire aggiornamenti di sicurezza nel ramo
<em>unstable</em>, dovreste aggiornare interamente alle nuove
versioni (che vengono aggiornate pi che i pacchetti in questione).
Sebbene ci siano alcune eccezioni, le patch di sicurezza vengono
solitamente riportate nel ramo <em>stable</em>. L'idea primaria che
tra gli aggiornamenti non venga aggiunto <em>nuovo codice</em>, ma
che vengano solamente risolti i problemi importanti.</p></sect1>
<sect1><heading>Evitare di usare la distribuzione testing</heading>
<p>
Se utilizzate la distribuzione <em>testing</em>, ci sono dei problemi che
occorre considerare circa la disponibilit di aggiornamenti di
sicurezza:
<list>
<item>
<p>Quando viene realizzato un aggiornamento di sicurezza
vengono preparati i pacchetti per <em>unstable</em> e le stesse
modifiche vengono reimplementate in <em>stable</em>
(visto che la versione dei pacchetti di stable hanno una versione
minore). I pacchetti della distribuzione <em>stable</em>
sono testati pi a fondo di quelli di <em>unstable</em>, dal
momento che quest'ultima potrebbe disporre direttamente
dell'ultimo rilascio dei sorgenti originali.</p></item>
<item>
<p>Gli aggiornamenti di sicurezza sono immediatamente disponibili
per entrambe le distribuzioni (ma non per il ramo <em>testing</em>).</p></item>
<item>
<p>Se non vengono scoperti (nuovi) bug nella versione di
<em>unstable</em> del pacchetto, questo viene inserito in
<em>testing</em> dopo alcuni giorni (di solito pi di una settimana).
Tuttavia questo dipende dallo stato di rilascio della distribuzione.</p></item>
</list></p></sect1>
<sect1><heading>Aggiornamento automatico in un sistema Debian GNU/Linux</heading>
<p>
Per cominciare gli aggiornamenti automatici non sono del tutto
consigliabili, visto che gli amministratori dovrebbero leggere gli
annunci del DSA e comprendere l'impatto di ogni aggiornamento di
sicurezza.</p>
<p>Se volete aggiornare automaticamente il vostro sistema occorre:
<list>
<item>
<p>Configurare <prgn>apt</prgn> in modo che i pacchetti che non volete
aggiornare rimangano alla versione corrente o con la funzione
<em>pinning</em> di <prgn>apt</prgn> o marcandoli con
<em>hold</em> con <prgn>dpkg</prgn> o <prgn>dselect</prgn>.</p>
<p>
Per mettere un pin a una determinata versione sui pacchetti
dovete modificare <file>/etc/apt/preferences</file> (vedete
<manref name="apt_preferences" section="5"> aggiungendo:
<example>
Package: *
Pin: release a=stable
Pin-Priority: 100
</example></p>
<p>FIXME: verificare se questa configurazione corretta.</p></item>
<item><p>Usate cron-apt, come in <ref id="cron-apt">,
abilitandolo ad installare i pacchetti scaricati,
o aggiungete una riga in <prgn>cron</prgn>,
cosicch l'aggiornamento sia eseguito
quotidianamente; per esempio:
<example>
apt-get update && apt-get -y upgrade
</example></p>
<p>
L'opzione <tt>-y</tt> far in modo che <prgn>apt</prgn>
risponda automaticamente "yes" a tutte le domande che
possono essere poste durante l'aggiornamento.
In alcuni casi pu essere preferibile usare
l'opzione <tt>--trivial-only</tt> invece di quella
<tt>--assume-yes</tt> (equivalente a <tt>-y</tt>).
<footnote>
<p>Potreste anche utilizzare l'opzione <tt>--quiet</tt> (<tt>-q</tt>)
per ridurre l'output di <prgn>apt-get</prgn>, in modo da non
mostrare alcun output se non vengono installati pacchetti.</p>
</footnote></p></item>
<item>
<p>Configurate <prgn>cron</prgn> in modo che <prgn>debconf</prgn>
non ponga nessuna domanda durante l'aggiornamento; in questo modo
l'aggiornamento non interattivo.
<footnote>
<p>Bisogna ricordare che alcuni pacchetti potrebbero <em>non</em>
utilizzare <prgn>debconf</prgn> e l'aggiornamento potrebbe
bloccarsi a causa dei pacchetti che richiedono un input da
parte dell'utente durante la configurazione.</p>
</footnote></p></item>
<item>
<p>Controllare i risultati dell'esecuzione di <prgn>cron</prgn>,
che saranno spediti al superutente (a meno che <prgn>cron</prgn>
non sia stato configurato diversamente con la variabile
<tt>MAILTO</tt> nello script).</p></item>
</list></p>
<p>
Un'alternativa pi sicura potrebbe essere usare l'opzione
<tt>-d</tt> (o <tt>--download-only</tt>), che scaricher
ma non installer i pacchetti necessari. L'aggiornamento si
far manualmente se l'esecuzione di <prgn>cron</prgn>
mostra che il sistema deve essere aggiornato.</p>
<p>
Per eseguire questi compiti il sistema deve essere propriamente
configurato per scaricare gli aggiornamenti di sicurezza come
visto in <ref id="security-update">.</p>
<p>
Ad ogni modo questo procedimento non consigliabile per
<em>unstable</em> senza prima un'accurata analisi, perch
potreste rendere il vostro sistema inusabile se qualche bug
pericoloso si insinuasse in un pacchetto importante e venisse
installato nel sistema.
<em>Testing</em> un po' pi <em>sicura</em> da questo punto
di vista, dal momento che le possibilit di scoprire i bug pi
gravi prima che il pacchetto sia inserito in testing sono
maggiori (tuttavia potreste <em>non</em> avere alcun
aggiornamento di sicurezza disponibile in questo caso).</p>
<p>
Se avete una distribuzione mista, cio una distribuzione
<em>stable</em> con alcuni pacchetti presi da
<em>testing</em> o <em>unstable</em>, potete utilizzare i pinning
o l'opzione <tt>--target-release</tt> di <prgn>apt-get</prgn> per
aggiornare <em>solo</em> quei pacchetti.
<footnote>
<p>Questo un problema comune visto che molti utenti vogliono
utilizzare un sistema stable e prendere solo alcuni pacchetti da
<em>unstable</em> per disporre di funzionalit pi recenti.
Questo bisogno nasce dal fatto che alcuni progetti evolvono
pi rapidamente del tempo che passa tra due release
<em>stable</em> di Debian.</p>
</footnote></p></sect1></sect>
<sect id="intrusion-detect"><heading>Pianificare la ricerca di intrusi</heading>
<p>
In Debian GNU/Linux sono presenti molti programmi che servono ad
individuare intrusi nel sistema, essi possono scovare delle attivit
malevole sul vostro sistema personale, oppure negli altri sistemi della
vostra rete. Questo tipo di difesa importante sia che nel sistema siano
residenti informazioni riservate sia che voi siate veramente paranoici
in fatto di sicurezza.
I pi comuni metodi per individuare degli intrusi sono: l'individuazione
di anomalie e la ricerca mediante l'uso di espressioni regolari.</p>
<p>
Si deve essere consapevoli che la sicurezza del sistema viene migliorata
con l'introduzione di questi programmi, avrete bisogno di
avere un meccanismo di allerta e risposta configurato correttamente.
La ricerca di intrusi senza un valido sistema di allerta diviene
completamente inutile.</p>
<p>
Quando viene scoperto un particolare attacco, molti di questi programmi
sono configurati per inviare un log con <prgn>syslogd</prgn>
oppure per inviare un e-mail all'amministratore (le intestazioni delle
e-mail sono solitamente configurabili).
L'amministratore ha la facolt di configurare questi strumenti.
I sistemi di avviso di attacco avvenuto possono essere inutili se
vengono generati un giorno dopo che l'attacco avvenuto.
Siamo sicuri che questa sia la politica di sicurezza migliore,
per importante che gli strumenti per migliorare questa politica
siano implementati.</p>
<p>
Un'interessante fonte di informazioni il
<url id="http://www.cert.org/tech_tips/intruder_detection_checklist.html" name="CERT lista delle intrusioni accertate (CERT's Intrusion Detection
Checklist)">.</p>
<sect1><heading>Individuazione delle intrusioni sulla rete</heading>
<p>
Gli strumenti che controllano le intrusioni lo fanno sul traffico
di un segmento di rete e usano le informazioni come un database.
Specificatamente, vengono esaminati i pacchetti in rete e si controlla
che essi abbiano un certificato valido.</p>
<p>
<package>Snort</package> uno sniffer che scova gli attacchi
usando un dizionario di "firme" di precedenti attacchi.
Pu controllare una gran variet di attacchi e scansioni, come:
i buffer overflow, la scansione delle porte, attacchi CGI,
indagini SMB e molti altri.
Tra le altre cose <prgn>Snort</prgn> possiede la qualit
di avvisare l'amministratore in tempo reale.
Potete usare <prgn>Snort</prgn> per testare una serie di
computer che si trovano nella vostra rete, come se si
trattasse di uno solo.
Basta installare pacchetto con il comando
<tt>apt-get install snort</tt>, importante rispondere alle
domande e guardare il log.</p>
<p>
Il pacchetto <package>snort</package> presente in Debian possiede
molte opzioni di sicurezza attivate in maniera predefinita.
Ma potete anche configurare a piacimento la configurazione aggiungendo
semplicemente un servizio attivo sulla vostra macchina.
Potete altres ricercare pacchetti addizionali specifici
per un particolare servizio.</p>
<p>
Esistono altri semplici programmi che possono venire usati
per ricercare attacchi provenienti dalla rete.
Ad esempio <package>portsentry</package> un interessante
pacchetto che permette di chiudere le porte sottoposte
a scansione sul vostro computer. Altri programmi come
<package>ippl</package> oppure <package>iplogger</package>
scovano attacchi portati mediante il protocollo IP
(TCP e ICMP), anche se non sono provvisti di molte delle
tecniche avanzate presenti in <prgn>snort</prgn>.</p>
<p>
Potete testare questi tools usando <package>idswakeup</package> presente
in Debian, esso uno script di shell che genera dei falsi allarmi ed
include molti comuni attacchi.</p></sect1>
<sect1><heading>Sistemi per individuare gli intrusi</heading>
<p>
I sistemi per individuare gli intrusi controllano chi usa i
file di log e/o i sistemi di verifica come se fossero una
sorgente dati. Controllano i processi sospetti, l'accesso
al sistema e possono riportare dei cambiamenti ai file
fondamentali per il sistema.</p>
<p>
<package>Tiger</package> un vecchio strumento per scoprire
gli intrusi ed ben integrato in Debian sin da Woody.
<package>Tiger</package> si prende cura di verificare i
classici problemi che riguardano la sicurezza, come la
sicurezza delle password, possibili problemi ai file system,
processi di comunicazione e qualsiasi altro possibile
compromesso. Sono presenti in questo pacchetto nuove
verifiche di sicurezza specifiche per Debian come: verifica MD5sums
dei file installati, localizzazione dei file che non
appartengono ai pacchetti e analisi dei processi in ascolto.
L'installazione normale di <prgn>tiger</prgn> attiva ogni
giorno e genera un rapporto che viene spedito all'amministratore
concernente i possibili file compromessi del sistema.</p>
<p>
I programmi di controllo dei log come ad esempio
<package>logcheck</package> possono essere usati
per scovare dei tentativi di intrusione. Al riguardo
potete leggere in <ref id="custom-logcheck">.</p>
<p>
In pi esistono programmi che controllano l'integrita dei file
systems (leggete in <ref id="check-integ">) che sono
abbastanza utili nella ricerca di anomalie in un sistema sicuro.
È molto probabile che un vero intruso modifichi alcuni
file nel file system locale allo scopo di aggirare la politica
di sicurezza, installare dei cavalli di Troia, oppure creare
utenti. Questi eventi vengono ricercati dai programmi atti
a controllare l'integrit dei file system.</p></sect1></sect>
<sect><heading>Evitare i root-kit</heading>
<sect1 id="LKM"><heading>Moduli del kernel caricabili (LKM)</heading>
<p>
I moduli caricabili del kernel sono file che contengono
componenti del kernel per espanderne le funzionalit,
caricabili in modo dinamico.
Il principale vantaggio nel loro impego sta nella
possibilit di aggiungere apparecchi addizionali, come
una scheda sonora o una Ethernet, senza apportare
correzioni al sorgente del kernel e senza ricompilarlo
interamente. Per, al momento, i cracker li sfruttano
per i loro root- kit (usurpando l'account di root (knark
e adore)) e aprire porte segrete (le cosiddette
"back door") nei sistemi GNU/Linux.</p>
<p>
Le porte segrete aperte tramite LKM sono pi sofisticate e meno rilevabili
rispetto ai tradizionali tentativi di usurpare gli strumenti di root. Possono
nascondere processi, file, cartelle e perfino connessioni, senza modificare
il codice sorgente dei binari. Per esempio, un LKM maligno pu obbligare il
kernel a nascondere processi specifici da <file>procfs</file>, cosicch
una copia del binario <prgn>ps</prgn>, ritenuta fedele, non fornirebbe,
invece, informazioni precise sugli attuali processi in atto nel sistema.</p></sect1>
<sect1><heading>Scoprire i root-kit</heading>
<p>
Ci sono due approcci per difendere il sistema contro i root-kit a mezzo LKM:
la difesa preventiva e quella reattiva. Il lavoro di ricerca pu essere
semplice e indolore, o difficile e faticoso, a seconda dell'approccio.</p>
<sect2 id="proactive"><heading>Difesa proattiva</heading>
<p>
Il vantaggio di questo tipo di difesa che in primo luogo
previene danni al sistema. Una siffatta strategia consiste nel
motto <em>arrivateci per primi</em>, cio, caricare un LKM atta a
proteggere il sistema da altri LKM maliziosi. Una seconda
strategia quella di rimuovere completamente la possibilit dei
moduli del kernel caricabili. Si noti, comunque, che esistono
rootkit che potrebbero funzionare anche in questo caso, ce ne sono
alcuni che manomettono direttamente <file>/dev/kmem</file>
(la memoria del kernel) per non essere scoperti.</p>
<p>
Debian GNU/Linux ha alcuni pacchetti che possono essere utilizzati
per creare una difesa proattiva:
<list>
<item>
<p><package>kernel-patch-2.4-lsm</package> - LSM il framework Linux
Security Modules.</p></item>
<item>
<p><package>lcap</package> - una interfaccia user friendly per rimuovere la
<em>possibilit</em> (il controllo degli accessi a livello kernel) nel
kernel, rendendo il sistema pi sicuro. Per esempio, eseguendo
<tt>lcap CAP_SYS_MODULE</tt>
<footnote>
<p>Ci sono oltre 28 possibilit, incluse:
<tt>CAP_BSET</tt>,
<tt>CAP_CHOWN</tt>,
<tt>CAP_FOWNER</tt>,
<tt>CAP_FSETID</tt>,
<tt>CAP_FS_MASK</tt>,
<tt>CAP_FULL_SET</tt>,
<tt>CAP_INIT_EFF_SET</tt>,
<tt>CAP_INIT_INH_SET</tt>,
<tt>CAP_IPC_LOCK</tt>,
<tt>CAP_IPC_OWNER</tt>,
<tt>CAP_KILL</tt>,
<tt>CAP_LEASE</tt>,
<tt>CAP_LINUX_IMMUTABLE</tt>,
<tt>CAP_MKNOD</tt>,
<tt>CAP_NET_ADMIN</tt>,
<tt>CAP_NET_BIND_SERVICE</tt>,
<tt>CAP_NET_RAW</tt>,
<tt>CAP_SETGID</tt>,
<tt>CAP_SETPCAP</tt>,
<tt>CAP_SETUID</tt>,
<tt>CAP_SYS_ADMIN</tt>,
<tt>CAP_SYS_BOOT</tt>,
<tt>CAP_SYS_CHROOT</tt>,
<tt>CAP_SYS_MODULE</tt>,
<tt>CAP_SYS_NICE</tt>,
<tt>CAP_SYS_PACCT</tt>,
<tt>CAP_SYS_PTRACE</tt>,
<tt>CAP_SYS_RAWIO</tt>,
<tt>CAP_SYS_RESOURCE</tt>,
<tt>CAP_SYS_TIME</tt> e
<tt>CAP_SYS_TTY_CONFIG</tt>.
Tutte queste possono essere disattivate per irrobustire il kernel.</p>
</footnote>
si rimuover la possibilit di caricare moduli (anche per l'utente root).
<footnote>
<p>Non si ha bisogno di installare <package>lcap</package> per fare
questo, ma risulta pi semplice che impostare
<file>/proc/sys/kernel/cap-bound</file> manualmente.</p>
</footnote>
Per maggiori informazioni sulle varie possibilit potete
controllare una sezione dello sviluppo del kernel di Jon Corbet's
<url id="http://lwn.net/1999/1202/kernel.php3" name="Kernel development">
sezione in LWN (dicembre 1999).</p></item>
</list></p>
<p>
Se non si hanno affatto bisogno di molte caratteristiche del
kernel sul proprio sistema GNU/Linux, si pu disabilitare il
supporto ai moduli caricabili durante la fase di configurazione
del kernel. Per disabilitare questo supporto, impostate
CONFIG_MODULES=n durante la fase di configurazione per la creazione
del vostro kernel, oppure nel file <file>.config</file>.
Questo annuller i tentativi dei rootkit LKM, ma si perder
questa potente caratteristica del kernel Linux. Inoltre,
disabilitare il supporto per i moduli caricabili a volte potrebbe
appesantire il kernel, rendendo il supporto ai moduli necessario.</p></sect2>
<sect2><heading>Difesa reattiva</heading>
<p>
Il vantaggio di una difesa reattiva che non sovraccarica le
risorse del sistema. Funziona confrontando la tabella delle
chiamate di sistema con una copia sicura in un file del disco,
<file>System.map</file>. Ovviamente, una difesa reattiva si limiter ad
avvisare l'amministratore di sistema dopo che il sistema gi
stato compromesso.</p>
<p>
Il controllo contro alcuni rootkit in Debian pu essere realizzato
con il pacchetto <package>chkrootkit</package>. Il programma
<url id="http://www.chkrootkit.org" name="Chkrootkit"> ricerca
le firme di svariati rootkit noti sul sistema ma non certo un
test definitivo.</p>
<p>
Un altro tool d'aiuto
<url id="http://www.s0ftpj.org/en/site.html" name="KSTAT">
(Kernel Security Therapy Anti Trolls) del gruppo S0ftproject.
KSTAT controlla l'area di memoria del kernel (<file>/dev/kmem</file>) alla
ricerca di informazioni che riguardano l'host obiettivo, in modo da
assistere l'amministratore di sistema a trovare e rimuovere LKM
maliziosi.</p></sect2></sect1></sect>
<sect><heading>Si pu fare... — idee geniali/paranoiche</heading>
<p>
Probabilmente questa la sezione pi instabile e bizzarra, ma si spera che
alcune di queste idee, volte ad aumentare la sicurezza, possano essere
realizzate — nonostante possano sembrare, a seconda dei punti di vista,
geniali, paranoiche, pazzesche o... profetiche.
<list>
<item>
<p>Divertirsi con i Pluggable Authentication Modules (PAM - moduli per
l'autenticazione inseribili): come riportato nell'articolo su PAM, in
Phrack 56, il loro aspetto pi simpatico che "l'unico limite ci che
si riesce a pensare". Ed vero! S'immagini un'autenticazione di root
possibile solo mediante impronta digitale o scansione oculare o tessera
magnetica cifrata (ma perch usare la congiunzione "O", invece che la "E"?)</p></item>
<item>
<p>Registrazione dei log "fascista" - per contrasto verso tutte le precedenti
discussioni sulla "registrazione di log leggera": se si vuole una
registrazione di log degna di tal nome, basta spedire tutti i log ad una
stampante con carta a modulo continuo. Sembra un espediente buffo, ma
sicuro e al riparo da manomissioni e cancellazioni.</p></item>
<item>
<p>Distribuzione su CD: idea davvero semplicissima a realizzarsi, d una
sicurezza abbastanza buona; basta creare una distribuzione Debian ben
corazzata, con regole di firewall appropriate, convertirla in immagine ISO
inizializzabile e schiaffarla su un CD-Rom, cos da avere una distribuzione
di sola lettura, con circa 600 MB di spazio per i vari servizi. Per gli
intrusi impossibile ottenere l'accesso al sistema in lettura e scrittura
e qualsiasi cambiamento essi riescano a operare pu essere annullato con la
reinizializzazione del sistema.</p></item>
<item>
<p>Disabilitare le funzionalit tramite modulo: come gi visto, quando,
durante la sua compilazione, si impedisce l'uso dei moduli del kernel,
molte porte segrete basate su di esso non possono essere sfruttate,
perch, nella maggioranza dei casi, si fondano sull'installazione
di moduli del kernel modificati.</p></item>
<item>
<p>Registrazione dei log tramite cavo seriale (collaborazione di Gaby
Schilders): finch i server avranno porte seriali, si potr dedicare un
sistema alla registrazione dei log di un certo numero di server. Tale
sistema sar fuori dalla rete, ma connesso ai server per mezzo di una
multipresa per porte seriali (Cyclades o simili). Ora che tutti i server
registreranno verso le loro porte seriali, in sola scrittura, baster
connettere un masterizzatore di CD/DVD, sul quale trasferire i file di
registrazione, appena essi giungano a riempire la capacit del supporto.
Se solo facessero dei masterizzatori con autocommutatori...! Non un modo
di fare copie "dure" come la registrazione diretta a mezzo stampante, ma
pu gestirne volumi pi consistenti - e stoccare CD-Rom richede meno spazio.</p></item>
<item>
<p>Cambiare gli attributi dei file usando <prgn>chattr</prgn>
(tratto da Tips-HOWTO, di Jim Dennis): dopo una semplice installazione
e una configurazione iniziale, potete usare il programma <prgn>chattr</prgn>
con l'attributo <tt>+i</tt>, per far si che i file non possano essere
modificati (ossia, cancellati, rinominati, collegati o riscritti).
È bene impostare questo attributo su tutti i file delle
cartelle <file>/bin</file>, <file>/sbin/</file>,
<file>/usr/bin</file>, <file>/usr/sbin</file>, <file>/usr/lib</file>
e sui file del kernel in root. Si possono anche copiare i tutti file
di <file>/etc/</file>, con <prgn>tar</prgn> o altro programma
simile e classificare l'archivio come immutabile.</p>
<p>
Questa strategia aiuta a limitare i danni che si possono fare quando si
opera come root, cos da non sovrascrivere file per una erronea redirezione
dell'operatore e non rendere inutilizzabile il sistema per uno spazio di
troppo nel comando <prgn>rm -fr</prgn>; si pu fare comunque ancora
molto danno ai propri dati — ma le librerie e i binari
saranno PIU' SICURI!</p>
<p>
Per di pi, essa rende impossibile o, per lo meno, pi difficile una serie
di attacchi alla sicurezza tramite denial of service (DoS - rifiuto di
fornire servizi), miranti a sovrascrivere un file attraverso
l'azione di qualche programma di SETUID che
<em>non fornisca comandi arbitrari di shell</em>.</p>
<p>
Un inconveniente di questa strategia sorge in fase di costruzione e
installazione di vari binari di sistema, dal momento che impedisce al
comando <prgn>make install</prgn> la sovrascrittura dei file.
Quando ci si scorda di leggere il Makefile e di cambiare con
<prgn>chattr -i</prgn> i file da sovrascrivere (e le cartelle in cui
si desidera aggiungerli), il comando make fallisce; bisogna lanciare
<prgn>chattr</prgn> e poi farlo ripartire. Si pu anche approfittare
dell'occasione per sbarazzarsi di binari e librerie vecchi, spostandoli
in una cartella .old/ o in un archivio tar, per esempio.</p>
<p>
Si noti che questa strategia impedisce anche di aggiornare i pacchetti del
proprio sistema, dal momento che i file forniti dai pacchetti dell'ultima
versione non possono essere sovrascritti. A questo proposito, si potrebbe
creare uno script o un altro meccanismo per disabilitare il
flag "immutabile" su tutti i binari giusto prima di fare un
<prgn>apt-get update</prgn>.</p></item>
</list></p>
<sect1><heading>Costruirsi una honeypot ("trappola al miele")</heading>
<p>FIXME: Serve maggiore materiale specifico per Debian</p>
<p>
Una honeypot ("trappola al miele") un sistema progettato per
insegnare agli amministratori come i cracker sondano e sfruttano
il sistema; un modo di impostare un sistema con l'aspettativa
e l'obiettivo che sia sondato, attaccato e potenzialmente,
sfruttato. Conoscendo gli strumenti e le metodiche dei cracker,
un amministratore di sistema impara a proteggere meglio i
sistemi e le reti di cui si occupa.</p>
<p>
Un sistema Debian GNU/Linux pu essere agevolmente configurato come "trappola
al miele", dedicando un po' di tempo ad implementare e controllare: basta
impostare il falso server con un firewall e un qualsiasi rilevatore di
intrusioni nella rete, collegarlo a Internet e aspettare. In caso di
sfruttamento del sistema, occorre essere ben certi di essere avvisati per
tempo (vedete <ref id="log-alerts">), s da poter assumere le
opportune contromisure e terminare il danneggiamento quando se ne
conosca abbastanza. Questo un elenco di pacchetti e di aspetti
da valutare durante l'impostazione di una honeypot:
<list>
<item>
<p>La tecnologia di firewall che si impiegher (fornita dal kernel Linux).</p></item>
<item>
<p><package>syslog-ng</package>, utile per mandare log dalla trappola ad
un server remoto di syslog.</p></item>
<item>
<p><package>snort</package>, per impostare la cattura dell'intero traffico
in entrata nella trappola e rilevare gli attacchi.</p></item>
<item><p><package>osh</package>, una shell di root, di tipo SETUID,
con limitazioni, migliorata sotto il profilo della sicurezza e con
un sistema di registrazione dei log (vedete, pi oltre, l'articolo di
Lance Spitzner).</p></item>
<item>
<p>Ovviamente, tutti i demoni che si useranno per il server-trappola
(ricordarsi di <em>non proteggerlo</em>).</p></item>
<item>
<p>Il Deception Toolkit (equipaggiamento per la frode), che usa
l'inganno per respingere gli attacchi.
Homepage: <url id="http://www.all.net/dtk/" name="Deception Toolkit"></p></item>
<item>
<p>Verificatori di integrit (vedete <ref id="check-integ">) ed
il Coroner's Toolkit (<package>tct</package> - gli "Strumenti del
Patologo"), per fare i controlli post-attacco.</p></item>
</list></p>
<p>
Maggiori informazioni sulla costruzione di honeypot si possono
trovare nell'eccellente articolo di Lanze Spitzner
<url id="http://www.net-security.org/text/articles/spitzner/honeypot.shtml" name="To Build a Honeypot">, (costruire una honeypot), - della serie "conosci i tuoi nemici" o in <url id="http://www.zdnetindia.com/techzone/resources/security/stories/7601.htm" name="Building your own honeypot"> (costruirsi la propria honeypot),
di David Raikow.
Inoltre, l'<url id="http://project.honeynet.org/" name="Honeynet Project">
offre informazioni preziose sul modo di costruire queste trappole e
controllare gli attacchi rivolti contro di esse.</p></sect1></sect></chapt>
|