145
Administração e Segurança em Sistemas Linux 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;

Administração e segurança em Sistemas Linux

  • Upload
    wotmax

  • View
    96

  • Download
    24

Embed Size (px)

Citation preview

Page 1: Administração e segurança em Sistemas Linux

Administração e Segurança emSistemas Linux

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;

Page 2: Administração e segurança em Sistemas Linux

Instalaçãoe atualização do

Sistema Operacional

Debian GNU/Linux

Page 3: Administração e segurança em Sistemas Linux

Conhecendo a estrutura

Os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado diretório raiz ou simplesmente "/".

Dentro deste diretório temos não apenas todos arquivos e as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos, formando a estrutura abaixo:

/

/bin /boot /dev /etc /home /lib /mnt /opt /proc /root /sbin /tmp /usr /usr/local /usr/src /var

Page 4: Administração e segurança em Sistemas Linux

Tipos de sistema de arquivos do Linux

EXT3

ReiserFS

JFS

XFS

LVM

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.

Page 5: Administração e segurança em Sistemas Linux

INSTALAÇÃO DO DEBIAN GNU/LINUX

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;

Page 6: Administração e segurança em Sistemas Linux

PARTICIONAMENTO DO DISCO RÍGIDO

Observe o esquema de particionamento, as recomendações direcionam a um esquema para particionar:

/var/usr /tmp

/home

/

/swap

/

/var

/usr

/tmp

/swap

/home

250 MB

4 a 6 GB

3 GB

100MB

2 X RAM

100MB p/ usuário

Tabela de particionamento

Page 7: Administração e segurança em Sistemas Linux

A identificação de discos rígidos no 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.

Page 8: Administração e segurança em Sistemas Linux

Customizando, compilando e instalando um kernel Linux em seu servidor

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

Page 9: Administração e segurança em Sistemas Linux

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/linuxEste será o diretório raiz de compilação, ou seja, o diretório base para os passos seguintes.

Page 10: Administração e segurança em Sistemas Linux

Caso já exista uma compilação anterior, retorne ao padrão os arquivos de configuração do kernel. # make mrproper

Edite o arquivo Makefile para personalizar a versão de sua compilação. Altere a variável EXTRAVERSION. VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = x EXTRAVERSION = -i386-mwsf-1

Quais são os Softwares que preciso para iniciar a compilação? # cat /usr/src/linux/Documentation/Changes

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

Page 11: Administração e segurança em Sistemas Linux

Execute a ferramenta de configuração assim: # make menuconfig

ou # make xconfig (modo gráfico)

Após a configuração do kernel, vamos compilá-lo realmente. Para isto, execute o comando: # make

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 /boot/vmlinuz-2.6.x-i386-mwsf-1

Nomeie os arquivos de acordo com a versão do kernel que está compilando e de acordo com a arquitetura de hardware.

Page 12: Administração e segurança em Sistemas Linux

Agora vamos copiar o arquivo System.map para /boot:

# cp /usr/src/linux/System.map /boot/System.map-2.6.x-i386-mwsf-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.

Page 13: Administração e segurança em Sistemas 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 meta-configurações que você fez.

Reinicie o Sistema

Page 14: Administração e segurança em Sistemas Linux

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.

LILO (Linux Loader)

Instalando o LILO:

# apt-get install lilo

Editando seu arquivo de configuração:

# nano /etc/lilo.conf

Page 15: Administração e segurança em Sistemas Linux

Após o termino da instalação, execute o liloconfig.Editando o seu arquivo de configuração:# nano /etc/lilo.confAdicione 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.imgread-only--------------------------------------------------------------------------------------------------------Para que as alterações sejam lidas pelo sistema, precisamos dar o comando lilo:

# lilo

Page 16: Administração e segurança em Sistemas Linux

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.lstAdicione as seguintes linhas ao final do arquivo:-------------------------------------------------------------------------------------------------------Title “Novo Kernel”root (hd0,0)kernel /boot/vmlinuz-2.6.x-i386-mwsf-1 initrd /boot//initrd-2.6.x-i386-mwsf-1.imgroot=/dev/hdx1 rosavedefaultboot-------------------------------------------------------------------------------------------------------Depois de alterar o arquivo, precisamos atualizar o GRUB na MBR:# grub-install /dev/hdxApós a atualização, reinicie o sistema.

Page 17: Administração e segurança em Sistemas Linux

SHELL Sistema OperacionalGNU/Linux

Usodo

Shell

Page 18: Administração e segurança em Sistemas Linux

O que é um shell?Um shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e executa esses comandos produzindo algum resultado.

Para que serve um shell? O shell pode ser considerado como um ponto a partir do qual você pode iniciar todos os comandos do Linux. A maior parte das diferenças existentes entre os shells mais conhecidos (bash, csh, ksh e zsh) envolve facilidade de operação e tipos de configuração.

Qual é seu shell?

# echo $SHELL

Veja os tipos de shells:

# cat /etc/shells

Page 19: Administração e segurança em Sistemas Linux

Usando o interpretador de comandos

Abre uma nova sessão para um usuário:# login Tem como função desconectar um usuário de uma determina sessão:# logoutO objetivo é encerrar uma sessão de trabalho:# exitDesligar:# halt

# shutdown -h now

# shutdown 18:00

# shutdown -h 10

# init 0

# shutdown <opções> <hora> <mensagem>

Page 20: Administração e segurança em Sistemas Linux

Reiniciar:# reboot# shutdown -r now# shutdown -r 15 now# init 6Exibe a quantidade de tempo desde a última reinicialização do sistema:# uptimePágina de manual e de informações sobre os comandos:# man shutdownou # info shutdownProcessos em tempo real:# topProcessos em execução no sistema:# ps aux

Page 21: Administração e segurança em Sistemas Linux

Modificar data e hora do sistema:

# date MMDDHHMMYY

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)

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

Page 22: Administração e segurança em Sistemas Linux

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 Significado

. (ponto) Diretório atual

.. (dois pontos) Diretório anterior

~ (til) Diretório HOME do usuário

/ (barra) Diretório Raiz

- (hífen) Ú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

Page 23: Administração e segurança em Sistemas Linux

Criar novo diretório:# mkdir [diretório]# mkdir freeRemover 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! )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 /manual /home/linux-manualEste comando criará o link /home/linux-manual, se você der um ls -l você verá que o diretório /home/linux-manual está apontando para /manual. Se você for para o /home/linux-manual, você na verdade estará no /manual, mas como é um link, não há diferença.

Page 24: Administração e segurança em Sistemas Linux

Mostra os arquivos no formato longo em ordem inversa de data:# ls –ltr# ls –ltr [diretório]l = longot = dater = inversaMostra 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 lsIndica o caminho completo para o comando dado:# which ls

Page 25: Administração e segurança em Sistemas Linux

É 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 arquivoAtualizando hora e data de um arquivo:# touch -t YYYYMMDDhhmm arquivoCriando um arquivo:# : > [arquivo]# : > linuxCriando vários arquivos:# touch gnu linus unix hurdMovendo um arquivo:# mv /root/debra /home/user/Movendo um arquivo para o diretório local:/home/user# mv /root/debra .

Page 26: Administração e segurança em Sistemas Linux

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 e exibe em cores:# 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

Editando um arquivo:# nano gnu

Page 27: Administração e segurança em Sistemas Linux

####################################Linux

###################################### (0> ## Porque ## / \\ ## Amamos a## \_/_ ##Liberdade!####################################

Linux Basic System AdministrationTinha uma pedra no meio do caminho,No meio do caminho tinha uma pedra.

Mostra o conteúdo de um arquivo binário ou texto:# cat gnuMostra o arquivo na ordem invertida de leitura:# tac ianExibe as primeiras linhas de um determinado arquivo:# head [arquivo]# head –n [arquivo]# head -3 gnu

Page 28: Administração e segurança em Sistemas Linux

Exibe as últimas linhas de um determinado arquivo:# tail [arquivo]# tail –n [arquivo]# tail -3 gnuLocaliza um determinado arquivo especificado:# locate linusAtualiza a base de dados do locate:# updatedbO 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 | lessExibindo um arquivo em linhas numeradas:# nl gnu

Page 29: Administração e segurança em Sistemas Linux

Contador de linhas, palavras e bytes:# wc [opções] [arquivo]# wc gnu# wc -l gnu# wc -w gnu# wc -c gnuVisualiza de forma crescente as informações do arquivo:# sort gnuVisualiza de forma decrescente as informações do arquivo:# sort -r gnuMostra informações de um arquivo:# file [arquivo]# file gnuIndica o tipo de arquivo:# type [arquivo]# type gnuMostra inode com atributos MAC (Modify, Access, Changes):# stat [arquivo]# stat gnu

Page 30: Administração e segurança em Sistemas Linux

Exibe a árvore de diretórios:/# treeExibir informações do sistema, tais como: o sistema operacional, versão do kernel, arquitetura da máquina e muitos outros:# uname [opções]# uname -r (versão de kernel)# uname -m (arquitetura de máquina)# uname -n (mostra o hostname)# uname -p (mostra o tipo de processador)# uname -v (mostra a data da versão do kernel)# uname -o (mostra o nome do Sistema Operacional)# uname -s (mostra o nome do Kernel)Mostra uma listagem de entrada e saída de usuários no sistema:# lastExibe o histórico:# historyLogins mal sucedidos:# lastb

Page 31: Administração e segurança em Sistemas Linux

AliasAlias 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

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; sleep 5s; eject -t”alias ls=”ls --color -lah”

OBS: sempre editar ao final do arquivo.

Page 32: Administração e segurança em Sistemas Linux

VariáveisO shell é executado no sistema controlado por variáveis de ambiente (espaços de memória que armazenam valores), as mesmas podem ser:•Variáveis locais •Variáveis globais

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.

Page 33: Administração e segurança em Sistemas Linux

Variáveis locais: $ setVariáveis globais: $ envou$ printenvPara atribuir um valor a uma variável local. Exemplo: $ LINUX=free$ echo $LINUXfreeO 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 LINUXLINUX=freeAgora vamos transformar esta variável local uma variável global. Para isso devemos usar o comando export:# export LINUX# env | grep LINUXLINUX=free

Page 34: Administração e segurança em Sistemas Linux

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: # unset LINUX# echo $LINUXAgora 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 # 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.

Page 35: Administração e segurança em Sistemas Linux

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

Page 36: Administração e segurança em Sistemas Linux

Introdução a programação em Shell ScriptPassos para criar um Shell ScriptEscolha um nome para o scriptUse apenas letras minúsculas e evite acentos, símbolos e espaço em branco. nome: sistemaEscolha o diretório onde colocar o scriptPara 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 $PATHSe 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 comandosUse o editor de textos de sua preferência para colocar todos os comandos dentro do arquivo.Coloque a chamada do Shell na primeira linhaA primeira linha do script deve conter: # !/bin/bash para que ao ser executado, o sistema saiba que é o Shell quem iráinterpretar estes comandos.

Page 37: Administração e segurança em Sistemas Linux

Torne o script um arquivo executávelUse 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.

Page 38: Administração e segurança em Sistemas Linux

Se o script estiver no diretório corrente, chame−o com um ./ na frente. Exemplo:$ ./sistemaCaso 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_escriptpara 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.

Page 39: Administração e segurança em Sistemas Linux

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.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

Page 40: Administração e segurança em Sistemas Linux

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 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:

Page 41: Administração e segurança em Sistemas Linux

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;•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 "||".

Page 42: Administração e segurança em Sistemas Linux

Melhorando o script:

Page 43: Administração e segurança em Sistemas Linux

Alguns dos conceitos vistos no script anterior:VariáveisAs 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":

Não podem haver espaços ao redor do igual "="

Page 44: Administração e segurança em Sistemas Linux

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

Page 45: Administração e segurança em Sistemas Linux

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.

Page 46: Administração e segurança em Sistemas Linux

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

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.

Page 47: Administração e segurança em Sistemas Linux

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

Page 48: Administração e segurança em Sistemas Linux

Configurando e

gerenciando Hardware

Page 49: Administração e segurança em Sistemas Linux

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 /tmp swap /home

Partição Tamanho

/ 250 MB

/var 2 ou 3 GB

/usr 4 a 6 GB

/tmp 100 MB

/swap 2 x RAM

/home 100 MB por usuário

Page 50: Administração e segurança em Sistemas Linux

Gerenciando hardware

Partições montadas automaticamente no processo de boot:# cat /etc/fstabMostra os sistemas de arquivos montados:# df# df -hCriando partições no HD:# cfdisk# fdiskInformações sobre o hardware de sua máquina:# lspci# scanpciInformações de processamento /proc:# cd /procExemplo:# cat /proc/bus/pci/devicesVerificando uma placa:# lspci | grep audio

Page 51: Administração e segurança em Sistemas Linux

Verificando as irqs que estão sendo utilizadas:# cat /proc/interruptsVerificando endereços de I/O que estão sendo utilizados:# cat /proc/ioportsVerificando informações de processamento:# cat /proc/cpuinfoSabendo qual é a sua partição swap:# cat /proc/swapsVerificando detalhes de memória:# cat /proc/meminfoConfigurando o teclado:# loadkeys -d br-abnt2# loadkeys -d usConfigurando o mouse serial:# apt-get install gpm# gpm -m /dev/ttySO -t ms3/dev/ttySO => corresponde a porta serial 1ms3 => o mouse que tem a barra de rolamento no meioMouse PS/2: gpm -m /dev/psaux -t ms3

Page 52: Administração e segurança em Sistemas Linux

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

Page 53: Administração e segurança em Sistemas Linux

Trabalhando com módulosLista os módulos em memória: # lsmod# cat /etc/modules Identifica um hardware:# lspci | grep -i ethernetInformações do módulo:# modinfo sis900Verifica se tem suporte ao módulo:# modprobe -l | grep -i sis900Subindo o módulo:# modprobe sis900Verifica todo o relatório se a placa subiu:# dmesg | grep sis900Consulta se o módulo está carregado:# lsmod | grep sis900Adiconando o módulo ao boot:# echo “nomedomódulo” >> /etc/modules

Page 54: Administração e segurança em Sistemas Linux

módulos

SO

Modprobe -r snd_intel8x0Remove considerando

dependências

rmmod snd_intel8x0Remove sem considerar

dependências

modprobe snd_intel8x0Levanta considerando

dependências

insmod snd_intel8x0Levanta sem considerar

dependências

Page 55: Administração e segurança em Sistemas Linux

Criando e manipulando texto com o Editor

Vi

Page 56: Administração e segurança em Sistemas Linux

"vi" é a sigla para "Visual Interface". A origem desse nome se deve aoseguinte 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 serchamado de `Vi IMproved' (vi melhorado).

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.

Page 57: Administração e segurança em Sistemas Linux

Modo de inserção e de comandosPara identificar o modo (estado) do vim, basta visualizar o rodapé da tela.Vamos à prática. Para executar o vim, utilize:

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

$ vi arquivo => 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".

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:

Page 58: Administração e segurança em Sistemas Linux

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 oscomandos para salvar/sair:

:w => Salva o arquivo que está sendo editado no momento.

:wq => Salva e sai.

:x => Idem.

ZZ => Idem.

:w!. => Salva forçado

:q!. => Sai forçado

:wq! => Salva e sai forçado.

Veja agora outros subcomandos de inserção de texto:

A => Insere o texto no fim da linha onde se encontra o cursor

o => Adiciona uma linha vazia abaixo da linha corrente

O => Adiciona uma linha vazia acima da linha corrente

Ctrl + h => Apaga último caracter à esquerda

Page 59: Administração e segurança em Sistemas Linux

Subcomandos para movimentação pelo texto:

Ctrl + f => Passa para a tela seguinte.

Ctrl + b => Passa para a tela anterior.

H => Move o cursor para a primeira linha da tela.

M => Move o cursor para o meio da tela.

L => Move o cursor para a última linha da tela.

h => Move o cursor para caracter a esquerda.

j => Move o cursor para linha abaixo.

k => Move o cursor para linha acima.

l => Move o cursor para caracter a direita.

w => Move o cursor para o início da próxima palavra (não ignorando a pontuação).

W => Move o cursor para o início da próxima palavra (ignorando a pontuação).

b => Move o cursor para o início da palavra anterior (não ignorando a pontuação).

B => Move o cursor para o início da palavra anterior (ignorando a pontuação).

0 (zero) => Move o cursor para o início da linha corrente.

^ => Move o cursor para o primeiro caracter não branco da linha.

$ => Move o cursor para o fim da linha corrente.

nG => Move o cursor para a linha de número "n" (susbstitua n pelo número da linha)..

G => Move o cursor para a última linha do arquivo.

Page 60: Administração e segurança em Sistemas Linux

Copiando e colando textos no vim:

yy Copia o texto da linha corrente

p Cola o texto na linha que está posicionado o marcador.

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 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).

Page 61: Administração e segurança em Sistemas Linux

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.

Page 62: Administração e segurança em Sistemas Linux

Alternando entre as janelas:

: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.

Page 63: Administração e segurança em Sistemas Linux

Criando egerenciando contas de

usuários egrupos

Page 64: Administração e segurança em Sistemas Linux

Administração de usuários e grupos

Verificando informações do usuário:

id [ opções ] [ usuário ]Onde:usuário => É o usuário que desejamos ver a identificação, grupos primáriose complementares. Opções:-g, --group => Mostra somente a identificação do grupo primário. -G, --groups => Mostra a identificação de outros grupos que pertence. -n, --name => Mostra o nome do usuário e grupo ao invés da identificaçãonumérica. -u, --user => Mostra somente a identificação do usuário (user ID). -r, --real => Mostra a identificação real de usuário e grupo, ao invés daefetiva. Esta opção deve ser usada junto com uma das opções: -u, -g, ou -G.

Page 65: Administração e segurança em Sistemas Linux

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]

Page 66: Administração e segurança em Sistemas Linux

Modificando o formulário de informações do usuário:chfn [usuário] [opções]

Onde:usuário => Nome do usuário. opções: -f [nome] => Muda o nome completo do usuário. -r [nome] => Muda o número da sala do usuário. -w [tel] => Muda o telefone de trabalho do usuário. -h [tel] => Muda o telefone residencial do usuário. -o [outros] => Muda outros dados do usuário.Caso o nome que acompanha as opções (como o nome completo) contenha espaços, use "" para identificá-lo.Exemplo: chfn -f "Nome do Usuário root" root

Digite:

# chfn [usuário]

Page 67: Administração e segurança em Sistemas Linux

Tornando-se outro usuário:# su [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. Comando useraddPermite que se criem usuários conforme especificado em opções. Somente o superusuário poderá utilizar este comando.useradd [ opções ] usuárioEste comando irá alterar quais arquivos?

Exemplos de utilizaçãoCria 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]

Page 68: Administração e segurança em Sistemas Linux

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

Comando adduserCriar um usuário padrão:# adduser [usuário]Habilitar uma senha ou modificar senha:# passwd [usuário]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/bashVocê pode especificar outros parâmetros para o usuário, como no comando a seguir: # adduser [usuário] -d /var/usuarios/usuario -s /dev/null

Page 69: Administração e segurança em Sistemas Linux

Modificando o nome de um usuário# usermod –l usuário novo_nomeRemovendo um usuário:# userdel –r usuário

Configurando um usuário com poderes de rootO 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/bashusuário:x:0:0:Clube_do_Hacker:/home/usuario:/bin/bash

Trabalhando com gruposCriando um grupo (este comando escreve uma linha no arquivo /etc/group):# groupadd [grupo]Adicionando uma senha para o grupo:# gpasswd [grupo]

Page 70: Administração e segurança em Sistemas Linux

Mudando a propriedade de um arquivo: # chown novo-dono.novo-grupo arquivoRemovendo 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]

Comando passwd# passwd [usuário]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;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.

Page 71: Administração e segurança em Sistemas Linux

Criando quota para usuários

Verificar como está montado o /home:# mountInstalar o pacote quota:# apt-get install quotaAs 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:

Page 72: Administração e segurança em Sistemas Linux

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

É 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

recomenda-se que salve suas aplicações e reinicie o sistema. Entre com o comando:# shutdown -r now

Page 73: Administração e segurança em Sistemas Linux

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]

Page 74: Administração e segurança em Sistemas Linux

Especificando espaço em disco para o usuário user1:

# edquota user1

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.

Page 75: Administração e segurança em Sistemas Linux

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

Page 76: Administração e segurança em Sistemas Linux

Permissões de acesso a recursos, arquivos,

pastas e dispositivos do Sistema

Page 77: Administração e segurança em Sistemas 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=> É 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.

Outros Usuários => É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.

Grupo

=> 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:

r => Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo

w=> 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.

x => Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.

Page 78: Administração e segurança em Sistemas Linux

Os três modos de permissões:

read Write

4

SUIDBIT

2

SGIDBIT

Execution

1

STICKYBIT

Comum

Octal

Especial

s=S≠x s=S≠x 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.

Page 79: Administração e segurança em Sistemas Linux

Crie o arquivo hoje e liste suas propriedades:-rw-r--r-- 1 root root 0 2006-12-05 10:09 hojeModificando 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 hojechmod g-w,o-x,u+r hoje-rw-r--r-- 1 root root 0 2006-12-05 10:09 hojechmod 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 hojechmod 000 hoje---------- 1 root root 0 2006-12-05 10:09 hojechmod 777 hoje-rwxrwxrwx 1 root root 0 2006-12-05 10:09 hoje

Page 80: Administração e segurança em Sistemas Linux

Crie o diretório aula e liste suas propriedades:drwxr-xr-x 2 root root 1024 2006-12-05 10:22 aulaModificando as permissões do arquivo:chmod u-rwx,g-rwx,o-rwx aulad--------- 2 root root 1024 2016-07-04 10:22 aulachmod a-rwx aulad--------- 2 root root 1024 2016-07-04 10:22 aulachmod a+rwx auladrwxrwxrwx 2 root root 1024 2016-07-04 10:22 aula

Modo Octal:chmod 754 hojedrwxr-xr-- 2 root root 1024 2016-07-04 10:22 aulachmod 000 hojed--------- 2 root root 1024 2016-07-04 10:22 aulachmod 777 hojedrwxrwxrwx 2 root root 1024 2016-07-04 10:22 aula

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.

Page 81: Administração e segurança em Sistemas Linux

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:

r w s r w s r w t

SUIDBIT (set user id) = setuidSGIDBIT (set group id) = setgidSTICKBIT (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.

Page 82: Administração e segurança em Sistemas Linux

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.

Page 83: Administração e segurança em Sistemas Linux

Trabalhando com o SUID:Exemplo: ifconfig# ls -lah /sbin/ifconfig-rwxr-xr-x 1 root root 57K 2004-04-22 18:27 /sbin/ifconfig

No terminal root:#ifconfig#ifconfig eth0 upobs: ls -lah tamanhos da cópia no formato readable humano (por exemplo, 1K 234M 2G)

Como usuário:lammer@debian:/sbin$ ./ifconfigbash: ifconfig: command not foundlammer@debian:/sbin$ ./ifconfig eth0 upSIOCSIFFLAGS: Permissão negadalammer@debian:/sbin$ ./ifconfig eth0 downSIOCSIFFLAGS: Permissão negada

Page 84: Administração e segurança em Sistemas Linux

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

Retirando SUID:# chmod u-s arquivo.x# ls -lah arquivo.x-rwxr-x--- 1 root sala 0 2006-12-05 22:57 arquivo.x

Page 85: Administração e segurança em Sistemas Linux

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 user1Este é um importante atributo para uma equipe, assumindo que todos os arquivos compartilhados devem ter o mesmo grupo.

Page 86: Administração e segurança em Sistemas Linux

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 | moredrwxr-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/user1drwxr-s--- 2 root sala 4096 2006-12-05 17:54 .

Retirando SGID:# chmod g-s /home/user1# ls -lah /home/equipedrwxr-xr-x 2 root sala 4096 2006-12-05 17:54 .

Page 87: Administração e segurança em Sistemas Linux

Um outro exemplo:# chmod g+s /home# ls -ld /homedrwxrwsr-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

Page 88: Administração e segurança em Sistemas Linux

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.

Page 89: Administração e segurança em Sistemas Linux

Exemplo bem prático:# ls –l# chmod 0777 /tmp# ls -ld /tmpdrwxrwxrwx 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 /tmpdrwxrwxrwt 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

Page 90: Administração e segurança em Sistemas Linux

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 2006-09-26 23:51 programa.x

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

Page 91: Administração e segurança em Sistemas Linux

Aplicando a propriedade Stick em um diretório utilizando formato simbólico (t):# chmod o+t /tmp# ls -lah /tmpdrwxrwxrwt 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 /tmpdrwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Retirando Stick:# chmod o-t /tmp# ls -lah /tmpdrwxrwxrwx 8 root root 264 2006-09-26 23:22 .

Page 92: Administração e segurança em Sistemas Linux

Manipulaçãode

pacotes

Page 93: Administração e segurança em Sistemas Linux

Manipulação de pacotes (programas)

Gerenciadores de pacotes:

dselect

dpkg

apt-get

tasksel

aptitude

Gerenciando pacotes com o 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

Page 94: Administração e segurança em Sistemas Linux

Listar todos os pacotes que estão instalados no formato .deb:# dpkg -l | moreOnde serão instalados todos os arquivos de um determinado programa:# dpkg -c /cdrom/pool/main/m/mozilla/nome_do_pacote.deb | morePara obter a listagem de arquivos de pacotes já instalados no sistema, use o comando:# dpkg -L arquivoRemover 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.

Page 95: Administração e segurança em Sistemas Linux

Configurando pacotes desconfiguradosPacotes 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 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-get install mozillaArquivo onde ficam armazenados todos os mirros (sources) de busca de pacotes: /etc/apt/souces.list

Page 96: Administração e segurança em Sistemas Linux

Para usar outro tipo de source, você pode inserir o caminho de pesquisa no arquivo. O mesmo pode ter uma ou mais sources:# apt-setupAo inserir uma nova linha no arquivo, pode-se atualizar a busca de pacotes no apt:# apt-updatePara saber se um determinado que você quer instalar está disponível no cache do apt:# apt-cache search gaimOBS: Todo pacote instalado via apt-get install, armazena um cache no seguinte caminho: /var/cache/apt/archives. Vamos limpar esse cache:# apt-get cleanFazer uma atualização de pacotes usando um único comando:# apt-get upgradeRemovendo um programa com:# apt-get remove - -purge gimp

Page 97: Administração e segurança em Sistemas Linux

O comando que adiciona automaticamente uma linha para cada CD noarquivo /etc/apt/sources.list e atualizará a lista de pacotes em /var/state/apt/lists:# apt-cdrom addVerificando pacotes corrompidosA correção é feita automaticamente. A lista de pacotes também é atualizada quando utiliza este comando: # apt-get checkCorrigindo problemas de dependências e outros problemas:# apt-get install -f pacote# apt-get -f install pacote# dpkg -i - -force-all *.debBaixa o pacote, mas não instala:# apt-get install -d pacoteTasksel# taskselAptitude# aptitude

Page 98: Administração e segurança em Sistemas Linux

Procedimentos de backup

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

-------------------------------------------------------------------------------------------------------Pacotes GZIPEmpacotando, compactando e descompactando.Criando um diretório e acessando este diretório:# mkdir /tmp/backup# cd /tmp/backupEmpacotando o conteúdo do diretório /home/user:/tmp/backup# tar cvf backup1.tar /home/user/tmp/backup# file backup1.tarCompactar usando o GZIP:/tmp/backup# time gzip backup1.tar/tmp/backup# ls –lhsaída: backup1.tar.gzDescompactando o arquivo:/tmp/backup# time gunzip backup1.tar.gz/tmp/backup# ls –lhsaída: backup1.tar

GZIP

Page 99: Administração e segurança em Sistemas Linux

PROCEDIMENTOS DE BACKUP

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

-------------------------------------------------------------------------------------------------------Pacotes BZIP2Empacotando, compactando e descompactando.Criando um diretório:# mkdir /tmp/backup# cd /tmp/backupEmpacotando o conteúdo do diretório /home/user:/tmp/backup# tar cvf backup1.tar /home/user/tmp/backup# file backup1.tarCompactar usando o BZIP2:/tmp/backup# time bzip2 backup1.tar/tmp/backup# ls –lhsaída: backup1.tar.bz2Descompactando o arquivo:/tmp/backup# time bunzip2 backup1.tar.bz2/tmp/backup# ls –lhsaída: backup1.tar

BZIP2

Page 100: Administração e segurança em Sistemas Linux

PROCEDIMENTOS DE BACKUP-------------------------------------------------------------------------------------------------------

2ª parte-------------------------------------------------------------------------------------------------------Pacotes GZIP(Empacotando / Compactando e Descompactando / Desempacotando)Criando um diretório:# mkdir /tmp/backup ; cd /tmp/backupEMPACOTANDO e COMPACTANDO o conteúdo do diretório /etc:/tmp/backup# tar cvzf backup2.tar.gz /etc ; file backup2.tar.gzCrie um diretório com o nome gzip:/tmp/backup# mkdir gzipDESCOMPACTANDO 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/gzipVerificando o arquivo:/tmp/backup/gzip# ls -lhVerificando o tamanho:/tmp/backup/gzip# du -hs caminhoVerificando o tamanho do diretório original:/tmp/backup/gzip# du -hs /etc

GZIP

Page 101: Administração e segurança em Sistemas Linux

PROCEDIMENTOS DE BACKUP-------------------------------------------------------------------------------------------------------

2ª parte-------------------------------------------------------------------------------------------------------Pacotes BZIP2(Empacotando / Compactando e Descompactando / Desempacotando)Criando um diretório: # mkdir /tmp/backup ; cd /tmp/backupEMPACOTANDO e COMPACTANDO o conteúdo do diretório /etc:/tmp/backup# tar cvjf backup3.tar.bz2 /etc ; file backup3.tar.bz2 ; ls -lhCrie um diretório com o nome bzip2:/tmp/backup# mkdir bzip2DESCOMPACTANDO 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/gzip ; ls -lhVerificando o tamanho:/tmp/backup/bzip2# du -hs caminhoVerificando o tamanho do diretório original:/tmp/backup/bzip2# du -hs /etc

BZIP2

Page 102: Administração e segurança em Sistemas Linux

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:# find /etc | cpio -pdv backup

Outra maneira:# find | xargs zip backup

Page 103: Administração e segurança em Sistemas Linux

Trabalhando com o dumpFazendo um backup de /tmp, com o comando dump:# dump -0 -f backupdump /etcRestaurando este backup:# restore rf backupdump

Trabalhando com o comando cpioFazer 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

Page 104: Administração e segurança em Sistemas Linux

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 é 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)

Page 105: Administração e segurança em Sistemas Linux

Direcionamento de como trabalhar com compilação de programas:

Início

Tem configur

e

./configure

Tem makefil

e

documentação

make Makeinstall FIM

sim

Não

Page 106: Administração e segurança em Sistemas Linux

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/localAcessando o diretório dos fontes:# cd /usr/local/nmap-versãoComeçando a compilação: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:# ./configureComando para compilar o pacote:# makeComando opcional para testar a integridade dos binários compilados:# make check

Page 107: Administração e segurança em Sistemas Linux

Instalar o programa, os arquivos de dados e a documentação:# make installRemover 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

Page 108: Administração e segurança em Sistemas Linux

Servidor

X Window

Page 109: Administração e segurança em Sistemas Linux

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:# xf86configOu# XFree86 –configure

Fazendo a configuração no X.org:# Xorg -configureO 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:

Page 110: Administração e segurança em Sistemas Linux

# Configuração geral do servidor, tela e dispositivos de entrada e saída:Section "ServerLayout"

Identifier "XFree86 Configured"Screen 0 "Screen0" 0 0InputDevice "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

Page 111: Administração e segurança em Sistemas Linux

# 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”

-----------------------------------padrão internacional (Americano)-------------------------Option “xkbmodel” “pc102”Option “xkblayout” “us_intl”

EndSection

Page 112: Administração e segurança em Sistemas Linux

# 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

Page 113: Administração e segurança em Sistemas Linux

# 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.5Vertrefresh 50 - 90

EndSection# Informação do driver atualizado da placa de vídeo:Section "Device"

### Available Driver options are:-### Values: <i>: integer, <f>: float, <bool>: "True"/"False",### <string>: "String", <freq>: "<f> Hz/kHz/MHz"### [arg]: arg optional#Option "HWcursor" # [<bool>]#Option "NoAccel" # [<bool>]

Identifier "Card0"Driver "vmware"VendorName "VMWare Inc"BoardName "Unknown Board"BusID "PCI:0:15:0"

EndSection

Page 114: Administração e segurança em Sistemas Linux

# Seção de configuração da resolução e número de cores a ser utilizado:Section "Screen"

Identifier "Screen0"Device "Card0"Monitor "Monitor0"DefaulDepth 24SubSection "Display"

Depth 1EndSubSectionSubSection "Display"

Depth 24Modes “1024x768” “800x600”

EndSubSectionEndSection

Page 115: Administração e segurança em Sistemas Linux

Para verificar se o servidor gráfico foi configurado corretamente, digite:# XPara configurarmos o servidor X precisamos editar o arquivo que controla quem irá acessar o servidor X:# vi /etc/X11/xdm/XacessInclua a seguinte linha no arquivo:100.100.100.0Isto permite que todas as máquinas desta rede podem acessar o servidor.Reiniciando o serviço do xdm:# /etc/init.d/xdm restart

Page 116: Administração e segurança em Sistemas Linux

Instalando o gdm ou kdm:# apt-get install gdm

Page 117: Administração e segurança em Sistemas Linux

# apt-get install kdm

USUÁRIOS

Page 118: Administração e segurança em Sistemas Linux

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 –

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

Page 119: Administração e segurança em Sistemas Linux

Serviçosbásicos

deRede

Page 120: Administração e segurança em Sistemas Linux

Configurando uma rede

Descobrindo o modelo da placa de rede:# lspciVerificando 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]Informações de endereçamento IP:# ifconfigEliminando as configurações de rede:# ifconfig eth0 downExibindo a configuração:# ifconfigSubindo o service de rede:# ifconfig eth0 up

Page 121: Administração e segurança em Sistemas Linux

Configurando o IP, Máscara e Broadcast:# ifconfig eth0 100.100.100.x netmask 255.0.0.0 broadcast 100.100.100.255Verificando se há conectividade:# ping 100.100.100.xO 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 Verificar daemon networking, para garantir boot do serviço:# ls /etc/rcS.dConfigurando o nome da máquina:# vi /etc/hostnameConfigurando o nome da máquina e o nome de domínio:# vi /etc/hostsVerificar domínio que está sendo utilizado:# hostname -fRoteamento:# route

Page 122: Administração e segurança em Sistemas Linux

Configurando o roteamento:# route add default gw 100.100.100.1

Configurando LocalidadeMostrar como está configurado atualmente:# localePara configurar sua localidade corretamente:# dpkg-reconfigure localePrimeira tela: pt_BR ISO-8859-1Segunda tela: pt_BRTestando: ifconfig# LANG=us (modificando a linguagem)# ifconfigConfigurações relacionadas à localidade:# cat /etc/environmentConfigurações relacionadas ao fuso horário:# cat /etc/timezoneConfigurar data:# date MMDDhhmmYYAtualizar a hora da bios de acordo com a hora do S.O: # hwclock -w

Page 123: Administração e segurança em Sistemas Linux

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.# dpkg -l | grep telnet# apt-get install telnet-server# dpkg -l | grep telnetii telnet 0.17-29 The telnet clientii telnetd 0.17-29 The telnet server

Habilitando o telnet, que o mesmo é controlado pelo super daemon de rede inetd. # vi /etc/inetd.conf#:OTHER: Other services#<off># netbios-ssn stream tcp nowait root /usr/sbin/tcpd/usr/sbin/smbdtelnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd/usr/sbin/in.telnetd

Page 124: Administração e segurança em Sistemas Linux

Devemos subir o serviço agora:# cd /etc/init.d//etc/init.d# ./inetd stop/etc/init.d# ./inetd start

Faça um check list, para verificar se tudo está OK.

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

#adduser telnetxsenha: x

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:# ls /etc/rc2.d

Page 125: Administração e segurança em Sistemas Linux

SSH

É um outro tipo de servidor remoto fde LOGIN. É responsável pelaautenticação segura e criptografia de dados, além de logins e execução de arquivos remotamente.# dpkg -l | grep ssh# apt-get install sshDetalhes do arquivo de configuração:# vi /etc/ssh/sshd_configPort 22Protocol 2KeyRegenerationInterval 3600LoginGraceTime 600PermitRootLogin yesRSAAuthentication yesPubkeyAuthentication yesPermitEmptyPasswords noPasswordauthentication yes

Page 126: Administração e segurança em Sistemas Linux

Start no serviço:# /etc/init.d/ssh startConectando no servidor SSH:# ssh <hostname># ssh usuario@hostname# ssh -l usuario ip_do_servidorTambém se pode executar comandos remotamente:# ssh -l usuario 100.100.100.x du -hs /etcFazendo cópia de dados:Fazendo um download de arquivos do servidor:# scp usuario@ip_do_servidor:/diretório_remoto/arquivo diretorio_localFazendo um upload do servidor:# scp arquivo usuario@ip_do_servidor:/diretorio_remoto# scp /tmp/teste [email protected]:/home/usuarioFazendo um download do diretório remoto do SSH:# scp -r usuario@ip_do_servidor:/diretorio_remoto diretorio_local# scp -r [email protected] :/tmp /rootFazendo um upload no diretório no servidor.# scp -r diretorio_local usuario@ip_do_servidor:/diretorio_remoto

Page 127: Administração e segurança em Sistemas Linux

SSH com Chaves

Gera chaves de autenticação RSA com o protocolo SSH:#ssh-keygen -t rsaPodemos deixar uma palavra para permitir acesso no servidor remoto.Serão gerados dois arquivos no home do usuario, no subdiretorio .ssh, sãoeles: 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 usuario 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_keysAgora é só logar no servidor noprmalmente e ver se consegue logar semsenha:# ssh usuario@ip

Page 128: Administração e segurança em Sistemas Linux

TCPWrappers

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-------------------------------------------------------------------------------------------------------

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?

Page 129: Administração e segurança em Sistemas Linux

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/2007at> ls –l /root> /tmp/arquivo.txtO atalho CTRL D salva o agendamento.Visualizando as tarefas agendadas:# atqPara remover uma tarefa agendada:# atrmColocando 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

Page 130: Administração e segurança em Sistemas Linux

Trabalhando com servidor de sincronização de horário – NTPTem 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.Feito o download da última versão do NTP a partir de: http://www.ntp.orgDescompactando o pacote:tar -xvzf nome_do_pacote.tar.gz –C /usr/local/outar -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.Estes se resumem basicamente à execução dos seguintes comandos: # ./configure --prefix=/usr/local/ntps# make# make check# su# make installOs binários foram instalados no diretório /usr/local/ntps/bin: 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.

Page 131: Administração e segurança em Sistemas Linux

A configuração do servidor NTP incluiu os seguintes passos:

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.confOu através do script de inicialização ntpd contido em /etc/init.d/.

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

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

Page 132: Administração e segurança em Sistemas Linux

Configuração dos clientes Linux

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] [dias do mês] [mês] [dias da semana] [usuário] [comando]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

Page 133: Administração e segurança em Sistemas Linux

Gerenciando impressão no sistemaO 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. 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 CUPScupsys-client è cliente de impressão do CUPSVerificando se o sistema possui suporte ao driver da nossa impressora:# gs -hPara suporte a drivers da HP, instale o pacote hpijs:# apt-get install hpijsPara suporte à impressora:# apt-get install foomatic-* -y

Page 134: Administração e segurança em Sistemas Linux

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

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

Page 135: Administração e segurança em Sistemas Linux

Compartilhamento de arquivos em Redes

Page 136: Administração e segurança em Sistemas Linux

Servidor NFSO 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-serverConfigurando 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.

Page 137: Administração e segurança em Sistemas Linux

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)

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.100Montando o compartilhamento ativo do servidor:# mount –t nfs 100.100.100.100:/tmp /mnt/nfsRemovendo 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 removidoPara reativa-lo sem reiniciar o serviço:# exports –a -r

Page 138: Administração e segurança em Sistemas Linux

Servidor Samba

Instalando o Samba:# apt-get install samba smbclient smbfssamba => servidor sambasamba-commom => arquivos de configuração do sambasmbclient => cliente samba para Linuxsmbfs => montagem de compartilhamentos através do Linux

Acessando o arquivo de configuração do samba:# nano /etc/samba/smb.conf

Page 139: Administração e segurança em Sistemas Linux

Se necessário criar um compartilhamento, adicione as linhas ao final do arquivo.

Exemplo de compartilhamentos:[linux]

comment=testando o sambapath=/tmp/sambavalid users=user1 user2writable=yescreat mask=0600directory mask=0700

[arquivos]comment=mais uma vez testando o sambapath=/tmp/arquivoswritable=yeswrite list= @aula

valid users= @aula creat mask=0660directory mask=0700

Page 140: Administração e segurança em Sistemas Linux

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:# smbmount //100.100.100.100/linux /mnt/samba -o username=user1OBS: Se você tentar montar com qualquer usuário que não esteja definido com permissão de acesso ao compartilhamento, será retornado um erro.

Page 141: Administração e segurança em Sistemas Linux

################ P D C ##################Clube do Hacker############[global]

workgroup = windowsnetbios name = euserver string = servidor pdc

domain master = yespreferred master = yeslocal master = yesdomain logons = yeslogon script = netlogon.batsecurity = userencrypt passwords = yesos level = 100logon home = \\%L\%U\.profileslogon path = \\%L\Profiles\%U=

Servidor Samba com PDC => Primary Domain ControlerO pdc é o responsável pela autenticação de usuários, caso ele se torne indisponível ( e isso acontece muito eheheh) pode-se promover um bdc a pdc e assim os usuários continuam a ser autenticados.

Page 142: Administração e segurança em Sistemas Linux

[netlogon]comment = Servico de logonpath = /var/samba/netlogonguest ok = yesbrowseable = no

Executar um testparm: # testparm /etc/samba/smb.confSubindo o serviço Samba:# netstat -nlp | more# /etc/init.d/samba start# netstat -nlp | more

Servidor Samba com PDC

Cadastrar o root# smbpasswd -a rootVamos aproveitar e criar um diretório para configurar as permissões:# mkdir -p /var/samba/netlogon# chmod 775 /var/samba/netlogonCadastrando 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

Page 143: Administração e segurança em Sistemas Linux

É 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.pdsAlé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 ; smbpasswd -a -m linux1# groupadd trust => “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$Por último é necessário criar o arquivo “/var/samba/netlogon/netlogon.bat” um script que élido e executado pelo usuários ao fazer logon.

Servidor Samba com PDC

Page 144: Administração e segurança em Sistemas Linux

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\.profileslogon 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/profileswritable = yesbrowsable = Nocrate mask = 0600directory 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

Page 145: Administração e segurança em Sistemas Linux

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

Valeu! SAMBA no Windows!