Académique Documents
Professionnel Documents
Culture Documents
Distribuies LINUX
O ncleo (kernel) do sistema operativo LINUX implementa as funcionalidades bsicas mais importantes, tais com gesto de dispositivos, processos e memria e interage directamente com o HARDWARE. Pode-se dizer que o ncleo o sistema operativo. O ncleo LINUX est em permanente desenvolvimento como cdigo aberto, e gratuito. O ncleo fornece acima de tudo uma plataforma estvel para que o SOFTWARE de nvel mais elevado possa funcionar. SOFTWARE Para se poder tirar partido das capacidades do ncleo Ncleo LINUX necessrio recorrer a um conjunto extenso de programas HARDWARE auxiliares que permitem obter um sistema funcional. Alguns destes programas auxiliares tm funes criticas de arranque, como por exemplo carregar o ncleo para a memria e passar-lhe o controlo. Ou at ajudar no processo de instalao do sistema operativo na mquina. Ao conjunto NCLEO + PROGRAMAS d-se o nome Distribuio, as distribuies no so necessariamente grtis.
2
O aspecto que coloca mais problemas a diviso dos discos em parties, depois de concluda a instalao inicial ser muito difcil de alterar.
A maioria dos discos (no os CD/DVD e outros discos mveis) est dividida em parties. Trata-se de uma diviso lgica do disco que est definida numa zona inicial do disco (MBR) conhecida por tabela de parties. Cada partio existente num disco independente das restantes, podendo cada uma conter tipos de dados (formataes) totalmente diferentes, eventualmente associadas a sistemas operativos diferentes. Entre outras informaes a tabela de parties contm associado a cada partio um identificador do formato da mesma. As parties existentes num disco so identificadas por nmeros crescentes desde 1. Exemplo: /dev/hdc2 = 2 partio do disco master do controlador IDE2.
4
Id 83 5 82 83 83 83 83
Id 83 83 83 5 83 82 83
Uma partio uma zona contigua de um disco, cujos limites (incio e fim) esto definidos na tabela de parties. A tabela de parties associa a cada partio um identificador do formato do sistema de ficheiros que l se encontra.
6
Aps a montagem, o sistema operativo redirecciona para a partio montada, todos os acessos ao directrio vazio.
/etc /mnt/cdrom1 / (raiz) /dev/sda1 dev/sda1 /usr /mnt /usr/local /dev/hda2 dev/hda2 Montagem /dev/hdb dev/
11
13
15
16
17
18
-bash-3.00$ cat /etc/group root:x:0: bin:x:1: nogroup:x:65534: sshd:x:77: users:x:100: inf:x:102: profs:x:98: dom_users:x:1003:artur,i977805
20
libnss_ldap.so libnss_dns.so
libnss_nis.so libnss_winbind.so
Servidor MySQL
Servidores DNS
libnss_mysql.so libnss_files.so
/etc
NSS
Consultas
Sistema operativo
22
No exemplo as definies de utilizador sero pesquisadas pela seguinte ordem: 1 Ficheiros locais (/etc/passwd) 3 Servidores Windows 2 Servidores LDAP 4 Servidores NIS
Devido ao seu carcter secreto, o manuseamento das passwords dos utilizadores tem de ser tratado com cuidados especiais. Como as passwords so normalmente armazenadas juntamente com as restantes definies dos utilizadores, a diversificao dos tipos de repositrio suportado veio complicar a autenticao. Como resposta a estes e outros desafios foi criado um servio destinado exclusivamente aos procedimentos de autenticao, os Pluggable Authentication Modules (PAM).
24
25
PAM - Configurao
Os ficheiros de configurao do sistema PAM so normalmente guardados na pasta /etc/pam.d/, para cada servio pode existir um ficheiro de configurao diferente, quando uma aplicao pretende usar o PAM, necessita de fornecer um identificador do tipo de autenticao que corresponde a um nome de um ficheiro de configurao. Exemplo com as 4 cadeias:
Autenticao Verificao de validade/acesso Alterao da password Gesto da sesso
-bash-3.00$ cat /etc/pam.d/system-auth #%PAM-1.0 auth auth auth auth account account account password password password password session session session required sufficient sufficient required sufficient sufficient required required sufficient sufficient required optional required required pam_env.so pam_unix.so likeauth nullok pam_ldap.so use_first_pass pam_deny.so pam_unix.so pam_ldap.so use_first_pass pam_deny.so pam_cracklib.so retry=3 minlen=2 dcredit=0 ucredit=0
pam_unix.so nullok use_authtok md5 shadow pam_ldap.so pam_deny.so pam_mkhomedir.so skel=/etc/skel/ umask=0022 pam_limits.so pam_unix.so
27
Pode ser usado em qualquer das cadeias, implementa as funcionalidades tradicionais do UNIX prPAM. Pode ser usado em qualquer das cadeias, devolve sempre falha. Usado para testes ou para finalizar uma cadeia. Mdulo auth e session que permite manipular as variveis de ambiente segundo um ficheiro de configurao, geralmente /etc/security/pam_env.conf. Mdulo auth e account que faz a verificao de mail no inicio da sesso. Modulo de interface com repositrios LDAP, suporta as funcionalidades auth, account e password. Mdulo auth que permite apresentar uma mensagem antes da autenticao do utilizador. Mdulo session que apresenta uma mensagem aps a entrada no sistema (message of the day). Mdulo auth que devolve sempre sucesso para o administrador e devolve sucesso para os outros utilizadores, a menos que exista o ficheiro /etc/nologin. Pode ser usado em qualquer das cadeias, permite devolver sucesso ou falha em funo de uma lista residente num ficheiro, por exemplo com uma lista de utilizadores autorizados. Mdulo password que verifica a solidez da nova password que o utilizador est a digitar, alm de verificar a no dicionrio do sistema, pode tambm fazer algumas verificaes adicionais.
pam_deny
pam_listfile
pam_cracklib
28
Depois de copiado o contedo o proprietrio/grupo alterado (comando chown) e as permisses podem ser ajustadas com o comando chmod.
29
As permisses podem ser facilmente alteradas com o comando chmod, mas no que diz respeito aos novos ficheiros e pastas criados depois disso, as permisses com que so criadas so determinadas pela UMASK. Trata-se de uma mscara de negao de bits de permisso, ou seja indica os bits que devem ser desactivados.
Por exemplo a UMASK 0022, que bastante usada, indica que os bits de valor 2 (permisso de escrita) devem ser desactivados para o grupo e para outros.
O valor da UMASK pode ser alterado com o comando umask, mas no se mantm de umas sesses para as outras, ter de ser definido no inicio de cada sesso.
30
Variveis de ambiente
As variveis de ambiente so um conjunto de dados associado a cada processo que pode ser usado para diversas finalidades, uma das mais comuns guardar informao sobre o sistema e contexto em que o processo/aplicao se encontra.
HOME HOSTNAME LANG PATH MANPATH USER TERM LD_LIBRARY_PATH LANGUAGE
As variveis de ambiente podem ser marcadas para exportao (herana pelos processos filhos). Devido exportao acabam por afectar todos os processos do sistema, muitas vezes com grande impacto no seu funcionamento. A maioria dos processos e aplicaes em funcionamento num sistema operativo LINUX so desencadeados a partir de uma SHELL, tipicamente /bin/sh (na realidade /bin/bash). O arranque da SHELL por isso a altura apropriada para ajustar as variveis de ambiente, isso consegue-se usando os ficheiros de arranque da SHELL.
31
32
33
35
36
37
O comando repquota permite ao administrador obter o estado geral das cotas no sistema de ficheiros.
38
Interfaces de rede
Designa-se por interface de rede o conjunto de componentes de hardware que permitem a ligao fsica de um computador a um dado tipo de infra-estrutura de rede. Relativamente ao MR-OSI, a interface de rede implementa funcionalidades do nvel 1 e nvel 2.
Quando o ncleo LINUX detecta uma interface de rede associa-lhe um identificador apropriado. Uma vez que podem existir vrios dispositivos do mesmo tipo, os identificadores tm um sufixo numrico que comea em zero. Por exemplo as interfaces do tipo ETHERNET sero identificadas por eth0; eth1; eth2; , na ordem em que so detectadas. Para que o ncleo possa detectar uma interface de rede (ou qualquer hardware) necessita que o respectivo suporte (driver) esteja includo no ncleo, ou seja adicionado atravs de um mdulo.
39
O campo <AF> (Address Family) serve para identificar a pilha/famlia de protocolos o valor por omisso inet que representa o IPv4. Outros valores suportados so por exemplo o inet6 e o ipx. A forma e a aplicao de muitos dos restantes parmetros depende de AF.
40
41
Esta informao no suficiente para um funcionamento normal de um sistema em rede, mas sob o ponto de vista de informao associada a uma interface de rede a necessria.
-bash-3.00$ /sbin/ifconfig eth0 192.168.111.150 netmask 255.255.255.0 -bash-3.00$ /sbin/route add -net 192.168.111.0 netmask 255.255.255.0 eth0 -bash-3.00$ /sbin/ifconfig eth0 eth0 Link encap:Ethernet Endereo de HW 00:0C:29:FE:E7:F8 inet end.: 192.168.111.150 Bcast:192.168.111.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1 RX packets:243766872 errors:0 dropped:0 overruns:0 frame:0 TX packets:249142107 errors:0 dropped:0 overruns:0 carrier:0 colises:0 txqueuelen:1000 RX bytes:3379540387 (3.1 GiB) TX bytes:1843450578 (1.7 GiB)
42
Comando ip
O comando ip junta as funcionalidades de vrios comandos relacionados com a administrao de rede, de entre eles o comando ifconfig e o comando route. Acrescenta ainda vrias outras funcionalidades bastante importantes.
/sbin/ip [ ... ] [ link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor | xfrm ] ...
# /sbin/ip route show 172.16.16.11 dev ppp9 proto kernel scope link src 172.16.16.1 172.16.16.10 dev ppp8 proto kernel scope link src 172.16.16.1 193.136.62.0/24 dev eth0 proto kernel scope link src 193.136.62.11 192.168.62.0/24 dev eth0.3 proto kernel scope link src 192.168.62.11 172.18.0.0/16 dev eth1.7 proto kernel scope link src 172.18.0.1 default via 193.136.62.1 dev eth0
43
O Router 1 ser o primeiro n do caminho por omisso para as redes A e B. O Router 2 ser o primeiro n do caminho por omisso para as redes D e C.
44
45
Suporte de VLAN
Ao contrrio de um alias que definido no nvel de rede (Ex.: IPv4), uma VLAN definida no nvel de ligao lgica, por isso existe uma separao real tal como se tratassem de meios fsicos separados. Para se conseguir esta separao a norma IEEE 802.1q define a forma de etiquetar as tramas de nvel 2 para que no se misturem entre si. O identificador de VLAN um nmero de 0 a 4095, os equipamentos de rede devem tratar estas tramas etiquetadas (labeled) de tal forma que no se misturem identificadores de valores diferentes. O comando vconfig usado para criar uma VLAN numa interface fsica existente:
[root@server]# /sbin/vconfig add eth0 9 VLANID
Aps a execuo do comando acima torna-se vlida a interface eth0.9, todas as tramas emitidas atravs de ela transportam a etiqueta IEEE 802.1q com o valor 9. De igual modo, nesta interface apenas sero recebidas tramas com etiqueta IEEE 802.1q contendo o valor 9. Para remover uma VLAN usa-se o mesmo comando:
# /sbin/vconfig rem eth0.9
46
Servidor DHCP
O servidor DHCP (dhcpd) recebe pedidos de clientes enviados sob a forma de datagramas UDP que inicialmente so emitidos para o endereo 255.255.255.255. A misso do servidor observar o endereo fsico (MAC) de origem responder com todos os dados necessrios para o cliente poder configurar a rede. Embora o servidor DHCP possa ser configurado com endereos MAC estticos, torna-se particularmente til o facto de poder gerir autonomamente uma gama de endereos IP. Para que a atribuio dinmica de endereos seja vivel tem de ser limitada no tempo, daqui surge o conceito de aluguer (lease) que no existia no BOOTP onde as atribuies eram vitalcias. Alm do endereo IP, o servidor envia muito mais informao ao cliente, tais como nome do domnio e endereos dos servidores de nomes, essa informao prconfigurada no servidor, normalmente no ficheiro /etc/dhcpd.conf.
48
49
50
Cada tabela tm determinadas cadeias de regras pr definidas, mas outras podem ser criadas. Para as duas principais tabelas: filter : INPUT; FORWARD e OUTPUT. nat : PREROUTING; OUTPUT; POSTROUTING
Em cada cadeia pode ser definida uma sequncia de regras com uma numerao implcita com incio no valor 1. A numerao importante para algumas operaes como a eliminao de regras ou insero de regras.
51
Nesse caso as regras da cadeia devero ter como resultado ACCEPT. Esta metodologia a mais indicada sob o ponto de vista de segurana, mas tambm mais trabalhosa.
52
IPTABLES - regras
Existe uma grande variedade de critrios que se podem usar, algumas mais comuns so: -p [!] protocolo
-s [!] endereo[/mascara] -d [!] endereo[/mascara] -i [!] interface -o [!] interface --dport [!] porta1[:porta2] --sport [!] porta1[:porta2]
No contexto de cada regra definido o que fazer em caso de um pacote obedecer regra: -j COMPORTAMENTO
-g CADEIA
Exemplo:
iptables P FORWARD DROP iptables A FORWARD i eth0 s 195.20.10.23/32 o eth2 p tcp j ACCEPT iptables A FORWARD i eth0 d 193.136.0.0/16 p tcp dport 8080:8081 j ACCEPT
53
Scripts
Designa-se por script um pequeno programa interpretado contido num simples ficheiro de texto directamente executvel. Em outros sistemas no UNIX a parte final do nome de um ficheiro (extenso) usada para indicar o seu contedo, no caso particular de um script a extenso poder indicar a linguagem usada e por isso qual o interpretador a usar.
Em LINUX/UNIX usa-se o contedo dos primeiros bytes do ficheiro para o classificar (magic number). Independentemente do nome/extenso do ficheiro. No caso de ficheiros de texto contendo programas interpretados (scripts) a primeira linha identifica o interpretador que deve ser usado, alm disso sendo um script, dever ter a permisso de execuo activa.
54
Shebang
O shebang (de hash+bang) a sequncia #! na primeira coluna da primeira linha dos scripts UNIX. Os caracteres #!, ou seja 0x2321 so o magic number que identifica o ficheiro como sendo um script. A parte restante da linha do shebang serve para identificar o programa interpretador que deve ser usado para executar o script contido no ficheiro.
#!/usr/bin/perl --- --- -- -#!/bin/sh --- -#!/usr/bin/php --- --- -- --- -- -#!/bin/bash --- --- -- --
Como nas linguagens interpretadas usadas as linhas comeadas por # so consideradas comentrios, o shebang no interfere com o script propriamente dito.
55
Shell Scripts
O objectivo dos programas classificados como shell fornecer um meio de interaco com o sistema atravs de comandos. Os comandos podem agrupados em sequncia num script constituindo assim um verdadeiro programa interpretado, para se tirar todo o proveito dos shell scripts so disponibilizados comandos de controlo tais como a deciso e os ciclos de repetio. Os shell scripts so uma ferramenta importante para o administrador pois permitem automatizar muitas tarefas e esto sempre acessveis, basta um editor de texto. Muitos preferem usar a CSHELL devido semelhana da sua sintaxe com a linguagem de programao C.
Uma vez que nos sistemas LINUX actuais tanto a shell tradicional (sh/bash) como a C shell (csh/tcsh) esto sempre disponveis a opo por uma ou outra uma escolha quase pessoal. Normalmente a opo recai sobre a shell que usa diariamente em modo interactivo. Outras linguagens como por exemplo PERL e PYTON possuem potencialidades muito maiores, com bibliotecas bastante extensas, mas exigem a familiarizao do administrador.
56
57
Especificao de data/hora
Utilizador
SPC
Comando e argumentos
Minuto 0 a 59
Hora 0 a 23
Dia do ms 1 a 31
Ms 1 a 12
Os valores de data/hora podem ser especificados em intervalos ou por enumerao. O smbolo * representa o intervalo de todos os valores possveis para esse campo.
Os valores nmericos de dia da semana e ms podem ser substitudos por nomes. Nos dias da semana o valor 0 e o valor 7 so duas alternativas para especificar Domingo.
SPC
SPC
SPC
SPC
58
As gamas de valores podem ser associadas a um valor de passo na gama de valores, no exemplo acima */5 (0-59/5) nos minutos significa percorrer os minutos de 5 em 5, ou seja equivalente a 0,5,10,15,20,25,30,35,40,45,50,55.
O ficheiro /etc/crontab apenas pode ser usado pelo administrador, mas o servio crond tambm est acessvel aos outros utilizadores atravs de ficheiros de configurao normalmente guardados em /var/spool/cron/, estes devem ser manipulados indirectamente atravs do comando crontab e. O formato idntico ao do /etc/crontab, mas o nome do utilizador (6 campo) omitido pois est implcito. O acesso dos utilizadores ao servio CRON pode ser controlado usando os ficheiros /etc/cron.allow e /etc/cron.deny.
59
Segurana em rede
O ambiente de rede, em especial em redes WAN, caracteriza-se pela grande dificuldade em controlar o acesso aos dados que nela circulam. A nica alternativa recorrer a algoritmos de cifragem. A abordagem tradicional (simtrica) exige que os dois intervenientes possuam uma chave secreta (pr-partilhada). A criptografia de chave pblica, mais recente, usa chaves diferentes para cifrar e decifrar e com isso torna a distribuio de chaves muito mais simples.
Dados Chave secreta Dados CIFRAR Dados cifrados DECIFRAR Dados Chave secreta Dados
A
DECIFRAR Dados cifrados
B
CIFRAR
Dados
Chave pblica de B
CIFRAR
Dados cifrados
DECIFRAR
Dados
Chave privada de B
A
Chave privada de A
B
Dados cifrados CIFRAR
Chave pblica de A
Dados
DECIFRAR
Dados
60
Autenticao em rede
Antes de haver preocupaes com a confidencialidade dos dados (recorrendo criptografia), temos de nos assegurar que estamos a transaccionar dados com a entidade correcta. Essa a misso da autenticao. Geralmente a autenticao est associada cifragem Criptografia simtrica: a autenticao est assegurada partida pois apenas duas entidades possuem a chave secreta. Note-se que este facto apenas delega o problema da autenticao para a fase anterior de distribuio de chaves. Tipicamente a distribuio de chaves secretas recorre a um outro segredo pr-partilhado, como por exemplo a password do utilizador. Criptografia de chave pblica: a autenticao no est assegurada porque as chaves usadas para cifrar so pblicas. Se a chave pblica, qualquer um a pode usar. No entanto, uma vez que a chave privada conhecida por apenas uma entidade, esse facto pode ser usado para garantir a autenticao. Basta garantir a autenticidade das chaves pblicas pois apenas o detentor da respectiva chave privada poder decifrar.
61
Os clientes aceitam o certificado com base na confiana sobre o emissor do certificado, data de validade do mesmo e identificao do proprietrio da chave.
62
63
Certificados auto-assinados
Um certificado de chave pblica auto-assinado , como o nome indica, emitido pelo prprio proprietrio da chave pblica. Como tal tem um valor reduzido sob o ponto de vista de autenticao. Este tipo de certificado exige normalmente uma instalao manual, sendo um procedimento necessrio para instalar um certificado de uma entidade de raiz (ROOT CA). Como o nome indica, as entidades certificadoras de raiz so o inicio de uma rvore de entidades certificadoras de confiana. O certificado da ROOT CA auto-assinado por isso a sua instalao tem de ser realizada manualmente. Depois de instalar/aceitar um certificado de raiz, qualquer certificado emitido por qualquer elemento da rvore ser aceite sem interveno do utilizador.
64
openssl x509 processamento de certificados, por exemplo usado pela entidade certificadora para produzir o certificado a partir de um pedido de certificado. O comando openssl pode usar o ficheiro de configurao openssl.cnf, algumas operaes, nomeadamente de gesto de certificados como autoridade certificadora exigem o uso deste ficheiro de configurao.
65
Servidor
Servios remotos syslogd remotos
( ...)
Ficheiros locais
syslogd remotos
66
67
syslogd configurao
A configurao do servio syslogd (/etc/syslog.conf) resume-se a especificar regras para o par {facility}.{severity} e associar essas regras a aces que definem o que fazer com as mensagens. Cada linha do ficheiro constituda por dois campos separados por um ou mais espaos: uma mascara {facility}.{severity} e uma aco. Exemplo:
kern.* mail.*;mail.!=info *.alert mail.=info mail,news.=info kern.info;kern.!err /var/adm/kernel /var/adm/mail root,administrator @server2.domain.pt * |/root/kern-info
No caso de existirem vrias regras (linhas) aplicveis a uma dada mensagem, todas elas sero aplicadas em paralelo a essa mensagem.
68
Ou enviando apenas uma parte das mensagens, realizando assim uma filtragem local em cada mquina e enviando para o registo central apenas as mais importantes.
69
Na maioria dos casos as mensagens que o syslog recebe acabam por ser acrescentadas a um ficheiro de texto identificado no /etc/syslog.conf. Na maioria dos sistema Linux adopta-se o directrio /var/log/ para colocao destes ficheiros. Tratando-se de ficheiros de texto, a sua consulta directa, recorrendo-se a um vasto conjunto de comandos disponveis para esse efeito, alguns dos mais importantes so:
71
X
Sada do utilizador (LOGOUT)
ac
Exemplo de resultado do comando last: [root@server ~]# last -5 andre pts/0 beavis.dei.isep. Wed Nov 12 16:35 dei pts/0 beavis.dei.isep. Wed Nov 12 11:46 i090763 pts/4 srv3.dei.isep.ip Wed Nov 12 09:36 i080751 pts/3 srv3.dei.isep.ip Wed Nov 12 08:52 i040478 pts/2 srv2.dei.isep.ip Wed Nov 12 08:51 wtmp begins Sat Nov 1 12:59:40 2004
still logged in 14:12 (02:25) 09:54 (00:17) 10:02 (01:10) 10:03 (01:11)
72
Cpias incrementais
As cpias integrais de sistemas de ficheiros so operaes demoradas (dependendo do tamanho do sistema de ficheiros e do tipo de suporte para a cpia), depois de criada uma cpia integral, possvel recorrer a cpias incrementais. A cpia incremental consiste em registar as diferenas entre o estado actual do sistema de ficheiros e o estado que est registado na cpia integral ou incremental anterior. O ponto de partida sempre uma cpia integral.
Sistema de ficheiros Estado A Sistema de ficheiros Estado B Sistema de ficheiros Estado C
RESTORE Sistema de ficheiros Estado A Sistema de ficheiros Estado B Sistema de ficheiros Estado C
75
76
Cpias parciais
Uma cpia parcial abrange apenas uma parte do sistema. Normalmente o objectivo salvaguardar dados referentes a um dado subsistema ou servio, tais como servidores Web, servidores de bases de dados, etc. A cpia parcial pode ser realizada em Unix com recurso ao comando tar, para esse efeito necessrio localizar todos os ficheiros e directrios associados ao subsistema ou servio em causa.
Exemplo de produo de uma cpia de segurana comprimida para uma instalao particular do servidor Apache: tar -cvzf apache2.tar.gz /etc/apache2/* /var/www/cgi-bin /var/www/htdocs \ /etc/sysconfig/apache2 /etc/init.d/apache2
Muitos servios dispe de comandos prprios para realizar cpias de salvaguarda, por exemplo o servio MySQL dispe do comando mysqldump. Nestes casos claramente vantajoso usar estes comandos especialmente concebidos para o efeito.
77
Software de cpia
Os comandos Unix mencionados (dump/restore e tar) em combinao com o servio crond e algumas linhas de programao em shell permitem implementar sistemas de cpia de arquivo e segurana totalmente eficazes. Existem contudo programas mais fceis de utilizar, muitas vezes estes programas recorrem internamente aos comandos dump/restore e tar. Um dos exemplos open source mais divulgados o Amanda, trata-se de uma arquitectura cliente/servidor em rede que consiste num servidor onde so criadas as cpias de arquivo/segurana e de clientes que so usados nas mquinas cujos dados se pretende copiar:
Server 1 (Amanda client) Backup Server (Amanda server) (Amanda client) Server 3 (Amanda client)
79