<!--
     The FreeBSD Italian Documentation Project

     $FreeBSD$
     Original revision: 1.207
-->

<chapter id="security">
  <title>Sicurezza</title>

  <sect1>
    <title>Sinossi</title>

    <para>Questo capitolo d&agrave; una introduzione di base sui concetti dei
      sistemi di sicurezza, alcune buone regole di comportamento e alcuni
      argomenti avanzati per &os;. Molti degli argomenti qua tratati possono
      essere applicati anche ai sistemi e alla sicurezza su Internet in
      generale. Internet non &egrave; pi&ugrave; il luogo
      <quote>amichevole</quote> dove ognuno vuole essere il tuo amichevole
      vicino. Mettere in sicurezza il tuo ssitema &egrave; un imperativo per la
      protezione dei tuoi dati, della tua propriet&agrave; intelletuale, il tuo
      tempo e molto altro dalla mano di hackere simili.</para>

    <para>&os; d&agrave; un insieme di utility e di meccanismi per assicurare
      l'integrit&agrave; e la sicurezza del tuo sistema e della tua rete.</para>

    <para>Dopo la lettura di questo capitolo, conoscerai:</para>

    <itemizedlist>
      <listitem>
	<para>Concetti di base dei sistemi di sicurezza, rispetto a &os;.</para>
      </listitem>

      <listitem>
	<para>Vari meccanismi di crittografia disponibili in &os;,
	  come <acronym>DES</acronym> e <acronym>MD5</acronym>.</para>
      </listitem>

      <listitem>
	<para>Come configurare l'autenticazione OTP (password a singolo
          uso).</para>
      </listitem>

      <listitem>
	<para>Come configurare <application>KerberosIV</application> su release
          &os; precedenti alla 5.0.</para>
      </listitem>

      <listitem>
	<para>Come configurare <application>Kerberos5</application> su &os; 5.0
          o successive.</para>
      </listitem>

      <listitem>
	<para>Come creare firewall usando <acronym>IPFW</acronym>.</para>
      </listitem>

      <listitem>
	<para>Come configurare IPsec e creare una <acronym>VPN</acronym> tra
          macchine &os;/&windows;.</para>
      </listitem>
     
      <listitem>
	<para>Come configurare e usare <application>OpenSSH</application>,
          l'implementaizone <acronym>SSH</acronym> usata da &os;.</para>
      </listitem>

      <listitem>
	<para>Come configurare e caricare i moduli aggiuntivi per il controllo
	  degli accessi usando il Framework <acronym>MAC</acronym> di
	  TrustedBSD.</para>
      </listitem>

      <listitem>
	<para>Cosa sono le <acronym>ACL</acronym> del file system e come
	  usarle.</para>
      </listitem>

      <listitem>
        <para>Come utilizzare le pubblicazioni sugli avvisi di sicurezza di
          &os;.</para>
      </listitem>
    </itemizedlist>

    <para>Prima di leggere questo capitolo dovresti:</para>

    <itemizedlist>
      <listitem>
	<para>Capire concetti base di &os; e Internet.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="security-intro">
    <title>Introduzione</title>

    <para>La sicurezza &egrave; una funzione che inizia e finisce con
      l'amministratore di sistema.  Nonostante ogni sistema multi-utente &unix;
      BSD abbia della sicurezza insita, il lavoro di costruire e mantenere
      meccanismi di sicurezza aggiuntivi in modo da mantenere
      <quote>onesti</quote> gli utenti &egrave; probabilmente uno dei maggiori
      lavori di un amministratore di sistema.  La macchine sono sicure solo
      quanto le si rende e le richieste di sicurezza si scontrano sempre con
      l'umana necessit&agrave; per la comodit&agrave;.  I sistemi &unix;, in
      generale, sono capaci di eseguire un gran numero di processi contemporanei
      e ognuno di questi processi opera come server &mdash; nel senso che
      entit&agrave; esterne possono connettersi e parlarci.  Mentre i mini e i
      mainframe di ieri diventano i desktop di oggi, mentre i computer diventano
      interconnessi e internet-connessim, la sicurezza diventa un problema
      sempre maggiore.</para>

    <para>Il modo migliore per implementare la sicurezza &egrave; con un
      approccio <quote>a cipolla</quote>.  In pratica, quello che vuoi fare
      &egrave; creare tanti livelli di sicurezza quanto &egrave; conveniente e
      poi tenere sotto controllo il sistema per vedere eventuali intrusioni.
      Non vuoi esagerare nella sicurezza o interferirai con l'individuazione e
      quest'ultima &egrave; una delle parti pi&ugrave; importanti di ogni
      meccanismo di sicurezza.  Per esempio, ha poco senso imopstare il flag 
      <literal>schg</literal> (vedi &man.chflags.1;) su ogni binario di sistema
      dato che questo potr&agrave; s&igrave; proteggere temporaneamente i
      binari, ma evita che l'attaccante faccia una modifica facilmente
      individuabile e potrebbe far in modo che il tuo meccanismo di sicurezza
      non individui l'attaccante del tutto.</para>

    <para>La sicurezza di un sistema riguarda anche il gestire varie forme di
      attacco, compresi attacchi che tentano di bloccare, o comunque rendere
      inusabile, il sistema, anche se non necessariamente cercano di
      compromettere l'account di root <username>root</username> (<quote>rompere
      root</quote>).  I problemi di sicurezza possono essere suddivisi in
      svariate categorie:</para>

    <orderedlist>
      <listitem>
	<para>Attacchi che limitano la disponibilit&agrave; dei servizi
	  (<quote>Denial of service</quote> o, in breve, DoS).</para>
      </listitem>

      <listitem>
	<para>Compromissione degli account utente.</para>
      </listitem>

      <listitem>
	<para>Compromissione di root tramite server accessibili.</para>
      </listitem>

      <listitem>
	<para>Compromissione di root tramite gli account utente.</para>
      </listitem>

      <listitem>
	<para>Crazione di backdoor (letteralmente <quote>porte sul
	    retro</quote>, ovvero accessi secondari personalizzati).</para>
      </listitem>
    </orderedlist>

    <indexterm>
      <primary>attacchi DoS</primary>
      <see>Denial of Service (DoS)</see>
    </indexterm>
    <indexterm>
      <primary>sicurezza</primary>
      <secondary>attacchi DoS</secondary>
      <see>Denial of Service (DoS)</see>
    </indexterm>
    <indexterm><primary>Denial of Service (DoS)</primary></indexterm>

    <para>Un attacco DoS &egrave; un'azione che priva la macchina di risorse.
      Tipicamente un attacco DoS &egrave; un meccanismo a forza-bruta che tenta
      di bloccare e comunque rendere inusabile una macchina travolgendo di
      richieste i server che rende disponibili o direttamente lo stack di rete.
      Alcuni attacchi DoS tentano di trarre vantaggio da bug nello stack di rete
      per bloccare la macchina con un singolo pacchetto.  Questo genere di
      attacchi pu&ograve; evitato solo mettendo a posto il bug direttamente nel
      kernel.  Gli attacchi sui server possono spesso essere evitati
      specificando con attenzione dei limiti sul carico che i server stessi
      devono accettare in caso che il sistema lavori in condizioni avverse.
      Gli attacchi a forza-bruta generati da un'intera rete di attaccanti sono
      pi&ugrave; difficili da gestire.  Ad esempio un attacco con pacchetti 
      in spoof (ovvero con il campo mittente falsato) &egrave; praticamente
      impossibile da fermare, a meno di staccare del tutto il sistema da
      Internet.  Potr&agrave; anche non fermare la tua macchina, ma sicuramente
      pu&ograve; saturare la tua connessione Internet.</para>

    <indexterm>
      <primary>sicurezza</primary>
      <secondary>compromissione degli account</secondary>
    </indexterm>

    <para>La compromissione di un account utente è ancora più comune di un
      attacco DoS.  Molti sysadmin usano ancora i server standard <application>telnetd</application>, <application>rlogind</application>,
      <application>rshd</application> e <application>ftpd</application> sulle loro macchine.  Questi programmi, normalmente, non usano connessioni crittate.  Il risultato è che quando hai una base utenti di medie dimensioni, uno o più degli utenti connessi al tuo sistema da remoto (il modo più comune e conveniente per collegarsi a un sisetma) avrà una password compromessa da un'operaizone di sniffing.  Gli amministratori di sistema attenti controllano i registri degli accessi remoto cercando indirizzi sospetti anche tra gli accessi permessi.</para>

    <para>Bisogna sempre dare per scontato che una volta che un attaccante ha
      accesso ad un account utente, può rompere anche <username>root</username>.
      In realtà, comunque, in un sistema ben configurato e mantenuto, questo non è necessariamente vero.  La distinzione è importante perché senza accesso a <username>root</username> l'attaccante ni genere non può nascondere le proprie tracce e può, alla peggio, rovinare i files dell'utente o mandaer la macchina in crash.  La compromissione degli account utente è molto comune dato che gli utenti tendono a non prendere precauzioni tanto quanto i sysadmin.</para>

    <indexterm>
      <primary>sicurezza</primary>
      <secondary>backdoor</secondary>
    </indexterm>

    <para>Gli amministratori di sistema devono ricordare che su una macchina ci
      sono potenzialmente molti modi per rompere <username>root</username>.
      L'attaccante potrebbe conoscere la password di <username>root</username>, potrebbe trovare un bug in un programma server in esecuzione con diritti di <username>root</username> e sfruttarlo per entrare da remoto, oppure una volta ottenuto un account utente potrebbe fare lo stesso con un bug in un programma con suid <username>root</username>.
      If an attacker has found a way to break <username>root</username>
      on a machine, the attacker may not have a need
      to install a backdoor.  Many of the <username>root</username> holes
      found and closed to date involve a considerable amount of work
      by the attacker to cleanup after himself, so most attackers install
      backdoors.  A backdoor provides the attacker with a way to easily
      regain <username>root</username> access to the system, but it
      also gives the smart system administrator a convenient way
      to detect the intrusion.
      Making it impossible for an attacker to install a backdoor may
      actually be detrimental to your security, because it will not
      close off the hole the attacker found to break in the first
      place.</para>


    <para>Security remedies should always be implemented with a
      multi-layered <quote>onion peel</quote> approach and can be
      categorized as follows:</para>

    <orderedlist>
      <listitem>
	<para>Securing <username>root</username> and staff accounts.</para>
      </listitem>

      <listitem>
	<para>Securing <username>root</username> &mdash; root-run servers
	  and suid/sgid binaries.</para>
      </listitem>

      <listitem>
	<para>Securing user accounts.</para>
      </listitem>

      <listitem>
	<para>Securing the password file.</para>
      </listitem>

      <listitem>
	<para>Securing the kernel core, raw devices, and
	  filesystems.</para>
      </listitem>

      <listitem>
	<para>Quick detection of inappropriate changes made to the
	  system.</para>
      </listitem>

      <listitem>
	<para>Paranoia.</para>
      </listitem>
    </orderedlist>

    <para>The next section of this chapter will cover the above bullet
      items in greater depth.</para>
  </sect1>

  <sect1 id="securing-freebsd">
    <title>Securing &os;</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="crypt">
    <title>DES, MD5, and Crypt</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="skey">
    <title>S/Key</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="kerberos">
    <title>Kerberos</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="firewalls">
    <title>Firewalls</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="openssl">
    <title>OpenSSL</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="ipsec">
    <title>IPsec</title>

    <para>Traduzione in corso</para>
  </sect1>

  <sect1 id="openssh">
    <title>OpenSSH</title>

    <sect2 id="security-ssh-tunneling">
      <title>SSH Tunneling</title>

      <para>Traduzione in corso</para>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
