- Instalao de servidores LINUX - Administrao de Utilizadores - Administrao da rede 2 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. Ncleo LINUX HARDWARE SOFTWARE Para se poder tirar partido das capacidades do ncleo necessrio recorrer a um conjunto extenso de programas 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. 3 Instalao de distribuies LINUX A maioria das distribuies actuais dispe de programas de instalao assistida de nvel bastante elevado que protegem o utilizador de questes para as quais no sabe as respostas. A soluo de instalao assistida quase sem opes, tem a vantagem de trazer o LINUX para os utilizadores correntes, mas para os administradores pode ter inconvenientes. As decises que o programa de instalao toma autonomamente, sem perguntar, podem comprometer determinados objectivos especficos. Felizmente em muitos caso possvel optar por um modo perito (expert) no qual o programa de instalao tome menos decises e faz mais perguntas. Por outro lado a maioria das configuraes pode ser alterada aps a instalao inicial. O aspecto que coloca mais problemas a diviso dos discos em parties, depois de concluda a instalao inicial ser muito difcil de alterar. 4 Discos e parties em LINUX No sistema operativo LINUX a maioria dos recursos de HARDWARE so identificados por entradas especiais no directrio de sistema /dev. Os vrios discos existentes so identificados de acordo com o tipo de interface que utilizam. DISCOS IDE : /dev/hda /dev/hdb /dev/hdc /dev/hdd DISCOS SCSI ou SATA : /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde 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. 5 Tabela de parties exemplos fdisk (LINUX) HOST1# fdisk /dev/sda Command (m for help): p Disk /dev/sda: 73.4 GB, 73407868928 bytes 255 heads, 63 sectors/track, 8924 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 101 811251 83 Linux /dev/sda2 102 8924 70870747+ 5 Extended /dev/sda5 102 202 811251 82 Linux swap /dev/sda6 203 711 4088511 83 Linux /dev/sda7 712 4757 32499463+ 83 Linux /dev/sda8 4758 8797 32451268+ 83 Linux /dev/sda9 8798 8924 1020096 83 Linux HOST12# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 20.0 GB, 20003880960 bytes 255 heads, 63 sectors/track, 2432 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 778 6144862+ 83 Linux /dev/hda3 779 1415 5116702+ 83 Linux /dev/hda4 1416 2432 8169052+ 5 Extended /dev/hda5 1416 1925 4096543+ 83 Linux /dev/hda6 1926 1990 522081 82 Linux swap /dev/hda7 1991 2432 3550333+ 83 Linux 6 Tabela de parties exemplo Windows 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. 7 Formatao das parties A principal vantagem da existncia de parties que cada uma pode ser usada de forma totalmente independente. Cada partio pode ser usada pelos sistemas operativos para guardar dados, tipicamente organizados em directrios (pastas) e ficheiros. A forma como os dados so organizados e guardados conhecida por formato do sistema de ficheiros (file system). Existem muitos formatos de sistema de ficheiros. Na actualidade nos ambientes Windows da Microsoft usa-se o NTFS, embora ainda se use tambm FAT. No sistema operativo Linux os mais usados so o EXT2 e EXT3 O sistema de ficheiros guarda vria informao sobre os objectos, nomeadamente a sua localizao dentro da partio e atributos tais como o nome e ACL. Toda esta informao fica armazenada em estruturas guardadas na prpria partio, o processo de criar estas estruturas conhecido por operao de formatao. Aps a operao de formatao obtm-se um sistema de ficheiros completamente vazio. 8 Acesso aos sistemas de ficheiros A forma lgica como os sistemas operativos facultam acesso aos sistemas de ficheiros residentes nas vrias parties dos vrios dispositivos de armazenamento existentes varia, nos sistemas DOS/Windows usam-se as letras de drive. As letras A: e B: so tradicionalmente reservadas para os discos flexveis (actualmente em desuso) e o primeiro sistema de ficheiros em disco fica com a letra C:. Os sistemas Linux (e Unix em geral) usam uma filosofia diferente, escolhe-se um sistema de ficheiros (partio) para assumir o papel de raiz (root). Os outros sistemas de ficheiros existentes, seja qual for o seu tipo, vo ser integrados no sistema de ficheiros de raiz atravs de uma operao designada por montagem. A montagem consiste numa associao lgica criada pelo sistema operativo entre um directrio vazio e um sistema de ficheiros residente numa outra partio/disco. Aps a montagem, o sistema operativo redirecciona para a partio montada, todos os acessos ao directrio vazio. / (raiz) /etc /mnt /usr /usr/local /mnt/cdrom1 / // /dev dev dev dev/ // /hdb hdb hdb hdb / // /dev dev dev dev/sda1 /sda1 /sda1 /sda1 / // /dev dev dev dev/hda2 /hda2 /hda2 /hda2 Montagem Montagem Montagem Montagem 9 Planeamento das parties e sistemas de ficheiros Os programas de instalao automtica, encarregam-se de analisar os discos existentes, e em funo disso definir as parties e caractersticas dos sistemas de ficheiros a criar. Na maioria dos casos tomam as decises correctas, mas falta-lhes o conhecimento sobre os propsitos exactos do sistema. Por esta razo em alguns casos as decises podem revelar-se erradas. Felizmente na maioria dos casos dada oportunidade de intervir durante a instalao no sentido de fazer escolhas relativas s parties a criar. No exemplo ao lado, atravs da alterao directa da tabela de parties. Em outros casos so dados vrias vrios modelos possveis a escolher. 10 Capacidade das parties Sendo mais complexo alterar as parties depois de concluda a instalao, o ideal que desde logo elas sejam as correctamente dimensionadas para os objectivos pretendidos. Numa primeira anlise podemos afirmar que o aproveitamento ideal do disco obtido com uma partio nica. Isso verdade porque as parties tornam-se limites estticos que no podem ser ultrapassados sob o ponto de vista de capacidade. Sob o ponto de vista de segurana estes limites so vantajosos pois permitem atribuir a diferentes partes do sistema espaos prprios no disco, impedindo perturbaes entre elas. Por exemplo, se as reas dos utilizadores (homes) se encontrarem numa partio diferente do sistema (raiz), ento se um utilizador cometer um erro e encher a sua rea de trabalho isso no vai afectar a partio de sistema. (embora afecte os outros utilizadores pois a partio fica cheia) 11 Capacidade das parties e cotas Para criar independncia entre utilizadores sob o ponto de vista de espao em disco, criar uma partio para cada utilizador no prtico. A alternativa o sistema de cotas em que o sistema operativo mantm um controlo constante sobre o espao que cada utilizador/grupo est a usar numa dada partio. As cotas apenas podem ser definidas ao nvel de partio O facto de as cotas apenas funcionarem ao nvel de partio pode condicionar a forma como o disco deve ser dividido em parties. No boa ideia ter as reas dos utilizadores na partio de raiz e estabelecer cotas nessa partio pois quando ficar sem cota o utilizador vai ter dificuldades em usar o sistema. Muitas vezes necessrio que atribuir no uma mas vrias cotas, por exemplo: - Cota rea de utilizador - Cota de rea WEB - Cota para correio electrnico - Cota na partio de sistema Para cada uma ser necessria a existncia de uma partio separada. 12 Capacidade da partio RAIZ A partio RAIZ destina-se ser a base do sistema de ficheiros, durante a fase inicial de arranque do sistema operativo tudo de que o ncleo dispe, s mais tarde possvel montar outras parties. A partio RAIZ deve ter capacidade para conter todo o sistema operativo base, incluindo elementos cujas dimenses podem crescer ao longo da vida do sistema tais como ficheiros de configurao, dados e registos. Na prtica, atendendo s capacidades actuais dos dispositivos de armazenamento, num servidor baseado em discos correntes, no faz qualquer sentido usar uma partio de raiz de tamanho inferior a 8 Gbytes. Aumentar o espao disponvel no sistema relativamente simples pois basta adicionar (montar) novas parties, eventualmente residentes em novos discos. Este procedimento pode depois ser rematado com a utilizao de ligaes simblicas para produzir a estrutura de ficheiros necessria. 13 Por outras palavras a quantidade de memria central de um sistema servidor deve ser tal que a memria virtual apenas seja usada muito esporadicamente. Por esta razo no h interesse em ter parties SWAP muito grandes, geralmente usa-se a regra de usar um espao em disco igual quantidade de memria central. Capacidade das parties SWAP A partio SWAP funciona como memria virtual, dada a lentido do funcionamento dos discos em comparao com a memria central, deve ser vista como um mecanismo tampo que evita que a memria se esgote. Desde que exista espao em disco livre (no atribudo a nenhuma partio), sempre possvel acrescentar novas parties SWAP pois o sistema operativo tem capacidade de usar simultaneamente vrias destas parties, eventualmente em discos distintos. 14 Tipos de sistema de ficheiros O sistema operativo LINUX suporta uma grande variedade de sistemas de ficheiros, actualmente o mais usado o ext3 (third extended filesystem). A maioria dos programas de instalao de distribuies LINUX actuais assume o ext3 como valor por omisso. Tal como acontece para as parties do disco, normalmente possvel intervir durante a instalao para alterar o tipo de sistema de ficheiros. Algumas das alternativas actuais ao ext3 que tm vantagens interessantes, so o ReiserFS e o XFS. Todos estes sistemas de ficheiros recentes so do tipo journaling, isso significa que as alteraes realizadas so guardadas num registo e apenas so transferidas para o sistema de ficheiros em momentos oportunos. Na prtica isto significa que aps uma falha grave no h necessidade de verificar a integridade da totalidade do sistema de ficheiros, tal como acontecia por exemplo com o ext2. 15 RAIZ inicial e mdulos O facto de um tipo de sistema de ficheiros ser suportado pelo LINUX no significa que o ncleo o consiga usar como raiz inicial. A raiz inicial (muitas vezes um RAMDISK temporrio) usada pelo ncleo como base de trabalho durante o arranque da mquina, entre outros ficheiros contm mdulos do ncleo (kernel loadable module - KLM). Dada a enorme variedade de capacidades que actualmente o ncleo LINIX possui necessrio seleccionar as mais importantes e mais usadas. Apenas essas so includas integramente no ncleo, as restantes so suportadas atravs do carregamento de mdulos adicionais. Por sua vez o carregamento de mdulos exige um sistema de ficheiros j montado, isto tem uma implicao imediata: o sistema de ficheiros inicial (raiz inicial) tem de ser integralmente suportado pelo ncleo, o seu suporte no pode ser carregado de um mdulo. Os ncleos includos nas distribuies actuais suportam ext2 e ext3 sem recurso a mdulos, contudo o mesmo no se aplica necessariamente aos sistemas de ficheiros ReiserFS e xfs. 16 Parmetros de formatao do sistema de ficheiros A formatao dos sistema de ficheiros recorre a programas externos com o nome mkfs seguido do tipo de sistema de ficheiros, por exemplo mkfs.ext3 ou mkfs.ext2. mke2fs [ -c | -l filename ] [ -b block-size ] [ -f fragment-size ] [ -g blocks-per-group ] [ -i bytes-per- inode ] [ -j ] [ -J journal-options ] [ -N number-of- inodes ] [ -n ] [ -m reserved-blocks-percentage ] [ -o creator-os ] [ -O feature[,...] ] [ -q ] [ -r fs-revision-level ] [ -E extended-options ] [ -v ] [ -F ] [ -L volume-label ] [ -M last-mounted-directory ] [ -S ] [ -T filesystem-type ] [ -V ] device [ blocks-count ] Os programas de instalao automtica de distribuies LINUX invocam estes programas com as parmetros que consideram adequados tendo em vista a partio em causa e o tipo de utilizao que vai ter. De entre os vrios parmetros sobre os quais vale a pena ponderar encontra-se o tamanho de bloco e o nmero de bytes por i-node, valores elevados permitem uma performance mais elevada, mas podem conduzir ao desaproveitamento do espao quando os ficheiros tm dimenso mais reduzida. No exemplo acima, a opo -T permite indicar o tipo de utilizao que o sistema vai ter e deixa para o comando a definio dos parmetros ptimos. 17 Configurao da interface de rede Num sistema servidor as interfaces de rede devem ser configuradas estaticamente Utilizar configurao dinmica, tipicamente atravs do protocolo DHCP cria uma dependncia externa no sistema (servio DHCP externo). Num servidor, para o qual se pretende uma elevada fiabilidade/disponibilidade, todas as dependncias externas so de evitar. A configurao esttica da interface de rede exige a colaborao do administrador da rede que dever fornecer os vrios elementos: - Endereo IP esttico + mascara de rede + endereo do encaminhador da rede - Nome do domnio DNS endereos dos respectivos servidores de nomes A nica desvantagem da configurao esttica a necessidade de uma sintonia permanente entre o administrador da rede e o administrador do sistema servidor. As alteraes de configurao na rede tm de ser manualmente realizadas no servidor. 18 Formas de instalao do LINUX As distribuies LINUX disponibilizam vrias formas de instalao, a maioria delas baseada no prprio LINUX. O arranque do sistema de instalao (LINUX) normalmente realizado atravs de um CD/DVD. Na realidade qualquer forma de arranque do LINUX poder ser usada, por exemplo directamente do MS-DOS/MS-WINDOWS ou atravs de uma EPROM. As distribuies actuais so compostas por um grande volume de software (actualmente muitas ultrapassam as duas dezenas de CDs). Contudo, na prtica a maioria das instalaes recorre apenas a uma fraco deste software. A instalao de rede usa apenas um CD (ou at menos do que isso ) para colocar o sistema de instalao em funcionamento e de seguida usa a rede (ligada INTERNET) para obter o software em repositrios (mirrors) criados para este efeito. Desde que se possua uma ligao INTERNET com capacidades mnimas, esta sem dvida uma alternativa muito prtica. 19 Instalao do LINUX - HARDWARE O variedade de HARDWARE existente o responsvel pela maioria das dificuldades no processo de instalao de distribuies LINUX. Se o HARDWARE muito recente devemos ter o cuidado de usar uma distribuio com ncleo o mais recente possvel para haver alguma garantia que esse HARDWARE suportado. O procedimento correcto escolher o HARDWARE para o SOFTWARE que vamos usar, assim antes de adquirir o HARDWARE temos de verificar se a distribuio LINUX que vamos usar suporta esse HARDWARE. A aquisio de HARDWARE especial de elevado custo termina muitas vezes numa desiluso quando se chega concluso que no h sistemas operativos capazes de tirar partido dele. Os controladores de disco so uma fonte de problemas pois se no so suportados pelo ncleo do sistema de instalao, esta torna-se de todo impossvel. 20 Bases de dados de utilizadores e grupos A forma standard de um sistema operativo UNIX guardar as definies relativas a utilizadores e grupos atravs dos ficheiros de texto /etc/passwd e /etc/group. O ficheiro /etc/shadow usado como auxiliar do /etc/passwd. bash-3.00$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash nobody:x:65534:65534:Nobody:/:/bin/sh sshd:x:77:77:system user for openssh:/var/empty:/bin/true www:x:98:98:Gestor WWW:/users/home/www:/usr/bin/tcsh i977805:x:2176:102:Joaquim Cardoso Morais:/users/home/i977805:/bin/csh artur:$1$s2b9pyc6$46nIOl8G1fGrymmvsJejG/:1203:98:Artur:/users/home/artur:/bin/bash -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 21 Gesto de utilizadores e grupos locais A maioria das distribuies actuais dispe de programas de gesto de utilizadores em modo grfico que permitem realizar a maioria das tarefas bsicas. Em modo de texto existe um conjunto de comandos standard no LINUX: useradd ; usermod ; userdel ; groupadd ; groupmod ; groupdel ; chfn ; chsh ; passwd. A terceira alternativa consiste na manipulao directa dos ficheiros, este tipo de operao envolve algum risco pois h necessidade de evitar qualquer tipo de incoerncia ou sobreposio de identificadores. Estes comandos tm a vantagem de terem uma solidez aprovada e realizarem algumas validaes e operaes acessrias. Quando os utilizadores esto definidos em repositrios remotos, a forma como so geridos coincide com a forma de gesto desses repositrios e no pode, na maioria dos casos, ser realizada no sistema local. 22 Name Service Switch (NSS) A necessidade de diversificar os repositrios de informao de configurao do sistema (entre outros, bases de dados de utilizadores e grupos) levou ao desenvolvimento de sistemas alternativos, um dos mais importantes o sistema centralizado NIS (Network Information Service), tambm conhecido por Yellow Pages. Atravs do NSS, o LINUX consegue integrar de forma eficaz as muitas alternativas disponveis na actualidade. Trata-se de um sistema modular, por isso a adio do suporte de novos tipos de repositrio faz-se por simples adio de um mdulo. NSS Sistema operativo Consultas libnss_dns.so libnss_ldap.so libnss_files.so libnss_nis.so libnss_winbind.so libnss_mysql.so /etc Servidores DNS Servidores LDAP Servidores NIS Windows 2003 Server Servidor MySQL 23 Ficheiro de configurao /etc/nsswitch.conf O servio NSS configurado atravs do ficheiro /etc/nsswitch.conf, o principal papel definir a ordem pela qual os vrios repositrios disponveis vo ser usados. Note-se que cada mdulo NSS possui ficheiros de configurao prprios, por exemplo o libnss_ldap.so usa o ficheiro de configurao /etc/ldap.conf. bash-3.00$ cat /etc/nsswitch.conf # passwd: files ldap winbind nis shadow: files nis group: files ldap winbind nis hosts: files nis dns winbind No exemplo as definies de utilizador sero pesquisadas pela seguinte ordem: 1 Ficheiros locais (/etc/passwd) 2 Servidores LDAP 3 Servidores Windows 4 Servidores NIS Ser usado o primeiro que for encontrado 24 Autenticao dos utilizadores Apesar das suas fraquezas, o mecanismo de autenticao de utilizadores mais usado continua a ser a associao de uma palavra secreta (password) ao nome de utilizador. Quem s tu ? Prova-o ! 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). 25 Pluggable Authentication Modules (PAM) A forma tradicional de autenticao de utilizadores em UNIX consiste em comparar um digest da password que foi fornecida pelo utilizador com o digest que est armazenado na base de dados. Mesmo usando algoritmos recentes como o MD5 ou o SHA, o melhor manter os digest secretos, foi com esse objectivo que esta informao foi transferida do ficheiro /etc/passwd para o ficheiro /etc/shadow. Alm da necessidade da manter confidencial o digest, o facto de o sistema no ter acesso password (apenas o digest), impede a implementao de autenticao challenge-response. O sistema PAM introduziu uma grande flexibilidade permitindo a utilizao de diversos mecanismos suportando diversos tipos de repositrio. Tal como o NSS trata-se de um sistema modular, cada modulo implementa determinada funcionalidade, nem todas relacionados com o acesso a repositrios: pam_radius.so pam_ldap.so pam_ftp.so pam_listfile.so pam_winbind.so pam_shells.so pam_cracklib.so pam_issue.so pam_time.so pam_rootok.so pam_mysql.so pam_mail.so pam_unix.so 26 PAM Cadeias/Sequncias de mdulos Cada mdulo intervm numa dada ordem, resultado dessa interveno pode ter vrios tipos de impacto no resultado do processamento do conjunto: required em caso de sucesso continua a cadeia, em caso de falha tambm continua a processar os mdulos seguintes, mas a cadeia vai devolver falha . sufficient em caso de sucesso, no existindo falhas required anteriores, devolve sucesso e termina a cadeia. Em caso de falha regista uma falha optional e continua a processar a cadeia. optional - em caso de sucesso continua a cadeia, em caso de falha regista uma falha optional e continua a processar a cadeia. binding - em caso de sucesso, no existindo falhas anteriores devolve sucesso e termina a cadeia. Em caso de falha continua a processar os mdulos seguintes, mas a cadeia vai devolver falha. requisite em caso de sucesso continua a cadeia, em caso de falha termina de imediato e devolve falha. 27 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. -bash-3.00$ cat /etc/pam.d/system-auth #%PAM-1.0 auth required pam_env.so auth sufficient pam_unix.so likeauth nullok auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account sufficient pam_unix.so account sufficient pam_ldap.so use_first_pass account required pam_deny.so password required pam_cracklib.so retry=3 minlen=2 dcredit=0 ucredit=0 password sufficient pam_unix.so nullok use_authtok md5 shadow password sufficient pam_ldap.so password required pam_deny.so session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022 session required pam_limits.so session required pam_unix.so Autenticao Verificao de validade/acesso Alterao da password Gesto da sesso Exemplo com as 4 cadeias: 28 PAM Alguns mdulos comuns 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_cracklib 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. pam_listfile Mdulo auth que devolve sempre sucesso para o administrador e devolve sucesso para os outros utilizadores, a menos que exista o ficheiro /etc/nologin. pam_nologin Mdulo session que apresenta uma mensagem aps a entrada no sistema (message of the day). pam_motd Mdulo auth que permite apresentar uma mensagem antes da autenticao do utilizador. pam_issue Modulo de interface com repositrios LDAP, suporta as funcionalidades auth, account e password. pam_ldap Mdulo auth e account que faz a verificao de mail no inicio da sesso. pam_mail Mdulo auth e session que permite manipular as variveis de ambiente segundo um ficheiro de configurao, geralmente /etc/security/pam_env.conf. pam_env Pode ser usado em qualquer das cadeias, devolve sempre falha. Usado para testes ou para finalizar uma cadeia. pam_deny Pode ser usado em qualquer das cadeias, implementa as funcionalidades tradicionais do UNIX pr- PAM. pam_unix 29 rea de trabalho do utilizador (HOME) Dependendo da finalidade do sistema e utilizadores do sistema, torna-se muitas vezes necessrio proporcionar uma pasta pessoal e privada para armazenamento permanente de dados do utilizador. Esta pasta conhecida por HOME DIRECTORY ou apenas HOME. A localizao/nome da pasta pessoal est definida no registo do utilizador, para muitos tipos de servio fundamental uma pasta sobre a qual o utilizador possua direitos de escrita, tipicamente as permisses usadas so 700. Para servios de utilizador em que existe conceito de directrio corrente, tais como FTP ou a linha de comando (acessos por terminal), a HOME ser o directrio inicial. -bash-3.00$ ls -la /etc/skel/ total 32 drwxr-xr-x 3 root root 4096 Out 17 2006 ./ drwxr-xr-x 76 root root 8192 Mai 30 10:20 ../ -rw-r--r-- 1 root root 24 Jun 13 2005 .bash_logout -rw-r--r-- 1 root root 191 Jun 13 2005 .bash_profile -rw-r--r-- 1 root root 124 Jun 13 2005 .bashrc -rw-r--r-- 1 root root 3793 Ago 23 2005 .screenrc drwx------ 2 root root 4096 Ago 26 2004 tmp/ Os programas que criam utilizadores podem tambm criar a respectiva HOME, normalmente usam como modelo a pasta /etc/skel/. Depois de copiado o contedo o proprietrio/grupo alterado (comando chown) e as permisses podem ser ajustadas com o comando chmod. 30 rea de trabalho do utilizador - permisses A privacidade da rea de trabalho do utilizador consegue-se retirando todas as permisses aos outros utilizadores e grupos, ou seja 700. 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. 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. 4 2 1 4 2 1 4 2 1 r w x r w x BITS (16) Valor decimal dos BITS Representao simblica GROUP OTHERS 4 2 1 r w x OWNER 4 2 1 8 Tipo de Objecto Permisses Especiais 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. Determinadas aplicaes podem exigir outros tipos de permisso, por exemplo para o apache poder divulgar uma pgina Web numa pasta no interior da HOME, a HOME necessita de ter a permisso x para others. 31 Variveis de ambiente HOME 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. 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. MANPATH HOSTNAME USER LANG LANGUAGE TERM PATH LD_LIBRARY_PATH 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. 32 Ficheiros de arranque da SHELL Uma vez que a SHELL usada como base para o lanamento de aplicaes, o local ideal para configurar o ambiente que vai depois ser herdado por todos os processos lanados. Isto particularmente vlido para a SHELL inicial ou de login. Cada tipo SHELL usa ficheiros de arranque distintos, a SHELL tradicional /bin/sh executa os ficheiros /etc/profile e de seguida .profile na HOME ( ~/.profile). A SHELL /bin/sh na actualidade simulada pela BASH, quando invocada como BASH (/bin/bash) usa a seguinte sequncia de ficheiros de arranque: /etc/profile ; ~/.bash_profile ; ~/.bash_login ; ~/.profile. A C SHELL /bin/csh ou /bin/tcsh executa a seguinte sequncia de ficheiros de arranque: /etc/csh.cshrc ; /etc/csh.login ; ~/.cshrc ; ~/.login. Uma caracterstica a reter que os ficheiros da rea do utilizador so executados em ltimo lugar, por isso podem alterar o que foi feito nos ficheiros de sistema (/etc/*). 33 bash-3.00$ cat /etc/profile # /etc/profile -*- Mode: shell-script -*- # (c) MandrakeSoft if ! echo ${PATH} |grep -q /usr/X11R6/bin ; then PATH="$PATH:/usr/X11R6/bin" fi if [ "$UID" -ge 500 ] && ! echo ${PATH} |grep -q /usr/games ; then PATH=$PATH:/usr/games fi umask 022 USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HOSTNAME=`/bin/hostname` export PATH USER LOGNAME MAIL HOSTNAME for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done unset i Ficheiro /etc/profile tpico Pasta com mais ficheiros a executar Definio da UMASK Definio da variveis Variveis a exportar 34 Cotas de utilizadores e grupos As cotas servem para controlar e limitar o espao que cada utilizador ou grupo usa numa determinada partio. Alm do espao ocupado tambm possvel limitar o nmero de objectos. O objectivo das cotas garantir uma partilha equitativa de um recurso que limitado, evitando que o abuso de alguns comprometa o trabalho dos restantes. O controlo de cotas realizado pelo ncleo durante as operaes de manuseamento do sistema de ficheiros, o ncleo regista as alteraes realizadas pelo utilizador e em funo das variaes actualiza o registo do utilizador ou grupo. O controlo de cotas pelo ncleo no realizado em valor absoluto. Supe-se que o ponto de partida um registo de cotas correcto. As cotas de utilizador dizem respeito aos recursos ocupados por cada utilizador, as cotas de grupo referem-se ao somatrio dos recursos ocupados por todos os membros de cada grupo. 35 Cotas montagem da partio O primeiro passo para activar a contabilizao de cotas numa dada partio alterar as opes de montagem no ficheiro /etc/fstab, incluindo as opes usrquota e/ou grpquota. Os programas de suporte de cotas verificam o /etc/fstab para saberem quais as parties onde existe suporte de cotas. Por exemplo durante o arranque do sistema executado o comando quotaon a. O comando quotaon informa o ncleo de que deve comear a controlar as cotas numa determinada partio. Esta operao pressupe que a contabilizao de cotas nessa partio j existe e est actualizada. A opo -a faz com que o comando active as cotas em todas as parties referidas no /etc/fstab que tm as opes usrquota ou grpquota. O comando quotaoff desactiva o controlo de cotas pelo ncleo numa dada partio. 36 Cotas contabilizao inicial O ncleo regista variaes de cota e actualiza o registo absoluto em funo dessas variaes. A validade inicial do registo absoluto no da responsabilidade do ncleo. O comando quotacheck tem como misso efectuar a contabilizao absoluta das cotas, normalmente s necessrio executar uma vez, a menos que uma falha grave danifique o registo existente nos ficheiros (a)quota.user e/ou (a)quota.group localizados na raiz da partio correspondente. O comando quotacheck deve ser executado com precauo, as cotas devem estar desactivadas (quotaoff) e no devem ocorrer alteraes na partio durante o processo. Por esta razo o comando quotacheck tenta remontar a partio em modo leitura-apenas. Aps a execuo do comando quotacheck os ficheiros (a)quota.user e/ou (a)quota.group esto reparados e actualizados podendo ento ser executado o comando quotaon para que o ncleo se encarregue de os manter. 37 Cotas definio de valores O valor da cota mxima tm de ser definido utilizador a utilizador (cotas de utilizador) ou grupo a grupo (cotas de grupo). Tanto para as cotas de espao (blocos de 1024 octetos) como de objectos (i-nodes) so definidos dois limites: soft e um hard mais elevado. O limite soft pode ser excedido por um perodo de tempo mximo conhecido por grace period. Os valores de cota definidos como zero sero considerados sem limite. Os vrios limites de cota podem ser alterados com o comando setquota e o comando edquota, este ltimo interage atravs de um editor de texto. -bash-3.00$ /usr/sbin/setquota setquota: Bad number of arguments. setquota: Usage: setquota [-u|-g] [-F quotaformat] <user|group> <block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> -a|<filesystem>... setquota [-u|-g] [-F quotaformat] <-p protouser|protogroup> <user|group> -a|<filesystem>... setquota [-u|-g] [-F quotaformat] -b -a|<filesystem>... setquota [-u|-g] [-F quotaformat] -t <blockgrace> <inodegrace> -a|<filesystem>... setquota [-u|-g] [-F quotaformat] <user|group> -T <blockgrace> <inodegrace> -a|<filesystem>... Bugs to: mvw@planets.elm.net, jack@suse.cz 38 Cotas apresentao do estado Cada utilizador pode visualizar a sua situao de cotas com o comando quota, ao administrador este comando permite visualizar as cotas de qualquer utilizador. O comando repquota permite ao administrador obter o estado geral das cotas no sistema de ficheiros. 39 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. 40 Administrao de interfaces de rede - ifconfig O comando ifconfig um dos meios directos de que o administrador dispe para manusear as interfaces de rede de um sistema LINUX. -bash-3.00$ /sbin/ifconfig --help Usage: ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>] [add <endereo>[/<tam_prefixo>]] [del <endereo>[/<tam_prefixo>]] [[-]broadcast [<endereo>]] [[-]pointopoint [<endereo>]] [netmask <endereo>] [dstaddr <endereo>] [tunnel <endereo>] [outfill <NN>] [keepalive <NN>] [hw <HW> <endereo>] [metric <NN>] [mtu <NN>] [[-]trailers] [[-]arp] [[-]allmulti] [multicast] [[-]promisc] [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>] [txqueuelen <NN>] [[-]dynamic] [up|down] ... 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. 41 Administrao de encaminhamento - route O comando route permite manipular a tabela de encaminhamento (routing) do ncleo do sistema operativo. com base na tabela de encaminhamento que o ncleo sabe como fazer chegar os pacotes ao destino correcto. /sbin/route [ add | del ] [ -net | -host ] [ REDE/IP-DESTINO ] [ netmask MSCARA-DE-REDE ] [ gw GATEWAY ] [ [dev] INTERFACE ] [root@server ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.16.2 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 172.16.16.4 0.0.0.0 255.255.255.255 UH 0 0 0 ppp2 193.136.62.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.62.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.3 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1.7 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1.6 172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 172.23.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1.5 172.24.0.0 192.168.62.7 255.252.0.0 UG 0 0 0 eth0.3 172.28.0.0 192.168.62.8 255.252.0.0 UG 0 0 0 eth0.3 0.0.0.0 193.136.62.1 0.0.0.0 UG 0 0 0 eth0 Usado sem argumentos o comando route apresenta a tabela de encaminhamento: 42 Configurao IPv4 de uma interface de rede Para configurar uma interface de rede IPv4 apenas so necessrios dois elementos: o endereo IP local e a respectiva mascara de rede. Os outros elementos so redundantes e podem ser deduzidos. Endereo IPv4 + Mscara de rede Endereo de broadcast 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. Endereo da rede local + Mscara de rede Tabela de encaminhamento -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) 43 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 ] ... Usando o comando ip, o exemplo anterior seria: -bash-3.00$ /sbin/ip addr add 192.168.111.150/24 broadcast + dev eth0 -bash-3.00$ /sbin/ip route add 192.168.111.0/24 eth0 -bash-3.00$ /sbin/ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:0C:29:FE:E7:F8 brd ff:ff:ff:ff:ff:ff inet 192.168.111.150/24 brd 192.168.111.255 scope global eth0 # /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 44 Caminho por omisso (default route) S possvel enviar pacotes IPv4 para destinos (redes) que constem na tabela de encaminhamento. claro que no possvel manter entradas na tabela de encaminhamento para todas as redes IPv4 existentes a nvel global. Se isso fosse possvel rapidamente se iria verificar que com a excepo das redes locais, todas as outras seriam representadas por linhas idnticas na tabela de encaminhamento pois o primeiro salto para chegar a qualquer dessas redes sempre o mesmo: o router local de ligao internet. Esse o default router. INTERNET (TODAS AS OUTRAS REDES) Rede Local A ROUTER 2 Rede Local B Rede Local C Rede Local D ROUTER 1 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. 45 Mltiplos endereos / interface At ao ncleo 2.4 o suporte de vrios endereos sobre a mesma interface fsica era conhecido por ip alias, para o efeito aos nomes das interfaces era acrescentado um sufixo na forma :n, por exemplo eth0:0, eth0:1, so alias da interface eth0, cada um com o seu prprio endereo IP diferente do da interface eth0. Nos ncleos mais recentes, com o comando ip addr add possvel atribuir vrios endereos a uma mesma interface. Para manter a compatibilidade com o comando ifconfig prtica corrente manter a mesma terminologia usando a opo label do comando ip. [root@server]# /sbin/ip address add 192.168.199.35/24 brd + dev eth0 [root@server]# /sbin/ip address add 192.168.199.37/24 brd + dev eth0 label eth0:0 [root@server]# /sbin/ip address show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:80:c8:f8:4a:51 brd ff:ff:ff:ff:ff:ff inet 192.168.199.35/24 brd 192.168.199.255 scope global eth0 inet 192.168.199.37/24 brd 192.168.199.255 scope global secondary eth0:0 [root@server]# /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:80:C8:F8:4A:51 inet addr:192.168.199.35 Bcast:192.168.199.255 Mask:255.255.255.0 eth0:0 Link encap:Ethernet HWaddr 00:80:C8:F8:4A:51 inet addr:10.10.20.10 Bcast:10.10.20.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 46 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 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: VLANID # /sbin/vconfig rem eth0.9 47 Configurao automtica da rede No sendo muito aconselhvel em servidores, a configurao automtica fundamental nos postos de trabalho. A configurao automtica da rede IPv4 faz-se com recurso a servidores DHCP existentes na rede, em LINUX o comando/servio dhclient permite configurar por este meio todas ou algumas das interfaces de rede. Depois de obter o endereo para uma interface, o servio mantm-se em execuo para controlar o aluguer (lease) do endereo, procedendo aos refrescamentos necessrios junto do servidor DHCP. O servio ifplugd particularmente til em postos de trabalho com vrias interfaces de rede, este servio monitoriza constantemente o estado das ligaes fsicas. Quando um cabo ligado encarrega-se de activar a respectiva interface, quando um cabo desligado remove a respectiva interface de rede no sistema operativo. 48 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 pr- configurada no servidor, normalmente no ficheiro /etc/dhcpd.conf. 49 Internet Daemon INETD/XINETD Grande parte dos servios de um sistema LINUX so assegurados por processos servidores autnomos, esta metodologia assegura a mais elevada disponibilidade e performance. Alm dos servios de elevado grau de utilizao e com necessidade de elevada performance, acumulam-se muitas vezes uma grande variedade de servios menores que apesar da reduzida utilizao tm de estar disponveis em permanncia. O Internet Daemon foi desenvolvido para substituir vrios processos servidores durante a fase em que esto espera de ser contactados por clientes. Quando o contacto ocorre o Internet Daemon invoca o programa apropriado para prestar os servio. O Internet Daemon configurado atravs do ficheiro /etc/inetd.conf ou /etc/xinetd.conf, em qualquer dos casos, para cada servio necessrio especificar o protocolo a usar (TCP ou UDP), o nmero de porto (ou identificador do servio definido em /etc/services) e o programa que implementa o servio. 50 Resoluo de nome DNS - cliente A resoluo de nomes de mquinas (obteno do respectivo endereo IP) pode comear por recorrer ao ficheiro /etc/hosts, mas na maioria dos casos acaba por necessitar do servio DNS. A resoluo de nomes por DNS consiste no envio do nome qualificado a um servidor de nomes. Os parmetros para configurar o sistema DNS cliente so apenas os endereos dos servidores de nomes. Uma vez que podem surgir nomes no qualificados para serem resolvidos, ser necessrio adicionar-lhes um nome de domnio antes de os enviar ao servidor. Para esse efeito pode ser definido o domnio local e uma lista de domnios de pesquisa. Em LINUX o ficheiro de configurao do cliente DNS o /etc/resolv.conf. [root@server ~]# cat /etc/resolv.conf domain dei.isep.ipp.pt search isep.ipp.pt nameserver 192.168.60.7 nameserver 192.168.60.11 nameserver 193.136.62.3 51 Filtragem comando iptables O comando iptables permite administrar a filtragem do trfego de rede realizada pelo ncleo. Existem 4 tabelas: filter; nat; mangle e raw, destas as mais usadas so as 2 primeiras, por omisso a tabela usada filter. Algumas opes importantes so: 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. 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 iptables A - adicionar regra iptables D - eliminar regra iptables I - inserir regra iptables R - substituir regra iptables L - listar regras iptables P - definir poltica da cadeia 52 IPTABLES Comportamento por omisso Para cada cadeia de regras necessrio definir o comportamento por omisso, ou seja o que se vai passar se para um dado pacote a cadeia for processada at ao final sem que nenhuma das regras de verifique. De entre os quatro comportamentos possveis (ACCEPT; DROP; QUEUE e RETURN) o que deve ser adoptado como comportamento por omisso (poltica da cadeia) DROP. iptables P INPUT DROP iptables P OUTPUT DROP iptables P FORWARD DROP 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. 53 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 54 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. 55 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. #!/bin/bash --- -- -- -- -- #!/usr/bin/perl --- -- -- -- -- #!/bin/csh --- -- -- -- -- #!/bin/sh --- -- -- -- -- #!/usr/bin/pyton --- -- -- -- -- #!/usr/bin/php --- -- -- -- -- Como nas linguagens interpretadas usadas as linhas comeadas por # so consideradas comentrios, o shebang no interfere com o script propriamente dito. 56 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. 57 Shell Scripts exemplo simples em BASH No DEI as passwords dos utilizadores s podem ser alteradas junto do PDC do domnio windows, para que o comando habitual passwd atinja esse objectivo foi substitudo por um pequeno script em BASH. -bash-3.00$ cat /usr/bin/passwd #!/bin/bash echo -e "\n\n\n" echo "Alterao de password geral do utilizador `id -nu` no DEI" echo -e "\n" SMBPASSWD="" for LOC in /usr/local/samba/bin /usr/local/bin /usr/bin ; do if [ -x ${LOC}/smbpasswd ]; then SMBPASSWD=${LOC}/smbpasswd break; fi done ######################## if [ -z "${SMBPASSWD}" ]; then echo "Existe um problema na instalao desta mquina" echo " favor contactar os administradores de rede" exit 1 fi ${SMBPASSWD} -r mafalda2 ######################## 58 Execuo programada - servio CRON A possibilidade de programar a execuo de comandos, por exemplo scripts tem enormes vantagens para o administrador. Permite definir a execuo peridica de tarefas, por exemplo em horrios apropriados a operaes de manuteno. Nos sistema LINUX o servio CRON (crond) o mais usado para atingir estes objectivos, o ficheiro /etc/crontab o principal ficheiro de configurao. As linhas de comando do ficheiro de configurao apresentam a seguinte forma: Especificao de data/hora S P C Utilizador S P C Comando e argumentos Minuto S P C Hora S P C Dia do ms S P C Ms S P C Dia da semana 0 a 59 0 a 23 1 a 31 1 a 12 0 a 7 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. 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. 59 Servio CRON exemplos /etc/crontab */5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg 5,35 * * * * root /etc/LinuxHealth >/dev/null 2>&1 & 45 2 * 8 6 root /root/make-backup >/dev/null 2>&1 & 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. 60 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. CIFRAR Dados Dados cifrados DECIFRAR Dados Chave secreta Chave secreta CIFRAR Dados Dados cifrados Dados DECIFRAR CIFRAR Dados Dados cifrados DECIFRAR Dados Chave pblica de B CIFRAR Dados Dados cifrados Dados DECIFRAR A B A B Chave privada de A Chave privada de B Chave pblica de A 61 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. 62 Certificados de chave pblica A criptografia de chave pblica simplificou muito a distribuio de chaves, mas esta simplificao eliminou a autenticao que estava implcita na criptografia simtrica. Contudo garantindo a autenticidade das chaves pblicas o problema fica resolvido. Um certificado de chave pblica contm a identificao do proprietrio da chave pblica (Subject), a identificao do emissor do certificado (Issuer), a chave pblica e assinatura digital do conjunto realizada pelo emissor do certificado. Identificao do emissor do certificado Data de validade e verso Identificao do proprietrio da chave Chave pblica Assinatura digital Chave privada do emissor do certificado 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. 63 Certificado de chave pblica - exemplo [root@server ~]# openssl x509 -in /etc/cert/redecert.pem -text Certificate: Data: Version: 1 (0x0) Serial Number: 2 (0x2) Signature Algorithm: md5WithRSAEncryption Issuer: C=PT, ST=PORTO, L=PORTO, O=DEI.ISEP, OU=DEI, CN=DEICA/emailAddress=dei@dei.isep.ipp.pt Validity Not Before: Jun 20 11:37:28 2007 GMT Not After : Jun 17 11:37:28 2017 GMT Subject: C=PT, ST=PORTO, L=PORTO, O=DEI.ISEP, OU=DEI, CN=rede.dei.isep.ipp.pt/emailAddress=dei@dei.isep.ipp.pt Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:cc:38:e2:e6:5d:ff:43:6d:ff:43:12:94:03:db: 8f:5c:28:61:1a:61:0d:d5:5e:04:dd:20:a9:d8:99: 0c:53:e3:c6:23:b0:6c:4d:fe:6b:9e:b8:00:ea:23: 1d:55:fa:e7:9a:9b:1b:fa:ef:e0:0d:2c:e0:e1:43: 31:2d:b1:37:b5:27:68:01:e0:3d:d8:bf:96:15:bb: 25:31:ec:6c:38:5e:2f:17:4c:b5:14:5e:8c:de:1b: 14:20:b9:9c:fb:fe:41:5e:ea:68:17:ab:50:a7:9f: 6d:93:b3:30:0f:c2:09:2b:7b:43:a4:06:1b:2a:e8: d2:e5:ca:ff:71:e1:69:9c:fb Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption 97:e9:b2:9d:f1:ca:16:37:43:21:3a:11:61:03:d7:4b:de:f9: 06:f9:ee:02:4e:6e:08:25:bc:e3:98:e8:1d:bf:9f:43:5b:cb: 6c:20:d0:6e:7c:d2:53:f2:29:3b:f9:6e:aa:c3:e0:ab:f8:8f: 06:83:95:9f:dc:a8:94:bb:a8:50:67:34:de:64:0a:02:29:f0: 1b:1d:f1:bc:51:09:37:f9:15:23:14:5d:b6:98:85:86:d4:37: ff:58:d0:74:24:2f:0d:da:d9:c4:02:89:7f:e6:6c:98:c3:f0: 8e:42:77:45:3d:a1:ae:a2:8c:20:83:83:c5:2b:cc:58:7c:d7: 2f:06:32:c6:fa:95:b3:de:5f:48:76:54:08:7a:df:b1:58:a8: 8d:d9:74:94:57:c1:57:5b:79:32:f1:71:02:77:bb:6f:2a:9f: 42:94:ef:37:d1:03:da:db:9f:b6:11:8a:4b:d4:e4:34:48:86: a0:e3:ce:9e:a3:f4:97:86:37:e1:b9:d4:af:de:a8:e9:ce:2a: 70:aa:8f:c5:90:d9:71:48:a8:9b:8b:f0:2e:6c:42:7e:c3:bf: b6:8e:80:79:2f:ed:81:cb:3a:01:69:ce:c0:e8:9f:fe:ce:0a: bf:08:89:4b:68:d0:d5:9b:78:9a:e6:e5:19:92:6c:93:7f:c5: a0:89:f9:45 64 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. 65 Comando openssl (LINUX) O comando openssl fornece uma interface de linha de comando para acesso biblioteca openssl que suporta SSL v2 e v3 e TLS v1. Entre outras funcionalidades o comando openssl permite gerir certificados de chave pblica. openssl req a finalidade principal gerar uma chave e emitir um pedido de certificao da mesma. O pedido de certificao deve depois ser processado por uma entidade certificadora que emitir o respectivo certificado. Este comando tambm pode ser usado para produzir um certificado auto-assinado, por exemplo: openssl req -nodes -x509 -keyout ttt.key -out ttt.crt -days 3650 -newkey rsa:1024 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. 66 Registo de actividades System Logger Embora cada componente/servio do sistema possa criar registos de actividade prprios, o ideal que exista um servio central nico para gerir esses registos. Os clientes do servio syslogd enviam-lhe informaes, o syslogd responsvel por classificar essas informaes e eventualmente registar as mesmas. SYSTEM LOGGER (syslogd) NSS httpd dhcpd crond ftpd inetd Ficheiros locais Servios remotos syslogd remotos syslogd remotos ( ...) Servidor Outros processos/aplicaes Comando logger (SHELL) 67 As mensagens enviadas para o syslogd contm dois elementos que permitem a sua classificao rpida: Servio de origem (facility) que pode assumir os seguintes valores: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (o mesmo que auth), syslog, user, uucp e local0 at local7. Gravidade ou Prioridade (severity, priority ou level) que pode ter os seguintes valores, por ordem crescente de gravidade: debug, info, notice, warning, warn (igual ao anterior), err, error (igual ao anterior), crit, alert, emerg, panic (igual ao anterior). Estes dois elementos podem ser agrupados na forma {facility}.{severity} e com base neste conjunto que o syslogd determina o que fazer com cada mensagem. O ficheiro de configurao /etc/syslog.conf determina o comportamento do syslogd. syslogd classificao de mensagens 68 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: syslogd configurao kern.* /var/adm/kernel mail.*;mail.!=info /var/adm/mail *.alert root,administrator mail.=info @server2.domain.pt mail,news.=info * kern.info;kern.!err |/root/kern-info No caso de existirem vrias regras (linhas) aplicveis a uma dada mensagem, todas elas sero aplicadas em paralelo a essa mensagem. 69 O servio syslogd permite a recepo de mensagens remotas atravs da rede, usando pacotes UDP dirigidos ao porto 514, para que isso seja possvel necessrio que o syslogd receba o argumento -r no arranque. Por motivos de segurana, na maioria das instalaes essa possibilidade est inicialmente inactiva. Muitos dispositivos de rede tais como impressoras, comutadores, routers e access- points podem ser configurados para enviar mensagens syslog para um dado endereo/mquina. Essa informao de configurao pode mesmo ser fornecida na resposta do servidor DHCP (option log-servers ). O administrador de um cluster de servidores Linux/Unix pode por esta via centralizar os registos numa nica mquina, colocando em todas as restantes um ficheiro /etc/syslog.conf semelhante a: syslogd registo centralizado *.* @servidor.domino 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. 70 syslogd consulta de registos 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. SYSTEM LOGGER (syslogd) Ficheiros locais Servidor Unix/Linux Impressora de rede Servidor Servidor Unix/Linux Comutador (switch) 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: cat; less; tail; more; grep; cut; sed 71 Registo de entradas e sadas - wtmp Dada a sua importncia, existe um sistema independente para registar as entradas e sadas dos utilizadores no sistema. Cabe aos programas que controlam essas entradas e sadas recorrer a este registo para o manter actualizado, ele constitudo por trs ficheiros: utmp (normalmente /var/run/utmp) contm, para cada terminal, o nome do terminal, o nome do utilizador actual, a origem do utilizador (maq. remota) e a data/hora a que efectuou o login. Quando o utilizador sa, o registo eliminado. lastlog (normalmente /var/log/lastlog) contm, para cada UID, a hora e local (terminal/mquina remota) da ltima entrada no sistema (login). wtmp (normalmente /var/log/wtmp) contm o registo de todas as entradas e sadas no sistema. 72 Consulta do registo de entradas e sadas Entrada de utilizador (LOGIN) rwho lastlog X Sada do utilizador (LOGOUT) utmp wtmp FICHEIROS Comandos de consulta users w who last ac lastlog Exemplo de resultado do comando last: [root@server ~]# last -5 andre pts/0 beavis.dei.isep. Wed Nov 12 16:35 still logged in dei pts/0 beavis.dei.isep. Wed Nov 12 11:46 - 14:12 (02:25) i090763 pts/4 srv3.dei.isep.ip Wed Nov 12 09:36 - 09:54 (00:17) i080751 pts/3 srv3.dei.isep.ip Wed Nov 12 08:52 - 10:02 (01:10) i040478 pts/2 srv2.dei.isep.ip Wed Nov 12 08:51 - 10:03 (01:11) wtmp begins Sat Nov 1 12:59:40 2004 73 Cpias de arquivo e segurana Em vrios contextos h a necessidade de copiar para sistemas de armazenamento externo os dados residentes nos servidores (sistema de ficheiros). Arquivo quando existe um volume significativo de informao que deixou de ser necessria para o funcionamento actual do sistema, mas tem de ser preservada, essa informao pode ser copiada para dispositivos externos e posteriormente removida do sistema libertando espao. Segurana qualquer sistema est sujeito a perdas de dados, por erro dos utilizadores, por falha do hardware/software ou por aces maliciosas. Cabe ao administrador manter um calendrio de cpias de segurana adequado para que estas estejam suficientemente actualizadas para resolver as situaes de perdas de dados que venham a ocorrer no sistema. Sob o ponto de vista de segurana os sistemas redundantes podem ser considerados uma alternativa a esta metodologia. No so mais do que o levar deste conceito ao extremo em que as actualizaes das cpias so realizadas de forma totalmente sincronizada com as alteraes que ocorrem no original. 74 Tipos de cpias de segurana Cpias integrais de discos ou parties uma cpia deste tipo permite recuperar de forma expedita um sistema totalmente destrudo (recuperao usando novo hardware), consiste na cpia integral, do disco ou da partio sector a sector, como tal independente dos tipos de sistemas de ficheiros que residem no disco, tudo, incluindo a tabela de parties copiado. Tem contudo alguns inconvenientes importantes: exige que o disco no esteja a ser usado quando se realiza o backup e exige que o disco para o qual se realiza a recuperao (restore) seja exactamente igual ao disco original. Em Unix o comando dd permite realizar cpias deste tipo. Cpias integrais de sistemas de ficheiros este tipo de cpia percorre todas as entradas do sistema de ficheiros de uma partio e copia-as, bem como todas as propriedades de cada objecto. aconselhvel que o sistema de ficheiros no esteja a ser usado ou pelo menos esteja a ser pouco usado no momento da cpia. Em Linux os comandos dump e restore permitem realizar este tipo de cpias i-node a i- node, por esta razo o sistema de ficheiros deve estar desmontado, estes comandos no trabalham objecto a objecto. O comando tar tambm permite realizar este tipo de cpias, mas trabalha directamente com objectos (ficheiros, directrios, etc). 75 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. Sistema de ficheiros Estado A Cpia integral A Sistema de ficheiros Estado B Sistema de ficheiros Estado C Cpia incremental B Cpia incremental C Sistema de ficheiros Estado A Sistema de ficheiros Estado B Sistema de ficheiros Estado C BACKUP RESTORE 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. 76 Cpias incrementais comandos Linux A sucesso de cpias incrementais no deve ser prolongada indefinidamente pois acabaria por tornar a operao de restauro muito morosa. Uma prtica corrente realizar uma cpia integral todos os fins de semana (quando o sistema est a ser menos usado) e realizar cpias incrementais diariamente. Em Linux, tanto os comandos dump/restore como o comando tar suportam cpias incrementais. Exemplo com dump do sistema de ficheiros /home para a unidade de fita /dev/nst0. Cpia integral e 1 cpia incremental. O nmero (level) indica se se trata de uma cpia integral (level=0) ou se cpias incrementais (level=1,2,): dump 0uf /dev/nst0 /home dump 1uf /dev/nst0 /home Exemplo com tar do sistema de ficheiros /usr para ficheiros de arquivo. Cpia integral e 1 cpia incremental. O primeiro comando detecta que o ficheiro /var/log/usr.snar no existe e por essa razo assume que se trata da cpia integral, os comandos seguintes apenas vo guardar as alteraes no sistema de ficcheiros relativas ao estado que est registado no /var/log/usr.snar: tar --create --file=archive.1.tar --listed-incremental=/var/log/usr.snar /usr tar --create --file=archive.2.tar --listed-incremental=/var/log/usr.snar /usr 77 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. 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. 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 78 Sistemas de suporte para as cpias Tradicionalmente as cpias de arquivo e segurana usam como suporte unidades de fita de acesso sequencial que se caracterizam por um baixo custo para grandes capacidades. Tratando-se de meios amovveis tem a vantagem de proporcionar uma capacidade ilimitada. Note-se que a necessidade de troca manual das unidades de fita um inconveniente importante, a menos claro que se disponha de um sistema robotizado para esse efeito. A operao com unidades de fita tem algumas particularidades, mas tanto os comandos dump/restore como o comando tar suportam unidades de fita. Actualmente, em muitas aplicaes, torna-se praticvel a utilizao de discos que actualmente tm custos relativamente baixos e capacidades muito elevadas. Seja qual for o tipo de suporte, h uma necessidade absoluta de garantir a separao fsica entre o sistema original e as respectivas cpias. As cpias do sistema contm frequentemente informao reservada, este facto deve estar presente quando se faz o seu manuseamento. Por exemplo, quando as cpias so realizadas atravs de uma rede. 79 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: Backup Server (Amanda server) (Amanda client) Server 1 (Amanda client) Server 2 (Amanda client) Server 3 (Amanda client)