Certificat | LPIC-1 |
Examen: | 102 (torneu a la resta de temes) |
Fitxers: | LPI110.2_.pdf (LPI110.2_.odp) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/110.2 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
110.2. Establir la seguretat d'una màquina | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement: |
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 110.2. Establir la seguretat d'una màquina |
Consulteu shadow suite
TCP Wrapper ("embolcall TCP") és un sistema de control d'accés per xarxa basat en llistes de control d'accés o ACL (Acces Control List) utilitzat en sistemes Unix-like com Linux. S'utilitza per filtrar l'accés a serveis de xarxa segons l'adreça IP, noms de terminal o consultes ident.
S'implementa utilitzant una llibrearia anomenada libwrap. Inicialment només aquells serveis que utilitzaven el super servidor inet (o xinet) i eren embolcallats amb el programa tcpd, d'aquí prové l'origen del nom. Avui en dia (--acacha 04:37, 11 maig 2010 (UTC)), la majoria de serveis poden utilitzar directament TCP Wrappers.
Un avantatge de TCP wrappers és que no cal tornar a iniciar el servei per aplicar els canvis.
Tot i que va ser escrit per filtrar paquets del protocols TCP i UDP, també existeixen exemples d'ús per a ICMP.
Els fitxers principals de configuració són:
Cal tenir en compte:
El format de les normes dels dos fitxers és igual i és el següent:
<daemon list>: <client list> [: <option>: <option>: ...]
On:
Vegem un exemple bàsic:
vsftpd : .example.com
En aquest cas es filtren els accessos al servidor FTP (vsftpd) des de qualsevol màquina del domini example.com. Si l'exemple està al fitxer hosts.allow es permetra l'accés i si està a hosts.deny es denegarà l'accés.
Un altre exemple:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
Primer vegem com és pot fer un exemple multilinia amb la contrabarra. En aquest cas si hi ha una connexió al servidor SSH (sshd) s'executarà un ordre i es denegarà la connexió (fins i tot si es posa a hosts.allow)
Comodins:
Permet que TCP wrappers indica grups de dimonis o màquines. Possibles comodins:
Patrons
Es poden utilitzar a la llista de clients per especificar de forma més precisa groups de màquines clients:
Recursos:
La majoria de distribucions modernes utilitzen SystemV i els seus scripts com a sistema per gestionar el serveis /dimonis de la màquina. Podeu utilitzar ordres com nmap, netstat o lsof per detectar quins serveis s'estan executant a la vostra màquina i després aturar-los amb:
$ sudo /etc/init.d/nom_servei stop
Cal tenir en compte que així només atureu el servei de forma temporal, un cop es torni a iniciar la màquina el servei es tornarà a activar (suposant que és un servei que s'activa durant l'arrancada del sistema). Per desactivar el servei de forma permanent cal esborrar tots els enllaços de les carpetes /etc/rcx.d que fan referència al servei. La comanda update-rc.d facilita aquest procés. Per exemple:
$ sudo update-rc.d -f samba remove Removing any system startup links for /etc/init.d/samba ... /etc/rc0.d/K19samba /etc/rc1.d/K19samba /etc/rc2.d/S20samba /etc/rc3.d/S20samba /etc/rc4.d/S20samba /etc/rc5.d/S20samba /etc/rc6.d/K19samba
Es pot tornar a activar el servei amb:
$ sudo update-rc.d samba defaults Adding system startup for /etc/init.d/samba ... /etc/rc0.d/K20samba -> ../init.d/samba /etc/rc1.d/K20samba -> ../init.d/samba /etc/rc6.d/K20samba -> ../init.d/samba /etc/rc2.d/S20samba -> ../init.d/samba /etc/rc3.d/S20samba -> ../init.d/samba /etc/rc4.d/S20samba -> ../init.d/samba /etc/rc5.d/S20samba -> ../init.d/samba
Comanda que crea enllaços al servei samba en els nivells per defecte. Els nivell per defecte estan indicats al propi fitxer d'inicialització:
$ cat /etc/init.d/samba | more # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6
També podeu utilitzar chkconfig per mostrar la llista de serveis en execució:
$ sudo chkconfig --list | more acpi-support 0:off 1:off 2:on 3:on 4:on 5:on 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off alsa-utils 0:off 1:off 2:off 3:off 4:off 5:off 6:off anacron 0:off 1:off 2:off 3:off 4:off 5:off 6:off apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off apparmor 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on apport 0:off 1:off 2:off 3:off 4:off 5:off 6:off atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ...
Consulteu també:
El dimoni o servidor xinet (xinet daemon) és un superservidor utilitzat en molts sistemes operatius Unix-like. Les sigles provenen de eXtended InterNET Daemon.
És una versió millorada de inetd, el dimoni d'Internet (Internet daemon).
Xinetd suporta entre d'altres, ACLs de TCP Wrappers, millores en la capacitat de logging, i la possibilitat de tenir serveis disponibles segons un calendari, pot especificar límits en el nombre de serveis que el sistema pot executar i també disposa de mecanismes de defensa contra escànners de ports o eines similars.
Abans era molt utilitzat com a suport per a executar la majoria de serveis/dimonis del sistema. Actualment és força més comú que cada dimoni s'executi a si mateix i porti el control ell mateix.
Podeu instal·lar xinet amb:
$ sudo apt-get install xinetd
Els fitxers instal·lats són:
$ dpkg -L xinetd /. /etc /etc/xinetd.d /etc/xinetd.d/chargen /etc/xinetd.d/echo /etc/xinetd.d/discard /etc/xinetd.d/daytime /etc/xinetd.d/time /etc/default /etc/default/xinetd /etc/init.d /etc/init.d/xinetd /etc/xinetd.conf /usr /usr/sbin /usr/sbin/xinetd /usr/sbin/itox /usr/sbin/xconv.pl /usr/share /usr/share/man /usr/share/man/man5 /usr/share/man/man5/xinetd.log.5.gz /usr/share/man/man5/xinetd.conf.5.gz /usr/share/man/man8 /usr/share/man/man8/xconv.pl.8.gz /usr/share/man/man8/xinetd.8.gz /usr/share/man/man8/itox.8.gz /usr/share/doc /usr/share/doc/xinetd /usr/share/doc/xinetd/NEWS.Debian.gz /usr/share/doc/xinetd/changelog.gz /usr/share/doc/xinetd/README.gz /usr/share/doc/xinetd/README.update-inetd /usr/share/doc/xinetd/xinetd.org-FAQ.html /usr/share/doc/xinetd/README.Debian /usr/share/doc/xinetd/copyright /usr/share/doc/xinetd/examples /usr/share/doc/xinetd/examples/sample.conf.gz /usr/share/doc/xinetd/changelog.Debian.gz
Podeu consultar el manual amb:
$ man xinetd
Els fitxers principals de configuració són:
Fixeu-vos que al instal·lar xinetd se us ha instal·lat per defecte la configuració de certs serveis:
/etc/xinetd.d/chargen /etc/xinetd.d/echo /etc/xinetd.d/discard /etc/xinetd.d/daytime /etc/xinetd.d/time
Per exemple podem consultar el fitxer de configuració del servei intern echo:
$ cat /etc/xinetd.d/echo # default: off # description: An xinetd internal service which echo's characters back to # clients. # This is the tcp version. service echo { disable = yes type = INTERNAL id = echo-stream socket_type = stream protocol = tcp user = root wait = no } # This is the udp version. service echo { disable = yes type = INTERNAL id = echo-dgram socket_type = dgram protocol = udp user = root wait = yes }
Activeu el servei (canviant disable a no) i torneu a iniciar xinet:
$ sudo /etc/init.d/xinetd restart
El servei d'echo segons el fitxer /etc/services:
$ cat /etc/services | grep echo echo 7/tcp echo 7/udp
Utilitza el port 7.
El podeu provar amb telnet:
$ telnet localhost 7 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. hola hola
Recursos:
El dimoni o servidor inet (inet daemon) és un superservidor utilitzat en molts sistemes operatius Unix-like. Les sigles provenen de InterNET Daemon.
És una de les implementacions (basada en BSD) del dimoni inet. Es pot instal·lar amb:
$ sudo apt-get install openbsd-inetd
Us donarà un missatge de que no hi ha configurat cap servei i que per tant no executa cap servei.
Un cop instal·lat els fitxers instal·lats són:
$ dpkg -L openbsd-inetd /. /usr /usr/sbin /usr/sbin/inetd /usr/share /usr/share/man /usr/share/man/man5 /usr/share/man/man8 /usr/share/man/man8/inetd.8.gz /usr/share/doc /usr/share/doc/openbsd-inetd /usr/share/doc/openbsd-inetd/copyright /usr/share/doc/openbsd-inetd/changelog.gz /usr/share/doc/openbsd-inetd/changelog.Debian.gz /etc /etc/init.d /etc/init.d/openbsd-inetd /usr/share/man/man5/inetd.conf.5.gz
Podeu consultar el manual amb:
$ man inetd
Tot i que no apareix a la llista de fitxers instal·lats (això ens indica que és un fitxer que es genera de forma dinàmica durant la instal·lació del paquet), el fitxer de configuració principal és:
$ sudo joe /etc/inetd.conf
Inicialment el tindreu buit.
Ara podeu instal·lar un servei com per exemple un servidor de Telnet:
$ sudo apt-get install telnetd
Ara si consulteu el fitxer /etc/inetd.conf un altre cop:
$ sudo joe /etc/inetd.conf #<off># netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
Vegeu que s'ha afegiu una línia que control l'execució del servidor de telnet. El servidor de Telnet no té el seu propi script SystemV i per exemple heu d'aturar el servidor de telnet comentant la línia i executant:
$ sudo /etc/init.d/openbsd-inetd restart
Vegeu també l'article sobre Telnet.
Si es crea aquest fitxer, per exemple utilitzant l'ordre touch:
$ sudo touch /etc/nologin
Fixeu-vos que no cal que tingui cap mena de dades al seu interior. Ara no es podran iniciar noves sessions.
IMPORTANT: Teniu en compte que les sessions ja existents continuaran funcionant i entre elles la sessió gràfica i totes les noves sessions que creeu des de la sessió gràfica. Per comprovar l'efecte del fitxer /etc/nologin hauríeu de provar-ho des de una consola virtual, p. ex. Ctrl+Alt+F1
També es pot utilitzar l'ordre usermod per tal d'establir que certs usuaris no tinguin accés a l'interpret d'ordres, en sistemes de la família Red Hat s'utilitza:
$ sudo usermod -s /sbin/nologin tom
NOTA: En sistemes de la família Debian s'utilitza: /bin/false en comptes de /sbin/nologin (que de fet no existeix en alguns sistemes)
A l'exemple anterior establim com a interpret d'ordres el executable nologin per a l'usuari tom.
.IMPORTANT: Compte no us equivoqueu i establiu la bash del root a /bin/false ja que us deixaria el sistema inaccessible
El manual d'aquest fitxer el podeu consultar amb:
$ man 5 nologin
També existeix l'ordre nologin, segons el manual:
$ man nologin NOLOGIN(8) System Management Commands NOLOGIN(8) NAME nologin - politely refuse a login SYNOPSIS nologin
L'ordre la trobareu a:
$ whereis nologin nologin: /usr/sbin/nologin /usr/share/man/man8/nologin.8.gz /usr/share/man/man5/nologin.5.gz
I s'utilitza per establir una bash de no login (mostra un missatge indicant que no es té accés). També
Consulteu /etc/passwd.
Consulteu /etc/shadow.
Consulteu xinetd
Consulteu xinetd
Consulteu xinetd
Consulteu xinetd
Consulteu /etc/inittab
Consulteu TCP Wrappers.
Consulteu TCP Wrappers.