Administracao e Seguranca Em Sistemas Linux

October 26, 2018 | Author: Erisson Marques | Category: Linux, Booting, Gnu, Kernel (Operating System), Shell (Computing)
Share Embed Donate


Short Description

Download Administracao e Seguranca Em Sistemas Linux...

Description

Administração e Segurança em Sistemas GNU/Linux

- Instalação e Atualização de Sistemas GNU/Linux -> Debian Debian é a distribuição com a maior comunidade comunidade de mantenedores/desenvolve mantenedores/desenvolvedores dores voltada exclusivamente exclusivamente para software livre. Aspectos gerais da plataforma GNU/Linux Conceitos fundamentais sobre o Linux Tipos e características de shells Tipos de sistema de arquivos do Linux Instalação do Debian GNU/Linux Customizando, compilando e instalando um novo kernel em seu servidor  Configurando e instalando um Boot Manager  - Uso do Shell Reúne os principais e mais usados comandos de qualquer Sistema Operacional Linux Comandos para buscar e visualizar documentação documentação no Linux Informações sobre o Sistema Comandos administrativos administrativos Trabalhando com o ambiente de trabalho do usuário no shell (alias e variáveis) Introdução a programação em Shell Script Trabalhando com modos de inicialização – processo init e runlevels - Configurando e gerenciando hardware Identificação de discos e partições em sistemas GNU/Linux Recomendações Recomendações para configuração configuração e armazenamento armazenamento de dados Gerenciando hardware (disquete, cd-rom, pendrive e partições) Configuração de partições Conhecendo os módulos de componentes da CPU Configuração de dispositivo Wireless LAN Configurando uma rede Wireless no Linux - Criando e manipulando texto com o Editor VI É um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo,  possui sistema de auto-correção, auto-identificação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais... Modo de inserção e de comandos Copiando e colando textos no vi (utilizando o mouse) Usando o modo visual do vi Subcomandos para localização de texto Opções para substituição de textos - Criando e gerenciando contas de usuário e grupos Conhecimentos para um bom gerenciamento de contas de usuário. Administração Administração de usuários Administração Administração de grupos Trabalhando com a senha em grupos Criando quotas quotas para usuários usuários e grupos - Permissões de acesso a recursos, arquivos, pastas e dispositivos do Sistema  Nesta etapa o participante irá compreender e manipular as permissões de acesso a recursos,arquivos, pastas e dispositivos do Sistema. Tipos de permissões Definindo permissões para dono, grupo, outros usuários e todos os usuários www.clubedohacker.com.br 

1

Administração e Segurança em Sistemas GNU/Linux

SUIDBIT SGIDBIT STICKYBIT - Manipulação de pacotes Instalação de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes Procedimentos de backup Empacotamento e Compressão de arquivos Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window Configurando o X Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest Gerenciadores de login Instalação de Ambientes Gráficos Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME

- Serviços básicos de rede Configurando a rede Procedimento de check-list dos serviços de rede Telnet x SSH Aplicando regra de acesso a servidores no sistema: TCPWrappers Agendando tarefas Trabalhando com servidor de sincronização de horário – NTP Gerenciando impressão no sistema - Clientes / Estações de trabalho GNU/Linux Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux.. Compartilhamento Compartilhamento de arquivos em rede Linux Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS Redes Windows x Redes Linux Instalação do Samba Configurando o Samba Compartilhando Compartilhando uma estação GNU/Linux com uma estação Windows Configurando um PDC com Samba Informações importantes O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional,  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux mais também para outros sistemas Like Unix;  Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade de mantenedores/desenvolvedores mantenedores/desenvolvedores voltada exclusivamente para software livre. www.clubedohacker.com.br 

2

Administração e Segurança em Sistemas GNU/Linux

SUIDBIT SGIDBIT STICKYBIT - Manipulação de pacotes Instalação de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes Procedimentos de backup Empacotamento e Compressão de arquivos Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window Configurando o X Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest Gerenciadores de login Instalação de Ambientes Gráficos Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME

- Serviços básicos de rede Configurando a rede Procedimento de check-list dos serviços de rede Telnet x SSH Aplicando regra de acesso a servidores no sistema: TCPWrappers Agendando tarefas Trabalhando com servidor de sincronização de horário – NTP Gerenciando impressão no sistema - Clientes / Estações de trabalho GNU/Linux Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux.. Compartilhamento Compartilhamento de arquivos em rede Linux Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS Redes Windows x Redes Linux Instalação do Samba Configurando o Samba Compartilhando Compartilhando uma estação GNU/Linux com uma estação Windows Configurando um PDC com Samba Informações importantes O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional,  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux mais também para outros sistemas Like Unix;  Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade de mantenedores/desenvolvedores mantenedores/desenvolvedores voltada exclusivamente para software livre. www.clubedohacker.com.br 

2

Administração e Segurança em Sistemas GNU/Linux

De eb b ia n G NU /Li n nu ux

www.clubedohacker.com.br 

3

Administração e Segurança em Sistemas GNU/Linux Aspectos gerais da plataforma GNU/Linux Projeto Debian

O Projeto Debian é um grupo mundial de voluntários que se esforçam para  produzir um sistema operacional livre que é composto inteiramente por software livre. O produto principal do projeto é a distribuição Debian GNU/Linux, que inclui o kernel do sistema operacional Linux e centenas de aplicações pré-empacotadas. Vários tipos de  processadores são suportados, incluindo o Intel i386 e superior, Alpha, ARM, Motorola 68k, MIPS, PowerPC, Sparc, e UltraSparc, HP PA-RISC, IBM S/390 e Hitachi SuperH. O Projeto Debian foi oficialmente fundado por Ian Murdock em 16 de Agosto de 1993, com a pretensão de que o Debian fosse uma distribuição criada abertamente, no mesmo espírito do Linux e do GNU. Naquele tempo, o conceito de uma "distribuição" de Linux era novo. A criação do Debian teve o apoio do projeto GNU da FSF ( Free Software Foundation ou Fundação para o Software Livre) durante um ano (Novembro de 1994 a Novembro de 1995). A distribuição Debian pretendia ser cuidadosamente e conscientemente criada em conjunto e ser mantida e suportada com similar cuidado. Isso começou com um  pequeno e forte grupo de hackers do Software Livre e gradualmente cresceu se tornando uma grande e bem organizada comunidade de desenvolvedores e usuários. A pronúncia oficial de Debian é 'débian'. O nome vem do nome do criador do Debian, Ian Murdock, e sua esposa, Debra. Debra + Ian = Debian

Ian Murdock 

Detalhes da distribuição Debian:    

É a única distribuição que é aberta para que todo desenvolvedor e usuário  possam contribuir com seu trabalho; É o único distribuidor significativo de Linux que não é uma entidade comercial; É o único grande projeto com uma constituição, um contrato social e documentos com políticas para organizar o projeto; A Debian também é a única distribuição que é micro-empacotada, usando informações detalhadas de dependência de pacotes para garantir a consistência do sistema em atualizações.

Para alcançar e manter um alto padrão de qualidade, o Debian adotou um rico conjunto de políticas e procedimentos para empacotamento e distribuição de software. www.clubedohacker.com.br  4

Administração e Segurança em Sistemas GNU/Linux

Backups são automatizados através de ferramentas e a documentação detalha todos os elementos chaves do Debian de uma forma aberta e visível. O Projeto de Documentação do Debian pode ser encontrado neste endereço: http://www.debian.org/doc/index.pt.html

.

Projeto GNU

O Projeto GNU foi iniciado em 1984 para desenvolver um sistema operacional completo, compatível com o Unix, que fosse software livre: o sistema GNU. (GNU é um acrônimo recursivo para “GNU Não é Unix” e é pronunciado como “guh-noo.”) Variantes do sistema operacional GNU, que incluem o kernel Linux, são hoje amplamente utilizadas; embora estes sistemas sejam frequentemente chamados de “Linux”, eles seriam mais corretamente chamados de sistemas GNU/Linux. Se necessário obter mais informações, este é o endereço: http://www.gnu.org/home.pt.html

Quem é quem no GNU?

Este endereço está reservado para o nome de quem escreve e escreveu software livre para o Projeto GNU: http://www.gnu.org/people/people.pt.html

Richard M. Stallman, criador e líder do projeto GNU.

O Linux

O que é o Linux? Linux é um sistema operacional Unix-like, isso quer dizer que o Linux foi desenvolvido de acordo com a filosofia Unix. Esse trabalho de desenvolvimento foi www.clubedohacker.com.br  5

Administração e Segurança em Sistemas GNU/Linux

feito por Linus Torvalds, do Departamento de Ciência da Computação da Universidade de Helsinki, Finlândia, junto com um grupo de hackers pela Internet. O Linux segue o  padrão POSIX, que é usado em estações UNIX. Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno sistema UNIX desenvolvido por  Andrew Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um Minix melhor que o Minix". E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte mensagem para comp.os.minix: Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios "device drivers" ? Você está sem um bom projeto e esta morrendo por colocar as mãos em um S.O. no qual você possa modificar de acordo com suas necessidades ? Você está achando frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para obter programas que trabalhem correto ? Então esta mensagem pode ser exatamente para você. Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compressão, etc. nele.

Linus Benedictus Torvalds

  No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o Sistema Operacional que é hoje, uma grande maravilha. Ele inclui proteção entre processos, carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, multitarefa real, suporte a UNICODE, bibliotecas compartilhadas, memória virtual, etc.

Conceitos fundamentais sobre o Linux

O Linux como qualquer sistema baseado em Unix apresenta uma lógica de utilização que preserva a segurança do sistema. Esse é um dos aspectos fundamentais que o tem tornado o sistema operativo com maior crescimento no mundo. www.clubedohacker.com.br 

6

Administração e Segurança em Sistemas GNU/Linux

Assim, na lógica nativa do Linux existe uma divisão entre o administrador da máquina (ou superusuário) e o usuário sem privilégios.  No Linux um usuário pode ser identificado de três formas diferentes: Login do usuário - é o nome que o usuário tem no sistema e que lhe serve para

a ele ter acesso quando introduzido corretamente com uma password. Nome do usuário - é o nome de batismo que o usuário tem. Por exemplo,

“Linus Torvalds”. Este nome é raramente utilizado, serve somente para acompanhar a leitura do nome completo do usuário. ID do usuário - (User ID) é um número atribuído ao utilizador no momento da

criação da sua conta de sistema. É utilizado geralmente pelas aplicações para se referirem a um usuário. Por norma, o root tem o ID 0 (zero) e um usuário pode ter, por  exemplo, o número 1001 como ID. O superusuário ou root é o administrador do sistema. Apenas ele poderá executar  alguns comandos e tarefas a que o usuário normal não tem acesso. Assim foi definido com o objetivo de um usuário não poder comprometer a estabilidade do sistema realizando operações que o coloque em perigo. O superusuário tem uma área de trabalho definida a partir da raiz do sistema: /root. O usuário é tipicamente uma pessoa que trabalhará regularmente no sistema, tendo uma área própria que se encontra no diretório

/home/[nome do usuário] .

Um usuário normal não consegue alterar, apagar, sobrescrever,... arquivos de sistema. Nenhum programa executado pelo mesmo consegue. Assim sendo, ninguém se preocupa em fazer vírus para o Linux, pois o vírus não poderá  propagar-se devido às permissões sobre os arquivos lhe ser negado. Todos os arquivos criados pelo usuário serão guardados na sua própria área e outros usuários não têm acesso, a não ser que o superusuário o defina. A estrutura de diretórios no Linux A raiz do Linux fica no diretório cada um tem uma descrição.

/

e dentro deste diretório existem vários outros,

A estrutura de diretórios no Linux é basicamente dividida assim: Diretório

/bin

Descrição

Arquivos executáveis que são usados pelo sistema freqüentemente. Aqui encontramos por exemplo os interpretadores de comandos ( bash, ash, www.clubedohacker.com.br 

7

Administração e Segurança em Sistemas GNU/Linux Diretório

Descrição

etc), o df, chmod, date, comandos essenciais :)

kill , dmesg, pwd, ls

e muito mais. São os

/boot

 Neste diretório ficam os arquivos de boot, como os mapas de boot e as imagens do kernel.

/dev

Este é um diretório que carrega consigo todos os arquivos-dispositivos.

/etc

Arquivos de configuração do Linux. Este é o diretório que carrega todas as configurações dos principais (senão todos) os programas do Linux. Ele contém por exemplo os arquivos de usuários e senhas, arquivos de inicialização, configurações de rede e mais uma bolada de configuração  pra deixar qualquer um doido.

/home

Diretório dos usuários. Cada usuário tem um diretório dentro deste diretório :)

/lib

Algumas bibliotecas essenciais para o funcionamento do Linux e também os módulos do kernel.

/proc

Este é um diretório especial, ele contém informações que o kernel gera e algumas configurações também.

/root

É um diretório HOME . Só que aqui é o do usuário administrador ( root ).

/sbin

Executáveis que têm funções administrativas, geralmente usados pelo root . Aqui se encontram programas para verificar e criar sistemas de arquivos, optimizar o uso do HD, configurar dispositivos, gerenciar  módulos do kernel, etc.

/tmp

Diretório temporário. Neste diretório, vários utlitários criam arquivos que só serão usados por um tempinho e depois descartados. Não há nenhuma informação importante aqui, pois pode ser acessado por qualquer usuário.

/usr 

Um dos maiores diretórios, este contém as bibliotecas e arquivos gerais dos vários programas instalados no sistema. Sua estrutura é bem parecida com a raiz em sí. Ele também tem um lib, bin, sbin e por aí vai.

/var 

Informações variáveis que estão sempre em constante mudança, como arquivos de logs, de travas, informações, e-mails do sistema, etc.

www.clubedohacker.com.br 

8

Administração e Segurança em Sistemas GNU/Linux Tipos e características de shells

O shell é o programa que permite a interação do usuário com o sistema, em modo texto. Em UNIX/Linux existem vários tipos de shell, com funcionalidades diversas. Os principais são: •

Bourne shell (sh) - o mais antigo, está presente em todos os sistemas, pois é

necessário para diversas operações administrativas. •

C shell (csh) - de sintaxe mais simples, é mais fácil de usar e por isso preferido

 pelos usuários iniciantes. •

Korn shell (ksh) - mistura características de ambos os anteriores.



BASH Shell (bash) - Bourne-Again Shell, é uma extensão do sh e utilizado

como padrão nas máquinas linux. Algumas características do shell no Linux: 

 No prompt do Linux, quando existe com o símbolo $, isto quer dizer que o login foi feito com um usuário normal. Se estiver logado com o root, ao invés do símbolo $, no final do prompt existirá o símbolo #.



 Nos nomes dos arquivos, os caracteres MAIÚSCULOS e minúsculos fazem a diferença. Isso quer dizer que os arquivos: PROGRAMA.tar.gz e  programa.tar.gz, são dois arquivos completamente diferentes. Assim como: ls é o comando na escrita certa e LS é um comando que não existe.



  No Linux, não existem extensões .EXE,

.COM

especial para programas

executáveis. Ao invés disso, os arquivos têm permissão de executável ou não. 

Além de arquivos comuns, no Linux existem os chamados links simbólicos, que são nada mais nada menos que uma espécie de atalhos.



O Linux é um sistema multitarefa, podendo ser acessado por vários consoles ao mesmo tempo, assim como pode ser rodado vários programas ao mesmo tempo. Para mudar o console do 1 a 6, utilize Alt-N, onde o N corresponde ao número do console. Exemplo: Alt-F1, Alt-F2, Alt-F3, Alt-F4, Alt-F5 e Alt-F6.



Depois de logado, se quiser sair, utilize o comando logout ou



exit,

ou o comando

ainda a combinação de teclas Ctrl-D.

Se algum programa estiver rodando no seu console, aperte as teclas Ctrl-Z para suspender esse programa e voltar para o prompt. Para voltar ao programa, utilize www.clubedohacker.com.br 

9

Administração e Segurança em Sistemas GNU/Linux

o comando

fg.

Para listar os programas suspendidos na sessão atual, utilize o

comando jobs. 

Um recurso muito interessante nas shells do Linux, é o tab completion. Com ele você pode completar comandos ou nomes de arquivos mais rapidamente sem  precisar digitar tudo. Para utilizar esse recurso, basta apenas digitar as primeiras letras do comando ou arquivo e apertar a tecla Tab. O Linux irá completar o comando ou arquivo. Caso haja mais de um arquivo começando com as letras digitadas, apertando Tab mais uma vez irão ser exibidas todas as opções. Referência: The Linux Manual

Tipos de sistema de arquivos do Linux

Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que  permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Os sistemas de arquivos do GNU/Linux evoluem de forma constante, juntamente com o kernel e outros subsistemas. Muitas melhorias são introduzidas em todos os formatos de sistemas suportados pelo GNU/Linux, tornando os mesmos: mais seguros, rápidos e estáveis. O sistema de arquivos é independente do hardware e da BIOS. É por meio de um sistema de arquivos que ocorre a gravação e a recuperação dos dados em um dispositivo de armazenamento em um computador. O sistema de arquivos é que define o modo como os arquivos são estruturados, nomeados, acessados, utilizados, protegidos e manipulados pelo sistema operacional. Os arquivos são armazenados, no sistema de arquivos, em diretórios que são uma subdivisão lógica e que funcionam como repositórios de arquivos ou de outros diretórios. O conjunto de diretórios e arquivos forma um sistema de arquivos raiz, ou "árvore" de diretórios, a mesma deve seguir um padrão estabelecido. O sistema de arquivos é hierárquico e admite que diversos dispositivos sejam mapeados e utilizados a  partir do diretório raiz. Para o usuário toda essa estrutura é vista de forma única. A característica de recuperação implementada em sistemas de arquivos é chamada de "journaling" (registro de ações). Sistemas que não possuem "journal" são mais suscetíveis às falhas e perdas de dados. Além disso, em caso de parada do sistema ou falta de energia, o tempo necessário para retomar as operações é elevado, já que uma www.clubedohacker.com.br  10

Administração e Segurança em Sistemas GNU/Linux

verificação de integridade é realizada em cada arquivo do sistema. Nas partições que  possuem milhares de arquivos essa verificação pode levar horas. Os sistemas de arquivos com suporte a "journal" são recomendados por  aumentarem a disponibilidade (High Availability - HA) em servidores GNU/Linux. A alta disponibilidade é medida pelo tempo em que o servidor se encontra fora de serviço  por falhas no sistema operacional ou no hardware. Quanto menor o tempo em que o sistema estiver indisponível, maior é o índice de disponibilidade, medido em uma escala de casas decimais que tende a se aproximar  de 100%. Características de alguns sistemas de arquivos: EXT3 ⇒

O sistema de arquivos EXT3 é uma versão do EXT2;



O ext3 tem as mesmas características do EXT2, mas com suporte journaling;



A evolução tornou o EXT3 um sistema de arquivos muito estável e robusto;



Podemos converter um sistema de arquivos EXT2 para EXT3, adicionado suporte a journaling, e também podemos converter um sistema de arquivos EXT3 para EXT2, removendo o suporte a journaling. ReiserFS



O sistema de arquivos ReiserFS foi criado recentemente;



Atualmente quase todas as distribuições Linux o suportam;



Sua performance é muito boa, principalmente para um número muito grande de arquivos pequenos;



ReiserFS também possui suporte a journaling. JFS



O JFS (Journaling FileSystem) é um sistema de arquivos desenvolvido pela IBM, disponível em licença open-source, com o intuito de rodar nos "UNIXes" que a IBM vendia;



  No início o JFS sofreu uma perda de credibilidade devido a constantes instabilidades e bugs, caso este que atualmente encontra-se resolvido e assim muito estável. www.clubedohacker.com.br 

11

Administração e Segurança em Sistemas GNU/Linux ⇒

Extremamente rápido e permite trabalhar com uma quantia de dados muito superior aos demais sistemas de arquivos;



O sistema de arquivos JFS também usa a estrutura inode para armazenar a localização dos blocos de cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses inodes em uma árvore binária para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos inodes é feita conforme vai sendo necessário.



Além de possuir journal ele permite que as partições do sistema sejam redimensionadas sem que seja necessário desligar o computador; XFS



XFS é um sistema de arquivos muito rápido na gravação;



Desenvolvido

originalmente

pela

Silicon

Graphics

e

posteriormente

disponibilizado o código fonte; ⇒

Considerado um dos melhores sistemas de arquivos para banco de dados;



Possui journaling de metadados que vem com um robusto conjunto de funções e é otimizado para escalabilidade;



É recomendado usar este sistema de arquivos em sistemas rodando Linux com equipamento SCSI de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção;



Pelo fato de o XFS criar muitos caches de dados em uso na memória RAM,  programas mal desenhados podem perder uma grande quantidade de dados se o sistema for desligado sem aviso. LVM



LVM é um acrônimo para a expressão inglesa Logical Volume Management   para especificar um padrão de gerenciamento de partições em disco IDE/SCSI/FC;



Foi desenvolvido inicialmente pela IBM, e outras empresa e instituições, como: HP e a Open Group;



A implementação LVM cria um grande disco virtual, que pode inclusive ter  mais de um dispositivo de armazenamento , e divide em partições virtuais; www.clubedohacker.com.br 

12

Administração e Segurança em Sistemas GNU/Linux ⇒

A vantagem é permitir o redimensionamento das áreas de modo dinâmico, ou seja, com o sistema operacional sendo utilizado;



A desvantagem é que por ser um único disco virtual, a recuperação de dados em uma eventual pane no sistema de armazenamento é bastante prejudicada. Inode

Um inode é um identificador único que um arquivo recebe, nele contém uma lista com 12 blocos diretos de dados que o arquivo deve ter, se ele possui mais de 12  blocos, ele segue uma regra para gravar esses blocos no disco e poder achar mais tarde. Os dados do arquivo são armazenados em unidades chamadas 'blocos'. Estes   blocos podem ser numerados seqüencialmente. Um arquivo também tem um inode. Como os blocos, os inodes são numerados seqüencialmente, embora tenham uma seqüência diferente. Uma entrada de diretório consiste do nome do arquivo e um número de inode. O inode também armazena o local dos blocos de dados. * Os números dos blocos dos primeiros 12 blocos de dados estão armazenados diretamente no inode. Estes às vezes são chamados de blocos diretos. * O inode contém o número do bloco de um bloco indireto. Um bloco indireto contém os números de blocos de 256 blocos de dados adicionais. * O inode contém o número do bloco de um bloco duplamente indireto. Um bloco duplamente indireto contém os números de blocos de 256 blocos indiretos adicionais. * O inode contém o número do bloco de um bloco três vezes indireto. Um bloco três vezes indireto contém os números de blocos de 256 blocos duplamente indiretos adicionais. Referências: Guia Foca GNU/Linux – Discos e Partições http://focalinux.cipsga.org.br/guia/inic_interm/ch-disc.htm

Wikipédia http://pt.wikipedia.org/wiki/Sistema_de_arquivos

www.clubedohacker.com.br 

13

Administração e Segurança em Sistemas GNU/Linux Instalação do Debian Sarge   

Antes de iniciar o processo de instalação é necessário configurar a BIOS para que a inicialização do computador ocorra pelo drive de CD-ROM; Leia sempre e atentamente todas as telas do processo de instalação. Elas trazem informações importantes para a compreensão do processo; Insira o CD;

Logo na primeira tela do processo deverá ser feita a opção do tipo de instalação a ser realizada. Como estamos em um curso básico, você deve digitar: linux26, o mesmo é o modo de instalação automática. Obs: também é possível entrar com a palavra: expert26, que é o processo manual mas a orientação deste tipo de instalação não será repassada neste momento. 

www.clubedohacker.com.br 

14

Administração e Segurança em Sistemas GNU/Linux



Após digitar  linux26, pressione a tecla ENTER:

Obs: A tecla ENTER deverá ser pressionada sempre que desejar prosseguir.



O próximo passo é selecionar o idioma a ser usado, em seguida, pressione ENTER:

www.clubedohacker.com.br 

15

Administração e Segurança em Sistemas GNU/Linux



Selecione o layout do teclado:



Pressione ENTER:

www.clubedohacker.com.br 

16

Administração e Segurança em Sistemas GNU/Linux



Continuação da tela:



Continuação da tela:

www.clubedohacker.com.br 

17

Administração e Segurança em Sistemas GNU/Linux



Configuração automática da rede:



Quando não houver um servidor DHCP, será exibida a tela abaixo:

www.clubedohacker.com.br 

18

Administração e Segurança em Sistemas GNU/Linux





Selecione a opção continuar, pressione ENTER.

Confirme a opção: Configurar a rede manualmente. Pode ocorrer de você não   precisar ajustar esta máquina a uma rede de computadores, neste caso você seleciona Não configurara rede agora e logo em seguida será dado início ao  particionamento.

www.clubedohacker.com.br 

19

Administração e Segurança em Sistemas GNU/Linux



Digite o IP e prossiga a instalação:



Você digita a máscara da rede e prossiga a instalação:

www.clubedohacker.com.br 

20

Administração e Segurança em Sistemas GNU/Linux



Digite o gateway e prossiga a instalação:



Digite o nome de máquina e prossiga a instalação:

www.clubedohacker.com.br 

21

Administração e Segurança em Sistemas GNU/Linux



Para terminar de configurar a rede, digite o nome de domínio e prossiga a instalação. Será exibida a tela para inicial do particionador:



Tela para particionamento:

www.clubedohacker.com.br 

22

Administração e Segurança em Sistemas GNU/Linux



Selecione a opção: Apagar todo o disco.



Marque ESPAÇO LIVRE e prossiga:

www.clubedohacker.com.br 

23

Administração e Segurança em Sistemas GNU/Linux



Selecione Criar uma nova partição:



Digite o tamanho da partição 250MB:

www.clubedohacker.com.br 

24

Administração e Segurança em Sistemas GNU/Linux



Selecione como tipo de partição Primária:



Esta partição será criada no Início do espaço disponível:

www.clubedohacker.com.br 

25

Administração e Segurança em Sistemas GNU/Linux



Selecione ponto de montagem , pressione ENTER e em seguida selecione  /boot.

Obs: Tendo como referência a imagem abaixo, no kernel anterior era necessário criar  uma partição chamada /boot. Hoje em dia, com o kernel 2.6 não é mais necessário, o sistema já o cria automaticamente. O mesmo passará a existir dentro do diretório /.  Para esta aula, por favor selecione no ponto de montagem a opção  /boot:

www.clubedohacker.com.br 

26

Administração e Segurança em Sistemas GNU/Linux







A seguir confirme a opção Finalizar a configuração da partição:

Temos uma partição criada, a partição:  /boot. Neste momento realize os mesmos  passos e crie uma partição chamada  /  (Raiz). A mesma terá o tamanho de 400 MB. Teremos uma imagem semelhante à imagem abaixo:

www.clubedohacker.com.br 

27

Administração e Segurança em Sistemas GNU/Linux

 

 No Espaço Livre, teremos de criar algumas partições lógicas, sempre ao início do espaço disponível. As partições lógicas a serem criadas são: /usr 3.0 GB /home 3.1 GB



Após o término do particionamento, selecione Finalizar o particionamento e gravar as mudanças no disco:



Selecione a opção Sim, assim você estará permitindo que as mudanças na lista sejam gravadas nos discos. www.clubedohacker.com.br  28

Administração e Segurança em Sistemas GNU/Linux



Após a confirmação, será dado o início da Instalação do Sistema básico Debian.



O próximo passo é confirmar a instalação do carregador de inicialização GRUB.

www.clubedohacker.com.br 

29

Administração e Segurança em Sistemas GNU/Linux



Continuação da instalação do GRUB:



Continuação da instalação do GRUB:

www.clubedohacker.com.br 

30

Administração e Segurança em Sistemas GNU/Linux



Instalação finalizada remova a mídia de instalação e confirme a opção Continuar.



Abaixo, a tela de reinicialização da máquina, após isso o sistema passará a ser  iniciado a partir do disco rígido.

www.clubedohacker.com.br 

31

Administração e Segurança em Sistemas GNU/Linux



Após a reinicialização do sistema, será exibida a seguinte tela:



Confirme a opção OK.



Em seguida, selecione a opção Sim para iniciar a configuração do fuso horário:

www.clubedohacker.com.br 

32

Administração e Segurança em Sistemas GNU/Linux



Selecione seu fuso horário:



Selecione a área de seu fuso horário:

www.clubedohacker.com.br 

33

Administração e Segurança em Sistemas GNU/Linux



Selecione a cidade ou fuso horário:



A seguir, digite uma senha, a mesma será a senha de root (administrador):

www.clubedohacker.com.br 

34

Administração e Segurança em Sistemas GNU/Linux



Digite um nome para a conta de usuário a ser usada para atividades não administrativas:



Informe uma senha para o usuário que está sendo criado:

www.clubedohacker.com.br 

35

Administração e Segurança em Sistemas GNU/Linux



Após digitar a senha, será necessário inserir o CD 2 e confirmar  OK.



Logo a seguir, o sistema irá ler as informações do CD2, como mostra a imagem abaixo:

www.clubedohacker.com.br 

36

Administração e Segurança em Sistemas GNU/Linux

 



Após o término da leitura do CD2, será o momento de retira-lo e inserir o CD3. Após inserir o CD3, confirme a opção SIM.

Também será feita a leitura das informações do CD3, logo a seguir teremos a seguinte tela:

www.clubedohacker.com.br 

37

Administração e Segurança em Sistemas GNU/Linux



 

 Neste momento, o sistema já possui as informações até o CD3. Os três cds são necessários para a instalação do sistema. Na tela acima, que será exibida, você confirma a opção NÃO. Se houver a necessidade de adicionar a leitura de outro(s) cd(s), selecione a opção SIM. Ao término da leitura da mídia, selecione NÃO. Será exibida a tela de login. Você terá de entrar com o usuário e a senha:

---------------------------------------------------------------------------------------------------------Customizando, compilando e instalando um kernel Linux em seu servidor

O Kernel representa a camada mais baixa de interface com o Hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. É no kernel que estão definidas funções para operação com periféricos (mouse, discos, impressoras, interface serial/interface paralela), gerenciamento de memória, entre outros. O kernel é um conjunto de programas que fornece para os programas de usuário uma interface para utilizar os recursos do sistema.

www.clubedohacker.com.br 

38

Administração e Segurança em Sistemas GNU/Linux

Antes de tudo: 

Quais são os requerimentos mínimos de hardware?

Varia de acordo com a arquitetura e a versão do kernel. Mas tenha em mente o seguinte para ter um sistema mínimo funcional: 16 MB de RAM (memória física), 100 MHz de clock de processamento e 100 MB de espaço em disco (memória virtual). 

Qual é o processador? Qual é o clock? Qual é a arquitetura?

# cat /proc/cpuinfo # arch



Qual a quantidade de memória?

# cat /proc/meminfo

Baixando o pacote Baixe o pacote que contém o código fonte mais atualizado do kernel Linux da série 2.6 em http://www.kernel.org. Fazendo o download com o comando wget: # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.tar.bz2

Como superusuário (faça o login no sistema com o usuário root), descompacte e desempacote o arquivo assim: # tar xvjf linux-2.6.x.tar.bz2

-C

/usr/src

Crie o link simbólico /usr/src/linux apontando para /usr/src/linux-2.6.x assim: # ln -sf /usr/src/linux-2.6.x /usr/src/linux

Acesse /usr/src/linux assim: # cd /usr/src/linux

Este será o diretório raiz de compilação, ou seja, o diretório base para os passos seguintes. Caso já exista uma compilação anterior, execute o comando 'make mrproper'  para retornar ao padrão os arquivos de configuração do kernel. # make mrproper

www.clubedohacker.com.br 

39

Administração e Segurança em Sistemas GNU/Linux

Edite o arquivo Makefile para personalizar a versão de sua compilação. Altere a variável EXTRAVERSION na quarta linha para um valor que deseje como por exemplo -i386-mwsf-1. Salve este arquivo. VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = x EXTRAVERSION = -i386-mwsf-1 Quais são os Softwares que preciso para iniciar a compilação? O arquivo /usr/src/linux/Documentation/Changes contém uma lista do software mínimo que deve estar corretamente instalado na máquina antes de iniciar a compilação.   Não inicie a compilação do kernel sem antes obtiver a certeza de que o mínimo de software está instalado. Existe um script que pode auxiliar nisto. O script /usr/src/linux/scripts/ver_linux imprime na tela uma lista do software mínimo e suas respectivas versões que estão instalados na máquina. Compare esta lista com a lista oferecida pelo documento /usr/src/linux/Documentation/Changes. Para executar este script, faça assim: # sh scripts/ver_linux Será obrigatório ter os itens da lista instalados, apenas aqueles que o kernel que você está configurando suportar. O arquivo /usr/src/linux/.config armazena a configuração do kernel. Basicamente, este arquivo descreve o que deverá ser incorporado ao kernel (y) e o que deverá ser criado como módulo (m). Incorpore ao kernel apenas o necessário. O restante necessário, configure como módulo. O que não for necessário, retire. Por exemplo, se você não tem um determinado dispositivo em sua máquina, retire da configuração o suporte. Isto possibilita uma maior performance por parte do sistema. O kernel Linux pode ser modular, ou seja, o suporte básico fica incorporado ao kernel constantemente e o suporte a outros dispositivos, como por exemplo, uma placa de som, pode ser configurado como módulo. Assim sendo, este módulo da placa de som é carregado na memória e plugado ao kernel apenas quando for necessário, ou seja,

www.clubedohacker.com.br 

40

Administração e Segurança em Sistemas GNU/Linux

apenas quando o usuário estiver utilizando som no sistema. Isto otimiza o sistema, utilizando seus recursos sabiamente. Existe uma configuração padrão para cada tipo de arquitetura de hardware no diretório /usr/src/linux/arch. O nome do arquivo é defconfig. Supondo que sua arquitetura de hardware seja i386, faça uma cópia do arquivo defconfig para o diretório raiz de compilação com o nome .config: # cp -f /usr/src/linux/arch/i386/defconfig /usr/src/linux/.config

Em alguns casos de arquitetura, pode existir um diretório configs contendo configurações específicas e testadas para cada modelo de máquina. Sendo isso ocorrer, ao iniciar a ferramenta de configuração, já existirá alguns itens marcados. Não será necessário iniciar do zero uma configuração. Execute a ferramenta de configuração assim: # make menuconfig ou # make xconfig (modo gráfico)

Observe a existência de uma configuração já pré-definida, se deve ao fato de você ter copiado o arquivo defconfig para o diretório raiz de compilação com o nome de .config. Algumas dicas: 

Marque com * itens que serão incorporados ao arquivo do kernel como por  exemplo, sistemas de arquivos que você utiliza ou vai utilizar em suas partições.



Marque com m itens que serão criados como módulo, ou seja, serão plugados ao kernel apenas quando houver necessidade de uso.

Esta é uma etapa demorada e deve ser feito com atenção. Acompanhe o help de cada item para saber o que está incluindo ou não. Após a configuração do kernel, vamos compilá-lo realmente. Para isto, execute o comando: # make

Este passo pode levar minutos ou de um dia para o outro. Depende do poder da máquina aonde você vai compilar. www.clubedohacker.com.br 

41

Administração e Segurança em Sistemas GNU/Linux

Após a compilação do kernel, vamos instalar os módulos com o seguinte comando: # make modules_install

Vamos copiar o kernel (bzImage) para o diretório /boot. O arquivo está no diretório de acordo com a arquitetura que você estiver utilizando. Se você compilou o kernel em um PC, o que é mais comum, então execute o comando para copiar: # cp /usr/src/linux/arch/i386/boot/bzImage 2.6.x-i386-mwsf-1

/boot/vmlinuz-

 Nomeie os arquivos de acordo com a versão do kernel que está compilando e de acordo com a arquitetura de hardware. Agora vamos copiar o arquivo System.map para /boot: # cp /usr/src/linux/System.map /boot/System.map-2.6.x-i386mwsf-1

Criando um link simbólico para System.map: # ln -sf /boot/System.map-2.6.x-i386-mwsf-1 /boot/System.map

Agora vamos copiar o .config para /boot: # cp /usr/src/linux/.config

/boot/config-2.6.x-i386-mwsf-1

Vamos criar um arquivo initrd assim: # mkinitrd -o /boot/initrd-2.6.x-i386-mwsf-1.img

2.6.x

A opção (-o arquivo) diz onde salvar o arquivo initrd gerado. A próxima opção de parâmetro é a versão do kernel que você compilou. O initrd é utilizado mais para kernel's genéricos que acompanham as distribuições Linux. As distribuições são lançadas com kernel's genéricos para suportar  o maior número de hardware possível. Como o kernel novo foi instalado como um pacote Debian, é uma boa hora pra usar mais uma facilidade da Debian: update-grub (se você ainda usa lilo, é uma boa hora pra mudar :). Instale o grub com: # grub-install /dev/hda

www.clubedohacker.com.br 

42

Administração e Segurança em Sistemas GNU/Linux

Se for instalá-lo na MBR, isso cria um diretório /boot/grub. Depois disso, é só rodar "update-grub" que ele gera um /boot/grub/menu.lst pra você. Se você já possui um menu.lst, faça o backup e remova-o, a não ser que você tenha muitas modificações nele. Edite o menu.lst, altere configurações como: # kopt=root=/dev/hda3 ro # groot=(hd0,0)

De acordo com seu sistema está configurado. Note que as linhas devem   permanecer comentadas ("#" no começo da linha), essas são meta-configurações. Depois de acertar isso, rode update-grub de novo e... Ele gera as entradas no menu do grub automaticamente, a partir das imagens de kernel instaladas e das metaconfigurações que você fez. Reinicie o Sistema Configurando e instalando um Boot Manager

É um programa que gerencia as partições que serão inicializadas em um sistema computacional. As versões atuais deste programa são instaladas no Setor de Boot Mestre (MBR - Master Boot Record) do disco rígido, fazendo com que um menu interativo seja apresentado toda a vez em que você inicializa o micro, perguntando ao usuário que partição ele deseja para boot. Se existir sistemas operacionais diferentes instalados em partições separadas, conseqüentemente terá de escolher qual sistema operacional o micro carregará em memória. Iremos, portanto, configurar o nosso boot loader (responsável por carregar o sistema) para que o kernel seja chamado na inicialização, juntamente com o atual. LILO (Linux Loader)

É um aplicativo responsável pela carga (boot) do sistema operacional na máquina, sendo que você pode trabalhar com ele tanto para discos IDE ou SCSI. Ele é considerado o gerenciador de boot padrão dos sistemas Linux. Instalando o LILO: # apt-get install lilo

www.clubedohacker.com.br 

43

Administração e Segurança em Sistemas GNU/Linux

Editando seu arquivo de configuração: # nano /etc/lilo.conf

Após terminar de instalar, execute o liloconfig. Editando o seu arquivo de configuração: # nano /etc/lilo.conf

Adicione as seguintes linhas ao final do arquivo: -------------------------------------------------------------------------------------------------------image=/boot/[caminho da imagem gerada] label=”Novo Kernel” initrd=/boot/initrd-2.6.x-i386-mwsf-1.img read-only

-------------------------------------------------------------------------------------------------------Para que as alterações sejam lidas pelo sistema, precisamos dar o comando lilo: # lilo

GRUB

GRUB (GRant Unified Bootloader) é um outro gerenciador de boot, desenvolvido pelo projeto GNU, também muito utilizado pelos sistemas Linux. Assim como o Lilo, o Grub possui um arquivo centralizado para configurar o menu utilizado por ele. Vamos editar este no arquivo: # nano /boot/grub/menu.lst

Adicione as seguintes linhas ao final do arquivo: -------------------------------------------------------------------------------------------------------Title “Novo Kernel”

www.clubedohacker.com.br 

44

Administração e Segurança em Sistemas GNU/Linux root (hd0,0) kernel /boot/vmlinuz-2.6.x-i386-mwsf-1 initrd /boot//initrd-2.6.x-i386-mwsf-1.img root=/dev/hdx1 ro savedefault boot

-------------------------------------------------------------------------------------------------------Depois de alterar o arquivo, precisamos atualizar o GRUB na MBR: # grub-install /dev/hdx

Após a atualização, reinicie o sistema.

www.clubedohacker.com.br 

45

Administração e Segurança em Sistemas GNU/Linux

Uso do Shell SHELL

www.clubedohacker.com.br 

Sistema Operacional GNU/Linux

46

Administração e Segurança em Sistemas GNU/Linux Usando o Shell

Qual é seu shell? # echo $SHELL

Abrindo uma nova sessão para um usuário. Esta nova sessão assume o perfil do usuário, com todas as características associadas a ele: # login

Tem como função desconectar um usuário de uma determina sessão: # logout

O objetivo é encerrar uma sessão de trabalho: # exit

Desligar: # halt # shutdown -h now # shutdown 18:00 # shutdown -h 10 # init 0 # shutdown





Reiniciar: # reboot # shutdown -r now # shutdown -r 15 now # init 6

Exibe a quantidade de tempo desde a última reinicialização do sistema: # uptime

Página de manual e de informações sobre os comandos: # man shutdown

ou # info shutdown

Processos em tempo real: # top

Processos em execução no sistema: # ps aux

www.clubedohacker.com.br 

47

Administração e Segurança em Sistemas GNU/Linux

Matando um processo: # kill -15 pid

Modificar data e hora do sistema: # date MMDDHHMMYY

Atualizar a hora da bios de acordo com a hora do S.O: # hwclock -w

Arquitetura de máquina: # arch

Mostra o diretório corrente: # pwd

Comando que muda um subdiretório corrente a partir do diretório atual: # cd [diretório] # cd /root # cd -

(volta ao último diretório acessado)

(acessa o diretório anterior na árvore de diretórios)

# cd ..

Este comando acima mudará o diretório atual de onde o usuário está. Há também algumas abreviações de diretórios no Linux para facilitar a identificação, estes são: Abreviação . (ponto) .. (dois pontos) ~ (til) / (barra) - (hífen)

Significado Diretório atual Diretório anterior  Diretório HOME do usuário Diretório Raiz Último diretório

Listar diretório: /# ls /# ls --color

Parâmetro Significado -l Lista os arquivos em formato detalhado. -a Lista os arquivos ocultos (que começam com um .) -h Exibe o tamanho num formato legível (combine com -l) -R Lista também os subdiretórios encontrados Mostra o conteúdo detalhado do diretório: # ls -lah

www.clubedohacker.com.br 

48

Administração e Segurança em Sistemas GNU/Linux # ls –lah [ diretório]

Mostra os arquivos no formato longo em ordem inversa de data: #ls –ltr #ls –ltr [ diretório] l = longo t = date r = inversa

Criar novo diretório: # mkdir [ diretório] # mkdir free

Remover diretório vazio: # rmdir [diretório]

Remover um diretório e todo o seu conteúdo (cuidado com este comando): # rm –rf [ diretório] # rm –rf /

( Não faça isso! )

Mostra o tamanho do diretório em Megabytes # du -msh # du –msh [diretório]

du = É a abreviação de se referir a disk usage (uso do disco). Indica o espaço usado em

disco pelos arquivos ou diretórios dados. Sintaxe: du [diretório]. Indica onde estão os binários, fontes e páginas de manual de um comando dado: # whereis ls

Indica o caminho completo para o comando dado: # which ls

É geralmente utilizado para atualizar a hora e a data de um determinado arquivo. Caso este arquivo não exista, ele será criado pelo touch, porém sem conteúdo algum. A sua sintaxe do comando touch é: Sintaxe: touch [opções] [arquivos] # touch arquivo

Atualizando hora e data de um arquivo: # touch -t YYYYMMDDhhmm arquivo

Listagem colorida: www.clubedohacker.com.br 

49

Administração e Segurança em Sistemas GNU/Linux # ls

- -color

# ls –color [ diretório]

Criando um arquivo: # : > [ arquivo] # : > linux

Criando vários arquivos: # touch gnu linus unix hurd

Linkando arquivos: ln -s [arquivo_origem] [link simbólico]

Este comando é usado para gerar links simbólicos, ou seja, que se comportam como um arquivo ou diretório, mas são apenas redirecionadores que mandam seu comando para outro arquivo ou diretório, por exemplo: $ ln -s /etc /home/user/atalho

Este comando criará o link /home/user/atalho, se você digitar o comando ls -l você verá que o diretório /home/user/atalho está apontando para /etc. Se você for para o /home/user/atalho, você na verdade estará no /etc, mas como é um link, não há diferença. Movendo um arquivo: # mv /root/debra

/home/user/

Movendo um arquivo para o diretório local: /home/user#  mv /root/debra

.

Copiando um arquivo: # cp gnu

/home/user/

# cp /root/gnu

/home/user

Copiando um arquivo para o diretório local: /home/user# cp /root/gnu

.

Listando em detalhes todos os arquivos de um diretório: # ls -lah

Listando em detalhes todos os arquivos de um diretório e exibe em cores www.clubedohacker.com.br 

50

Administração e Segurança em Sistemas GNU/Linux : # ls -lah

--color

Simulação de resultado do comando: -rw-r--r-- 2 user user

100k 2007-02-24 11:00 gnu

Exibe um calendário: # cal

Mostra o conteúdo de um arquivo binário ou texto: # cat gnu

Mostra o arquivo na ordem invertida de leitura: # tac ian

Exibe as primeiras linhas de um determinado arquivo: # head [ arquivo] # head –n [arquivo] # head -3 gnu

Exibe as ultimas linhas de um determinado arquivo: # tail [ arquivo] # tail –n [arquivo] # tail -3 gnu

Localiza um determinado arquivo especificado: # locate linus

Atualiza a base de dados do locate: # updatedb

O comando cat possibilita exibir o texto de um arquivo. Com o more existirá uma pausa a cada tela cheia, possibilitando a leitura do arquivo. Exemplo: # cat [arquivo] | more # more [arquivo]

Possibilita exibir o arquivo de maneira paginada, com opção de rolagem para trás e para frente: # cat /proc/ cpuinfo | less

Para redirecionar a saída de um comando para o less use o pipe. Exibindo um arquivo em linhas numeradas: www.clubedohacker.com.br 

51

Administração e Segurança em Sistemas GNU/Linux # nl gnu

Contador de linhas, palavras e bytes: # wc [opções] [arquivo] # wc gnu # wc -l gnu # wc -w gnu # wc -c gnu

Visualiza de forma crescente as informações do arquivo: # sort gnu

Visualiza de forma decrescente as informações do arquivo: # sort -r gnu

Mostra informações de um arquivo: # file [arquivo] # file gnu

Indica o tipo de arquivo: # type [arquivo] # type gnu

Mostra inode com atributos MAC ( Modify, Access, Changes): # stat [arquivo] # stat gnu

Exibe a árvore de diretórios: /# tree

Para exibir informações do sistema, tais como: o sistema operacional, versão do kernel, arquitetura da máquina e muitos outros: # uname [opções]

Versão de kernel: # uname -r

Arquitetura de máquina: # uname -m 

Mostra o hostname: # uname -n

Mostra o tipo de processador: # uname -p

www.clubedohacker.com.br 

52

Administração e Segurança em Sistemas GNU/Linux

Mostra a data da versão do kernel: # uname -v

Mostra o nome do Sistema Operacional: # uname -o

Mostra o nome do Kernel: # uname -s

Mostra uma listagem de entrada e saída de usuários no sistema: # last

Exibe o histórico: # history

Logins mal sucedidos: # lastb

Alias e Variáveis

Alias O que é alias? Alias significa atalho, “nome falso” ou “pseudônimo” e pode ajudar em muito sua vida no Linux. Um alias para todos os usuários você edita em: # vi /etc/bash.bashrc /etc/bash.bashrc

Um alias para root você edita em: # vi /root/.bashrc

Atualize o arquivo toda vez que você adicionar conteúdo ao arquivo: source /etc/bash.bashrc

ou source /root/.bashrc

Exemplos: alias opencd=”eject; opencd=”eject; sleep 5s; eject -t” alias ls=”ls

--color -lah”

OBS: sempre editar ao final do arquivo.

Variáveis O shell é executado no sistema controlado por variáveis de ambiente (espaços de memória que armazenam valores), as mesmas podem ser: www.clubedohacker.com.br 

53

Administração e Segurança em Sistemas GNU/Linux

Variáveis locais - são as variáveis disponíveis somente pelo shell corrente e que não está sendo acessado por subprocessos do sistema. Variáveis globais - estão disponíveis tanto para o shell corrente como para os subprocessos que fazem uso delas. Descrição de algumas variáveis de ambiente, que são importantes para facilitar o entendimento: 

HOME - Esta variável identifica o diretório do usuário doméstico, use o

comando echo $HOME para saber qual é o seu diretório HOME. 

PATH - Esta é a variável de ambiente que define quais diretórios pesquisar e a

ordem na qual eles são pesquisados para encontrar um determinado comando,  para saber como o sistema faz esta pesquisa e quais diretórios ele procura um comando use o comando echo $PATH. 

OSTYPE - Essa variável define o tipo de sistema operacional em uso. Para

saber qual é o sistema operacional em uso use o comando echo $OSTYPE. 

SHELL - Esta variável identifica qual shell está sendo usado, use o comando echo $SHELL para saber qual é o shell que o seu sistema está usando.



TERM - Esta variável define o tipo de terminal que está sendo usado, use o

comando echo $TERM para saber qual o tipo de terminal está sendo usado pelo sistema. 

USER - Pré-define o nome de conta como variável de ambiente, ou seja, ao se

logar ao sistema a ID do usuário é combinada com um nome de conta, para saber qual é o usuário corrente use o comando echo USER. 

MAIL - Esta é a variável de correio eletrônico. Para saber como seu mail está

definido use o comando echo $MAIL. 

LOGNAME - Esta variável é um sinônimo para USER. Para saber qual é o seu

logname use o comando echo $LOGNAME.

Existem vários tipos de shell, entre os quais podemos visualizá-los no arquivo /etc/shells com os seguintes comandos: # cat /etc/shells

www.clubedohacker.com.br 

54

Administração e Segurança em Sistemas GNU/Linux

Para visualizar as variáveis de ambiente no sistema podemos utilizar os comandos a seguir: Variáveis locais: $ set

Variáveis globais: $ env

ou $ printenv

Para atribuir um valor a uma variável local. Exemplo: $ LINUX=free $ echo $LINUX free O comando echo exibe o valor de uma variável de ambiente. Vamos verificar se a variável aparece na relação de variáveis locais. Exemplo: $ set | grep LINUX LINUX=free

Agora vamos transformar esta variável local uma variável global. Para isso devemos usar o comando export: # export LINUX # env | grep LINUX LINUX=free

Para deletar uma variável de ambiente, usamos o comando unset e para verificarmos se a variável foi excluída usaremos o comando echo. Exemplo: www.clubedohacker.com.br 

55

Administração e Segurança em Sistemas GNU/Linux

# unset LINUX # echo $LINUX Agora vamos editar o nosso prompt de comando que é representado pela variável PS1. Podemos utilizar os seguintes argumentos para esta tarefa: Argumento Descrição \h Host da máquina. \W Diretório corrente. \w Caminho completo do diretório corrente. \u Nome do usuário. \t Hora do sistema. \d Data. \\$ $ para usuário comum e # para root. # export PS1="[\h@\w]\\$" [trabalho@~]#

Observe que o prompt mudará, ele deve mostrar o host (trabalho), o caminho completo do diretório corrente (~) e o tipo de caractere que faz referência ao prompt. Podemos criar variáveis globais editando-as no arquivo /etc/profile: # vi /etc/profile

Podemos criar variáveis que são executadas somente no ambiente do usuário editando o arquivo ~/.bash_profile, sendo executadas automaticamente no login: # vi /home/user/.bash_profile

www.clubedohacker.com.br 

56

Administração e Segurança em Sistemas GNU/Linux

Introdução a programação em Shell Script Passos para criar um Shell Script

Escolha um nome para o script Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco. nome: sistema

Escolha o diretório onde colocar o script Para que o script possa ser executado de qualquer parte do sistema, mova −o para um diretório que esteja no seu PATH. Para ver quais são estes diretórios, use o comando: echo $PATH Se não tiver permissão de mover para um diretório do PATH, deixe −o dentro de seu HOME. Crie o arquivo e coloque nele os comandos Use o editor de textos de sua preferência para colocar todos os comandos dentro do arquivo. Coloque a chamada do Shell na primeira linha A primeira linha do script deve conter: # !/bin/bash para que ao ser executado, o sistema saiba que é o Shell quem irá interpretar estes comandos. Torne o script um arquivo executável www.clubedohacker.com.br 

57

Administração e Segurança em Sistemas GNU/Linux

Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável: chmod +x sistema

Problemas na execução do Script "Comando não encontrado"

Descrição: O Shell não encontrou o seu script. Verifique se o comando que você está chamando tem exatamente o mesmo nome do seu script. Lembre −se que no Linux as letras maiúsculas e minúsculas são diferentes, então o comando "SISTEMA" é diferente do comando "sistema". Caso o nome esteja correto, verifique se ele está no PATH do sistema. O comando echo $PATH mostra quais são os diretórios conhecidos, mova seu script para dentro de um deles, ou chame −o passando o caminho completo. Se o script estiver no diretório corrente, chame −o com um ./ na frente. Exemplo: $ ./sistema Caso contrário especifique o caminho completo desde o diretório raiz: $ /tmp/scripts/sistema "Permissão Negada" Descrição:

O Shell encontrou seu script, mas ele não é executável. Use o comando chmod +x nome_escript para torná−lo um arquivo executável. "Erro de Sintaxe"

Descrição: O Shell encontrou e executou seu script, porém ele tem erros. Um script só é executado quando sua sintaxe está 100% correta. Verifique os seus comandos, o erro pode ser algum IF ou aspas que foram abertos e não foram fechados. A própria mensagem informa o número da linha onde o erro foi encontrado. Criando um Shell Script

Após ler e executar os passos para a criação de um Shell Script, você já sabe o  básico para fazer um script em Shell do zero e executá −lo. O Shell Script que vamos criar serve para melhorar a saída de algumas ações. www.clubedohacker.com.br  58

Administração e Segurança em Sistemas GNU/Linux

Executar vários comandos seguidos resulta num bolo de texto na tela, misturando as informações e dificultando o entendimento. Vamos trabalhar um pouco, fazendo a saída do script de uma forma legível. O comando echo serve para mostrar mensagens na tela. Vamos criar uma mensagem de cada comando antes de executá-lo: Crie um diretório: mkdir  /tmp/shells Acesse o diretório: cd /tmp/shells

Escreva o arquivo: nano msg.sh

Para usar o echo, basta colocar o texto entre "aspas". Se nenhum texto for  colocado, uma linha em branco será exibida. Para o script ficar melhor, vamos colocar uma interação com o usuário, solicitando uma confirmação antes de executar os comandos:

O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando "test" checou se o conteúdo dessa variável era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes: 

O conteúdo da variável é acessado colocando −se um cifrão "$" na frente; www.clubedohacker.com.br 

59

Administração e Segurança em Sistemas GNU/Linux  

O comando test é muito útil para fazer vários tipos de checagens em textos e arquivos; O operador lógico "&&", só executa o segundo comando caso o  primeiro tenha sido OK. O operador inverso é o "||".

Com o tempo, os scripts crescem e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro. Para poupar horas de estresse e facilitar as manutenções futuras, é necessário deixar o código visualmente mais agradável e espaçado, devemos colocar comentários esclarecedores. Basta iniciar a linha com um "#" e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo Shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para se ter uma visão geral do que o script faz, sem precisar decifrar seu código. Exemplo:

Alguns dos conceitos vistos no script anterior Variáveis As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a execução do script serão armazenados. Para definir uma variável, basta usar o sinal de igual "=" e para ver seu valor, usa −se o "echo":

www.clubedohacker.com.br 

60

Administração e Segurança em Sistemas GNU/Linux

 Não podem haver espaços ao redor do igual "=" Ainda é possível armazenar a saída de um comando dentro de uma variável. Ao invés de aspas, o comando deve ser colocado entre "$(...)", veja:

O comando "unset" apaga uma variável. Para ver quais as variáveis que o Shell já define  por padrão, use o comando: env Trabalhando com modos de inicialização

Processo init O init é o primeiro processo iniciado no Linux, logo após a carga do kernel do sistema. Quando é disparado, o init continua a carga do sistema, geralmente executando vários scripts que irão verificar e montar sistemas de arquivos, configurar teclado e iniciar servidores, entre outras tarefas. O init utilizado no Linux permite que existam diversos níveis de execução no sistema. Um nível de execução é uma configuração de software do sistema que define quais processos devem ser inicializados e quais não devem, e também de que modo são inicializados. O administrador do sistema é quem define qual será o nível de execução em que o sistema e os processos serão executados. Runlevels Toda a inicialização do sistema é baseada em runlevels, ou seja, níveis de execução. Os sistemas Linux possuem 6 runlevels: Níveis de Execução Ação 0 desligar o sistema 1 modo monousuário, também chamado de modo single 2 modo multiusuário, texto 3 modo multiusuário, texto, com serviços 4 não utilizado 5 modo gráfico (X11) 6 reinicializar o sistema

www.clubedohacker.com.br 

61

Administração e Segurança em Sistemas GNU/Linux

A descrição do sistema de runlevels normalmente pode ser encontrada no arquivo /etc/inittab, onde você também poderá alterar o runlevel padrão do sistema. Alguns runlevels que merecem destaque são o 1, 3 e 5. O runlevel 1 nunca deve ser utilizado, a não ser para manutenção do sistema, devido a falta total de segurança. O runlevel 3 é o mais comum. O runlevel 5 é o mais indicado para usuários novatos, que dependem completamente do sistema gráfico para trabalhar. Com o uso do runlevel 5, gasta recursos de máquina, se a sua placa de vídeo estiver configurada incorretamente, o servidor X tentará forçar a inicialização gráfica e sua tela ocasionalmente ficará   piscando, tornando impossível qualquer comunicação com o sistema, o que também dificultará a reconfiguração da placa de vídeo. Editando o arquivo: nano /etc/inittab

www.clubedohacker.com.br 

62

Administração e Segurança em Sistemas GNU/Linux

www.clubedohacker.com.br 

63

Administração e Segurança em Sistemas GNU/Linux Identificação de discos e partições em sistemas GNU/Linux

 No

GNU/Linux,

os dispositivos existentes em seu computador (como discos

rígidos, disquetes, tela, portas de impressora, modem, etc) são identificados por um arquivo referente a este dispositivo no diretório A identificação de discos rígidos no

/dev.

GNU/Linux

é feita da seguinte forma:

/dev/hda1 | | || | | | |_Número que identifica o número da partição no disco rígido. | | | | | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...). | | | |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT). | |_Diretório onde são armazenados os dispositivos existentes no sistema. Abaixo algumas identificações de discos e partições em sistemas Linux: •

 /dev/fd0 - Primeira



 /dev/fd1 - Segunda



 /dev/hda - Primeiro



unidade de disquetes .

unidade de disquetes .

disco rígido na primeira controladora IDE do micro (primary master) .

 /dev/hda1 - Primeira IDE.



 /dev/hdb - Segundo



 /dev/hdb1 - Primeira











partição do primeiro disco rígido

disco rígido na primeira controladora IDE do micro (primary slave) .

 /dev/sda - Primeiro SCSI.

disco rígido na primeira controladora

 /dev/sda1 - Primeira SCSI.  /dev/sdb - Segundo SCSI.

partição do primeiro disco rígido

disco rígido na primeira controladora

 /dev/sdb1 - Primeira SCSI.  /dev/sr0 - Primeiro

partição do segundo disco rígido IDE .

partição do segundo disco rígido

CD-ROM SCSI .

www.clubedohacker.com.br 

64

Administração e Segurança em Sistemas GNU/Linux •

 /dev/sr1 - Segundo

CD-ROM SCSI .



 /dev/xda - Primeiro



 /dev/xdb - Segundo

disco rígido XT . disco rígido XT .

As letras de identificação de discos rígidos podem ir além de hdb, em meu micro, por exemplo, a unidade de CD-ROM está localizada em /dev/hdg (Primeiro disco - quarta controladora IDE). É importante entender como os discos e partições são identificados no sistema,  pois será necessário usar os parâmetros corretos para monta-los. Referência sobre algumas identificações de discos e partições em Sistemas Linux: http://focalinux.cipsga.org.br/guia/intermediario/ch-disc.htm

Recomendações para configuração e armazenamento de dados

Há várias vantagens, e algumas poucas desvantagens, em se usar um esquema de  particionamento. Neste curso usaremos um aspecto do particionamento do disco rígido de um servidor Linux, tendo em vista aspectos de segurança. Observe o esquema de particionamento, as recomendações direcionam a um esquema para particionar:

 / 

 /var

 /usr

Partição / /var  /usr  /tmp /swap /home

 /tmp

swap

 /home

Tamanho 250 MB 2 ou 3 GB 4 a 6 GB 100 MB 2 x RAM 100 MB por usuário

www.clubedohacker.com.br 

65

Administração e Segurança em Sistemas GNU/Linux Gerenciando Hardware

Partições montadas automaticamente no processo de boot: # cat /etc/fstab

Mostra os sistemas de arquivos montados: # df # df -h

Gerenciador de partições no HD: # cfdisk # fdisk

Criando uma partição com o cfdisk:  

Selecione o ESPAÇO LIVRE  New



Primary



Write



Quit



REBOOT



# mkfs.ext3 /dev/hda4



# mkdir /partition



# vi /etc/fstab /dev/hda4

/partition

ext3

defaults

0

2

Informações sobre o hardware de sua máquina: # lspci # scanpci

Informações de processamento /proc: # cd /proc

Exemplo: # cat /proc/bus/pci/devices

Verificando uma placa: # lspci | grep audio

Verificando as irqs que estão sendo utilizadas: # cat /proc/interrupts

Verificando endereços de I/O que estão sendo utilizados: www.clubedohacker.com.br 

66

Administração e Segurança em Sistemas GNU/Linux # cat /proc/ioports

Verificando informações de processamento: # cat /proc/cpuinfo

Sabendo qual é a sua partição swap: # cat /proc/swaps

Verificando detalhes de memória: # cat /proc/meminfo

Configurando o teclado: # loadkeys -d br-abnt2 # loadkeys -d us

Configurando o mouse serial: # apt-get install gpm  # gpm -m /dev/ttySO -t ms3 /dev/ttySO => corresponde a porta serial 1  ms3 => o mouse que tem a barra de rolamento no meio Mouse PS/2:

gpm -m /dev/psaux -t ms3

Montando um CDROM: # mount

/dev/cdrom

/media/cdrom 

Montando um pendrive: # mkdir /media/pen # mount /dev/sda

/media/pen

Formatando uma partição que você criou: # mkfs -t

ext3

/dev/hda4

# mkfs.ext3 /dev/hda4

Montando a partição: # mkdir

/mnt/aula

# mount -t ext3

/dev/hda4 /mnt/aula

Desmontando uma partição: # umount

/dev/cdrom 

# umount

/mnt/aula

www.clubedohacker.com.br 

67

Administração e Segurança em Sistemas GNU/Linux Conhecendo os módulos de componentes da CPU

Lista os módulos em memória: # lsmod # cat /etc/modules

Identifica um hardware: # lspci | grep -i ethernet

Informações do módulo: # modinfo sis900

Verifica se tem suporte ao módulo: # modprobe -l | grep -i sis900

Subindo o módulo: # modprobe sis900

Verifica todo o relatório se a placa subiu: # dmesg | grep sis900

Consulta se o módulo está carregado: # lsmod | grep sis900

Adiconando o módulo ao boot: # echo “nomedomódulo” >> /etc/modules

módulos

Modprobe -r snd_intel8x0 Remove considerando dependências

rmmod snd_intel8x0 Remove sem considerar  dependências

S.O

modprobe snd_intel8x0 Levanta considerando dependências

insmod snd_intel8x0 Levanta sem considerar  dependências

www.clubedohacker.com.br 

68

Administração e Segurança em Sistemas GNU/Linux Configuração de dispositivo Wireless LAN

Referência: www.guiadohardware.net Depois dos modems, as placas wireless são provavelmente a categoria de   periféricos que mais causam dores de cabeça no Linux. Quase todas as placas funcionam no Linux de uma forma ou de outra, mas muitas usam drivers ou firmwares   binários, que, assim como no caso dos softmodems, precisam ser instalados manualmente. Com relação aos drivers, as placas wireless podem ser divididas em dois grupos: O primeiro é o das placas com drivers nativos, como as com chipset



Prism, Lucent Wavelan (usado, por exemplo, nas placas Oricono), Atmel, Atheros, Intel IPW2100 e IPW2200, ACX100 e 111 e, recentemente, também as Ralink e Realtek 8180. O segundo grupo é o das placas que não possuem drivers nativos, mas



  podem ser usadas através do Ndiswrapper, que permite ativar a placa usando o driver do Windows. Muitos dos drivers são parcialmente proprietários, outros são completamente abertos, mas precisam do arquivo de firmware da placa, que por sua vez é proprietário. Muitas distribuições incluem um conjunto bastante reduzido de drivers por padrão, outras incluem os drivers, mas não incluem os firmwares, que são igualmente necessários. OBS: para usar qualquer placa wireless no Linux, você deve ter instalado o pacote "wireless-tools", que contém os comandos necessários para configurar a placa, como o iwconfig. Hoje em dia, quase todas as distribuições o instalam por padrão, mas não custa verificar. Ndiswrapper

O Ndiswrapper é uma espécie de Wine para drivers de placas de rede wireless. Ele funciona como uma camada de abstração entre driver e o sistema operacional,   permitindo que placas originalmente não suportadas no Linux funcionem usando os drivers do Windows. www.clubedohacker.com.br 

69

Administração e Segurança em Sistemas GNU/Linux

Você pode encontrar várias dicas sobre placas testadas por outros usuários do  Ndiswrapper no: http://ndiswrapper.sourceforge.net/wiki/index.php/List . Cada placa é diferente; por isso, os drivers de uma não funcionam na outra. Mas, todos os drivers conversam com o sistema operacional usando uma linguagem específica de comandos. Ou seja, do ponto de vista do sistema operacional todos os drivers são parecidos. O Ndiswrapper consegue executar o driver e "conversar" com ele usando esta linguagem. Ele trabalha como um intérprete, convertendo os comandos enviados pelo Kernel do Linux em comandos que o driver entende e vice-versa. O Ndiswrapper não funciona com todas as placas e, em outras, alguns recursos como o WPA não funcionam. Apesar disso, na maior parte dos casos ele faz um bom trabalho. A versão mais recente pode ser baixada no: SourceForge.net: ndiswrapper  Para compilar o pacote você precisa ter instalados os pacotes kernel-headers e/ou kernel-source e os compiladores. Descompacte o arquivo e acesse a pasta que será criada. Para compilar e instalar,  basta rodar o comando: # make install

O Ndiswrapper é composto de basicamente dois componentes: 

Um módulo, o ndiswrapper.ko (ou ndiswrapper.o se você estiver usando uma

distribuição

com

o

Kernel

2.4),

que

vai

na

pasta

"/lib/modules/2.x.x/misc/". 

Um executável, também chamado "ndiswrapper", que é usado para configurar o driver, apontar a localização do driver Windows que será usado, etc.

Se você estiver usando uma distribuição que já venha com uma versão antiga do   Ndiswrapper instalada, você deve primeiro remover o pacote antes de instalar uma versão mais atual. Caso a localização do módulo ou do executável no pacote da distribuição seja diferente, pode acontecer de continuar sendo usado o driver antigo, mesmo depois que o novo estiver instalado. Depois de instalar o Ndiswrapper, o próximo passo é rodar o comando: # depmod -a

www.clubedohacker.com.br 

70

Administração e Segurança em Sistemas GNU/Linux

O comando serve para que a lista de módulos do Kernel seja atualizada e o novo módulo seja realmente instalado. Isto é normalmente feito automaticamente pelo script de instalação, é apenas uma precaução. Antes de ativar o Ndiswrapper você deve apontar a localização do arquivo ".inf" dentro da pasta com os drivers para Windows para a sua placa. Em geral os drivers para Windows XP são os que funcionam melhor, seguidos pelos drivers para Windows 2000. Você pode usar os próprios drivers incluídos no CD de instalação da placa. Se eles não funcionarem, experimente baixar o driver mais atual no site do fabricante, ou pesquisar  uma versão de driver testada no ndiswapper no: http://ndiswrapper.sourceforge.net/wiki/index.php/List Para carregar o arquivo do driver rode o comando, seguido do caminho completo  para o arquivo: # ndiswrapper -i /mnt/hda6/Driver/WinXP/GPLUS.inf

Verificando se o drive foi mesmo ativado: # ndiswrapper –l

Se o driver estiver carregado, carregue o módulo: Antes de carregar o módulo da placa. Você deve carregar o módulo genérico “wlan”. # modprobe ndiswrapper

O led da placa irá acender se tudo estiver OK, indicando que ela está ativa. Se a placa não for ativada, você ainda pode tentar uma versão diferente do driver. Você precisa primeiro descarregar o primeiro driver. Rode o ndiswrapper -l para ver o nome do driver e em seguida descarregue-o com o comando: # ndiswrapper –e [nome_driver]

Para que a configuração seja salva e o Ndiswrapper seja carregado durante o  boot, você deve rodar o comando: # ndiswrapper –m

Em seguida, adicione a linha “ ndiswrapper” no final do arquivo " /etc/modules", para que o módulo seja carregado no boot. Você pode fazer a configuração utilizando o “ ndisgtk”, um utilitário gráfico, disponível nos repositórios do Debian, no Ubuntu e em outras distribuições. --------------------------------------------------------------------------------------------------------Configurando uma rede wireless no Linux

www.clubedohacker.com.br 

71

Administração e Segurança em Sistemas GNU/Linux

 Numa rede wireless, o dispositivo central é o access point (ponto de acesso). Ele é ligado no hub da rede, ou diretamente no modem ADSL ou cable, e se encarrega de distribuir o sinal para os clientes. Ao contrário de um hub, que é um dispositivo "burro", que trabalha apenas no nível físico e dispensa de configuração, o access point possui sempre uma interface de configuração, que pode ser acessada via navegador, a partir de qualquer um dos micros da rede. Basta acessar o endereço IP do access point, veja no manual qual é o endereço  padrão do seu. Se o endereço for 192.168.1.254 por exemplo, configure seu micro para usar um endereço dentro da mesma faixa (192.168.1.50 por exemplo), de forma que ele faça  parte da mesma rede que ele. Depois de acessar da primeira vez, aproveite para definir  uma senha de acesso e alterar o endereço padrão por um dentro da faixa de endereços IP usada na sua rede.

Para detectar os pontos de acesso disponíveis (a partir do cliente), use o comando: # iwlist wlan0 scan

Lembre-se que, dependendo do driver usado, o dispositivo de rede usado será diferente. Ao utilizar o driver para placas ADM8211 por exemplo, a placa wireless será vista pelo www.clubedohacker.com.br 

72

Administração e Segurança em Sistemas GNU/Linux

sistema como "eth0", e não como "wlan0", que seria o mais comum. Para que o comando funcione, é preciso que a placa esteja ativada. se necessário, antes de executá-lo use o comando: # ifconfig wlan0 up

Se você estiver dentro do alcance de algum ponto de acesso, o iwlist lhe retorna um relatório. # iwlist wlan0 scan

Se houver algum ponto de acesso dentro da área de alcance. Faltará apenas configurar a placa para se conectar a ele. Veja um exemplo, de ponto de acesso com a encriptação via Wep ativa (Encryption key:on) e não está divulgando seu ESSID (ESSID:""). Este é um exemplo de configuração de um ponto de acesso não público, onde é necessário saber ambas as informações para se conectar à rede. Um exemplo de resultado ao escanear uma rede pública, onde o objetivo é  permitir que os clientes conectem-se da forma mais simples possível.

 Neste caso estão disponíveis dois pontos de acesso, ambos usam o ESSID "vex" e ambos estão com a encriptação de dados desativada (Encryption key:off). Por usarem o mesmo ESSID, eles fazem parte da mesma rede, por isso você não precisa especificar  em qual deles quer se conectar. Basta configurar a rede wireless e, em seguida, obter a configuração da rede via DHCP. www.clubedohacker.com.br 

73

Administração e Segurança em Sistemas GNU/Linux

Em outra situação, pode haver mais de uma operadora oferecendo acesso no mesmo local, ou mesmo outros pontos de acesso de particulares, que intencionalmente ou não estejam com a encriptação desativada, oferecendo acesso público. Neste caso, você escolhe em qual rede quer se conectar especificando o ESSID correto na configuração da rede. É comum também que os pontos de acesso sejam configurados para usar um canal específico, neste caso, ao rodar o "iwlist wlan0 scan" você verá também uma linha "channell=x", onde o x indica o número do canal, que também precisa ser  especificado na configuração da rede. Tome cuidado ao se conectar a pontos de acesso público. Com a encriptação desativada, todos os dados transmitidos através da rede podem ser capturados com muita facilidade por qualquer um dentro da área de alcance. Lembre-se de que o alcance de uma rede wireless cresce de acordo com a potência da antena usada no cliente. Com uma antena de alto alcance, é possível se conectar a um ponto de acesso a 500 metros de distância, ou até mais, caso não exista nenhum tipo de obstáculo pelo caminho. Sempre que precisar transferir arquivos, use um protocolo que transmita os dados de forma encriptada (como o SSH). Jamais dê upload de arquivos para o servidor  do seu site via FTP. Acesse e-mails apenas em servidores que oferecem suporte a pop3 com SSL. Não acesse páginas de bancos, pois a encriptação usada nos navegadores   pode ser quebrada com uma relativa facilidade, e obter senhas bancárias é o tipo de situação onde o trabalho necessário vale a pena. Existem sniffers bastante poderosos, como o kismet, que podem descobrir  muitas informações sobre a rede, incluindo o ESSID e a chave de encriptação em pouco tempo, principalmente ao usar chaves de encriptação Wep de 64 bits. Você pode baixálo no: http://www.kismetwireless.net/ Ele oferece um conjunto bastante completo de testes de segurança, que podem tanto ser usados para verificar a segurança da sua própria rede, quanto invadir redes mal configuradas. O principal obstáculo para usar o Kismet é que ele é compatível com um número relativamente pequeno de placas, basicamente apenas modelos baseados nos chips Orinoco, Prism, Intel IPW 2100, Atheros e Aironet. Ele não funciona, por  exemplo, em conjunto com as placas suportadas através do ndiswrapper. ESSID

www.clubedohacker.com.br 

74

Administração e Segurança em Sistemas GNU/Linux

A primeira configuração necessária para se conectar à rede é o ESSID, o código de identificação da rede (definido na configuração do ponto de acesso), que deve ser  fornecido pelo cliente ao se conectar no ponto de acesso. Se o ESSID da sua rede fosse "aula", por exemplo, o comando seria: # iwconfig wlan0 essid aula

Lembre-se sempre de verificar qual é o dispositivo usado pela sua placa de rede wireless, ele varia de acordo com o driver usado (a placa pode ser vista pelo sistema como wlan0, ath0 ou mesmo eth0). Você pode verificar isso rapidamente rodando o comando ifconfig. Canal

Caso você tenha configurado o ponto de acesso para utilizar um canal específico, configure a placa para utilizá-lo com o comando: # iwconfig wlan0 channel 10

A lista dos canais disponíveis varia de acordo com a configuração de país no  ponto de acesso. Em teoria, podem ser usados 17 canais, de 0 a 16. Porém, apenas 14 deles, de 1 a 14 são licenciados pelo FCC e a lista diminui mais um pouco de acordo com o país escolhido. Nos EUA é permitido o uso dos canais de 1 a 11, na Europa de 1 a 13 e no Japão de 1 a 14. Até na data 07/03/2007, não existia legislação sobre isso no Brasil, mas é provável que seja seguido o padrão dos EUA. Usar canais diferentes é uma forma de minimizar interferências caso você esteja colocando vários pontos de acesso dentro da mesma área, ou perceba que existem  pontos de acesso de vizinhos, muito próximos do seu. Existe uma diferença de freqüência de apenas 5 MHz entre cada canal, porém o sinal das placas 802.11b ocupa uma faixa de 30 MHz. Por isso, para que realmente não exista possibilidade de interferência entre dois pontos de acesso próximos, é preciso usar canais distantes, como por exemplo 1, 6 e 11 ou 1, 7 e 14. De qualquer forma, a moral da história é que, independentemente do canal usado, é preciso usar o mesmo tanto na configuração do ponto de acesso quanto na configuração dos clientes para que a rede funcione. Encriptação WEP

www.clubedohacker.com.br 

75

Administração e Segurança em Sistemas GNU/Linux

Caso você tenha ativado a encriptação via Wep no ponto de acesso, configure a chave usada. Na configuração do ponto de acesso você tem a opção de criar uma chave usando caracteres hexadecimais (onde temos 16 dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F e cada dígito equivale a 4 bits) ou usar caracteres ASCII, onde é possível misturar letras, números caracteres especiais. Ao usar caracteres hexadecimais, a chave terá 10 dígitos (123456789A no exemplo) e o comando será: # iwconfig wlan0 key restricted 123456789A 

Se a chave for em ASCII, onde cada caracter equivale a 8 bits, a chave terá apenas 5 dígitos (qwert no exemplo) e o comando será: # iwconfig wlan0 key restricted s:qwert

Ao usar uma chave em ASCII você precisa adicionar o "s:" antes da chave. Se você tiver configurado o ponto de acesso para usar uma chave de 128 bits (a segurança contra acessos não autorizados é muito maior), então a chave terá 26 dígitos em hexa ou 13 em ACSII. 10 caracteres hexadecimais formam uma chave de apenas 40 bits (4 por  caracter). Este é justamente o problema fundamental das chaves de 64 bits: na verdade, são duas chaves separadas, uma de 40 bits e outra de 24 bits (chamada de vetor de inicialização), muito fácil de quebrar depois que a primeira é descoberta. Uma chave de 64 bits sem problemas óbvios poderia oferecer uma segurança aceitável, mas uma chave de 40 bits é fraca em todos os aspectos. No caso das chaves de 128 bits, a chave de encriptação tem 104 bits, com mais os mesmos 24 bits do vetor. Ativando a rede

Depois de terminar a configuração inicial, você pode ativar a interface com o comando: # ifconfig wlan0 up

O último passo é configurar os endereços da rede, da mesma forma que seria feito em uma placa convencional.

www.clubedohacker.com.br 

76

Administração e Segurança em Sistemas GNU/Linux

Configurando também a rede manualmente, use os comandos:

# ifconfig wlan0 192.168.0.2 netmask 255.255.255.0 # route del default # route add default wlan0 #

route add default gw 192.168.0.1 (remove qualquer configuração anterior, colocando a placa wireless como rota padrão do sistema e configurando o gateway da rede).

Se preferir configurar a rede via DHCP, rode o comando: # dhcpcd wlan0

  Não se esqueça de configurar também os endereços dos servidores DNS no arquivo "/etc/resolv.conf". Um exemplo de configuração do arquivo é: # cat /etc/resolv.conf

nameserver 200.199.252.68 nameserver 200.248.155.11 nameserver 200.199.201.23 Com a rede funcionando, você pode monitorar a qualidade do link, taxa de transmissão de dados, tipo de encriptação, informações sobre o ponto de acesso, entre outros detalhes da conexão usando o "wavemon", um pequeno utilitário incluído na maioria das distribuições. Ativando durante a inicialização O próximo passo ao configurar manualmente é fazer com que a configuração seja carregada durante o boot. Muitos utilitários de configuração (como o Kwifimanager  que veremos adiante) fazem isso para você. Mas, se você preferir do jeito mais ortodoxo, crie o arquivo "/etc/sysconfig/network-scripts/ifcfg-wlan0". Todos os arquivos dentro da pasta /etc/sysconfig/network-scripts/ são lidos durante o boot. Você verá um arquivo separado   para cada placa de rede instalada no sistema. O arquivo ifcfg-eth0 configura a placa eth0 e assim por diante. Crie o arquivo de acordo com o nome com que sua placa é reconhecida pelo sistema. Se a sua placa é reconhecida como "ath0", por exemplo, o arquivo será o "ifcfg-ath0". www.clubedohacker.com.br 

77

Administração e Segurança em Sistemas GNU/Linux

Dentro do arquivo vão os parâmetros da rede, como em: DEVICE=wlan0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Wireless MODE=Managed ESSID="casa" CHANNEL=10 IPADDR= DOMAIN=  NETMASK=255.255.255.0 GATEWAY=192.168.0.1 USERCTL=no PEERDNS=no IPV6INIT=no RATE=Auto Ou: DEVICE=wlan0 ONBOOT=yes TYPE=Wireless MODE=Managed ESSID="casa" CHANNEL=10 IPADDR=192.168.0.2  NETMASK=255.255.255.0  NETWORK=192.168.1.0 BROADCAST=192.168.0.255 GATEWAY=192.168.0.1 USERCTL=no PEERDNS=no IPV6INIT=no RATE=Auto www.clubedohacker.com.br 

78

Administração e Segurança em Sistemas GNU/Linux

Você pode também criar um script com os comandos para fazer a configuração manual e executá-lo manualmente quando quiser usar a rede wireless, como por  exemplo o caso de quem tem um notebook que fica a maior parte do tempo plugado na rede de 100 megabits da empresa, mas que em casa usa uma rede wireless.  Neste caso, crie um arquivo de texto, como por exemplo /home/usuario/wireless. Dentro dele vão os comandos, um por linha, como em: #!/bin/sh iwconfig wlan0 essid casa iwconfig wlan0 channel 10 iwconfig wlan0 key restricted 1234567890 ifconfig wlan0 up ifconfig wlan0 192.168.0.2 netmask 255.255.255.0 route del default route add default wlan0 route add default gw 192.168.0.1 Transforme o arquivo num executável com o comando "chmod +x /home/usuario/wireless" e execute-o (como root) sempre que quiser ativar a rede wireless. Você pode ter vários arquivos diferentes caso precise se conectar a várias redes com configurações diferentes. Se você usar ao mesmo tempo uma placa de rede cabeada e uma placa wireless e o acesso pela placa wireless fique intermitente, com a configuração caindo poucos minutos depois de configurada a rede, experimente começar a desativar a placa cabeada ao configurar a rede wireless. Este é um problema freqüente, principalmente ao utilizar o ndiswrapper, mas felizmente fácil de resolver. Antes de configurar a placa wireless, desative a placa cabeada. Se a placa cabeada é a eth0 por exemplo, rode o comando: # ifconfig eth0 down

Você pode adicionar o comando no seu script de configuração da rede, para que ele seja executado sempre antes dos comandos que configuram a placa wireless.

www.clubedohacker.com.br 

79

Administração e Segurança em Sistemas GNU/Linux

Cr i a n d o e manipulando t ex t o c om o Editor 

Vi www.clubedohacker.com.br 

80

Administração e Segurança em Sistemas GNU/Linux

"vi" é a sigla para "Visual Interface". A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo. Em 1992, foi criado o vim (Vi IMitator), um clone fiel ao vi, porém com muitas outras funcionalidades, que só foram sendo adicionadas. Algum tempo depois, o vim passou a ser chamado de `Vi IMproved' (vi melhorado). O vim é um dos editores de textos mais utilizados no mundo Unix. Em alguns sistemas, existe um link simbólico (/bin/vi) apontando para o /usr/vim. Em outros, o /bin/vi é o executável, só que executa diretamente o vim. Muita gente acha que usa vi, mas na verdade utiliza o vim, e eles têm algumas diferenças. O que você verá abaixo fala sobre o vim. O vim é um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de autocorreção, autoidentação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como: MacOS, Sun, Windows entre outras. Existe também o gvim, que é o vim em modo gráfico, com todas as funcionalidades do vim em pleno funcionamento, o que muda é apenas o modo gráfico mesmo. O vim possui vários modos, ou seja, estados em que ele se encontra. São eles: modo de inserção, comandos, linha de comando, visual, busca e reposição. Abordaremos alguns dos principais comandos: Modo de inserção e de comandos Para identificar o modo (estado) do vim, basta visualizar o rodapé da tela. Vamos à prática. Para executar o vim, utilize: $ vi $ vi arquivo

=> Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentação. => Abre o arquivo de nome "arquivo".

$ vi arquivo +

=> Abre o arquivo de nome "arquivo", com o cursor no final do mesmo. $ vi arquivo +10 => Abre o arquivo de nome "arquivo", com o cursor na linha 10. $ vi arquivo +/Clube_do_Hacker => Abre o arquivo de nome "arquivo", na   primeira ocorrência da palavra Clube_do_Hacker". Ao executar o vim, ele inicia diretamente em modo de comando. Para comprovar, é só olhar na última linha (rodapé) e não vai haver nada lá. Isso quer dizer  que você não conseguirá escrever nada, pode digitar a vontade que só vai ouvir beeps. www.clubedohacker.com.br  81

Administração e Segurança em Sistemas GNU/Linux

Para começar a escrever, pressione "i" em seu teclado. O vim entra em modo de inserção, que você comprova (como falado anteriormente) pelo rodapé da tela, onde fica a seguinte marcação:

Suponha que você já digitou o bastante, e quer salvar, por segurança. Pressione a tecla ESC para voltar em modo de comandos. E veja os comandos para salvar/sair: :w :wq :x ZZ :w!. :q!. :wq!

=> Salva o arquivo que está sendo editado no momento. => Salva e sai. => Idem. => Idem. => Salva forçado => Sai forçado => Salva e sai forçado.

Lembre que utilizando o "i" para inserção, a mesma se inicia inserindo texto antes do cursor. Veja agora outros subcomandos de inserção de texto:

A o O Ctrl + h

=> Insere o texto no fim da linha onde se encontra o cursor  => Adiciona uma linha vazia abaixo da linha corrente => Adiciona uma linha vazia acima da linha corrente => Apaga último caracter à esquerda

Subcomandos para movimentação pelo texto: Ctrl + f Ctrl + b H M L h   j k l w W   b B 0 (zero) ^

=> Passa para a tela seguinte. => Passa para a tela anterior. => Move o cursor para a primeira linha da tela. => Move o cursor para o meio da tela. => Move o cursor para a última linha da tela. => Move o cursor para caracter a esquerda. => Move o cursor para linha abaixo. => Move o cursor para linha acima. => Move o cursor para caracter a direita. => Move o cursor para o início da próxima palavra (não ignorando a pontuação). => Move o cursor para o início da próxima palavra (ignorando a pontuação). => Move o cursor para o início da palavra anterior (não ignorando a pontuação). => Move o cursor para o início da palavra anterior  (ignorando a pontuação). => Move o cursor para o início da linha corrente. => Move o cursor para o primeiro caracter não branco da www.clubedohacker.com.br 

82

Administração e Segurança em Sistemas GNU/Linux

$ nG G

linha. => Move o cursor para o fim da linha corrente. => Move o cursor para a linha de número "n" (susbstitua n  pelo número da linha).. => Move o cursor para a última linha do arquivo.

Copiando e colando textos no vim (utilizando o mouse) yy Copia o texto da linha corrente  p Cola o texto na linha que está posicionado o marcador. Usando o modo visual do vim: Entre no modo visual: v Agora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado. Pressione e cole, utilizando a tecla "p" (paste). Veja agora como apagar um determinado texto: Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete. Você pode remover até o final de uma palavra, utilizando: dw Pode também remover até o final de uma frase: d$ Desfazendo uma ação É claro que você pode desfazer uma ação que você considera errado, ou que errou ao digitar o texto. É só utilizar: u Se você precisar voltar o texto na tela, utilize as teclas Ctrl + r. Subcomandos para localização de texto: /palavra

=> Procura pela palavra ou caracter acima ou abaixo do texto.

?palavra => Move para a ocorrência anterior da palavra (para repetir a  busca use "n"). n

=> Repete o último comando utilizando / ou ?.

 N

=> Repete o último comando / ou ? ao contrário (baixo para www.clubedohacker.com.br 

83

Administração e Segurança em Sistemas GNU/Linux

cima). Ctrl+g

=> Mostra o nome do arquivo, o número da linha corrente e o total de linhas.

Mais opções para remoção de caracteres x

=> Apaga o caracter onde o cursor estiver.

dd

=> Apaga a linha inteira onde o cursor estiver 

D

=> Apaga a linha a partir da posição do cursor até o fim.

J

=> Une a linha corrente à próxima.

7dd

=> Removeas próximas 7 linhas a partir da posição do atual do cursor (qualquer número).

Opções para substituição de textos: rCARACTER

=> Substitui o caracter onde o cursor se encontra  pelo caracter especificado em CARACTER.

RTEXTO

=> Substitui o texto corrente pelo texto digitado (sobrepõe).

cw

=> Remove a palavra corrente para substituição.

cc

=> Remove a linha corrente para substituição.

C

=> Substitui o restante da linha corrente, esperando o texto logo após o comando.

J

=> Une a linha corrente à próxima.

:s/velho/novo

=> Substitui a primeira ocorrência de "velho" por  "novo" na linha corrente.

:% s/velho/novo

=> Substitui em todo o arquivo (%) a primeira ocorrência de "velho" por "novo" em cada linha.

:% s/velho/novo/g

=> Substitui em todo o arquivo (%), todas (g) as ocorrências de "velho" por "novo".

:% s/velho/novo/gc

=> Igual ao anterior, mas pedindo confirmação  para cada substituição.

Alternando entre as janelas: www.clubedohacker.com.br 

84

Administração e Segurança em Sistemas GNU/Linux

:wn

=> Grava o atual e vai ao próximo.

:wN

=> Grava o atual e vai ao anterior.

:args

=> Mostra todos os arquivos atuais.

:qa

=> Sai de todas as janelas de uma vez.

:all

=> Abre todos os arquivos em janelas individuais.

Existe centenas de comandos no vim. A única maneira de conhecê-lo melhor, é  praticando bastante.

www.clubedohacker.com.br 

85

Administração e Segurança em Sistemas GNU/Linux

www.clubedohacker.com.br 

86

Administração e Segurança em Sistemas GNU/Linux Trabalhando com usuários

Todo usuário possui um número chamado user ID com o qual o sistema Unix/Linux identifica-o no sistema. Além do user ID, os usuários possuem o group ID. Toda vez que um processo for ativado será atribuído ao processo um User ID e um Group ID. Estes ID's são chamados de identificação efetiva do processo. id [ opções ] [ nome ]

Exemplos de utilização: Sem parâmetros, pegando as informações do usuário atual. # id

uid=1094(root) gid=500(root) grupos=500(root) Pegando somente o user id do usuário atual. # id –u 1094

Verificando o ID, GID e grupos: # id [usuário]

Modificando informações pessoais do usuário # chfn [usuário]

Tornando-se outro usuário Permite o usuário mudar sua identidade para outro usuário sem fazer o logout. Útil para executar um programa ou comando como superusuário sem ter que abandonar  a seção atual. # su [usuário]

Usuário é o nome do usuário que deseja usar para acessar o sistema. Se não digitado, é assumido o usuário root. Será pedida a senha do superusuário para autenticação. Digite exit quando desejar retornar a identificação de usuário anterior. Comando useradd Permite que se criem usuários conforme especificado em opções. Somente o superusuário poderá utilizar este comando: useradd [ opções ] usuário

Este comando irá alterar os arquivos:

www.clubedohacker.com.br 

87

Administração e Segurança em Sistemas GNU/Linux /etc/passwd

– informações senhas criptografadas;

de

contas

de

usuários

e

/etc/shadow

de

contas

de

usuários

e

– informações senhas criptografadas;

/etc/group – informações de grupos.

Exemplos de utilização Cria o usuário: # useradd [usuário]

Cria o usuário e designa o diretório /home/ como o diretório pessoal deste: # useradd –d /home/usuário [usuário]

Cria o usuário com o shell sh: # useradd –s /bin/sh [usuário]

Cria o usuário com o grupo root. # useradd –g root

[usuário]

Cria o usuário com várias informações: # useradd –d /home/usuário –g users –c “ESTUDO LINUX” usuário

Utilize o manual para ver outras opções de utilização do comando useradd: # man useradd

Comando adduser  Dependendo da distribuição, o comando "adduser" vai ser apenas um comando igual ao "useradd", ou então um script interativo que irá lhe fazendo perguntas, as quais você irá respondendo e então o script criará um usuário no sistema para você. Criar um usuário padrão: # adduser [usuário]

Habilitar uma senha ou modificar senha: # passwd [usuário]

Você pode especificar outros parâmetros para o usuário, como no comando a seguir: # adduser [usuário] -d /var/usuarios/usuario -s /dev/null

Com estes parâmetros, foi especificado que o usuário terá como diretório home o "/var/usuarios/usuario" e como shell o diretório "/dev/null" (ou seja, não terá shell). Sem estes parâmetros, por padrão, o diretório home seria "/home/usuario" e o shell seria "/bin/bash". www.clubedohacker.com.br 

88

Administração e Segurança em Sistemas GNU/Linux

Cada um desses programas/comandos escreve o usuário no arquivo de configuração do Linux referente aos usuários do sistema. Este arquivo é o "/etc/passwd". Cada linha deste arquivo é um usuário cadastrado no sistema. Você pode muito bem criar uma conta sem usar estes programas/scripts citados acima. O "passwd" é formado por linhas onde cada uma é um usuário. Então vamos aprender a montar tais linhas: usuário:x:1001:100:Clube_do_Hacker:/home/usuario:/bin/bash

Acrescentando através da Shell: # echo “usuário:x:1001:100:Clube_do_Hacker:/home/usuario:/bin/bash”

>> /etc/passwd

Vamos dividir esta linha em "campos", onde cada um é separado por: (dois pontos): Campo

Significado Login do Usuário, aqui você pode colocar o nome que quiser 

Usuário

com até 8 caracteres. Aqui diz que o password está no arquivo /etc/shadow. Se

X

estivesse com *, a conta estaria desabilitada e se estivesse sem nada (::), a conta não teria password. UID (User IDentification), o número de identificação do

1001

usuário. GID (Group IDentification), o número de identificação do

100 Clube_do_Hacker

grupo do usuário. Comentários do usuário, como nome, telefone, etc. O diretório HOME do usuário, ou seja, o diretório

 /home/usuário

 pertencente a ele. Geralmente estes diretórios estão sempre em /home. Shell do usuário, ou seja, o programa que irá enterpretar os

 /bin/bash

comandos que o usuário executar.

Obs: O /etc/shadow é um arquivo que contém a senha do usuário criptografada, se alguém tiver posse dela, esta pessoa pode comparar as senhas com uma lista de palavras e descobrir as senhas dos usuários. Felizmente, este arquivo está muito bem protegido  pelo sistema. Modificando o nome de um usuário # usermod –l novo_nome usuário

Removendo um usuário: www.clubedohacker.com.br 

89

Administração e Segurança em Sistemas GNU/Linux

Você pode apagar a linha referente a ele no /etc/passwd e os seus arquivos, ou simplesmente digitar: # userdel –r usuário

Combine com a opção -r para deletar junto o diretório HOME do usuário. Configurando um usuário com poderes de root O root possui o UID e o GID igual a 0 (zero) e um usuário comum não. Se fizermos a mudança do UID e GID de um usuário para 0, ele ficará como o root. Vamos testar, modificando no arquivo /etc/passwd: usuário:x:1001:100:Clube_do_Hacker:/home/usuario:/bin/bash usuário:x:0:0:Clube_do_Hacker:/home/usuario:/bin/bash Pronto, o usuário vai ser também o root do sistema, o administrador do sistema, o deus do sistema, etc. Dica: Não é recomendável ficar usando o usuário root, pois este é aplicável somente à administração do sistema. Sendo assim, recomendo a você a usar sempre um usuário normal. Se for precisar usar o root, registre a entrada como root ou utilize o comando  para se tornar o próprio root. # su -

Trabalhando com grupos

Criando um grupo (este comando escreve uma linha no arquivo /etc/group): # groupadd [grupo]

Adicionando uma senha para o grupo: # gpasswd [grupo]

Mudando a propriedade de um arquivo: # chown novo-dono.novo-grupo arquivo

O comando acima altera o proprietário e o grupo do arquivo. Pode-se usar a opção -R para alterar recursivamente propriedades dentro de um diretório. Um arquivo que também tem muito haver com os usuários no Linux é o /etc/group, que contém as definições de cada grupo, como por exemplo seus nomes, GIDs, e usuários adicionais que pertencem à ele. Se você adicionar uma linha neste arquivo estará criando um novo grupo. Vamos criar um novo grupo no /etc/group: Clube_do_Hacker:x:666:user1,user2,user3

www.clubedohacker.com.br 

90

Administração e Segurança em Sistemas GNU/Linux

Adicionando esta linha no arquivo /etc/group, um novo grupo é criado com o nome 'Clube_do_Hacker', GID '666' e com usuários adicionais pertencentes à ele: 'user1,user2,user3'. Removendo um grupo: # groupdel [nome_grupo]

Renomeando um grupo: # groupmod [novo_nome] [nome_antigo]

Adicionando um usuário a um grupo: # adduser [usuário] [grupo] # gpasswd –a [usuário] [grupo]

Combinando este conhecimento com algo sobre permissões dos arquivos, conteúdo a ser visto no próximo módulo, você pode controlar muito bem quem usa o seu sistema ou servidor, sabendo quem pertence aos grupo, quais seus diretórios, que arquivos podem acessar, entre outros. Comando passwd O comando passwd permite que se troque a senha de determinado usuário. O superusuário pode trocar a senha de qualquer outro. O usuário comum, porém, pode trocar somente a sua senha. As senhas são armazenadas no arquivo /etc/passwd ou /etc/shadow. No arquivo /etc/passwd também é armazenado as informações relativas aos usuários. Após a criação do usuário será necessário criar uma senha para este, caso contrário, não será permitido que este usuário faça login no sistema. passwd [ usuário ]

Exemplos de utilização: Alterando a senha de outro usuário (é preciso ser o superusuário): # passwd [usuário]

Alterando a própria senha (usuário comum pode utilizar este comando): # passwd

Para sua segurança, deve-se configurar o sistema para que: ⇒

A senha deva ter no mínimo 6 caracteres;



A senha deva ter no mínimo duas letras maiúsculas e/ou duas letras minúsculas e  pelo menos um dígito ou caractere especial; www.clubedohacker.com.br 

91

Administração e Segurança em Sistemas GNU/Linux ⇒

São aceitos somente os caracteres ASCII padrão de códigos 0 a 127;



A senha deve diferenciar do nome da conta (obrigatório);



A nova senha deve diferenciar da senha velha em pelo menos três caracteres.



As regras acima não se aplicam ao superusuário. Os utilitários para manutenção de senhas criptografadas são:



pwconv: utiliza os valores definidos em /etc/login.defs para adicionar entradas

no arquivo /etc/shadow e remove qualquer entrada do /etc/shadow que não tenha correspondente no arquivo /etc/passwd. ⇒

pwunconv: compara os arquivos /etc/passwd e /etc/shadow, colocando as

entradas do campo de senhas do arquivo /etc/shadow nas linhas correspondentes do arquivo /etc/passwd. O arquivo /etc/shadow é removido. Este utilitário é usado para se migrar usuários de outro sistema: após executar o   pwunconv copiam-se as linhas dos novos usuários no /etc/passwd, e a seguir  gera-se o /etc/shadow novamente com o pwconv. ⇒

grpconv: faz a mesma função do pwconv, porém com os grupos do /etc/group.

Arquivo sobra de senhas de grupos é o /etc/gshadow. ⇒

grpunconv: faz a mesma função do pwunconv, porém com os grupos. Criando quota para usuários

O sistema de quotas é um serviço que deve ser habilitado e configurado em máquinas que estão em rede e possuem vários usuários, pois, é por meio deste recurso que iremos controlar a utilização dos sistemas de arquivos entre todos os usuários, impedindo que um único usuário com o poder de escrita em seu diretório pessoal, exceda os limites físicos de espaço em um sistema de arquivos e comprometa a utilização deste pelos outros usuários. Verificar como está montado o /home: # mount

Instalar o pacote quota: # apt-get install quota

www.clubedohacker.com.br 

92

Administração e Segurança em Sistemas GNU/Linux

As quotas são especificadas em partições e não em diretórios. Deve-se editar o arquivo /etc/fstab e configurar a partição que deve ter suporte,da seguinte maneira:

Devemos entrar no ponto de montagem da partição especificada (/home) e criar  dois arquivos: Gerencia quotas para os usuários: /home# : > quota.user

Gerencia quotas para os grupos: /home# : > quota.group

OBS: No Debian o padrão é QUOTA 1 (quota.user e quota.group), em outras distribuições pode ser do tipo QUOTA 2 (aquota.user e aquota.group). É necessário mudar as permissões dos arquivos que foram criados, de maneira que só o root tenha permissão de leitura e gravação sobre eles, entramos então com os seguintes comandos: /home# chmod 600 quota.user /home# chmod 600 quota.group

Deve-se remontar o sistema de arquivos para que as configurações de quota para a partição entrem em vigor, como na maioria das vezes o sistema de arquivos estará ocupado, recomenda-se que salve suas aplicações e reinicie o sistema. Entre com o comando: # shutdown -r now

www.clubedohacker.com.br 

93

Administração e Segurança em Sistemas GNU/Linux

OBS: É possível ativar o sistema de quota apenas desmontando e montando novamente a partição. Porém, esta tarefa envolve a identificação e o cancelamento de todos os  processos associados para a partição que estava em uso. Para ativar o sistema de quotas de disco, então entramos com o seguinte comando: # quotaon -v /home

Para verificar se o sistema de quotas está ativo, consulte o status de quota para a  partição que está sendo trabalhada: # mount -a # repquota -v -a

Criando o usuário para o qual será definida a quota: # adduser user1

Definindo quanto do sistema de arquivos cada usuário poderá utilizar. O comando para configurar quotas é o: # edquota -u [usuario]

Especificando espaço em disco para o usuário user1. ●

500 MB de espaço em disco (soft limit)



O espaço em disco pode ser ultrapassado e chegar a no máximo 600 MB (hard limit)



366 arquivos já foram gravados (inodes). Possuirá um limite de 400 arquivos (soft limit)



Poderá gravar no máximo 405 arquivos (hard limit). O valor nunca é ultrapassado. # edquota user1

www.clubedohacker.com.br 

94

Administração e Segurança em Sistemas GNU/Linux

Identificando as características do arquivo:   blocks Número de blocos utilizados pelo usuário Soft limit Limite em blocos que o usuário poderá utilizar  Hard limit Prevendo que o usuário precise ultrapassar seu limite de   blocos, é especificado o valor máximo de blocos. Valor que nunca é ultrapassado. Inodes Número de inodes (arquivos utilizados pelo usuário) Soft limit Número de inodes (arquivos) que o usuário poderá criar  Hard limit Prevendo que o usuário precise ultrapassar seu número de inodes, é especificado o número máximo de inodes que o usuário poderá criar  OBS: 1 MB equivale a mais ou menos 1000 blocos. Definindo quotas para grupos: # edquota -g [grupo]

Para consultar informações sobre quotas na partição, use: quota -u [usuario] quota -g [grupo] # quota -u user1

Exibindo um sumário de quotas ativas na partição: # repquota -v /home

Para saber mais detalhes avançados sobre o uso de quotas nas partições: # quotastats

www.clubedohacker.com.br 

95

Administração e Segurança em Sistemas GNU/Linux

www.clubedohacker.com.br 

96

Administração e Segurança em Sistemas GNU/Linux

A permissão de acesso protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas não autorizado. Donos, grupos e outros usuários:

Dono Outros Usuários

Grupo

=> É a pessoa que criou o arquivo ou o diretório. O nome do dono do arquivo/diretório é o mesmo do usuário usado para entrar no sistema GNU/Linux. Somente o dono pode modificar as permissões de acesso do arquivo. => É a categoria de usuários que não são donos ou não  pertencem ao grupo do arquivo. => Para permitir que vários usuários diferentes tivessem acesso a um mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo), este recurso foi criado. Cada usuário   pode fazer parte de um ou mais grupos e então acessar  arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono).

Controle de acesso básico: => Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo => Permissão de gravação para arquivos. Caso for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação. => Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.

r

w

x

Os três modos de permissões: Comum read

Write

Execution

Octal 4

2

1

Especial SUIDBIT

s=S≠x

SGIDBIT

s=S≠x

STICKYBIT

t=T ≠x

Obs: X - Se você usar X ao invés de x, a permissão de execução somente é afetada se o arquivo já tiver permissões de execução. Em diretórios ela tem o mesmo efeito que a permissão de execução x.

www.clubedohacker.com.br 

97

Administração e Segurança em Sistemas GNU/Linux

Crie o arquivo hoje e liste suas propriedades: -rw-r--r-- 1 root root

0 2006-12-05 10:09 hoje

Modificando as permissões do arquivo: chmod u-rwx,g+w,o+x hoje

----rw-r-x 1 root root

0 2006-12-05 10:09 hoje

chmod g-w,o-x,u+r hoje

-rw-r--r-- 1 root root

0 2006-12-05 10:09 hoje

chmod a-rwx hoje

---------- 1 root root

0 2006-12-05 10:09 hoje

Modo Octal: chmod 421 hoje

-r---w---x 1 root root

0 2006-12-05 10:09 hoje

chmod 000 hoje

---------- 1 root root

0 2006-12-05 10:09 hoje

chmod 777 hoje

-rwxrwxrwx 1 root root

0 2006-12-05 10:09 hoje

Crie o diretório aula e liste suas propriedades: drwxr-xr-x 2 root root 1024 2006-12-05 10:22 aula Modificando as permissões do arquivo: chmod u-rwx,g-rwx,o-rwx aula

d--------- 2 root root 1024 2016-07-04 10:22 aula chmod a-rwx aula

d--------- 2 root root 1024 2016-07-04 10:22 aula chmod a+rwx aula

drwxrwxrwx 2 root root 1024 2016-07-04 10:22 aula Modo Octal: chmod 754 hoje

drwxr-xr-- 2 root root 1024 2016-07-04 10:22 aula chmod 000 hoje

d--------- 2 root root 1024 2016-07-04 10:22 aula chmod 777 hoje

drwxrwxrwx 2 root root 1024 2016-07-04 10:22 aula www.clubedohacker.com.br 

98

Administração e Segurança em Sistemas GNU/Linux OBS: Mas somente as três permissões básicas (rwx) não dão toda flexibilidade para controlar acesso aos arquivos e diretórios.

Permissões de acesso Especiais

Em adição as três permissões básicas (rwx), existem permissões de acesso especiais que afetam arquivos executáveis e diretórios: rwsrwsrwt SUIDBIT (set user id) = setuid SGIDBIT (set group id) = setgid STICKBIT (Stick bit)

O controle de acesso em arquivos e diretórios é a segurança fundamental para qualquer sistema multiusuários. Os sistemas de arquivos nativos do Linux programam controle de acesso utilizando algumas propriedades dos arquivos/diretórios. SUIDBIT (set user id) = setuid

=> A propriedade SUID é somente para arquivos executáveis e não tem efeito em diretórios. => Nas permissões básicas, o usuário que executou o programa é dono do  processo. Mas em arquivo executável com a propriedade SUID aplicada, o programa rodará com o ID do dono do arquivo, não com o ID do usuário que executou o  programa. => Normalmente o usuário dono do programa executável é também dono do  processo sendo executado. Quando um arquivo/programa executável tem o controle de acesso SUID, ele é executado como se ele estivesse iniciado pelo dono do arquivo/programa. => A permissão de acesso especial SUID pode aparecer somente no campo Dono. Trabalhando com o SUID: Exemplo: ifconfig

www.clubedohacker.com.br 

99

Administração e Segurança em Sistemas GNU/Linux # ls -lah /sbin/ifconfig

-rwxr-xr-x 1 root root 57K 2004-04-22 18:27 /sbin/ifconfig  No terminal root #ifconfig #ifconfig eth0 up

obs: ls -lah tamanhos da cópia no formato readable humano (por exemplo, 1K 234M

2G) Como usuário: lammer@debian:/sbin$ ./ifconfig

 bash: ifconfig: command not found lammer@debian:/sbin$ ./ifconfig eth0 up

SIOCSIFFLAGS: Permissão negada lammer@debian:/sbin$ ./ifconfig eth0 down

SIOCSIFFLAGS: Permissão negada Como root: chmod 4755 /sbin/ifconfig

Aplicando a propriedade SUID em um arquivo executável utilizando formato simbólico (s):

# chmod u+s arquivo.x # ls -lah arquivo.x

-rwsr-xr-x 1 root sala 0 2006-12-05 22:57 arquivo.x Aplicando a propriedade SUID em um arquivo executável utilizando formato octal (4): # chmod 4750 arquivo.x # ls -lah arquivo.x

-rwsr-x--- 1 root sala 0 2006-12-05 22:57 arquivo.x www.clubedohacker.com.br 

100

Administração e Segurança em Sistemas GNU/Linux

Retirando SUID: # chmod u-s arquivo.x # ls -lah arquivo.x

-rwxr-x--- 1 root sala 0 2006-12-05 22:57 arquivo.x SGIDBIT (set group id) = setgid

=> A propriedade SGID tem a mesma função que o SUID para arquivos executáveis. Mas a propriedade SGID tem um efeito especial para os diretórios. => SGID é aplicado em um diretório, os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado. => A permissão de acesso especial SGID pode aparecer somente no campo Grupo. Exemplo: Se no diretório /home/user1 tem o grupo sala e tem o SGID habilitado, então todos os arquivos dentro do diretório /home/user1 serão criados com o grupo sala. drwxr-xr-x

2 user1

sala

4096 2006-12-05 08:52 user1

Este é um importante atributo para uma equipe, assumindo que todos os arquivos compartilhados devem ter o mesmo grupo. Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s): # chmod g+s /home/user1 # ls --color -lah /home/user1 | more

drwxr-sr-x 2 root sala 4096 2006-12-05 17:54 . Aplicando a propriedade SGID em um diretório executável utilizando formato octal (2): # chmod 2750 /home/user1 # ls -lah /home/user1

drwxr-s--- 2 root sala 4096 2006-12-05 17:54 .

www.clubedohacker.com.br 

101

Administração e Segurança em Sistemas GNU/Linux

Retirando SGID: # chmod g-s /home/user1 # ls -lah /home/equipe

drwxr-xr-x 2 root sala 4096 2006-12-05 17:54 .

Um outro exemplo: # chmod g+s /home # ls -ld /home

drwxrwsr-x 6 root staff 4096 2016-07-04 08:56 /home # touch /home/arquivo # ls -l /home/arquivo

-rw-r--r-- 1 root staff 0 2016-07-04 14:18 /home/arquivo

STICKBIT (Stick bit)

Aplicando STICK  => Em arquivos executáveis, a propriedade STICK faz com que o sistema mantenha uma imagem do programa em memória depois que o programa finalizar. De fato, essa capacidade aumenta o desempenho, pois será feito um cache do programa  para a memória e da próxima vez que ele for executado, será carregado mais rápido. => Em diretórios, a propriedade STICK impede que outros usuários deletem ou renomeam arquivos dos quais não são donos. => Com o STICK, o diretório estará em modo append-only (somente incremente). => Sendo assim, somente o usuário que é Dono do arquivo, poderá deletar ou renomear os arquivos dentro de um diretório com a propriedade STICK aplicada. => A permissão especial Stick pode ser especificada somente no campo outros usuários das permissões de acesso. Exemplo bem prático: # ls -l

www.clubedohacker.com.br 

102

Administração e Segurança em Sistemas GNU/Linux # chmod 0777 /tmp # ls -ld /tmp

drwxrwxrwx 14 root root 1024 2016-07-04 14:40 /tmp # touch /tmp/arq_novo

 No teminal como usuário tente remover o arquivo: $ rm /tmp/arq_novo -f

ou

rm -rf /tmp/arq_novo

Voltando o STICK : chmod 1777 /tmp

drwxrwxrwt 14 root root 1024 2016-07-04 14:40 /tmp

Crie novamente o arquivo e tente remover: # touch /tmp/arq_novo

$ rm /tmp/arq_novo -f

ou

rm -rf /tmp/arq_novo

Exemplo: No diretório /tmp, todos os usuários devem ter acesso para que seus   programas possam criar os arquivos temporários, mas nenhum pode apagar arquivos dos outros. Então. é necessário que a propriedade STICK seja feita no diretório /tmp. drwxrwxrwt 14 root root 1,0K 2016-07-04 13:15 tmp

Aplicando a propriedade Stick em um arquivo executável utilizando formato octal (1): # chmod 1750 programa.x # ls -lah programa.x

-rwxr-x--T 1 root root 2,9M 200 6-09-26 23:51 programa.x Aplicando a propriedade Stick em um arquivo execu tável utilizando formato simból ico (t): # chmod o+t programa.x # ls -lah programa.x

-rwxr-x--T 1 root root 2,9M 200 6-09-26 23:51 programa.x

www.clubedohacker.com.br 

103

Administração e Segurança em Sistemas GNU/Linux

Aplicando a propriedade Stick em um diretório utilizando formato simbólico (t): # chmod o+t /tmp # ls -lah /tmp

drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Apicando a propriedade Stick em um diretório utilizando formato octal (1): # chmod 1777 /tmp # ls -lah /tmp

drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Retirando Stick: # chmod o-t /tmp # ls -lah /tmp

drwxrwxrwx 8 root root 264 2006-09-26 23:22 .

www.clubedohacker.com.br 

104

Administração e Segurança em Sistemas GNU/Linux

www.clubedohacker.com.br 

105

Administração e Segurança em Sistemas GNU/Linux Manipulação de pacotes (programas)

Gerenciadores de pacotes:

dselect d k  a t- et tasksel a titude Gerenciando pacotes com o dpkg: dpkg

Fazer uma instalação a partir do CD-ROM: # cd /cdrom/pool/main ; ls --color # dpkg -i nome_do_pacote ou caminho_do_pacote

Listar todos os pacotes que estão instalados no formato .deb: # dpkg -l | more

Onde serão instalados todos os arquivos de um determinado programa: # dpkg -c | more

/cdrom/pool/main/m/mozilla/nome_do_pacote.deb

Para obter a listagem de arquivos de pacotes já instalados no sistema, use o comando: # dpkg -L arquivo

Remover um programa e todos os arquivos: # dpkg - -purge nome_do_programa

O dpkg (Debian Package) é o programa responsável pelo gerenciamento de  pacotes nos sistemas Debian. Sua operação é feita em modo texto e funciona através de comandos, assim caso deseje uma ferramenta mais amigável para a seleção e instalação de pacotes, prefira o dselect (que é um front-end para o dpkg) ou o

apt .

Pacotes estão desconfigurados quando, por algum motivo, a instalação do mesmo não foi concluída com sucesso. Pode ter faltado alguma dependência, acontecido algum erro de leitura do arquivo de pacote, etc. Quando um erro deste tipo www.clubedohacker.com.br 

106

Administração e Segurança em Sistemas GNU/Linux

acontece, os arquivos necessários pelo pacote podem ter sido instalados, mas os scripts de configuração pós-instalação não são executados. # dpkg --configure [NomedoPacote]

Mostrando a lista de pacotes do sistema: # dpkg --get-selections

Gerenciando pacotes com o apt: Instalar um programa:

apt

# apt-get install mozilla

Enquanto o apt faz um download de um pacote, ou seja, uma instalação, ele gera um arquivo chamado lock. O mesmo serve para que não seja executado outros apt ao mesmo tempo. Arquivo onde ficam armazenados todos os mirros (sources) de busca de pacotes:  /etc/apt/souces.list

Para usar outro tipo de source, você pode inserir o caminho de pesquisa no arquivo. O mesmo pode ter uma ou mais sources: # apt-setup

Ao inserir uma nova linha no arquivo, pode-se atualizar a busca de pacotes no apt: # apt-update

Para saber se um determinado que você quer instalar está disponível no cache do apt: # apt-cache search gaim 

OBS: Todo pacote instalado via apt-get install, armazena um cache no seguinte caminho: /var/cache/apt/archives. Vamos limpar esse cache: # apt-get clean

Fazer uma atualização de pacotes usando um único comando: # apt-get upgrade

Removendo um programa com: # apt-get remove

- -purge gimp

O comando que adiciona automaticamente uma linha para cada CD no arquivo /etc/apt/sources.list e atualizará a lista de pacotes em /var/state/apt/lists: www.clubedohacker.com.br 

107

Administração e Segurança em Sistemas GNU/Linux # apt-cdrom add

Verificando pacotes corrompidos A correção é feita automaticamente. A lista de pacotes também é atualizada quando utiliza este comando. # apt-get check

Corrigindo problemas de dependências e outros problemas: # apt-get install -f pacote # apt-get -f install pacote # dpkg

-i

- -force-all *.deb

Tasksel # tasksel

Este comando irá carregar o tasksel, que nada mais é que uma simples interface  para a instalação dos componentes principais do Debian.   Neste programa você habilitará a instalação somente do X Window System. Com isso será instalado o suporte para o ambiente gráfico KDE e caso queira outro ambiente gráfico. Você pode fazer o mesmo com o comando: Baixa o pacote, mas não instala: # apt-get install -d pacote

Para fazer pesquisa de pacotes disponíveis para a distribuição, utilize: www.apt-get.org Aptitude Ele é um novo gerenciador de pacotes amigável para o apt. # aptitude

Procedimentos de backup

Alguns comandos vão ajudar você a ler melhor o arquivo: # stat arquivo

# file arquivo

# type arquivo

www.clubedohacker.com.br 

108

Administração e Segurança em Sistemas GNU/Linux # ls -lh

arquivo

------------------------------------------------------------------------------------------------------------------1ª parte -------------------------------------------------------------------------------------------------------------------

Pacotes GZIP Empacotando, compactando e descompactando.

Criando um diretório e acessando este diretório: # mkdir /tmp/backup # cd /tmp/backup

Empacotando o conteúdo do diretório /home/user: /tmp/backup# tar cvf backup1.tar /home/user /tmp/backup# file backup1.tar

Compactar usando o GZIP: /tmp/backup# time gzip backup1.tar /tmp/backup# ls -lh saída: backup1.tar.gz

Descompactando o arquivo: /tmp/backup# time gunzip backup1.tar.gz /tmp/backup# ls -lh saída: backup1.tar

TAR

Ele é um aplicativo capaz de armazenar vários arquivos em um só. Porém, não é capaz de compactar os arquivos armazenados. Como é possível notar, o TAR serve de complemento   para o GZIP e vice-versa. Por isso, foi criado um parâmetro no TAR para que ambos os  programas possam trabalhar juntos. Assim, o TAR "junta" os arquivos em um só. Este arquivo,  por sua vez, é então compactado pela GZIP. Quando ocorre o trabalho conjunto entre TAR e GZIP, o arquivo formado tem a extensão tar.gz. A maioria das versões do tar não suportam backups através da rede. A versão GNU do tar, que é a versão utilizada pelo FreeBSD, suporta dispositivos remotos utilizando a mesma sintaxe do rdump.

Pacotes BZIP2

Empacotando, compactando e descompactando. Criando um diretório: # mkdir /tmp/backup # cd /tmp/backup

Empacotando o conteúdo do diretório /home/user:

www.clubedohacker.com.br 

109

Administração e Segurança em Sistemas GNU/Linux /tmp/backup# tar cvf backup1.tar /home/user /tmp/backup# file backup1.tar

Compactar usando o BZIP2: /tmp/backup# time bzip2 backup1.tar /tmp/backup# ls -lh saída: backup1.tar.bz2

Descompactando o arquivo: /tmp/backup# time bunzip2

backup1.tar.bz2

/tmp/backup# ls -lh saída: backup1.tar

------------------------------------------------------------------------------------------------------------------2ª parte -------------------------------------------------------------------------------------------------------------------

Pacotes GZIP Empacotando / Compactando Descompactando / Desempacotando Criando um diretório: # mkdir /tmp/backup # cd /tmp/backup

EMPACOTANDO e COMPACTANDO o conteúdo do diretório /etc: /tmp/backup# tar cvzf backup2.tar.gz /etc /tmp/backup# file backup2.tar.gz

Crie um diretório com o nome gzip: /tmp/backup# mkdir gzip

DESCOMPACTANDO E DESEMPACOTANDO o conteúdo: /tmp/backup/gzip# tar xvzf /tmp/backup/backup2.tar.gz

DESCOMPACTANDO E DESEMPACOTANDO o conteúdo, direcionando a um diretório: # tar xvzf /tmp/backup/backup2.tar.gz -C /tmp/backup/gzip

Verificando o arquivo: /tmp/backup/gzip# ls -lh

Verificando o tamanho: /tmp/backup/gzip# du -hs caminho

Verificando o tamanho do diretório original: /tmp/backup/gzip# du -hs

/etc

Pacotes BZIP2 Empacotando / Compactando Descompactando / Desempacotando

www.clubedohacker.com.br 

110

Administração e Segurança em Sistemas GNU/Linux

Criando um diretório: # mkdir /tmp/backup # cd /tmp/backup

EMPACOTANDO e COMPACTANDO o conteúdo do diretório /etc: /tmp/backup# tar cvjf backup3.tar.bz2

/etc

/tmp/backup# file backup3.tar.bz2 /tmp/backup# ls -lh

Crie um diretório com o nome bzip2: /tmp/backup# mkdir bzip2

DESCOMPACTANDO E DESEMPACOTANDO o conteúdo: /tmp/backup/bzip2# tar xvjf /tmp/backup/backup3.tar.bz2

DESCOMPACTANDO E DESEMPACOTANDO o conteúdo, direcionando a um diretório: # tar xvjf /tmp/backup/backup3.tar.bz2 –C /tmp/backup/bzip2

Verificando o arquivo: /tmp/backup/bzip2# ls -lh

Verificando o tamanho: /tmp/backup/bzip2# du -hs caminho

Verificando o tamanho do diretório original: /tmp/backup/bzip2# du -hs

/etc

------------------------------------------------------------------------------------------------------------------Compactador compatível com o Windows: # gzip backup1.tar

Descompactador de pacotes .zip: # unzip backup.zip

Criando uma compactação zip: # find /etc -name *.conf -print | xargs zip backup4 -@

find /etc -name *.conf -print => Procura no diretório /etc e sub-diretórios um arquivo/diretório,

no caso arquivos chamado .conf e otimiza a procura. xargs zip backup4 -@ => o xargs resolve se ocorrer algum problema, e o zip é o compactador.

Outra maneira:

www.clubedohacker.com.br 

111

Administração e Segurança em Sistemas GNU/Linux # find /etc | cpio -pdv backup

Outra maneira: # find | xargs zip backup

Trabalhando com o dump

Fazendo um backup de /tmp, com o comando dump: # dump -0 -f backupdump /etc

Restaurando este backup: # restore rf backupdump

Trabalhando com o comando cpio Fazer um backup de todas as bibliotecas em /lib que terminam com 0, para dentro de

/tmp/backup/bacana (o diretório é gerado na execução do comando), usando o cpio: # find /lib -name *.0 | cpio -pdv /tmp/backup/bacana

Cpio

É o programa original do UNIX para a troca de arquivos entre máquinas por  meio de mídias magnéticas. O cpio tem opções (entre muitas outras) de realizar byteswapping, gravando um bom número de sistemas de arquivos de diferentes formatos, e   permitindo o redirecionamento dos dados para outros programas. Esta última funcionalidade faz do cpio uma excelente escolha para criar mídias de instalações. O cpio não sabe como andar nos diretórios da árvore de diretórios e uma lista dos arquivos deve ser passada através da stdin. O cpio não suporta a realização de backups através da rede. Você pode utilizar  um redirecionamento e o rsh para enviar os dados para uma controladora de fita remota. # for f in directory_list; do find $f >> backup.list done

# cpio -v -o --format=newc < backup.list | ssh user@host

"cat > backup_device"

Onde o directory_list é a lista de diretórios que você quer adicionar ao seu   backup, user@host é a combinação usuário/computador que irá realizar o backup, e  backup_device é onde os backups devem ser escritos (e.g., /dev/nsa0). Dump e Restore

www.clubedohacker.com.br 

112

Administração e Segurança em Sistemas GNU/Linux

Os programas tradicionais de backup do UNIX® são o dump e o restore.Eles operam a controladora como se esta fosse uma coleção de blocos de discos, abaixo da abstração de arquivos, links e diretórios que são criadas pelos sistemas de arquivos. O dump realiza o backup de todo um sistema de arquivos em um dispositivo. Ele não tem habilidade de realizar backup somente de uma parte de um sistema de arquivos ou uma árvore de diretórios que envolva mais de um sistema de arquivos. O dump não grava os arquivos em diretórios numa fita, ele grava tudo de maneira direta (raw) em  blocos de dados que compõe os arquivos e diretórios. O dump tem uma artimanha que vem desde primeiros dias na Versão 6 do AT&T UNIX (aproximadamente 1975). Os parâmetros padrões são adequados para fitas de 9 trilhas (6250 bpi), não para as mídias de alta-densidade disponíveis hoje em dia (up to 62,182 ftpi). Estes padrões devem ser sobrescritos na linha de comando para que seja utilizada a capacidade das atuais controladoras de fita. Também é possível realizar backup dos dados através da rede para um dispositivo de backup conectado em um outro computador com o Ambos os programas tem sua confiança baseadas no

rdump

eo

rcmd  e no ruserok  para

rrestore.

o acesso à

controladora de fita remota. Portanto, o usuário que irá realizar o backup deverá estar  listado no arquivo .rhosts no computador remoto. Outros utilitários de backup

PAX O pax é a resposta do IEEE/POSIX® para o tar e o cpio. Sobre os anos de várias versões do tar e do cpio estão algumas incompatibilidades. Então para sair da briga pela  padronização completa deles, o POSIX criou um novo utilitário de arquivação. O pax tenta ler e gravar nos mais mais variados formatos tanto do cpio quanto do tar, adicionado novos formatos por si, inclusive. Sua maneira de comandar é mais semelhante ao cpio que ao tar . AMANDA O Amanda (Advanced Maryland Network Disk Archiver) é um sistema de   backup cliente/servidor, melhor que um único programa. Um servidor Amanda irá realizar numa única controladora de fita o backup de qualquer número de computadores que tenham o cliente do Amanda e uma conexão de com o servidorAmanda. Um   problema comum em locais com um grande número de discos é que a quantidade de www.clubedohacker.com.br 

113

Administração e Segurança em Sistemas GNU/Linux

tempo requerida para o backup dos dados diretamente na fita excede a quantidade de tempo para a tarefa. O Amanda resolve este problema. O arquivo de configurações provê um controle total da realização dos backups e do tráfico de rede que o Amanda gera. O Amanda utilizará qualquer um dos programas de backup citados para gravar os dados nas fitas. O Amanda está disponível também como um port ou como pacote, porém ele não é instalado por padrão.  Não fazer nada “Não fazer nada” não é um programa de computador mas sim a mais utilizada estratégia de backup. Não há custos iniciais. Não há um agendamento de backup a ser  cumprido. Apenas diga não. Se alguma coisa acontecer aos seus dados dê um sorriso malicioso e dê cria neles! e seu tempo e seus dados são um pouquinho mais que nada, então ``Não fazer  nada'' é o mais adequado programa de backup para o seus computados. Mas cuidado, o UNIX é uma ferramenta útil, você deve encontrar num intervalo de seis meses uma coleção de arquivos que tenham valor para você. “Não fazer nada'” é o método de backup correto para /usr/obj e outras árvores de diretórios que podem ser criadas exatamente como eram no seu computador. Um exemplo são os arquivos HTML ou PostScript® das versões deste Handbook. Estes documentos foram criados de arquivos no formato SGML. Criar backups deles não é necessário. Os arquivos SGML tem backups realizados regularmente. Qual o melhor programa de backup? A vez é do dump. A escolha limpa para preservar todos os seus dados e suas  peculiaridades do sistema de arquivos UNIX é o dump. Observações de realizadores de backup: As peculiaridades incluídas: arquivos com buracos, arquivos buracos e blocos nulos, arquivos com caracteres engraçados e estranhos em seus nomes, arquivos que não podem ser lidos ou gravados, arquivos de dispositivos, arquivos que mudam de tamanho durante o backup, arquivos que são criados e apagados durante o backup entre outros. Compilação de programas

O procedimento de compilação de um programa parte do princípio que, através do código fonte do programa disponível para uso, qualquer um possa ter acesso ao código e gerar o binário final a partir dele. O procedimento de compilação sempre é www.clubedohacker.com.br 

114

Administração e Segurança em Sistemas GNU/Linux

 bem parecido para todas as aplicações, porém sempre que for compilar algum programa devemos consultar o arquivo “INSTALL” que sempre está presente junto com o código fonte.     

Durante este trabalho vamos precisar dos seguintes programas pré-instalados: gcc g++ make libc6-dev glibc-devels (algumas outras distribuições usam) Direcionamento de como trabalhar com compilação de programas:

Início

Tem confi ure sim ./configure  Não documentação

Tem makefil Make install

make

FIM

Se tiver o ./configure, rode o configure. Todos os recursos de compilação estão no makefile. Vamos baixar o nmap (utilitário de rede para verificação e análise de portas. Baixe o código fonte, que está disponível em www.insecure.org. Descompactando o pacote: # tar xvjf nmap-versão.tar.bz2

–C

/usr/local

Acessando o diretório dos fontes: # cd /usr/local/nmap-versão

Começando a compilação: www.clubedohacker.com.br 

115

Administração e Segurança em Sistemas GNU/Linux

Executar o script configure, este passa parâmetros de como deve ser compilado o  programa. Gera o arquivo Makefile, que serve como referência para o comando make. Digite: # ./configure

Comando para compilar o pacote: # make

Comando opcional para testar a integridade dos binários compilados: # make check

Instalar o programa, os arquivos de dados e a documentação: # make install

Remover arquivos binários e de objeto do diretório fonte que não serão mais necessários: # make clean

O programa foi compilado. Agora é só testar: # nmap localhost

www.clubedohacker.com.br 

116

Administração e Segurança em Sistemas GNU/Linux

----------------------------------------------------------------------------------------

www.clubedohacker.com.br 

117

Administração e Segurança em Sistemas GNU/Linux

O que é X Window? É um sistema gráfico de janelas que roda em uma grande faixa de computadores, máquinas gráficas e diferentes tipos de máquinas e plataformas. Pode tanto ser  executado em máquinas locais como remotas através de conexão em rede. O servidor X controla o teclado, mouse e a exibição dos gráficos em sua tela. Quem é o gerenciador de Janelas? É o programa que controla a aparência da aplicação. Os gerenciadores de janelas (window managers) são programas que atuam entre o servidor X e a aplicação. Você  pode alternar de um gerenciador para outro sem fechar seus aplicativos. Existem vários tipos de gerenciadores de janelas disponíveis no mercado entre os mais conhecidos estão o Window Maker, Gnome, KDE, twm (este vem por padrão quando o servidor X é instalado), Enlightenment, IceWm, etc. Quem é a aplicação cliente? É o programa sendo executado. Instalando o X Window

X Window System é a interface gráfica mais utilizada em ambientes UNIX. O pacote necessário para uso desta interface gráfica pode ser encontrado diretamente no site oficial http://www.xfree86.org. Instalando o Xfree86 via apt-get: # apt-get install x-window-system-core

Comando de instalação do X.org (projeto de continuação do Xfree): # apt-get install xserver-xorg xlibs xlibs-data

Fazendo a configuração do Xfree86: # xf86config

Ou # XFree86 -configure

Fazendo a configuração no X.org: www.clubedohacker.com.br 

118

Administração e Segurança em Sistemas GNU/Linux # Xorg -configure

O comando XFree86 –configure gera em /root, um arquivo com o nome XF86Config.new. Vamos adicionar algumas configurações neste arquivo: Configurando o arquivo /root/XF86Config.new: OBS: As alterações estão em negrito. ---------------------------------------------------------------------------------------------------------# Configuração geral do servidor, tela e dispositivos de entrada e saída: Section "ServerLayout" Identifier "XFree86 Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection # Localização dos módulos e das fontes que serão utilizadas pelo servidor gráfico: Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" ModulePath "/usr/X11R6/lib/modules" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" EndSection # Informações dos módulos que serão carregados pelo servidor: Section "Module" Load "dbe" Load "dri" Load "extmod" Load "glx" Load "record" Load "xtrap" Load "speedo" Load "type1" EndSection # Configurações do teclado: Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" --------------------------------------- padrão ABNT2----------------------------------------------Option “xkbmodel” “abnt2” Option “xkblayout” “PS/2” www.clubedohacker.com.br 

119

Administração e Segurança em Sistemas GNU/Linux ----------------------------------- padrão internacional (Americano)-----------------------------Option “xkbmodel” “pc102” Option “xkblayout” “us_intl” EndSection

# Configuração do mouse: Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/mouse" --------------------------------------- mouse PS/2 --------------------------------------------------Option “Protocol” “PS/2” Option “Device” “/dev/psaux” ------- se for com rodinha, modifique a última linha: Option “Device” “/dev/input/nice” EndSection # Especificações do monitor, como taxa de atualização vertical e freqüência horizontal de sincronização: Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" Horizsync 31.5 – 48.5 Vertrefresh 50 - 90 EndSection # Informação do driver atualizado da placa de vídeo: Section "Device" ### Available Driver options are:### Values: : integer, : float, : "True"/"False", ### : "String", : " Hz/kHz/MHz" ### [arg]: arg optional #Option "HWcursor" # [] #Option "NoAccel" # [] Identifier "Card0" Driver "vmware" VendorName "VMWare Inc" BoardName "Unknown Board" BusID "PCI:0:15:0" EndSection # Seção de configuração da resolução e número de cores a ser utilizado: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" www.clubedohacker.com.br 

120

Administração e Segurança em Sistemas GNU/Linux DefaulDepth 24 SubSection "Display" Depth 1 EndSubSection SubSection "Display" Depth 4 EndSubSection SubSection "Display" Depth 8 EndSubSection SubSection "Display" Depth 15 EndSubSection SubSection "Display" Depth 16 EndSubSection SubSection "Display" Depth 24 Modes “1024x768” “800x600” EndSubSection EndSection ---------------------------------------------------------------------------------------------------------OBS: No X.org o arquivo de configuração está localizado em /etc/X11/xorg.conf 

Para verificar se o servidor gráfico foi configurado corretamente, digite: # X

Para configurarmos o servidor X precisamos editar o arquivo que controla quem irá acessar o servidor X: # vi /etc/X11/xdm/Xacess

Inclua a seguinte linha no arquivo: 100.100.100.0

Isto permite que todas as máquinas desta rede podem acessar o servidor. Reiniciando o serviço do xdm: # /etc/init.d/xdm restart

Fazendo os clientes se conectarem ao servidor X: # X –query [ip do servidor X] : 1

Xnest

É uma ferramenta que permite rodar aplicações gráficas em um servidor remoto. Ele já vem incorporado no pacote do servidor X. Iniciando o nosso cliente gráfico: # startx

www.clubedohacker.com.br 

121

Administração e Segurança em Sistemas GNU/Linux

Em um shell dentro do ambiente gráfico vamos executar o Xnest, desabilitando qualquer controle de acesso: # Xnest

: 1

-ac

&

 No servidor remoto é necessário fazer um login com o ssh e executar o seguinte comando: # export DISPLAY=[ ip da máquina ] : 1

Coloque o ip da máquina a qual deseja exportar o display, redirecionando a aplicação a ser executada na máquina local, através do Xnest. A partir da execução do procedimento anterior, já é possível testar uma aplicação gráfica, onde irá rodar dentro da tela do Xnest. Ex: # xcalc

Obs: O acesso da aplicação é feito remotamente e os processos da aplicação executada estarão consumindo recursos do servidor e não da máquina local. Instalando o gdm ou kdm: # apt-get install gdm 

# apt-get install kdm 

www.clubedohacker.com.br 

122

Administração e Segurança em Sistemas GNU/Linux

U S U Á R  I O S

Instalando o wmaker, gnome e kde: # apt-get install wmaker

# apt-get install gnome

# apt-get install kde

OBS: Para alternar a configuração da tela do ambiente gráfico, use as teclas: CTRL ALT + ou CTRL ALT -

Para traduzir o kde ou outro programa. Faça a pesquisa pelos pacotes disponíveis do programa: #

apt-cache search kde

Tradução para português: # apt-get install kde-i18n-ptbr

Caso você queira deletar os gerenciadores de login: xdm, kdm e gdm. Digite o comando: # apt-get remove –purge [pacote]

www.clubedohacker.com.br 

123

Administração e Segurança em Sistemas GNU/Linux

Com este comando, você estará removendo os pacotes referentes aos gerenciadores de login. Neste caso, o login será feito no modo texto. Através do modo texto, é possível escolher o ambiente gráfico que será usado. Para tal ação, digite o comando: # echo “exec startgnomesession” > ~/.xinitrc

Ou # echo “exec startkde” > ~/.xinitrc

Ou # echo “exec startwmaker” > ~/.xinitrc

Para executar a interface gráfic adotada. Digite: # startx

www.clubedohacker.com.br 

124

Administração e Segurança em Sistemas GNU/Linux

Serviços básicos de Rede

www.clubedohacker.com.br 

125

Administração e Segurança em Sistemas GNU/Linux Configurando uma rede

Descobrindo o modelo da placa de rede: # lspci

Verificando se há o módulo para esta interface: # ls /lib/modules/`uname –r`/kernel/drivers/net

Caso precise levantar o módulo, digite o comando: # modprobe [módulo]

Para verificar se o módulo está carregado, digite: # lsmod | grep [módulo]

www.clubedohacker.com.br 

126

Administração e Segurança em Sistemas GNU/Linux

Informações de endereçamento IP: # ifconfig

eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:08:54:30:A9:9D inet end.: 100.100.100.50 Bcast:100.100.100.255 Masc:255.255.255.0 endereço inet6: fe80::208:54ff:fe30:a99d/64 Escopo:Link  UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:403 errors:0 dropped:0 overruns:0 frame:0 TX packets:51 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:36828 (35.9 KiB) TX bytes:7256 (7.0 KiB) IRQ:5 Endereço de E/S:0xa000 lo

Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:88 errors:0 dropped:0 overruns:0 frame:0 TX packets:88 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:5496 (5.3 KiB) TX bytes:5496 (5.3 KiB) Eliminando as configurações de rede: # ifconfig eth0 down

Exibindo a configuração: # ifconfig

Subindo o service de rede: # ifconfig eth0 up

Configurando o IP, Máscara e Broadcast: # ifconfig eth0 100.100.100.x netmask 255.0.0.0 broadcast

100.100.100.255

Verificando se há conectividade: # ping 100.100.100.x

PING 100.100.100.50 (100.100.100.50) 56(84) bytes of data. 64 bytes from 100.100.100.50: icmp_seq=1 ttl=64 time=0.042 ms 64 bytes from 100.100.100.50: icmp_seq=2 ttl=64 time=0.027 ms 64 bytes from 100.100.100.50: icmp_seq=3 ttl=64 time=0.027 ms 64 bytes from 100.100.100.50: icmp_seq=4 ttl=64 time=0.026 ms --- 100.100.100.50 ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.026/0.030/0.042/0.008 ms

O ifconfig é dinâmico, para que as configurações de endereçamento IP sejam carregadas durante o boot. O arquivo de configuração é: # vi /etc/network/interfaces

www.clubedohacker.com.br 

127

Administração e Segurança em Sistemas GNU/Linux

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback  # The primary network interface auto eth0 iface eth0 inet static address 100.100.100.50 netmask 255.255.255.0 broadcast 100.100.100.255 Network 100.100.100.0 Gateway 100.100.100.1 Verificar daemon networking, para garantir boot do serviço: # ls /etc/rcS.d

Configurando o nome da máquina: # vi /etc/hostname

Configurando o nome da máquina e o nome de domínio: # vi /etc/hosts -------------------------------------------------------------------------------------------127.0.0.1 localhost.localdomain localhost instrutor  # 127.0.0.1 localhost # 100.100.100.50 clubedohacker.com.br

# The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback  fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts -------------------------------------------------------------------------------------------Verificar domínio que está sendo utilizado: #

hostname -f 

Roteamento: # route

Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface www.clubedohacker.com.br 

128

Administração e Segurança em Sistemas GNU/Linux

100.100.100.0 *

255.255.255.0 U

0

0

0 eth0

Configurando o roteamento: # route add default gw 100.100.100.1

Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface 100.100.100.0 * 255.255.255.0 U 0 0 0 eth0 default 100.100.100.1 0.0.0.0 UG 0 0 0 eth0 Configurando Localidade Mostrar como está configurado atualmente: # locale

Para configurar sua localidade corretamente: # dpkg-reconfigure locale

Primeira tela: pt_BR ISO-8859-1 Segunda tela: pt_BR  Testando: ifconfig # LANG=us (modificando a linguagem) # ifconfig

Configurações relacionadas à localidade: # cat /etc/environment

Configurações relacionadas ao fuso horário: # cat /etc/timezone

Configurar data: # date MMDDhhmmYY

Atualizar a hora da bios de acordo com a hora do S.O: # hwclock -w

Procedimento de check-list dos serviços de rede

Algumas perguntas necessárias para poder configurar um servidor de rede: Tenho o programa instalado? # dpkg –l | grep

[nome_do_serviço]

A porta está definida? # cat /etc/services | grep [nome_do_serviço]

www.clubedohacker.com.br 

129

Administração e Segurança em Sistemas GNU/Linux

Está configurado e inicializado? # nano /etc/inetd.conf

 arquivo de configuração

# /etc/init.d/inetd start

 Inicializando o serviço de rede

Algumas vezes é necessário ler a documentação para saber se o serviço é um destes: padrão inet (/etc/inetd.conf), stand alone ou RPC Portmapper. RPC Chamada de Procedimento remota. São as rotinas de RPC que permitem os   programas em C fazer chamadas a procedimento em outras máquinas pela network. Quando as pessoas falam sobre o RPC elas querem dizer freqüentemente sobre a variação do SUN da RPC. RPC Potmapper  É um servidor que converte programas de RPC em números de TCP/IP (ou UDP/IP) números de protocolos para porta. A porta está ativa? # netstat –nlt | grep :[nº_porta]

Que processo roda na porta? # fuser –v  porta /tcp ; lsof –i ; netstat -nltd

A porta está disponível para conexões remotas? # nmap –sT –n –A [ip_da_máquina]

Atenção:  Não se esqueça de verificar os serviços de login. Digite: # last usuário. O arquivo onde é localizada as informações de usuários on-line, é o /var/log/ utmp. TELNET x SSH

TELNET

 No Telnet as informações trafegam sem criptografia (clear text). Se rodar um sniffer no mesmo seguimento de rede, será possível olhar todos os dados. Verificando se o serviço está instalado: # dpkg -l | grep telnet

Instalando o serviço: # apt-get install telnet-server

Verificando se o serviço está instalado: # dpkg -l | grep telnet

ii telnet

0.17-29

The telnet client

www.clubedohacker.com.br 

130

Administração e Segurança em Sistemas GNU/Linux ii telnetd

0.17-29

The telnet server 

Habilitando o telnet, o mesmo é controlado pelo super daemon de rede inetd. # vi /etc/inetd.conf

#:OTHER: Other services ## netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd/usr/sbin/in.telnetd

Analisando o que será inserido no arquivo /etc/inetd.conf: telnet  nome do servidor, como está registrado no arquivo /etc/services. stream



tipo de socket de rede usado pelo protocolo, possíveis valores são stream,

dgram, raw, rdm e seqpacket. tcp



tipo de protocolo utilizado, deve ser um protocolo que conste no arquivo

/etc/protocols. nowait/wait (não aguardar/aguardar)



é significativo para tipos de soquete de

datagrama (dgram), outros tipos de soquete usam o valor nowait. telnetd.telnetd

usuário e grupo que irão executar o processo de servidor.

 /usr/sbin/tcpd

tcpd é o arquivo de programa para o programa TCP Wrappers. A

maioria das distribuições Linux que usa inetd, também usa TCP Wrappers, e assim, lança a maioria dos servidores mediados por inetd através de tcpd. /usr/sbin/in.telnetd



argumentos do programa servidor, no caso de servidores lançados

 pelo TCP Wrappers, o argumento é o nome final do servidor de tcpd. Subindo o serviço: # cd /etc/init.d/

Stop no serviço: /etc/init.d# ./inetd stop

Start no serviço: /etc/init.d# ./inetd start

Agora é só fazer um teste no servidor telnet do colega. # adduser telnetx

senha: XXXXXX

Por padrão o telnet não permite conexões como root. Vamos acessar o computador do colega: # telnet ip_do_colega

Se for usar o telnet no Sistema. Garanta que o serviço está na inicialização:

www.clubedohacker.com.br 

131

Administração e Segurança em Sistemas GNU/Linux # ls /etc/rc2.d

SSH É um outro tipo de servidor remoto de LOGIN. É responsável pela autenticação segura e criptografia de dados, além de logins e execução de arquivos remotamente. # dpkg -l | grep ssh # apt-get install ssh

Detalhes do arquivo de configuração: # vi /etc/ssh/sshd_config

Port 22 Protocol 2 KeyRegenerationInterval 3600 LoginGraceTime 600 PermitRootLogin yes RSAAuthentication yes PubkeyAuthentication yes PermitEmptyPasswords no Passwordauthentication yes Start no serviço: # /etc/init.d/ssh start

Conectando no servidor SSH: # ssh # ssh usuario@hostname # ssh -l usuario ip_do_servidor

Também se pode executar comandos remotamente: # ssh -l usuario 100.100.100.x du -hs /etc

Fazendo cópia de dados: Fazendo um download de arquivos do servidor:  _do_servidor:/diretório_remoto/arquivo dir_local # scp usuario@ip

Fazendo um upload do servidor:  _do_servidor:/diretorio_remoto # scp arquivo usuario@ip # scp /tmp/teste [email protected] :/home/usuario

Fazendo um download do diretório remoto do SSH: # scp -r usuario@ip  _do_servidor:/diretorio_remoto diretorio_local

# scp -r [email protected] :/tmp

/root

Fazendo um upload no diretório no servidor: # scp -r diretorio_local usuario@ip  _do_servidor:/diretorio_remoto

www.clubedohacker.com.br 

132

Administração e Segurança em Sistemas GNU/Linux SSH com chaves Gera chaves de autenticação RSA com o protocolo SSH: # ssh-keygen -t rsa

Podemos deixar uma palavra para permitir acesso no servidor remoto. Serão gerados dois arquivos no home do usuário, no subdiretório .ssh, são eles: id_rsa e id_rsa.pub. O primeiro é chave privada. O segundo deve ser enviado via canal para o servidor de acesso, pois é o arquivo de chave pública: # scp ~/.ssh/id_rsa.pub usuario@ip :.ssh/

O usuário deve ser o mesmo no servidor do cliente. Acesse o servidor SSH com o usuário, e coloque sua chave pública no arquivo, onde o servidor mantém o controle das chaves autorizadas: # ssh usuario@ip

# cd .ssh/

# cat id_rsa.pub >> authorized_keys

Agora é só logar no servidor normalmente e ver se consegue logar sem senha: # ssh usuario@ip

TCPWrappers

Os TCP Wrappers são utilizados para aplicar regra de acesso aos servidores utilizados em seu sistema, podendo permitir ou negar as conexões à eles. Eles são controlados por dois arquivos: /etc/hosts.allow (configuração de acessos permitidos para determinados IPs) e /etc/hosts.deny (configuração de acessos negados para determinados IPs). ---------------------------------------------------------------------------------------------------------Para liberar o acesso de um determinado serviço para todos da rede, é necessário adicionar a seguinte linha no arquivo  /etc/hosts.allow: in..telnetd:ALL ---------------------------------------------------------------------------------------------------------Bloqueando o acesso a um serviço, para todos da rede 192.168.100.0 menos para o ip 192.168.100.100: Adicione a seguinte linha no arquivo /etc/hosts.deny: sshd: 192.168.100. EXCEPT 192.168.100.100 ----------------------------------------------------------------------------------------------------------

www.clubedohacker.com.br 

133

Administração e Segurança em Sistemas GNU/Linux

O arquivo /etc/hosts.allow tem preferência de leitura em relação ao /etc/hosts.deny. Insira nos dois arquivos, a seguinte linha: in.sshd:ALL

O que vai acontecer? Agendamento de tarefas (cron)

O cron é um daemon que permite o agendamento da execução de um comando/programa para um determinado dia/mês/ano/hora. É muito usado em tarefas de arquivamento de logs, checagem da integridade do sistema e execução de  programas/comandos em horários determinados, mas isso não impede que ele possa ser  usado para tarefas simples. Utilize o comando at  para agendar a seguinte tarefa: listar todos os arquivos do diretório /root e direcionar a saída para o arquivo  /tmp/arquivo.txt, utilize o comando date  para saber a hora e data do sistema e coloque esta tarefa para que seja executada

daqui a 1 minuto. #date

# at

21:30 03/05/2007

at> ls –l /root> /tmp/arquivo.txt

O atalho CTRL D salva o agendamento. Visualizando as tarefas agendadas: # atq

Para remover uma tarefa agendada: # atrm 

Colocando o cron em uma rotina para fazer backup do diretório /etc/ de um em um minuto:  chama um arquivo temporário para edição do agendamento:

# crontab –e *

*

*

*

* tar cvzf backup.tar.gz /etc

Trabalhando com servidor de sincronização de horário – NTP

Tem por função, estabelecer uma sincronia do relógio do sistema com a referência mundial de tempo, o padrão UTC (Horário Universal Coordenado), através do protocolo NTP. www.clubedohacker.com.br 

134

Administração e Segurança em Sistemas GNU/Linux

Ele trabalha

com uma associação de hierarquia de servidores, que são

denominadas stratum. O stratum 0 é a origem da hierarquia dos servidores de tempo, onde estão os equipamentos de fonte de horários reais mais precisos (receptores GPS e relógios atômicos). Logo abaixo, no stratum1 estão os servidores públicos diretamente sincronizados com os equipamentos de precisão. No stratum 2, estão os servidores  públicos utilizados por padrão pelos demais servidores e clientes ntp do mundo, para evitar sobrecarga no stratum1. Qualquer servidor NTP que tenha como referência de tempo um servidor stratum 1 passa a ser um stratum 2, qualquer servidor NTP que tenha como referência de tempo um servidor stratum 2 passa a ser um stratum 3, e assim por diante. Feito o download da última versão do NTP a partir de: http://www.ntp.org Descompactando o pacote: tar -xvzf nome_do_pacote.tar.gz –C /usr/local/

ou tar -xvjf nome_do_pacote.tar.bz2 –C /usr/local/

A compilação e instalação do servidor NTP é trivial, normalmente basta seguir  os passos indicados no arquivo INSTALL contido na distribuição. OBS: Em nosso caso será adicionado o parâmetro --prefix=/usr/local/ntps/ para que o servidor de NTP seja instalado em /usr/local/ntps. Estes se resumem basicamente à execução dos seguintes comandos: ./configure --prefix=/usr/local/ntps

 make

 make check

su

 make install

Os binários foram instalados no diretório /usr/local/ntps/bin: www.clubedohacker.com.br 

135

Administração e Segurança em Sistemas GNU/Linux ntpd: Processo daemon. ntpdate: Utilitário que permite configurar o horário e data locais usando como referência um servidor NTP remoto. Similar ao conhecido comando ntpdate. ntpq e ntpdc: Programas de monitoramento e controle. Permitem realizar consultas a servidores NTP sobre o estado do mesmo e, eventualmente, requerer mudanças de tal estado. ntptrace: Determina de onde um determinado servidor NTP obtém a referência de tempo e raça o caminho seguido até o servidor master (comumente, servidor NTP stratum 1).

Todos eles são criados com permissão 755 (isto é, rwxr-x-r-x), tendo como dono o usuário root. A configuração do servidor NTP incluiu os seguintes passos: Criação do arquivo de configuração. Este arquivo é o usr/local/ntps/etc/ntp.conf. OBS: O conteúdo do arquivo de configuração /usr/local/ntps/etc/ntp.conf encontra-se no final deste documento, no anexo. Criação do arquivo "drift" com conteúdo vazio. A diretiva drift no arquivo de configuração indicará a localização e nome deste arquivo. Este arquivo é o /usr/local/ntps/etc/ntp.drift. Inicialização do daemon ntpd. O daemon pode ser inicializado usando o seguinte comando: # /usr/local/ntps/bin/ntpd -c /usr/local/ntps/etc/ntp.conf

Ou através do script de inicialização ntpd contido em /etc/init.d/. Existindo entre os respectivos relógios dos servidores local e remoto um offset (diferença) maior do que 1000 seg (aprox. 20 minutos), o daemon não configurará o relógio local, será gerada automaticamente uma mensagem de log e automaticamente será desativará. Para verificar se o daemon ntpd foi corretamente inicializado podem ser usados os utilitários ntpq e ntpdc, executando qualquer um dos seguintes comandos. Implementando o serviço NTP na sua rede local: ntpq -p [ip_servidor_NTP_local] ntpdc [ip_servidor_NTP_local] 

Uma inicialização sem sucesso será reportou no arquivo de logs por uma mensagem

do tipo: ntpq: read: Connection refused

www.clubedohacker.com.br 

136

Administração e Segurança em Sistemas GNU/Linux

  Neste caso é preciso ajustar previamente o relógio local com algum servidor NTP remoto, usando para tal o mecanismo de ajuste ntpdate: ntpdate [ip_servidor_NTP_remoto] 

Uma inicialização com sucesso é indicada por uma saída do tipo: ntpq -p xxx.xxx.xxx.xxx

Quando o daemon do servidor local inicializa, leva em torno de 5 minutos para sincronizar adequadamente com o servidor remoto. Em alguns casos é necessário esperar horas para tal sincronização. Uma diferença de tempo menor que 128 ms é requerida para sincronização. Configuração dos clientes Linux Configurando os clientes Linux para serem atualizados a cada 30 minutos. Para isso usamos o ntpdate e o cron. O cron pode ser interpretado como um serviço do Linux que é carregado durante o processo de boot do sistema. Trata-se de uma ferramenta que  permite programar a execução de comandos e processos de maneira repetitiva ou apenas uma única vez. É necessário um software cliente de NTP. No nosso caso usamos o ntpdate. A instalação do ntpdate irá variar conforme a distribuição Linux usada. Após instalados os softwares necessários, temos de fazer as configurações dos mesmos. No arquivo /etc/crontab foram adicionadas as seguintes linhas: #[minutos] [horas] [usuário] [comando]

[dias

do

mês]

[mês]

[dias

da

semana]

0,30 * * * * root /usr/sbin/ntpdate xxx.xxx.xxx.xxx

Onde xxx.xxx.xxx.xxx é o endereço IP do nosso servidor de NTP. Então reiniciamos o cron. Identificação dos servidores fonte de horários: # ntptrace 192.168.100.100

Para as máquinas de rede que forem os clientes NTP, é possível fazer a sincronização do horário com o servidor através do comando ntpdate: # ntpdate 192.168.100.100

www.clubedohacker.com.br 

137

Administração e Segurança em Sistemas GNU/Linux Gerenciando impressão no sistema

O CUPS (Commom Unix Printing System) é uma das formas atualmente mais utilizadas para trabalharmos com impressão no mundo Linux. Ele utiliza o protocolo IPP (Internet Priting Protocol) para gerenciar as filas e trabalhos de impressão. O CUPS fornece uma interface Web para gerenciamento, quotas para impressão e suporte para a maioria das impressoras existentes. Antes de instalar o CUPS é necessário instalar o gs, que é um interpretador de arquivos Postscripts, pois o sistema de impressão se utiliza de arquivos no formato PPD, que são responsáveis pela comunicação com o driver da impressora através do padrão Postscript. # apt-get install gs

Instalando os pacotes do CUPS: # apt-get install cupsys cupsys-client

cupsys  servidor de impressão CUPS cupsys-client  cliente de impressão do CUPS Verificando se o sistema possui suporte ao driver da nossa impressora: # gs -h

Para suporte a drivers da HP, instale o pacote hpijs: # apt-get install hpijs

Para suporte à impressora: # apt-get install foomatic-* -y

OBS: Caso sua impressora não possua suporte, você pode procurar pelo driver  correspondente para ela em: www.linuxprinting.org. Acessando o arquivo de configuração do servidor de impressão, para visualizarmos algumas opções importantes de configuração: # cat /etc/cups/cupsd.conf | less

Levantando o CUPS: # /etc/init.d/cupsys start

Testando para verificar se o serviço está ok: # lpstat -t

www.clubedohacker.com.br 

138

Administração e Segurança em Sistemas GNU/Linux

A gerencia das configurações relacionadas à fila de impressão, impressoras instaladas, e outros, ocorre através da interface gráfica de gerenciamento do CUPS via  browser.  No browser digite: localhost:631/admin

Definindo políticas de uso da impressora: 

Quantidade de páginas que podem ser impressas por usuário: # lpadmin –p Imp01 –o job-page-limit=10



Tamanho limite de arquivos impressos pelos usuários (em KB): # lpadmin –p Imp01 –o job-k-limit=1000



Tempo de validade da quota por usuário: # lpadmin –p Imp01 –o job-quota-period=86400

Todas as informações foram geradas no arquivo de configuração da impressora no cups, onde todos esses parâmetros estão no arquivo /etc/cups/printers.conf. Verificando referência de impressoras conectadas: # lpinfo -v

Arquivo no qual o sistema busca definições das impressoras existentes: # nano /etc/printcap

Usando o modo mais básico para impressão de arquivos em Linux: # echo teste > /dev/lp0 # cat arquivo.txt > /dev/lp0

Fazendo um teste de impressão com o comando “lp”: # lp –dImp01 arquivo.txt

 Na opção “–d” é necessário especificar o nome da impressora. Verificando a fila de impressão: # lpq –Pimp01 ou # lpstat -t

Removendo um trabalho da fila de impressão: # lprm –Pimp01 5

O 5 é o número do job na fila de impressão. www.clubedohacker.com.br 

139

Administração e Segurança em Sistemas GNU/Linux

Compartilhamento de arquivos e m Re d e s

www.clubedohacker.com.br 

140

Administração e Segurança em Sistemas GNU/Linux Servidor NFS

O Servidor NFS é o servidor de compartilhamento de arquivos padrão em sistemas Linux e/ou Unix. Ele se utiliza do protocolo NFS (Network File System). Suas   principais utilidades em uma rede são a centralização de informações públicas e de intenso acesso, e o armazenamento de grandes arquivos em um único local (facilitando o backup da rede). Instalando o servidor NFS: # apt-get install nfs-kernel-server

Configurando os diretórios a serem exportados através do servidor NFS, editando o arquivo /etc/exports: # nano /etc/exports

Indique o diretório a ser exportado:   /tmp *(ro)  exportando o diretório /tmp do servidor, com a permissão somente

leitura para todos.  /home/share 100.100.100.0/24(rw)



exportando o /home/share com permissão de

leitura e gravação somente para a minha rede.   No mesmo arquivo você pode acrescentar mais informações. Compartilhe o diretório home de um usuário, aplique a permissão de escrita para uma máquina e somente leitura para o resto da rede, mas ninguém acessa o diretório /home/tux/privado:  /home/usuário 100.100.100.100(rw,root_squash)  /home/usuario 100.100.100.0/24(ro,secure,no_root_squash) 

A opção “secure” faz com que o servidor aceite somente conexões feitas por portas

abaixo de 1024; 

A opção “no_root_squash” faz com que o root seja considerado um usuário

comum, 

A opção “root_squash” permite uid=0 nas conexões



A opção “hide” especifica que todos têm o acesso negado ao diretório (por isso

essa linha é deixada no final) O NFS não trabalha com uma porta padrão convencional, usa um utilitário chamado portmapper, que utiliza a porta fixa (111), monitora a porta que o NFS usa e direciona os clientes para portas certas (normalmente a porta 2049/UDP). www.clubedohacker.com.br 

141

Administração e Segurança em Sistemas GNU/Linux

Inicializando o portmapper e o NFS: # /etc/init.d/portmap start # /etc/init.d/nfs-kernel-server start

Visualizando os arquivos que estão no servidor: # showmount –e 100.100.100.100

Montando o compartilhamento ativo do servidor: # mount –t nfs 100.100.100.100:/tmp

/mnt/nfs

Removendo o compartilhamento do diretório /tmp do servidor sem reiniciar o serviço: # exportfs –u *:/tmp # showmount –e 100.100.100.100 

visualizando compartilhamento do /tmp

removido

Para reativa-lo sem reiniciar o serviço: # exports –a -r

Servidor Samba

O Samba é um servidor de compartilhamento de arquivos e/ou impressoras, utilizando para isso o protocolo SMB (Server Message Block), que também é o  protocolo padrão utilizado para compartilhamento em redes Microsoft. Por este motivo, ele é muito utilizado para inteoperabilidade entre redes Linux e Microsoft. Instalando o Samba: # apt-get install samba smbclient smbfs

samba  servidor samba samba-commom  arquivos de configuração do samba smbclient  cliente samba para Linux smbfs  montagem de compartilhamentos através do Linux

Acessando o arquivo de configuração do samba: # nano /etc/samba/smb.conf

O arquivo de configuração, parâmetros "avançados" Verifiquemos os seguintes parâmetros: www.clubedohacker.com.br 

142

Administração e Segurança em Sistemas GNU/Linux

Seção [global] 









  

 

       



netbios name: Pode especificar o nome netbios do seu servidor samba. Pode ver o nome netbios na vizinhança da rede a partir das suas máquinas windows. Se não atribuir nenhum, o servidor linux obterá o seu nome de netbios a  partir do seu nome de rede. invalid users: Lista de utilizadores sem acesso ao samba. Por exemplo, o "root" não devia ser permitido. interfaces: Se o seu servidor linux tiver mais do que uma placa de rede e quer  restringir a sua atividade a uma só placa de rede. security: Seleção do modo de segurança a ser utilizada. Usando security=user  requer que cada utilizador tenha uma conta no servidor GNU/Linux. Se não quiser que o samba administre os utilizadores e compartilhe o mesmo recurso para todos, pode selecionar security=share. workgroup:   Nome do grupo de trabalho do qual o seu servidor Linux deve fazer   parte. server string: Uma descrição para a sua máquina Linux (uma string qualquer). socket options: Uma lista de opções para "personalizar" o samba e torná-lo mais rápido. encrypt passwords: Deve-se utilizar palavras-chave encriptadas. É importante saber que  praticamente todos os sistemas Windows utilizam um esquema diferente. wins support: Permite o seu servidor Linux a trabalhar como um servidor WINS. os level: O Nível do SO para saber qual é que é "eleito" como master domain, local domain, etc. domain master: Define o samba como domain master  local master: Define o samba como um servidor local master  preferred master: Deve ser o samba "preferido" entre outros servidores, se existirem domain logons: Deve o Samba controlar as ligações para todo o domínio logon script: Qual a script a correr quando um utilizador abre uma sessão logon path: Onde estão as scripts de arranque logon home: Onde se devem armazenar os perfis de usuário name resolve order: Qual é a ordem de recursos a seguir para encontrar o nome de uma máquina na rede dns proxy: Deve o servidor samba ser utilizado como um proxy de DNS

www.clubedohacker.com.br 

143

Administração e Segurança em Sistemas GNU/Linux preserve case: Para manter o nome de arquivos em letra MAIÚSCULAS. short preserve case: Para manter o nome de arquivos em letras MAIÚSCULAS. unix password sync: As palavras-chave do Unix e Windows devem estar sincronizadas passwd program: Qual o programa a utilizar na mudança de palavras-chave. passwd chat: Qual é o protocolo a utilizar para alterar a palavra-chave max log size: Tamanho máximo do arquivo de log.

     

Seção [netlogon] Especificar onde se encontra o netlogon. Seção [profiles] Bloco dos perfis de usuários. Seção [homes] Diretório de trabalho dos usuários. Variáveis Samba Variável Definição Variáveis do Cliente %a Arquitectura do Cliente Exemplo: Win95, WfWg, WinNT, Samba ... %I Endereço IP do cliente %m  Nome de NetBios do cliente %M  Nome de DNS do cliente Variáveis de usuário %g Grupo primário do utilizador %u %H Directório de trabalho do utilizador %u %u  Nome Unix actual do utilizador  Variáveis de partilha %P Raiz da partilha actual %S  Nome da partilha actual Variáveis do servidor %h nome DNS do servidor Samba %L nome NetBios do servidor Samba %v Versão do Samba Variáveis variadas %T Data e tempo corrente www.clubedohacker.com.br 

144

Administração e Segurança em Sistemas GNU/Linux

Se necessário criar um compartilhamento, adicione as linhas ao final do arquivo. Exemplo de compartilhamentos: [linux] comment=testando o samba  path=/tmp/samba valid users=user1 user2 writable=yes creat mask=0600 directory mask=0700 [arquivos] comment=mais uma vez testando o samba  path=/tmp/arquivos writable=yes write list= @aula valid users= @aula creat mask=0660 directory mask=0700 Verificando se o arquivo possui erros: # testparm /etc/samba/smb.conf

Subindo o serviço do Samba: # netstat –nlp | more

#

/etc/init.d/samba start

# netstat –nlp | more

Consultando localmente o serviço: # smbclient –L 127.0.0.1

Consultando se os compartilhamentos do servidor estão ativos: # smbclient –L 100.100.100.100 -N

Adicionando usuários na base de dados SAMBA: # smbpasswd –a [usuário]

Montando o compartilhamento linux com o usuário user1, e quando ele pedir a senha, coloque a que você definiu: www.clubedohacker.com.br 

145

Administração e Segurança em Sistemas GNU/Linux # smbmount //100.100.100.100/linux

/mnt/samba

-o

username=user1

OBS: Se você tentar montar com qualquer usuário que não esteja definido com  permissão de acesso ao compartilhamento, será retornado um erro. Samba com PDC (Primary Domain Controler ) O pdc é o responsável pela autenticação de usuários, caso ele se torne indisponível ( e isso acontece muito ) pode-se promover um bdc a pdc e assim os usuários continuam a ser  autenticados. ################ P D C ################## Clube do Hacker ############ [global] workgroup = windows netbios name = eu server string = servidor pdc domain master = yes  preferred master = yes local master = yes domain logons = yes logon script = netlogon.bat security = user  encrypt passwords = yes os level = 100 logon home = \\%L\%U\.profiles logon path = \\%L\Profiles\%U= [netlogon] comment = Serviço de logon  path = /var/samba/netlogon guest ok = yes  browseable = no Executar um testparm: # testparm /etc/samba/smb.conf

Subindo o serviço Samba: # netstat -nlp | more

# /etc/init.d/samba start

# netstat -nlp | more

Cadastrar o root: # smbpasswd -a root

Criando um diretório para configurar as permissões: # mkdir -p /var/samba/netlogon

# chmod 775 /var/samba/netlogon

www.clubedohacker.com.br 

146

Administração e Segurança em Sistemas GNU/Linux Cadastrando os logins dos usuários, com as senhas que eles utilizarão para fazer logon a  partir das máquinas Windows. # adduser tux # smbpasswd -a tux

É importante criar também o diretório “profile.pds” dentro do diretório home do usuário, onde o cliente Windows armazena as informações da sessão cada vez que o usuário faz logon no dimínio: # mkdir /home/tux/profile.pds

Além das contas para cada usuário, é necessário cadastrar também uma conta (sem senha) para cada máquina. Se a máquina se chama “linux” por exemplo, é preciso criar um login de máquina com o mesmo nome: # adduser linux1

# adduser linux2

# adduser linux3

# passwd -l linux1$

# passwd -l linux2$

# passwd -l linux3$

# smbpasswd -a -m linux1 smbpasswd -a -m linux1

# groupadd trust

;

smbpasswd

-a

-m

linux1

;

=> “trust account” => nome de máquina

# useradd -g trust -s /dev/null -d /dev/null linux1$

# useradd -g trust -s /dev/null -d /dev/null linux2$

# useradd -g trust -s /dev/null -d /dev/null linux3$

www.clubedohacker.com.br 

147

Administração e Segurança em Sistemas GNU/Linux Por último é necessário criar o arquivo “/var/samba/netlogon/netlogon.bat” um script que é lido e executado pelo usuários ao fazer logon. Para ativar o suporte no Samba, adicione no final da sessão [global] do smb.conf (abaixo da linha “logonscript = netlogon.bat”) logon home = \\%L\%U\.profiles logon path = \\%L\profiles\%U

A variável “%L” neste caso indica o nome do servidor e o “%U” o nome do usuário que está fazendo logon. Quando “tux” faz logon é montado o compartilhamento “\\gdh\profiles\tux” Vamos adicionar também um novo compartilhamento, adicionando as linhas abaixo do final do arquivo: [profiles] path = /var/profiles writable = yes browsable = No crate mask = 0600 directory mask = 0700

É necessário criar um diretório “/var/profiles”, com permissão de escrita para todos os usuários: # mkdir /var/profiles # chmod 1777 /var/profiles

Cada usuário passa a ter uma pasta dentro da pasta (“/varprofiles/tux”) onde as configurações são salvas. Vamos reinicializar o servidor SAMBA: # /etc/init.d/samba restart

Fazendo um teste para saber se o meu master browser e o meu PDC estão respondendo na minha rede: # nmblookup -A -M 100.100.100.0

Agora é preciso configurar a máquina no Windows. É necessário trabalhar com o nome da máquina e com o nome do domínio: Depois reinicie o Windows e ingresse no domínio. usuário: tux (criado anteriormente) senha: a mesma do smbpasswd (agora /etc/samba/smbpasswd será base de dados dos usuários

do domínio) domínio: windows

www.clubedohacker.com.br 

148

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF