Debian e il controllo di servizi e demoni: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
m (→‎Apt System: mancate virgolette (errore su zsh o con impostazione non default di bash))
 
(11 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
==Caratteristiche==
{{Versioni compatibili}}
== Introduzione ==
Uno dei primi passi da affrontare subito dopo l'installazione della nostra Debian dovrebbe essere quello di accertarsi quali sono i servizi e i demoni che vengono lanciati dal sistema. Questa operazione permette un controllo migliore della sicurezza della nostra macchina ed una minore esposizione a rischi legati ad intrusioni.


* Intel Pentium M 1.6 GHz
In questa breve guida vedremo come controllare i servizi attivi, come eliminare quelli non necessari e come rendere più sicuri quelli che intendiamo utilizzare.
* 2x256 MB DDR-SDRAM
* 40 GB Matshita hd
* ATI Mobility Radeon 9600 M10 (RV350)
* Audio Intel AC'97
* Matshita DVD-RAM UJ-820s
* Realtek Ethernet Controller
* LCD 15.4"
* ENE PCMCIA Controller
* Intel Pro/Wireless 2200BG
* Alps Touchpad


<pre># lspci
Buona lettura & happy Debian!
0000:00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:01.0 PCI bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to AGP Controller (rev 02)
0000:00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
0000:00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
0000:00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
0000:00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
0000:00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
0000:00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
0000:00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
0000:02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
0000:02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
0000:02:04.0 CardBus bridge: ENE Technology Inc CB-710/2/4 Cardbus Controller
0000:02:04.1 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller
0000:02:04.2 0805: ENE Technology Inc ENE PCI Secure Digital Card Reader Controller
0000:02:04.3 FLASH memory: ENE Technology Inc: Unknown device 0520</pre>


==La mia installazione di Debian Sarge (3.1r0a)==
== Concetti di base ==
=== Servizi & Demoni ===
In un sistema operativo si definisce "servizio" (o anche "demone") un processo in background che gira autonomamente, senza intervento da parte dell'utente, o comunque con una interazione ridotta al minimo. Un esempio di servizio è il server web Apache: il server viene controllato dal demone "httpd" che gira in background, resta in ascolto sulla porta indicata e serve le pagine richieste.


===Backup e partizionamento===
== Strumenti ==
GNU/Linux fornisce una nutrita schiera di programmi che ci permettono di interagire con i servizi attivi sulla nostra macchina. Di seguito riporto quelli più usati nell'amministrazione di un sistema Debian.


Ho fatto un backup di tutti i documenti, file, musica, video, etc...
=== netstat ===


Poi una deframmentazione, meglio se da DOS, in modo da avere il sistema operativo su una parte precisa del disco (all'inizio).
''Netstat'' è uno dei programmi più utili ed utilizzati: permette di elencare tutta una serie di informazioni utili (socket aperti, routing tables, processi, ecc...). Per il nostro scopo utilizzeremo ''netstat'' per ottenere un elenco di tutte le connessioni di rete aperte sulla nostra macchina. Ottenere queste informazioni è il primo passo per conoscere nel dettaglio cosa succede all'interno del nostro sistema operativo.  


Io ho voluto mantenere il sistema op. della microsoft, quindi ho creato le partizioni (almeno 2) da Windows. Si possono creare, credo, anche con l'installer di Debian, ma � un po' complicato. Non fate come il sottoscritto, procuratevi un programma open source per partizionare. : )
Ora cerchiamo tutte le connessioni di rete in ascolto (stato <code>LISTEN</code>) sul nostro sistema.


Io ne ho create 2:
<pre># netstat -l |grep tcp
tcp        0      0 *:netbios-ssn          *:*                    LISTEN
tcp        0      0 *:5900                  *:*                    LISTEN
tcp        0      0 *:www                  *:*                    LISTEN
tcp        0      0 *:sieve                *:*                    LISTEN
tcp        0      0 *:ssh                  *:*                    LISTEN
tcp        0      0 localhost.localdom:8118 *:*                    LISTEN
tcp        0      0 *:ipp                  *:*                    LISTEN
tcp        0      0 localhost.localdom:smtp *:*                    LISTEN
tcp        0      0 *:microsoft-ds          *:*                    LISTEN</pre>


*Primaria da 14 GB per / [destinazione dell'intero sistema operativo]
Ho scelto di limitare l'output alle sole connessioni in attesa di connessione. Potete anche provare ad utilizzare i comandi <code>'''netstat -a'''</code>, <code>'''netstat -l'''</code>, <code>'''netstat -l |grep tcp'''</code>, ecc.
*Logica da 1 GB per lo swap ["memoria virtuale"]
La partizione di swap non � obbligatoria, ma consigliata.


===Installazione (prima parte)===
Le colonne da prendere in esame sono (in questo esempio) la terza e la quarta. La terza colonna riporta l'accoppiata indirizzo+porta su cui è in ascolto il servizio.


Facendo partire l'installazione della Sarge su questo modello Toshiba si ha un blocco sul rilevamento dei controller PCMCIA, in particolare su:
Se osserviamo la prima linea dell'output, la terza colonna indica come coppia indirizzo+porta il testo <code>'''*:netbios-ssn'''</code>: questo significa che è attivo un servizio in ascolto per qualsiasi (<code>*</code>) indirizzo di rete configurato sulla macchina e che questo servizio è associato alla porta <code>'''netbios-ssn'''</code>.
<pre>Rilevamento dell'hardware in corso alla ricerca di lettori CD-ROM --> Avvio dei servizi "PC-CARD" in corso</pre>
Ma non ho disperato, al boot mi � bastato scrivere, per far partire l'installer correttamente:
<pre>hw-detect/start_pcmcia=false</pre>
Siccome, io credo, non viene riconosciuto correttamente nemmeno l'adattatore grafico, ho dovuto aggiungere:
<pre>vga=771</pre>
se no mi sarei trovato davanti ad una schermata nera. Il comando completo diventa quindi:
<pre>linux26 acpi=yes vga=771 hw-detect/start_pcmcia=false</pre>
Prima del processo di partizionamento dell'installer, viene chiesto di formattare tutto l'hd o di modificare la tabella delle partizioni manualmente: io, per tenermi Windows, ho scelto la seconda opzione.
Quindi appare il men� di partizionamento con visualizzate le tre partizioni:
<pre>- (numero partizione) (tipo) (dimensione) (file system) (uso)
-
-
</pre>
Quella dell'altro SO non va toccata, deve essere impostata su "non usare la partizione".
Quella principale (per /) va configurata cos�:
<pre>usato come (cio� il file system): reiserFS
mount point: /
opzioni: default
etichetta: /
flag "avviabile": attivato
</pre>
Quella di swap cos�:
<pre>usato come: area di swap</pre>
Ho proseguito con il partizionamento guidato e il resto dell'installazione.


PRIMA di confermare il partizionamento, ho VERIFICATO nel riepilogo che le partizioni di altri OS non vengano modificate.
Nelle altre righe possiamo notare che, nella colonna degli indirizzi, oltre al <code>*</code> (che indica ''qualsiasi indirizzo'') compare anche <code>''localhost.localdomain''</code>. ''Netstat'' tenta di risolvere gli indirizzi IP e reperisce questo hostname dal file <code>/etc/hosts</code>, per cui <code>''localhost.localdomain''</code> corrisponde (nel mio esempio) all'indirizzo dell'interfaccia di loopback (127.0.0.1), come possiamo verificare con un semplice:
Ho scelto di installare il boot loader GRUB nel master boot record.


===Installazione (seconda parte)===
<pre>$ cat /etc/hosts |grep localhost.localdomain
127.0.0.1 localhost.localdomain localhost debby</pre>


Finita la prima parte dell'installazione, il sistema si � riavviato, cos� che mi sono trovato davanti al men� di GRUB (scelta del sistema operativo). Ho selezionato, con la tastiera:
È interessante notare come per alcune porte venga riportato un valore numerico, mentre per altre un valore alfanumerico.
<pre>Debian GNU/LINUX, kernel 2.6.8-2-686    (o simile)</pre>
e ho premuto "e" per editarlo, quindi ho selezionato:
<pre>kernel /boot/vwlinuz-2.6.8-2-686 root=/dev/hda2 ro acpi=yes vga=771    (o simile)</pre>
e premuto di nuovo "e" , ho aggiunto in fondo alla riga, senza virgolette: "1" (credo si possa aggiungere anche "single"), poi INVIO e poi "b". Il sistema comincia la seconda parte di installazione; ad un certo punto ci si trova al prompt di manutenzione, digitate (senza #):
<pre>
# cd /etc/rc2.d/
# rm *pcmcia*
# init2
</pre>
Ho cos� rimosso i riferimenti ai controller PCMCIA. L'installazione parte come previsto. Se non avessi eseguito quest'ultima operazione, si sarebbe verficato un blocco del sistema a:
<pre>
Starting PCMCIA services: cardmgr[2808]: watching 1 socket
cs: IO port probe 0x0100-0x04ff: clean
cs: IO port probe 0x0800-0x08ff: _ |
</pre>


===Configurazione desktop===
Valore numerico:
<pre>tcp        0      0 *:5900                  *:*                    LISTEN</pre>
Valore alfanumerico:
<pre>tcp        0      0 *:netbios-ssn          *:*                    LISTEN</pre>


Io ho scelto "ambiente desktop".
Questo comportamento di ''netstat'' è presto spiegato: quando il programma rileva un servizio in ascolto su una porta (ad esempio la porta 5900), cerca una corrispondenza con la stessa all'interno del file <code>/etc/services</code>.
Verr� in seguito chiesto di scegliere i driver per la scheda video, cio� "ati".


Se � andato tutto bene, si deve, con i diritti di amministratore, modificare il file:
Il file <code>/etc/services</code> è un file testuale che associa un numero di porta numerico alla descrizione alfanumerica del servizio associato alla stessa.
<tt>/etc/X11/XF86Config-4</tt><br/>
oppure: <tt>/etc/X11/xorg.conf</tt>    oppure    <tt>/etc/X11/Xfree86.conf</tt>


la sezione "Screen" va modificata cos�, se non lo � gi�:
Se vogliamo vedere a quale porta corrisponda il dato <code>''netbios-ssn''</code> dell'esempio precedente, è sufficiente cercarlo all'interno del file <code>/etc/services</code>:


<pre>
<pre>$ cat /etc/services |grep netbios-ssn
Subsection "Display"
netbios-ssn     139/tcp                        # NETBIOS session service
     Deph          24
netbios-ssn     139/udp</pre>
     Modes        "1280x800" "1024x768" "800x600" "640x480"
</pre>
Se si mette "1152x768" al posto di "1280x800" si avr� un effetto tipo antialias veramente fastidioso, soprattutto per i carratteri piccoli; infatti questa risoluzione non � specifica a questo video.


Nota: Nel Toshiba M30X-159, per vedere bene le risoluzioni da 1024x768 in su.. ho dovuto modificare nella sezione "Monitor" la sincronizzazione orizzontale e verticale nel seguente modo :
Nel nostro esempio, dato che la porta era di tipo TCP, il valore cercato è il primo ottenuto.
<pre>
Section "Monitor"
Identifier "LPL:0000"
HorizSync 30-61
VertRefresh 56-75
Option "DPMS"
EndSection
</pre>
Se come driver non avete scelto ati, dovete cambiarlo nello stesso file, scrivendo "ati" al posto di quello che ci trovate, nella riga "Driver" nella sezione "Device".
'''Riavviate.'''


===LAN===
Agendo sul file <code>/etc/services</code> possiamo quindi assegnare un valore descrittivo alle porte riportate solo con il valore numerico. Ad esempio tornando alla porta 5900, probabilmente vorremo associarla al servizio ad essa associata (vnc).


Sono riuscito a configurare anche la connessione a internet tramite router.
Sarà quindi sufficiente editare il file <code>/etc/services</code> ed aggiungere la linea:


La procedura � ben descritta in [[Condividere la connessione a internet]].
<pre>vnc-server      5900/tcp        vnc-server      # TightVNC Server</pre>


===WIRELESS===
A questo punto avremo realizzato l'associazione porta/descrizione:


====Debian Way====
<pre># netstat -l |grep tcp
[...]
tcp        0      0 *:vnc-server            *:*                    LISTEN
[...]</pre>


[[Intel PRO/Wireless 2200BG]]
Per quanto riguarda la quarta colonna, nell'esempio precedente possiamo vedere che il valore è identico per tutti i servizi e cioè <code>'''*:*'''</code>. Questo significa che il servizio è pronto a ricevere connessioni da qualsiasi indirizzo IP e da qualsiasi porta ad esso associata.


''(by ckale)''
Notiamo a questo punto che alcuni dei servizi avviati sono in ascolto su qualsiasi indirizzo IP configurato sulla nostra macchina (<code>*</code>), mentre alcuni sono legati (si dice anche ''binding'') all'indirizzo <code>''localhost.localdomain''</code> che abbiamo visto prima corrispondere all'indirizzo di loopback (127.0.0.1).


Per evitare, in parte, di fare il passaggio 1 e 2  (vedi sotto), installate attraverso apt-get il "[[Pagina di manuale di module-assistant|module-assistant]]". Questo vi consentir� di recuperare, pachettizzare ed installare il modulo per il ipw2200. Una volta installato, con <tt>apt-get install module-assistant</tt> modifichiamo anche il source.list di apt che si trova <tt>/etc/apt/source.list</tt> aggiungendo "non-free" e "contrib" sia per il repo "deb" che deb-src come in esempio :
Quando un servizio è in ascolto unicamente sull'interfaccia di loopback significa che sarà raggiungibile unicamente attraverso quell'interfaccia. Questo ci garantisce che l'unico host in grado di contattare il servizio è la stessa macchina che lo ha in esecuzione.


deb http://debian.fastweb.it/debian/ stable main non-free contrib
Nell'esempio di prima, i servizi raggiungibili unicamente dall'interfaccia di loopback sono <code>'''smtp'''</code> e <code>'''8118'''</code>. Come impareremo a verificare più tardi, si tratta rispettivamente del server di posta <code>'''exim'''</code> e del proxy <code>'''privoxy'''</code>.
deb-src http://debian.fastweb.it/debian/ stable main non-free contrib


Un volta fatto ci� aggiorniamo apt-get update e lanciamo module-assistant.
=== lsof ===
Ricordiamoci pero' di copiare i file firmware nella cartella <tt>/usr/lib/hotplug/firmware/</tt> (con il [[Udev e Debian|nuovo udev]] il percorso � <tt>/lib/firmware</tt>).


A questo punto proviamo a caricare il modulo con modprobe ipw2200
Se con '''netstat''' siamo in grado di monitorare quali servizi sono in ascolto sulla nostra macchina, è anche indispensabile sapere quale programma abbia lanciato e controlli ogni singolo servizio.


Una volta caricato il modulo procediamo con l'installazione delle utility wireless, apt-get install wireless-utility. Con il comando iwconfig possiamo vedere le interfacce di rete wifi.  
Una caratteristica peculiare dei sistemi operativi derivati da Unix (tra i quali appunto GNU/Linux) è che qualsiasi elemento del sistema viene visto come se fosse un file. Abbiamo file veri e propri (ad es.: <code>pippo.txt</code>), abbiamo dispositivi hardware (si trovano in <code>/dev</code> e sono rappresentati da file veri e propri) ed abbiamo le connessioni di rete (anche queste sono veri e propri file).


{{Warningbox|Se non funziona controllate il log del modprobe e verificate che il modulo cerchi il driver corretto, mi � capitato che lui cercasse un file con un nome diverso, naturalmente mi � bastato rinominare i firmware ;)}}
Approfittando di questa caratteristica di GNU/Linux, possiamo investigare in maniera approfondita sui nostri servizi: se per il sistema operativo si tratta di file allora possiamo sapere chi li ha creati e chi li ha aperti.


====Old Style====
Lo strumento principe per questo scopo è '''lsof'''. Come per la maggior parte dei comandi GNU, ''lsof'' è una abbreviazione della descrizione del comando: lsof = '''LS O'''pen '''F'''iles, cioè '''L'''i'''S'''t '''O'''pen '''F'''iles (elenca i file aperti).
''(by jockerfox)''


1) Dal sito Sourceforge.net
Dato che le connessioni di rete sono rappresentate da veri e propri file, possiamo usare ''lsof'' per ottenere informazioni su di esse.
scaricate i seguenti pacchetti :


http://ipw2200.sourceforge.net/#downloads il driver "ipw2200-1.0.4.tgz"
Poniamo il caso di voler ottenere informazioni sul servizio:
http://ipw2200.sourceforge.net/firmware.php il firmware "v1.0.4-current firmware"


Con Synaptic scaricare i seguenti pacchetti:
<pre>tcp        0      0 *:netbios-ssn          *:*                    LISTEN</pre>
:1: kernel-headers-2.6.8-2-686 (in automatico scaricher� anche kernel-headers-2.6.8-2 e kernel-kbuild-2.6-3)
:2: net-tools


2) Fatto cio':
Sarà sufficiente utilizzare ''lsof'':
:* scompattare "ipw2200-1.0.4.tgz" in una directory qualsiasi e da SU (#) fate un "make", poi "make install"
:* scompattare in una diversa directory "v1.0.4-current firmware" e copiare tutto in /usr/lib/hotplug/firmware/


'''P.S.''': non occorre copiare i file tipo "LICENZE" e varie... che non servono a nulla.
<pre># lsof -i |grep netbios-ssn
smbd      4089        root  21u  IPv4  8082      TCP *:netbios-ssn (LISTEN)</pre>


3) aprite una Konsole e da SU scrivete "nano /etc/network/interfaces" e aggiungete prima di eth0:
In questo modo possiamo vedere che il servizio in ascolto sulla porta associata a <code>'''netbios-ssn'''</code> (la porta 139) è controllato dal programma <code>'''smbd'''</code>.


<pre>
Allo stesso modo possiamo fare con <code>'''www'''</code> e <code>'''smtp'''</code>, ecc...
auto eth1
iface eth1 inet dhcp
</pre>


4) reboot ... e funziona !!
<pre># lsof -i |grep www
apache    4342        root  16u  IPv4  8423      TCP *:www (LISTEN)
apache    4349    www-data  16u  IPv4  8423      TCP *:www (LISTEN)


{{Warningbox|Ricordate di mettere il router senza chiave WEP (o varie cifrature) per essere sicuru che tutto funzioni come da dovere... dopo di che' abilitate allora la Key WEP nel router (vedi sotto per Debian)}}
# lsof -i |grep smtp
exim4    3901 Debian-exim    3u  IPv4  7625      TCP localhost.localdomain:smtp (LISTEN)</pre>


====Il WEP====
=== Apt System ===


No problem !
Ora che sappiamo quale programma controlla un determinato servizio, abbiamo la possibilità di risalire a quale pacchetto Debian lo contiene per - eventualmente - rimuoverlo, oppure ottenere versioni più aggiornate, ricompilarlo con patch specifiche, ecc.


A.S.: Il KWiFIManager e' utile, ma non per configurare la chiave WEP!!!
Il sistema più semplice ed allo stesso più potente per individuare quale pacchetto Debian contiene un file, consiste nell'utilizzare il programma '''apt-file'''. Per l' installazione e l' utilizzo di ''apt-file'', vi rimando all'ottima guida [[Apt-file: ricerca all'interno dei pacchetti]], scritta da MaXeR.


;Importante: In primis, abilitate la chiave WEP nel router (esempio io la ho abilitata in 128 bit)
Nel contesto a noi necessario, utilizzeremo la funzione di ricerca di ''apt-file'' per risalire a quale pacchetto contiene il programma che lancia un particolare demone.
e '''scrivetevi il codice esadecimale''' in un foglio senza sbagliare !!
# Da Konsole digitate : network-admin (lo trovate anche nel menu' K) e vi chiedera' la password di amministratore.. inseritela !
# Una volta "entrati dentro", cliccate sull'icona del Wireless, e poi cliccate sull'icona "modifica" (e' un'icona con una chiave inglese) e inserite la chiave WEP in esadecimale (ex:ABF0D3...); non occorre aggiungere "0x" avanti alla chiave, (0xABFoD3...NO!!) digitatela direttamente in esadecimale (ABF0D3...SI!)
# selezionate la casellina "questo dispositivo e' configurato"
# le altre opzioni se volete... tipo ESSID Dopo premete OK (due volte) e reboot !!!


Sperando di non essermi dimenticato qualcosa... ciao!
Continuiamo ad utilizzare come esempio il servizio in ascolto sulla porta <code>'''netbios-ssn'''</code>. Per adesso siamo riusciti a risalire al fatto che il servizio <code>''netbios-ssn''</code> corrisponde alla porta 139 e che è controllato da <code>'''smbd'''</code>.


Fine .
Ora vedremo cosa sia <code>'''smbd'''</code>. Prima di tutto verifichiamo quale script o programma si preoccupa di lanciare smbd
(by jockerfox)


===VIDEO===
<pre># lsof |grep smbd |grep txt
smbd      4089        root  txt      REG        3,3  2805852      34840 /usr/sbin/smbd
smbd      4094        root  txt      REG        3,3  2805852      34840 /usr/sbin/smbd</pre>


====Utilizzare i driver Ati di default====


I driver Ati di default sono parzialmente accelerati. Dalla mia esperienza � possibile usarli tranquillamente (io ci modellavo con Blender con qualche problema, ad esempio durante le selezioni dei poligoni o vertici nella vista 3D). E' sufficiente avere le librerie mesa (<tt>libglu1-mesa libgl1-mesa-glx libgl1-mesa-dri</tt>) e modificare il file <tt>/etc/X11/xorg.conf</tt> o <tt>/etc/X11/XF86config-4</tt>. Riporto solo le sezioni da aggiungere o modificare:
Ora vediamo quale pacchetto contiene <code>/usr/sbin/smbd</code>:
<pre>Section "Module"
        Load    "dri"
        Load    "extmod"
        SubSection  "extmod"
          Option  "omit xfree86-dga"
        EndSubSection
        Load    "glx"
        Load    "GLcore"
EndSection


Section "Device"
<pre># apt-file search /usr/sbin/smbd
        Identifier      "ATI Technologies, Inc. RV350 [Mobility Radeon 9600 M10]"
samba: usr/sbin/smbd
        Driver          "ati"
samba-dbg: usr/lib/debug/usr/sbin/smbd</pre>
        BusID          "PCI:1:0:0"
EndSection


Section "DRI"
Controlliamo quale di essi sia presente nel nostro sistema:
        Mode    0666
EndSection</pre>
'''Ma se si vuole sfruttare al pieno il processore grafico...'''<br/>
La guida � qui: [[Installazione driver proprietari Ati]].


Per fare qualcosa (ad esempio impostare i monitor) anche in modalit� grafica, usando il limitatissimo e stupido pannello di controllo Ati, dobbiamo fare qualche capriola.
<pre># dpkg -l "samba*"
Creiamo un collegamento simbolco della libreria <tt>libfglrx_pp.so.1.0</tt> in <tt>/usr/lib/</tt>.
Desiderato=sconosciUto/Installato/Rimosso/P:eliminato/H:bloccato
Da root:
| Stato=Non/Installato/file Config./U:spacchett./conf. Fallita/H:inst.parzial.
<pre># ln -s /usr/lib/fglrx/libfglrx_pp.so.1.0 /usr/lib/</pre>
|/ Err?=(nessuno)/H:bloc./necess.Reinst./X=entrambi (Stato,Err: maiusc.=grave)
Dobbiamo avere i permessi di root per lavorare su <tt>/etc/X11/xorg.conf</tt> ma il Pannello di Controllo Ati non parte se abbiamo i privilegi. Quindi creiamo un copia del file, ad esempio, in <tt>/home/utente/cartella_temp/</tt>.
||/ Nome          Versione      Descrizione
Quindi, senza i privilegi di root:
+++-==============-==============-============================================
<pre>$ cp /etc/X11/xorg.conf /home/utente/cartella_temp/
ii  samba          3.0.14a-6      a LanManager-like file and printer server fo
$ cd /home/utente/cartella_temp/
un  samba-client  <non definita> (descrizione non disponibile)
$ fireglcontrolpanel</pre>
ii  samba-common  3.0.14a-6      Samba common files used by both the server a
Settiamo le magre opzioni riguardo ai monitor, applichiamo e diamo Ok. Copiamo il file al suo posto, da root:
un  samba-doc      <non definita> (descrizione non disponibile)</pre>
<pre># cp /home/utente/cartella_temp/xorg.conf /etc/X11/</pre>
'''Riavviamo X.'''
Tutto dovrebbe essere a posto. Fihiuu...


====xorg.conf (XF86Config-4)====
{{Autori
|Autore = [[Utente:Keltik|Keltik]] 05:26, Giu 23, 2005 (EDT)
}}


Questo e' il mio xorg.conf:
[[Categoria:Ottimizzazione del sistema]]
<pre># /etc/X11/xorg.conf (xorg X Window System server configuration file)
[[Categoria:Apt]]
#
[[Categoria:Monitoraggio]]
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#  sudo dpkg-reconfigure -phigh xserver-xorg
 
Section "ServerLayout"
Identifier    "Default Layout"
Screen      0  "aticonfig-Screen[0]" 0 0
InputDevice    "Keyboard"
InputDevice    "Mouse"
InputDevice    "Touchpad"
EndSection
 
Section "Files"
# path to defoma fonts
FontPath    "/usr/share/fonts/X11/misc"
FontPath    "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath    "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath    "/usr/share/fonts/X11/Type1"
FontPath    "/usr/share/fonts/X11/100dpi"
FontPath    "/usr/share/fonts/X11/75dpi"
FontPath    "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
 
Section "Module"
Load  "synaptics"
Load  "bitmap"
Load  "ddc"
Load  "dri"
Load  "extmod"
Load  "freetype"
Load  "glx"
Load  "int10"
Load  "type1"
Load  "vbe"
#      Load  "GLcore"
EndSection
 
Section "InputDevice"
Identifier  "Keyboard"
Driver      "kbd"
Option     "CoreKeyboard"
Option     "XkbRules" "xorg"
Option     "XkbModel" "pc105"
Option     "XkbLayout" "it"
EndSection
 
Section "InputDevice"
Identifier  "Mouse"
Driver      "mouse"
Option     "CorePointer"
Option     "Device" "/dev/input/mice"
Option     "Protocol" "ExplorerPS/2"
Option     "Emulate3Buttons" "true"
EndSection
 
Section "InputDevice"
Identifier  "Touchpad"
Driver      "synaptics"
Option     "Device" "/dev/psaux"
Option     "Protocol" "auto-dev"
Option     "LeftEdge" "1700"
Option     "RightEdge" "5300"
Option     "TopEdge" "1700"
Option     "BottomEdge" "4200"
Option     "FingerLow" "25"
Option     "FingerHigh" "30"
Option     "MaxTapTime" "180"
Option     "MaxTapMove" "220"
Option     "VertScrollDelta" "100"
Option     "MinSpeed" "0.10"
Option     "MaxSpeed" "0.30"
Option     "AccelFactor" "0.0150"
Option     "SHMConfig" "on"
        Option      "AlwaysCore" "true"
EndSection
 
### Alternative Touchpad Configuration ###
#
#  Section "InputDevice"
#    Identifier  "Touchpad"
#    Driver      "mouse"
#    Option      "Device" "/dev/input/mice"
#    Option      "Name" "AlpsPS/2 ALPS GlidePoint"
#    Option      "Protocol" "explorerps/2"
#    Option      "Vendor" "Sysp"
#    Option   "LeftEdge" "1700"
#    Option   "RightEdge" "5300"
#    Option      "TopEdge" "1700"
#    Option   "BottomEdge" "4200"
#    Option   "FingerLow" "25"
#    Option   "FingerHigh" "30"
#    Option   "MaxTapTime" "180"
#    Option   "MaxTapMove" "220"
#    Option   "VertScrollDelta" "100"
#    Option   "MinSpeed" "0.10"
#    Option   "MaxSpeed" "0.30"
#    Option   "AccelFactor" "0.0150"
#    Option   "SHMConfig" "on"
#  EndSection
#
###
 
Section "Monitor"
Identifier  "aticonfig-Monitor[0]"
HorizSync    30.0 - 70.0
VertRefresh  50.0 - 100.0
Option     "VendorName" "ATI Proprietary Driver"
Option     "ModelName" "Generic Autodetecting Monitor"
Option     "DPMS" "true"
EndSection
 
Section "Monitor"
Identifier  "aticonfig-Monitor[1]"
Option     "DPMS" "true"
EndSection
 
Section "Device"
Identifier  "aticonfig-Device[0]"
Driver      "fglrx"
Option     "VideoOverlay" "on"
Option     "OpenGLOverlay" "off"
Option     "DesktopSetup" "horizontal,reverse"
BusID      "PCI:1:0:0"
EndSection
 
Section "Screen"
Identifier "aticonfig-Screen[0]"
Device    "aticonfig-Device[0]"
Monitor    "aticonfig-Monitor[0]"
DefaultDepth    24
SubSection "Display"
Viewport  0 0
Depth    24
Modes    "1280x800" "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
 
Section "DRI"
Mode        0666
EndSection
 
### End Of File ###
</pre>
 
===AUDIO===
 
Bisogna installare i paccheti ALSA:
<pre># apt-get install alsa-base alsa-utils</pre>
Poi fare un bel:
<pre># alsaconf</pre>
seguire le istruzioni e poi:
<pre># alsamixer</pre>
per settare i volumi.
 
===Touchpad===
 
La guida � qui: [[Synaptics touchpad]].
 
'''Nota:''' Se utilizzate ksynaptics come tool di configurazione del touchpad, abilitate l'opzione ''ALPS touch pad''.
 
===PCMCIA===
 
Su internet ho trovato che l'adattatore PCMCIA, su questo modello, � riconosciuto con il modulo <tt>yenta_socket</tt>.
 
===Gestione energetica===
 
Per quanto riguarda il risparmio energetico, il centro di controllo di KDE dice che:
''Il computer ha l'installazione ACPI parziale, bisogna abilitare "AC adaptor" e "Control method battery". Quindi ricompilare il kernel.''
 
Date un'occhiata qui: [[Cpufreqd: Cpuscaling per Intel Pentium M]]
 
Io, per risolvere, ho attivato i seguenti moduli:
<pre>acpi-cpufreq
ac
battery
button
fan
processor
thermal
cpufreq_userspace
freq_table</pre>
� possibile farlo con <tt>modconf</tt>.
Comunque molti sono gia' attivati.
Inoltre vanno installati:
<pre>acpi cpufreqd cpufrequtils</pre>
Aggiungete le applet (se avete Gnome) "Variazione frequenza CPU" e "Carica batteria" e siete a posto.
 
Con il comando:
<pre>cpufreq-set</pre>
potete cambiare la frequenza del processore. Esempio:
<pre>cpufreq-set -f 1.2GHz</pre>
oppure ottenere info con:
<pre>cpufreq-info</pre>
 
Se vi intendete di liguaggio C, o avete lavorato per Microsoft o Intel, potete provare a ricompilarvi la DSDT (Differentiated System Description Table). Questo vi permetter�, forse, di ottenere prestazioni migliori, di correggere qualche errore o di aggiungerne di nuovi. La guida � qui: [[ACPI e DSDT]].
 
===Sensori===
 
Guida: [[I2c e lm-sensors]]
 
Anche se questo laptop dovrebbe avere i sensori per le temperature e la ventola, <tt>lm-sensors</tt> non sembra rilevarli.
 
===Note===
 
Il mio mouse (Logitech Optical USB) � riconosciuto subito; il touchpad va cofigurato in /etc/X11/XF86config-4 .
Totem d� un messaggio di errore quando si cerca di riprodurre un file audio o video. Dopo la (re)installazione dei pacchetti ALSA funziona. Le altre applicazioni multimediali vanno bene, tranne XMMS che va solo se non sono in esecuzione altri media player.
 
Una buona guida all'installazione a Debian Sarge � qui:
[http://fabrizio.ciacchi.it/guide.php?pagina=sarge Guida veloce]
 
==Debian Etch==
 
Il comando di boot per installare � questo:
<pre>install acpi=yes vga=771</pre>
Installando da zero la testing ho risolto alcuni problemi, tra cui la gestione energetica e il controllo della batteria.
Durante il processo di installazione ho scelto: ambiente desktop, sistema base e portatile.
 
Per quanto riguarda il PCMCIA, durante l'installazione di Etch non si hanno blocchi di sistema.
 
----
----
 
Chiunque volesse contribuire a questa guida � benvenuto (soprattutto e a maggior ragione se ho detto cose '''poco esatte''').
 
----
 
Autore: [[Utente:Superflieriam|Superflieriam]]
[[Categoria:Laptop]]

Versione attuale delle 14:22, 2 apr 2015

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Uno dei primi passi da affrontare subito dopo l'installazione della nostra Debian dovrebbe essere quello di accertarsi quali sono i servizi e i demoni che vengono lanciati dal sistema. Questa operazione permette un controllo migliore della sicurezza della nostra macchina ed una minore esposizione a rischi legati ad intrusioni.

In questa breve guida vedremo come controllare i servizi attivi, come eliminare quelli non necessari e come rendere più sicuri quelli che intendiamo utilizzare.

Buona lettura & happy Debian!

Concetti di base

Servizi & Demoni

In un sistema operativo si definisce "servizio" (o anche "demone") un processo in background che gira autonomamente, senza intervento da parte dell'utente, o comunque con una interazione ridotta al minimo. Un esempio di servizio è il server web Apache: il server viene controllato dal demone "httpd" che gira in background, resta in ascolto sulla porta indicata e serve le pagine richieste.

Strumenti

GNU/Linux fornisce una nutrita schiera di programmi che ci permettono di interagire con i servizi attivi sulla nostra macchina. Di seguito riporto quelli più usati nell'amministrazione di un sistema Debian.

netstat

Netstat è uno dei programmi più utili ed utilizzati: permette di elencare tutta una serie di informazioni utili (socket aperti, routing tables, processi, ecc...). Per il nostro scopo utilizzeremo netstat per ottenere un elenco di tutte le connessioni di rete aperte sulla nostra macchina. Ottenere queste informazioni è il primo passo per conoscere nel dettaglio cosa succede all'interno del nostro sistema operativo.

Ora cerchiamo tutte le connessioni di rete in ascolto (stato LISTEN) sul nostro sistema.

# netstat -l |grep tcp
tcp        0      0 *:netbios-ssn           *:*                     LISTEN
tcp        0      0 *:5900                  *:*                     LISTEN
tcp        0      0 *:www                   *:*                     LISTEN
tcp        0      0 *:sieve                 *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost.localdom:8118 *:*                     LISTEN
tcp        0      0 *:ipp                   *:*                     LISTEN
tcp        0      0 localhost.localdom:smtp *:*                     LISTEN
tcp        0      0 *:microsoft-ds          *:*                     LISTEN

Ho scelto di limitare l'output alle sole connessioni in attesa di connessione. Potete anche provare ad utilizzare i comandi netstat -a, netstat -l, netstat -l |grep tcp, ecc.

Le colonne da prendere in esame sono (in questo esempio) la terza e la quarta. La terza colonna riporta l'accoppiata indirizzo+porta su cui è in ascolto il servizio.

Se osserviamo la prima linea dell'output, la terza colonna indica come coppia indirizzo+porta il testo *:netbios-ssn: questo significa che è attivo un servizio in ascolto per qualsiasi (*) indirizzo di rete configurato sulla macchina e che questo servizio è associato alla porta netbios-ssn.

Nelle altre righe possiamo notare che, nella colonna degli indirizzi, oltre al * (che indica qualsiasi indirizzo) compare anche localhost.localdomain. Netstat tenta di risolvere gli indirizzi IP e reperisce questo hostname dal file /etc/hosts, per cui localhost.localdomain corrisponde (nel mio esempio) all'indirizzo dell'interfaccia di loopback (127.0.0.1), come possiamo verificare con un semplice:

$ cat /etc/hosts |grep localhost.localdomain
127.0.0.1 localhost.localdomain localhost debby

È interessante notare come per alcune porte venga riportato un valore numerico, mentre per altre un valore alfanumerico.

Valore numerico:

tcp        0      0 *:5900                  *:*                     LISTEN

Valore alfanumerico:

tcp        0      0 *:netbios-ssn           *:*                     LISTEN

Questo comportamento di netstat è presto spiegato: quando il programma rileva un servizio in ascolto su una porta (ad esempio la porta 5900), cerca una corrispondenza con la stessa all'interno del file /etc/services.

Il file /etc/services è un file testuale che associa un numero di porta numerico alla descrizione alfanumerica del servizio associato alla stessa.

Se vogliamo vedere a quale porta corrisponda il dato netbios-ssn dell'esempio precedente, è sufficiente cercarlo all'interno del file /etc/services:

$ cat /etc/services |grep netbios-ssn
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp

Nel nostro esempio, dato che la porta era di tipo TCP, il valore cercato è il primo ottenuto.

Agendo sul file /etc/services possiamo quindi assegnare un valore descrittivo alle porte riportate solo con il valore numerico. Ad esempio tornando alla porta 5900, probabilmente vorremo associarla al servizio ad essa associata (vnc).

Sarà quindi sufficiente editare il file /etc/services ed aggiungere la linea:

vnc-server      5900/tcp        vnc-server      # TightVNC Server

A questo punto avremo realizzato l'associazione porta/descrizione:

# netstat -l |grep tcp
[...]
tcp        0      0 *:vnc-server            *:*                     LISTEN
[...]

Per quanto riguarda la quarta colonna, nell'esempio precedente possiamo vedere che il valore è identico per tutti i servizi e cioè *:*. Questo significa che il servizio è pronto a ricevere connessioni da qualsiasi indirizzo IP e da qualsiasi porta ad esso associata.

Notiamo a questo punto che alcuni dei servizi avviati sono in ascolto su qualsiasi indirizzo IP configurato sulla nostra macchina (*), mentre alcuni sono legati (si dice anche binding) all'indirizzo localhost.localdomain che abbiamo visto prima corrispondere all'indirizzo di loopback (127.0.0.1).

Quando un servizio è in ascolto unicamente sull'interfaccia di loopback significa che sarà raggiungibile unicamente attraverso quell'interfaccia. Questo ci garantisce che l'unico host in grado di contattare il servizio è la stessa macchina che lo ha in esecuzione.

Nell'esempio di prima, i servizi raggiungibili unicamente dall'interfaccia di loopback sono smtp e 8118. Come impareremo a verificare più tardi, si tratta rispettivamente del server di posta exim e del proxy privoxy.

lsof

Se con netstat siamo in grado di monitorare quali servizi sono in ascolto sulla nostra macchina, è anche indispensabile sapere quale programma abbia lanciato e controlli ogni singolo servizio.

Una caratteristica peculiare dei sistemi operativi derivati da Unix (tra i quali appunto GNU/Linux) è che qualsiasi elemento del sistema viene visto come se fosse un file. Abbiamo file veri e propri (ad es.: pippo.txt), abbiamo dispositivi hardware (si trovano in /dev e sono rappresentati da file veri e propri) ed abbiamo le connessioni di rete (anche queste sono veri e propri file).

Approfittando di questa caratteristica di GNU/Linux, possiamo investigare in maniera approfondita sui nostri servizi: se per il sistema operativo si tratta di file allora possiamo sapere chi li ha creati e chi li ha aperti.

Lo strumento principe per questo scopo è lsof. Come per la maggior parte dei comandi GNU, lsof è una abbreviazione della descrizione del comando: lsof = LS Open Files, cioè LiSt Open Files (elenca i file aperti).

Dato che le connessioni di rete sono rappresentate da veri e propri file, possiamo usare lsof per ottenere informazioni su di esse.

Poniamo il caso di voler ottenere informazioni sul servizio:

tcp        0      0 *:netbios-ssn           *:*                     LISTEN

Sarà sufficiente utilizzare lsof:

# lsof -i |grep netbios-ssn
smbd      4089        root   21u  IPv4   8082       TCP *:netbios-ssn (LISTEN)

In questo modo possiamo vedere che il servizio in ascolto sulla porta associata a netbios-ssn (la porta 139) è controllato dal programma smbd.

Allo stesso modo possiamo fare con www e smtp, ecc...

# lsof -i |grep www
apache    4342        root   16u  IPv4   8423       TCP *:www (LISTEN)
apache    4349    www-data   16u  IPv4   8423       TCP *:www (LISTEN)

# lsof -i |grep smtp
exim4     3901 Debian-exim    3u  IPv4   7625       TCP localhost.localdomain:smtp (LISTEN)

Apt System

Ora che sappiamo quale programma controlla un determinato servizio, abbiamo la possibilità di risalire a quale pacchetto Debian lo contiene per - eventualmente - rimuoverlo, oppure ottenere versioni più aggiornate, ricompilarlo con patch specifiche, ecc.

Il sistema più semplice ed allo stesso più potente per individuare quale pacchetto Debian contiene un file, consiste nell'utilizzare il programma apt-file. Per l' installazione e l' utilizzo di apt-file, vi rimando all'ottima guida Apt-file: ricerca all'interno dei pacchetti, scritta da MaXeR.

Nel contesto a noi necessario, utilizzeremo la funzione di ricerca di apt-file per risalire a quale pacchetto contiene il programma che lancia un particolare demone.

Continuiamo ad utilizzare come esempio il servizio in ascolto sulla porta netbios-ssn. Per adesso siamo riusciti a risalire al fatto che il servizio netbios-ssn corrisponde alla porta 139 e che è controllato da smbd.

Ora vedremo cosa sia smbd. Prima di tutto verifichiamo quale script o programma si preoccupa di lanciare smbd

# lsof |grep smbd |grep txt
smbd      4089        root  txt       REG        3,3  2805852      34840 /usr/sbin/smbd
smbd      4094        root  txt       REG        3,3  2805852      34840 /usr/sbin/smbd


Ora vediamo quale pacchetto contiene /usr/sbin/smbd:

# apt-file search /usr/sbin/smbd
samba: usr/sbin/smbd
samba-dbg: usr/lib/debug/usr/sbin/smbd

Controlliamo quale di essi sia presente nel nostro sistema:

# dpkg -l "samba*"
Desiderato=sconosciUto/Installato/Rimosso/P:eliminato/H:bloccato
| Stato=Non/Installato/file Config./U:spacchett./conf. Fallita/H:inst.parzial.
|/ Err?=(nessuno)/H:bloc./necess.Reinst./X=entrambi (Stato,Err: maiusc.=grave)
||/ Nome           Versione       Descrizione
+++-==============-==============-============================================
ii  samba          3.0.14a-6      a LanManager-like file and printer server fo
un  samba-client   <non definita> (descrizione non disponibile)
ii  samba-common   3.0.14a-6      Samba common files used by both the server a
un  samba-doc      <non definita> (descrizione non disponibile)




Guida scritta da: Keltik 05:26, Giu 23, 2005 (EDT) Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized