Pesquisar este blog

quarta-feira, 14 de dezembro de 2011

COMANDOS BÁSICOS NO LINUX

ComandosBasicos

"Muito embora o Linux possua diversas e ótimas interfaces gráfica (GUI's - Graphical User Interfaces) bastante amigáveis, dentre as quais destacamos o Gnome e KDE, como de resto todos os sistemas operacionais Unix, ainda requerem por vezes que façamos uso da linha de comando. O ambiente tradicional do Unix é o CLI (Command Line Interface), onde você digita os comandos para dizer ao computador o que ele deve fazer. Esse modo é extremamente poderoso e rápido, porém implica que você saiba para que serve cada comando e seus diversos parâmetros.”
terminal.png

Usando essa página

  • Essa página ira fazer você se familiarizar com os comandos básicos do GNU/Linux.
  • Não é sua intenção ser um guia completo de comandos, somente uma introdução para complementar as ferramentas gráficas do Ubuntu.
  • Todos os nomes dos comandos estarão em negrito.
  • Os comandos que você precisará digitar estarão sempre em "negrito com aspas".
  • Todos os comandos nesta página devem ser usados em um terminal ou diretamente no shell.
Icones/erro.png
ATENÇÃO: Lembre-se o Linux diferencia maiúsculas de minúsculas. Portanto, comando e COMANDO são coisas totalmente diferentes.

Iniciando o Interpretador de Comandos

Abrindo um Terminal

No Gnome vá ao menu Aplicações > Acessórios > Terminal ou pressione simultaneamente as teclas Alt+F2, e na caixa de texto digite "gnome-terminal" e tecle “Enter”.

Abrindo uma seção shell

Tecle simultaneamente Crtl+Alt+F1(...F6) que uma console modo texto será exibido solicitando um login, onde você deverá entrar com seu usuário e senha para ter acesso ao prompt de comando.

Os Comandos do Linux

Como já descrito anteriormente, não temos a pretensão de ser um guia completo de comandos, mais uma fonte de referência que irá abranger os principais comandos separados por categorias de acordo com as tarefas que executam.
Um comando do Linux é uma palavra especial que representa uma ou mais ações. Um interpretador de comandos também é conhecido como shell ou modo texto. Ele é o programa responsável por interpretar essas instruções enviadas pelo usuário e seus programas para o kernel. No Linux, você poderá ter vários interpretadores de comandos (ao contrário do que acontece no Windows que só tem o command.com).
O interpretador de comandos é que executa comandos lidos do teclado ou de um arquivo executável. É a principal ligação entre o usuário. Entre os programas interpretadores de comandos podemos destacar o bash, csh e sh entre outros.
Entre eles o mais usado é o Bash (Bourne Again Shell), criado por S.R. Bourne. Os comandos podem ser enviados de duas maneiras para o interpretador:
  • Interativa - Os comandos são digitados no teclado pelo usuário e passados ao interpretador de comandos um a um. Neste modo o computador depende do usuário para executar uma tarefa ou o próximo comando.
  • Não-interativa - São usados arquivos de comandos (scripts) criados pelo usuário para o computador executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os comandos do arquivo um por um, e dependendo do término do comando, o script pode verificar qual será próximo comando que será executado e dar continuidade ou não ao processamento.
Esse sistema é muito útil quando temos que digitar por várias vezes seguidas um mesmo comando ou para compilar algum programa complexo.
Uma característica interessante do bash é que ele possui a função de auto-completar os nomes de comandos que foram digitados via entrada padrão. Isso é feito pressionando-se a tecla TAB; o comando é completado e acrescentando um espaço.
Isso funciona sem problemas para comandos internos; caso o comando não seja encontrado, o bash emite um beep. Por exemplo, na sua pasta raiz tente digitar cd pro (aperte TAB)+as( aperte TAB)+os( aperte TAB)+d(aperte TAB) e veja como foi fácil digitar um caminho para entrar no local: /proc/asound/oss/devices.
Outro recurso muito interessante do bash, é que você pode repetir um comando executado sem ter que digitá-lo novamente. Isso é possível utilizando o caractere "!" na frente do comando que você deseja repetir. O bash vai buscar aquele comando no histórico e se lá tiver algo parecido o comando será executado. Veja o exemplo abaixo com esta seqüência de comandos:
tail -f /var/log/squid/access.log
cd /etc/
ls -hl
!tail
O comando "!tail" irá informar ao shell (bash) para executar o último comando tail executado, no caso, "tail -f /var/log/squid/access.log", e você passara a ver novamente os LOG's do Squid em tempo real.
Para execução de muitos comandos é necessário ter privilégios de administrador, então como no Ubuntu o usuário root por questões de segurança se encontra desabilitado, será necessário o uso do "sudo". Assim sendo sempre que um comando necessitar deste privilégio, o mesmo estará precedido do sudo.
Adicione também o comando sudo na frente de todos os comandos, caso esteja trabalhando em um diretório ou em arquivos que não lhe pertencem (arquivos do sistema, por exemplo). Veja RootSudo para maiores informações sobre o sudo.

Documentação

  • man - Formata e exibe uma página man (man page) O comando man é usado para mostrar o manual de outros comandos. Tente "man man" para ver a página do manual do próprio man. Veja a seção "Man & Getting Help" para mais informações.
  • help - Exibe informações sobre os comandos internos do Bash. Ex.: ”help logout”
  • info - Exibe documentação no formato Info, sendo que a navegação pelo documento é feito por meio de comandos internos do Info. Ex.: ”info emacs”

Data e Hora

  • date - Exibe e edita a data e a hora atuais do sistema.
    • ”date” para exibir a data e hora atual.
    • ”sudo date 032914502007” para alterar a data e hora para 14:50 h de 29/03/2007.
  • cal - Exibe um simples calendário.
  • hwclock - Consulta ou define o relógio do hardware (Hardware Clock).
    • "sudo hwclock -s" para atribuir ao sistema a data e hora do hardware (BIOS).
    • "sudo hwclock --set --date=032914502007" para definir a data e hora do hardware como 14:50 h de 29/03/2007.

Informações do Sistema (Hardware e Processos)

  • df – Mostra o espaço em disco do sistema de arquivos usado por todas as partições. "df -h" é provavelmente o mais útil - usa megabytes (M) e gigabytes (G) em vez de blocos para relatar o tamanhos. (-h significa "human-readable").
  • du – Exibe o tamanho de arquivos e/ou diretórios. Se nenhum arquivo ou diretório for passado como argumento, será assumido o diretório atual. O uso da opção du -h tornará a apresentação mais simples de ser interpretada.
    • Para verificar o tamanho dos subdiretórios ao invés dos arquivos, utilize o comando abaixo.
      "du -k -h --max-depth=1"
  • free – Este comando exibe a quantidade de memória livre e usada no sistema. "free -m" fornece a informação usando megabytes, que é provavelmente mais útil para computadores atuais.
  • arch – Exibe a arquitetura do computador. Equivale ao comando ”uname -m”.
  • lsdev – Lista o hardware instalado no computador, especificando os endereços de E/S (Entrada/Saída), IRQ e canais DMA que cada dispositivo esta utilizando.
  • lspci - Exibe informações sobre os barramentos PCI do computador e sobre os dispositivos a ele conectados.
  • lsusb - Lista informações sobre os barramentos USB do computador e sobre os dispositivos a eles conectados.
  • uname - Este comando exibe várias informações sobre o sistema, incluindo o nome da maquina, nome e versão do Kernel e alguns outros detalhes. É muito útil para verificar qual é o Kernel usado por você.
    • ”uname -a” para exibir todas as informações.
    • ”uname -m” para exibir a arquitetura da maquina. (Equivale ao ”arch”).
    • ”uname -r” para exibir o release do sistema operacional.
  • lsb_release – Este comando fornece informações básicas do sistema operacional (LSB – Linux Standard Base) e sua distribuição.
    • ”lsb_release -a” para exibir as informações completas do sistema conforme abaixo exemplificado.
user@computer:~$ lsb_release -a
LSB Version:    n/a
Distributor ID: Ubuntu
Description:    Ubuntu (The Edgy Eft Release)
Release:        6.10
Codename:       edgy
  • top - Este comando exibe em tempo real informações sobre seu sistema Linux, processos em andamento e recursos do sistema, incluídos CPU, memória RAM e uso do swap, além do número total de tarefas sendo executadas.
    • O ”top” também nos permite a manipulação dos processos por meio de comandos interativos. Veja abaixo alguns dos comandos interativos mais importantes do ”top”.
      • ”k” - Finaliza, ou seja, “mata” um processo.
      • ”m” - Ativa/Desativa a exibição de informações da memória.
      • ”M” - Ordena os processos pelo uso da memória residente.
      • ”N” - Ordena os processos pelos seus PIDs.
      • ”P” - Ordena os processos pelo uso da CPU (este é o padrão).
      • ”ESPAÇO” - Atualiza imediatamente a visualização do quadro de processos.
      • ”h” - Exibe a ajuda dos comandos interativos do ”top”.
      • ”q” - Abandona o comando ”top”.
  • ps – Apresenta um quadro atual, porém estático dos processos que estão sendo executados no sistema.
    • ”ps aux” para apresentar todos processos sendo executados, de todos usuários, incluído o nome do usuário a qual o processo pertence, mesmo os desvinculados de TTYs.
  • kill – Finaliza, ou no popular, “mata” processos sendo executados pelo seu PID, lhes enviando um sinal.
    • ”kill -9 1345” para finalizar o processo de PID número 1345. Para saber qual PID de determinado processo que esta sendo executado pode ser utilizado o comando ps.
  • killall – Finaliza processos pelo nome ao invés do PID como faz o comando kill. Também assim como o comando kill, o killall envia um sinal para o processo.
    • ”killall mozilla-firefox” para finalizar o processo mozilla-firefox, fechando com isso o navegador web Mozilla Firefox. O nome dos processos ativos pode ser observado com uso do comando ps.

Arquivos e Diretórios

  • pwd - O comando pwd lhe permite saber em qual diretório você está no momento, onde pwd significa "print working directory".
    • Executando "pwd" no diretório Desktop mostrará "~/Desktop". Observe que o Terminal do Gnome também mostra esta informação na barra de títulos da janela. Veja a imagem de exemplo no topo desta página.
  • cd - Este comando nos permite se deslocar entre a árvore de diretórios do sistema. Quando abrimos um terminal ou seção shell, você entra direto no seu diretório pessoal. Para mover-se pelo sistema de arquivos você deve usar o cd.
    • "cd /" para ir ao diretório raiz.
    • "cd" para ir ao seu diretório pessoal.
    • "cd .." para acessar um diretório de nível acima do atual.
    • ”cd -” para voltar ao diretório que se encontrava antes de mudar.
    • Para navegar através múltiplos níveis de diretórios em só comando, use por exemplo, "cd /var/www", que o levará diretamente ao sub-diretório /www do diretório /var.
  • cp – Copia arquivos e diretórios.
    • "cp file foo" para fazer uma cópia exata do arquivo "file" dando-lhe o nome de "foo".
    • "sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf-bkp" para gerar uma cópia de segurança exata do arquivo "/etc/X11/xorg.conf" dando-lhe o nome de "/etc/X11/xorg.conf-bkp".
  • mv - Este comando move arquivos e diretórios, sendo muito usado também para renomear um determinado arquivo.
    • ”mv arquivo1 arquivo2” para renomear o arquivo “arquivo1” localizado no diretório pessoal do usuário para “arquivo2” no mesmo local.
    • "mv foo ~/Desktop" moverá o arquivo "foo" para seu diretório Desktop sem alterar seu nome. Você deve especificar um novo nome se quiser renomear um arquivo.
  • ls - Comando utilizado para listar o conteúdo de um diretório. Usado com certas opções, é possível ver o tamanho dos arquivos, quando foram criados, e as permissões de cada um.
    • "ls ~" para mostrar os arquivos que estão em seu diretório pessoal.
    • ”ls -hal ~” para mostrar os arquivos que estão em seu diretório pessoal, inclusive os ocultos (-a) em forma de uma listagem (-l) e com as informações de tamanho mais amigável a nós seres humanos (-h).
  • rm - Utilize este comando para remover (deletar) arquivos e opcionalmente diretórios. Por padrão o comando rm exibe um prompt onde o usuário deve confirmar a exclusão de cada arquivo, digitando a letra “y” seguido de “Enter”.
    • ”rm arquivo1” para remover o arquivo chamado “arquivo1” do diretório corrente após confirmação no prompt.
    • ”rm -f arquivo1” para remover o arquivo chamado “arquivo1” do diretório corrente sem que lhe seja exibido o prompt de confirmação.
    • ”rm -R ~/temp/” para remover de forma recursiva o diretório /temp localizado em sua pasta pessoal e todo seu conteúdo, seja ele arquivos e outras arvores de sub-diretórios.
  • mkdir - Comando cuja finalidade é permitir a criação de um ou mais diretórios.
    • "mkdir musicas" para criar um diretório chamado “musicas” dentro do diretório corrente.
  • chmod – Altera as permissões de acesso de arquivos e diretórios, não alterando estes atributos de links simbólicos passados na linha de comando, mais sim as permissões dos arquivos aos quais eles se referem. Para maiores detalhes sobre o sistema de permissões de arquivos e diretórios no Linux aconselhamos este link aqui do Guia Foca GNU/Linux.
Leitura (r)
Escrita (w)
Execução (x)
Octal
0
0
0
0
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0
4
1
0
1
5
1
1
0
6
1
1
1
7
0  (zero) permissão negada
1   permissão de execução
2   permissão de gravação
3   permissão de gravação e execução
4   permissão de leitura
5   permissão de leitura e execução
6   permissão de leitura e gravação
7   soma de todas as permissões
  • ”chmod 744 file” para alterar as permissões do arquivo “file” de modo ao Dono ter total permissão (leitura, execução e escrita) enquanto que os usuários pertencentes ao Grupo e os Outros terão permissão apenas de leitura.
  • ”chmod -R 744 temp/” para alterar as permissões de forma idêntica ao exemplo anterior, porém do sub-diretório /temp e todo seu conteúdo de forma recursiva.
  • chown – Altera o proprietário e o grupo de arquivos e diretórios.
    • ”chown fulano:vendas file” para alterar o arquivo “file” para ter como Dono o usuário “fulano” e o Grupo como “vendas”.
    • ”chown -R ciclano:compras temp/” para alterar o sub-diretório /temp e todo seu conteúdo de forma recursiva para ter como Dono o usuário “ciclano” e o Grupo como “compras”.
  • diff – Usado para comparar o conteúdo de dois arquivos, exibindo a diferença entre eles.
    • ”diff file foo” para ver a diferença entre o conteúdo do arquivo “file” e o arquivo “foo”.
  • find – Comando utilizado para procurar por arquivos na arvore de diretórios. Se um caminho não for passado ao comando find a busca será feita no diretório corrente.
    • ”find ~/temp/file” para procurar pela ocorrência de um arquivo chamado “file” no sub-diretório /temp do diretório pessoal do usuário.
  • locate – Pesquisa em uma base de dados de nomes de arquivos por nomes que satisfaçam um determinado padrão. O comando slocate é a versão segura do locate, pois não exibe arquivos para os quais o usuário não tenha permissão de acesso. Como a arvore de arquivos e diretórios esta sempre sendo atualizada é necessário que esta base de dados também o seja, por tanto é sempre aconselhável antes de executar estes comandos atualizar a base executando updatedb.
    • ”locate ~/file” para pesquisar por um arquivo que corresponda a expressão “file” no diretório pessoal do usuário. Como este comando pesquisa em um banco de dados, se não for passado ao comando o caminho desejado ele pesquisará em toda sua base de dados, correspondente a toda arvore de diretórios do sistema.
  • tar Usado para armazenar ou extrair arquivos TAR (Tape ARchive). Estes arquivos TAR são os chamados “tarfile” ou “tarball”.
    • ”tar cvf my_ogg_files.tar *.ogg” para criar um arquivo TAR chamado “my_ogg_files.tar” contendo todos os arquivos de extensão “.ogg” do diretório corrente. Notar que a extensão “.tar” não é obrigatória, mais aconselhável para facilitar a identificação do arquivo.
    • ”tar tvf my_ogg_files.tar” para exibir todo o conteúdo do arquivo TAR chamado “my_ogg_files.tar”.
    • ”tar xvf my_ogg_files.tar” para extrair todo conteúdo do arquivo “my_ogg_files.tar” no diretório corrente.
    • ”tar xvf my_ogg_files.tar musica1.ogg” para extrair apenas o arquivo chamado “musica1.ogg” do tarball “my_ogg_files.tar” no diretório corrente.
    • NOTA: Arquivos que possuem a extensão .tar.gz podem ser descompactados e extraídos com as opções xzvf do comando tar. Isto corresponde a usar o comando gunzip para descompactar o arquivo TAR e depois usar o comando tar xvf para extrair os arquivos.
  • gzip Compacta e opcionalmente descompacta arquivos regulares. Os arquivos compactados com o comando são substituídos por outro de menor tamanho com a extensão .gz porém preservando o dono, as permissões e datas de acesso e modificação.
    • ”gzip arq1 arq2” para compactar os arquivos “arq1” e “arq2” gerando os arquivos “arq1.gz” e “arq2.gz” em substituição aos originais.
    • ”gzip -d arq1” para descompactar o arquivo “arq1.gz” trazendo de volta o arquivo original “arq1”. A presença da opção -d equivale ao uso do comando gunzip.
  • bzip2 Compacta e opcionalmente descompacta arquivos regulares. Assim como o gzip, os arquivos compactados com este comando são substituídos por outro de menor tamanho com a extensão .bz2 porém preservando o dono, as permissões e datas de acesso e modificação. O algoritmo empregado por este comando permite uma maior compressão e também segurança dos arquivos gerados, porém o processo se torna um tanto quanto mais demorado.
    • ”bzip2 arq1” para compactar o arquivo “arq1” gerando em substituição o arquivo “arq1.bz2”.
    • ”bzip2 -9 arq2” para compactar o arquivo “arq2” pelo processo de máxima compressão gerando em substituição o arquivo “arq2.bz2”.
    • ”bzip2 -d arquivo.bz2” para descompactar o arquivo “arquivo.bz2” trazendo de volta o(s) arquivo(s) original(is) que tinham sido previamente compactados.

Sistema de Arquivos

  • mount – Monta um sistema de arquivos tornando-o disponível para as operações de E/S (Entrada/Saída) em arquivos, ou exibe uma lista dos sistemas de arquivos atualmente montados.
    • ”mount” para listar os sistemas de arquivos atualmente montados.
    • ”sudo mount -t ext3 /dev/hda3 /media/hda3” para montar a terceira partição primária do disco hda (IDE1) formatado em EXT3 no diretório /media/hda3. É necessário que o diretório /media/hda3 tenha sido previamente criado para que o comando tenha sucesso.
  • umount – Desmonta um sistema de arquivos previamente montado que não esteja em uso.
    • ”sudo umount /dev/hda3” para desmontar o dispositivo /dev/hda3. Para que o comando seja executado com sucesso é importante que o dispositivo não esteja em uso, como por exemplo com arquivos abertos ou mesmo estando dentro do diretório onde o mesmo se encontra montado.
  • fdisk – Gerencia por meio de uma simples interface de texto orientada por menus as partições de um disco. Ao executar o comando fdisk dispositivo basta pressionar a tecla m no prompt para ter acesso ao menu de opções que é bastante auto-explicativo, devendo se usar as setas de direção para movimentar-se pelo mesmo.
    • ”sudo fdisk -l” para listar as tabelas de partições para todos dispositivos.
    • ”sudo fdisk /dev/hda” para gerenciar a partição (ou partições) do dispositivo /dev/hda.
  • fsck – Verifica e opcionalmente repara um ou mais sistemas de arquivos. O fsck na realidade é apenas uma espécie de front-end de comandos específicos de acordo com o sistema de arquivos, que na realidade obedecem em geral ao formato fsck.nome_do_sistema_de_arquivos.
  • ”sudo fsck -t ext3 /dev/hda3” para verificar o sistema de arquivos EXT3 do dispositivo /dev/hda3. O mesmo resultado poderia ser alcançado executando o comando da seguinte forma ”fsck.ext3 /dev/hda3”. O dispositivo deve obrigatoriamente estar desmontado para execução desta operação.
  • mkfs – Formata um dispositivo (geralmente uma partição de disco) criando um novo sistema de arquivos. O mkfs, assim como o fsck é apenas uma espécie de front-end de comandos específicos de acordo com o sistema de arquivos, que na realidade obedecem em geral ao formato mkfs.nome_do_sistema_de_arquivos.
    • ”sudo mkfs -t ext3 /dev/hda3” para formatar o dispositivo /dev/hda3 em um sistema de arquivos EXT3. O mesmo resultado poderia ser alcançado executando o comando da seguinte forma ”mkfs.ext3 /dev/hda3”. O dispositivo deve obrigatoriamente estar desmontado para execução desta operação.
  • badblocks – Procura por blocos ruins em um dispositivo, geralmente uma partição de disco.
    • ”sudo badblocks /dev/hda3” para verificar se o dispositivo /dev/hda3 se encontra com blocos ruins. Normalmente, dependendo do tipo e tamanho do dispositivo este procedimento é um tanto demorado, sendo que se nenhuma informação for retornada é porque blocos ruins não foram encontrados. Uma melhor alternativa ao comando seria ”sudo badblocks -o /tmp/file -n /dev/hda3”, onde o parâmetro -n forçaria um teste de leitura e escrita não-destrutivo e o -o /tmp/file geraria o arquivo /tmp/file com todas mensagens de saída do comando.

Usuários e Grupos

  • useradd - Cria um novo usuário ou atualiza as informações padrão de um usuário no sistema Linux. O comando useradd cria uma entrada para o usuário no arquivo “/etc/passwd” com informações do seu login, UID (user identification), GID (group identification), shell e diretório pessoal, e a senha criptografada deste usuário é armazenada no arquivo “/etc/shadow”.
    • ”sudo useradd fulano” para criar o novo usuário “fulano” no sistema, cujo diretório pessoal do mesmo será “/home/fulano”.
    • ”sudo useradd -d /home/outro_dir fulano” para criar o novo usuário “fulano” no sistema, porém com seu diretório pessoal se localizando em “/home/outro_dir”.
    • ”sudo useradd -s /bin/sh fulano” para criar o usuário “fulano” definindo seu shell como sendo o sh. O shell padrão do Ubuntu, assim como a maioria das outras distribuições é o bash. Com esta opção “-s” é possível criar um usuário sem que o mesmo possa ter acesso a nenhum shell do sistema, bastando executar o seguinte comando ”useradd -s /bin/false fulano”.
    • ”sudo adduser -g 600 -G 500,68 fulano” para criar o usuário “fulano” com grupo padrão de GID 600 e também pertencente aos grupos GID 500 e GID 68. Para saber os GID de cada grupo do sistema consulte o arquivo “/etc/group”.
    • NOTA: Com a mesma finalidade porém com mais opções informativas sobre o usuário a ser cadastrado existe o comando adduser. A configuração padrão usada pelos comandos useradd e adduser é definida em “/etc/default/useradd” e em “/etc/login.defs”.
  • userdel – Usado para remover uma conta de usuário do sistema, deletando todas entradas deste usuário nos arquivos /etc/passwd, /etc/shadow e /etc/group.
    • ”sudo userdel -r fulano” para remover o usuário “fulano” do sistema deletando seu diretório pessoal e todo seu conteúdo.
  • usermod – Altera as informações de um usuário, editando diretamente as informações dos arquivos /etc/passwd, /etc/shadow e /etc/group.
    • ”sudo usermod -d /home/novo_dir fulano” para criar um novo diretório pessoal para o usuário “fulano” em “/home/novo_dir”. Se quiser que o atual diretório do usuário seja movido para o novo diretório utilize a opção “-m” desta forma ”sudo usermod -d /home/novo_dir -m fulano”.
    • ”sudo usermod -g 800 fulano” para alterar o grupo padrão do usuário “fulano” para GID 800.
    • ”sudo usermod -s /bin/false fulano” para alterar o shell do usuário “fulano” para “/bin/false” não mais permitindo que o usuário faça login no sistema.
    • ”sudo usermod -e 03/04/2007 fulano” para alterar a data de expiração da conta do usuário “fulano” para 03/04/2007.
  • finger - Exibe informações dos usuários do sistema. Se um usuário não for passado ao comando o mesmo apresentará informações de todos usuários atualmente logados.
    • ”finger fulano” para exibir informações, como login, diretório pessoal, shell entre outras do usuário “fulano”.
  • passwd – Altera a senha de um usuário exibindo um prompt para que a nova senha seja fornecida, e logo depois repetida para confirmação. O usuário logado pode alterar a própria senha digitando apenas ”passwd”.
    • ”sudo passwd fulano” para alterar a senha do usuário “fulano”.
    • ”sudo passwd -l fulano” para bloquear a conta do usuário “fulano”.
    • ”sudo passwd -u fulano” para desbloquear a conta do usuário “fulano”.
    • ”sudo passwd -d fulano” para desativar a senha do usuário “fulano” deixando-o sem uma senha de acesso.
  • groupadd – Cria um novo grupo no sistema. Deve-se remover os usuários do grupo, antes de apagar o grupo, pois o Linux não faz nenhum tipo de verificação neste sentido.
    • ”sudo groupadd novogrupo” para criar um novo grupo no sistema chamado “novogrupo”.
    • ”sudo groupadd -g 800 novogrupo” para atribuir ao grupo “novogrupo” o GID 800.
  • groupdel – Exclui um grupo no sistema.
    • ”sudo groupdel novogrupo” para excluir o grupo chamado “novogrupo”.
  • groupmod – Altera as informações de um grupo do sistema.
    • ”sudo groupmod -n velho_grupo novo_grupo” para alterar o nome do grupo “velho_grupo” para “novo_grupo”.
    • ”sudo groupmod -g 900 novo_grupo” para alterar o identificador do grupo chamado “novo_grupo” para GID 900.
  • id – Exibe os identificadores (IDs) reais e efetivos de usuário e de grupo de um usuário. Se não for especificado ao comando um usuário será exibido as informações do usuário atual.
    • ”id fulano” para exibir os IDs de usuário e grupo do usuário “fulano”.

Utilitários de Texto

  • cat – Utilizado para concatenar arquivos exibindo o resultado na tela, sendo também utilizado para exibir o conteúdo de arquivos.
    • ”cat arq” para exibir o conteúdo do arquivo chamado “arq”. Se desejar que as linhas do arquivo sejam enumeradas use a opção “-n” junto ao comando, desta forma ”cat -n arq”.
    • ”sudo cat /etc/passwd /etc/group” para exibir na tela o conteúdo dos arquivos “/etc/passwd” e “/etc/group”.
    • ”cat file1 file2 |less” para exibir na tela o conteúdo dos arquivos “file1” e “file2” porém fazendo a paginação das telas. Neste caso a opção “|less”, onde “|” é o chamado pipe, pode ser substituída também por “|more”, sendo que ambos comandos serão vistos posteriormente.
    • ”cat arq arq1 arq2 > arq_final” para concatenar os arquivos “arq”, “arq1” e “arq2” e colocar o resultado em outro arquivo chamado “arq_final”. Notar que neste comando é feito uso do caractere “>” chamado de redirecionador de saída.
    • ”cat arq3 >> arq_final” para inserir o conteúdo do arquivo “arq3” ao final do arquivo “arq_final”.
    • NOTA: O comando cat também pode ser usado para criar arquivos quando usado em conjunto com o “>” redirecionador de saída. Para criar um arquivo execute o comando ”cat > novo_arq” e digite o conteúdo desejado, usando a tecla “Enter” como separador de linhas e “Ctrl+D” para finalizar.
  • less – Faz a paginação de saídas muito extensas exibindo uma tela por vez.
    • ”less arq” para exibir o conteúdo do arquivo “arq” de forma paginada. Para navegação e gerenciamento do comando use as teclas abaixo:
      • Para sair do aplicativo digite q (quit);
      • Use as teclas Page-Down, Ctrl+F ou Space para avançar nas páginas;
      • Use as teclas Page-Up ou Ctrl+B para voltar as páginas;
      • Use Enter para avançar apenas uma linha por vez;
      • Digite h para ver a lista das teclas disponíveis para navegação no comando.
    • NOTA: Para redirecionar a saída de outro comando para o less efetuar a paginação, use o “|” (pipe) conforme exemplo ”ls -hl |less”.
  • more – Semelhante ao comando less também faz a paginação de uma saída muito grande na tela. A sintaxe deste comando é semelhante ao do less, inclusive as teclas de navegação e o redirecionamento com uso do “|” (pipe).
  • grep – Usado para procurar por linhas em um arquivo que contenham expressões que satisfaçam um determinado padrão de busca.
    • ”grep termo arq” para procurar por entradas no arquivo “arq” que correspondam a expressão “termo”.
    • ”grep 'termo1 termo2' arq” para procurar por entradas no arquivo “arq” que correspondam as expressões “termo1” e “termo2”. Notar que quando a expressão é composta de mais de uma palavra deve ser usado aspas simples.
    • NOTA: Este comando comumente é utilizado em conjunto com outros comandos canalizados com o “|” (pipe) conforme abaixo exemplificado.
      • ”sudo cat /etc/passwd |grep fulano” para procurar por uma entrada que corresponda a expressão “fulano” no arquivo “/etc/passwd”.
  • tail – Exibe as últimas linhas da saída de um arquivo. Por padrão se nenhum parâmetro diferente for passado ao comando será exibido as últimas 10 linhas do arquivo.
    • ”tail -50 arq” para exibir as últimas 50 linhas do arquivo chamado “arq”.
    • ”sudo tail -f /var/log/messages ” para continuar exibindo indefinidamente as últimas 10 linhas (padrão) do arquivo “/var/log/messages ”. Conforme o exemplo, esta opção “-f” é muito usada para verificar arquivos de log do sistema que estão sendo constantemente atualizados.
    • NOTA: Assim como o tail que exibe as últimas linhas de um arquivo, existe o comando head que faz exibir as primeiras linhas de saída de um arquivo.

Monitoramento de Acesso

  • w – Mostra quem esta logado no sistema e o que esta fazendo. Se não for especificado um usuário ao comando, será exibido informações de todos usuários logados.
    • ”w” para exibir todos usuários logados e o que estão executando neste momento.
    • ”w fulano” para mostrar informações do usuário “fulano” se o mesmo estiver logado no sistema.
  • who – Semelhante ao comando w mostra quais usuários estão logados no sistema.
    • ”who -m” para mostrar o nome do usuário logado no sistema.
    • ”who -q” para mostrar a quantidade total e nomes dos usuário conectados ao sistema.
  • whoami - Este comando fornece o mesmo resultado do comando ”who -m”.
  • last – Mostra todas informações referente as entradas (login) e saídas (logout) de usuários do sistema.
    • ”last -a” para exibir estas informações mostrando o nome da maquina de onde foi efetuado os logins.
    • ”last -d” para exibir estas informações mostrando o endereço IP da maquina de onde foi efetuado os logins.
    • ”last reboot” para exibir um registro de todas as reinicializações efetuadas no sistema.
  • lastlog – Exibe informações referente ao último login de cada usuário cadastrado no sistema. Caso nenhum argumento seja passado, o comando lastlog exibe todas as informações armazenadas no arquivo “/var/log/lastlog” de todos os usuários do sistema.
    • ”sudo lastlog -u fulano” para exibir informações referentes apenas ao último login do usuário “fulano.
    • ”sudo lastlog -t 5” para exibir a lista dos usuários que logaram no sistema nos últimos 5 dias informando o dia e a hora do último acesso de cada um desses usuários.

Rede

  • ifconfig – Permite configurar as interfaces de rede, sendo o comando utilizado na inicialização do sistema para configuração destas interfaces. Caso nenhum argumento seja passado junto ao comando, o mesmo apenas irá exibir o estado das interfaces atualmente definidas.
    • ”sudo ifconfig eth0” para exibir o estado e informações da interface de rede eth0.
    • ”sudo ifconfig eth1 down” para desativar a interface de rede eth1.
    • ”sudo ifconfig eth1 up” para ativar a interface de rede eth1.
    • ”sudo ifconfig eth0 192.168.3.1 netmask 255.255.255.0 up” para configurar a interface de rede eth0 com endereço IP 192.168.3.1 e máscara da rede 255.255.255.0, ativando-a.
    • ”sudo ifconfig eth1 hw ether 00:D0:D0:67:2C:05” para alterar o endereço MAC (MAC Address) da interface de rede eth1 para “ 00:D0:D0:67:2C:05”. É necessário que a placa de rede esteja desativada “sudo ifconfig eth1 down” para esta operação.
    • ”sudo ifconfig eth0:1 10.0.0.2 netmask 255.255.255.0 up” para adicionar um segundo endereço de rede, com IP 10.0.0.2 e máscara 255.255.255.0 a interface eth0.
    • ”sudo arp 192.168.3.1” para exibir as entradas para o host 192.168.3.1. Se um host não for especificado, será exibido todas as entradas do cache.
    • NOTA: Esta ferramenta é muito útil quando se faz necessário descobrir o endereço MAC de um determinado host da rede.
  • ping Envia requisições ICMP para um determinado host. É uma ferramenta largamente utilizada para testar a conectividade entre uma maquina/rede local e maquinas/redes remotas.
    • ”ping -c 5 200.106.28.125” para verificar se a maquina cujo endereço IP é 200.106.28.125 se encontra conectada e alcançável. É importante ressaltar que muitos servidores, principalmente de redes empresariais, podem bloquear requisições de pacotes ICMP em seu firewall, podendo assim parecer que determinada rede não se encontra alcançável.
  • route – Permite exibir a tabela de roteamento (configuração das rotas) IP do kernel, sendo que com uso das opções add e del permite também modificar esta tabela inserindo ou deletando registros.
    • ”sudo route” para exibir a tabela das rotas atualmente ativas.
    • ”sudo route add -net 192.120.10.0 netmask 255.255.255.0 dev eth0” para adicionar uma rota para rede 192.120.10.0 via interface de rede eth0.
    • ”sudo route del -net 192.120.10.0 netmask 255.255.255.0 dev eth0” para remover a rota anteriormente adicionada.

Módulos carregáveis do Kernel

  • lsmod Lista todos módulos do kernel atualmente carregados na memória. Na realidade, o comando lsmod apenas lista o conteúdo do arquivo “/proc/modules”.
  • modinfo – Exibe informações sobre um determinado módulo carregado do kernel.
    • ”sudo modinfo ip_tables” para exibir informações do módulo “ip_tables” que se encontra carregado na memória do sistema.
  • modprobe – Usado para gerenciar, ou seja, adicionar e remover módulos carregáveis do kernel. O modprobe lê o arquivo de dependências de módulos gerado pelo depmod, portanto devemos sempre antes executar o comando ”sudo depmod -a”.
    • ”sudo modprobe iptable_nat” para carregar na memória o módulo “iptable_nat”.
    • ”sudo modprobe -r ndiswrapper” para remover da memória o módulo “ndiswrapper”.

Shell (Bash) e Utilitários de Terminal

  • alias Tem como finalidade atribuir um “alias” (em inglês, significa outro nome) a outro comando, permitindo nomear um conjunto de comandos, a ser executado pelo sistema por um único nome. Caso nenhum parâmetro seja passado ao comando será listado todos alias atualmente definidos e ativos no sistema.
    • ”alias ls='ls -hal --color'” para definir uma alias ls para o comando ls -hal que irá mostrar os arquivos que estão no diretório correntel, inclusive os ocultos (-a) em forma de uma listagem (-l) e com as informações de tamanho mais amigável a nós seres humanos (-h) e diferenciado por cores.
    • ”alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls'” para criar um alias chamado fd que montará um disquete, acessando e listando seu conteúdo. Observe que, neste exemplo, foram usados dois diferentes separadores de comandos: ponto-e-vírgula e &&. Comandos separados por ; são executados em seqüência. Comandos separados por && são executados de forma condicional, ou seja, o comando após o separador só é executado se o comando anterior tiver sido executado com sucesso.
    • ”alias mcdrom='mount /mnt/cdrom'” para criar um alias chamado mcdrom que ao ser executado monta o CD em uso.
    • NOTA: Estes aliases são criados apenas para a sessão ativa do usuário, ou seja, ao deslogar do sistema os mesmos se perderão. Para criar aliases permanentes ao sistema edite o arquivo .bashrc de seu diretório pessoal e inclua no mesmo os comando desejados. Em contrapartida ao comando alias existe o comando unalias que faz justamente o inverso, removendo os alias criados.
  • apropos Pesquisa por um padrão na base de dados do comando whatis que veremos logo abaixo, informando quais comandos do Linux correspondem a uma determinada expressão.
    • ”apropos apropos” (1) - search the whatis database for strings (Procura por expressões na base de dados whatis), ou seja exibe todos comandos Linux que tenham alguma correspondência a expressão “apropos”, no caso apenas o comando apropos.
  • login Permite a um usuário efetuar o logon (estabelecer uma conexão) no sistema, bem como ser utilizado para efetuar o logon com um usuário diferente do atual.
    • ”login fulano” para efetuar o login do usuário “fulano”.
    • ”login -p fulano” para efetuar o login do usuário “fulano” sem destruir o ambiente do atual usuário.
  • logout Finaliza um login shell no console ou terminal. No modo gráfico, este comando encerra a sessão do usuário podendo fechar a janela do terminal, e em modo texto encerra a sessão do usuário levando-o de volta ao prompt de login do sistema.
    • ”logout” O mesmo resultado pode ser alcançado executando o comando exit.
  • su Permite alternar entre os usuários cadastrados do sistema, alterando o ID de usuário e grupo do atual usuário para outro usuário especificado.
    • ”su fulano” permite alternar para o usuário “fulano” após senha de login correta.
    • ”su fulano -c 'vim /home/fulano/arq1'” permite executar o comando vim abrindo o arquivo “/home/fulano/arq1” como sendo o usuário “fulano”. O uso desta opção -c não começa um novo shell, apenas executa um comando como sendo o outro usuário especificado.
  • sudo Permite a um usuário autorizado conforme configurado no arquivo “/etc/sudoers”, a executar comandos como se fosse o super-usuário (root) ou outro usuário qualquer. Veja RootSudo para maiores detalhes.
  • uname Exibe várias informações sobre o sistema. Caso nenhuma opção seja fornecida junto ao comando, apenas o nome do sistema operacional será exibido, equivalente a opção -s.
    • ”uname -a” para exibir todas informações sobre o sistema.
  • whatis Pesquisa em uma base de dados que contem uma curta descrição dos comandos do sistema. Esta base de dados com os comandos do sistema é criada e atualizada com o comando ”sudo makewhatis”
    • ”whatis sudo halt” para obter uma descrição resumida dos comandos sudo e halt.
  • whereis Usado para localizar o binário, o arquivos-fonte e a página man (manual) dos comandos do sistema.
    • ”whereis ls” para descobrir onde se encontra o arquivo binário, os fontes e o manual (man) do comando ls.
  • which Exibe o caminho completo na hierarquia de diretórios para os comandos do sistema.
    • ”which firefox” para exibir o diretório onde se encontra o programa “firefox”.
  • clear Limpa a tela movendo o cursor para primeira linha. Não existem parâmetros passados junto a este comando.
  • echo Permite exibir textos na tela. Este comando também exibe toda estrutura de diretórios e arquivos em ordem alfabética, porém sem formatar em colunas a listagem.
    • ”echo 'Olá mundo!'” envia para saída de tela a expressão “Olá mundo!”.
    • ”echo /etc/*” para listar todo conteúdo do diretório “/etc”.
  • halt, reboot, shutdown Respectivamente encerra, reinicializa e encerra ou reinicializa o sistema.
    • ”sudo halt” para encerrar o sistema.
    • ”sudo reboot” para reiniciar imediatamente o sistema. Este comando equivale aos comandos ”sudo init 6” e ”sudo shutdown -r now”.
    • ”sudo shutdown -h now” para encerra o sistema imediatamente.
    • ”sudo shutdown -h +15” para encerrar o sistema daqui a 15 minutos.
    • ”sudo shutdown -r 20:30 'O sistema será reiniciado as 20:30 horas!'” para reiniciar o sistema as 20:30 horas enviando a mensagem "O sistema será reiniciado as 20:30 horas!" a todos usuários logados.
    • NOTA: O comando ”sudo init 0” também pode ser usado para encerramento do sistema. O comando shutdown é a forma mais segura de reiniciar e finalizar o sistema, advertindo os usuários logados e bloqueando novos logons.

Opções

O comportamento padrão para um comando pode ser modificado por adicionar uma --opção para o comando. O comando ls, por exemplo, tem uma opção -s , de forma que "ls -s" incluirá o tamanho dos arquivos na listagem realizada. Há também uma opção -h para que esses dados estejam em um formato "legível para humanos".
As opções podem ser agrupadas, sendo possível, por exemplo usar "ls -sh", que funcionará exatamente da mesma forma que "ls -s -h". Muitas opções têm uma versão longa, prefixadas por dois traços em vez de um, assim "ls --size --human-readable" é o mesmo comando dado anteriormente.

Dicas e Truques

Teclas de controle e atalhos

Teclas
Ação
Ctrl + f
Move o cursor uma palavra para frente
Ctrl + b
Move o cursor uma palavra para trás
Ctrl + a
Para ir ao início da linha de comando
Ctrl + e
Para ir ao final da linha de comando
Ctrl + t
Inverte o caractere sob o cursor com o anterior
Ctrl + u
Limpa a linha de comando corrente
Ctrl + y
Re-insere o último trecho de comando apagado
Ctrl + r
Faz uma busca incremental no histórico de comandos utilizados
Ctrl + c
Termina a execução do comando corrente
Ctrl + d
Encerra entrada de dados pelo teclado fazendo logout
Ctrl + m
Equivalente a tecla Enter
Ctrl + l
Limpa a tela, equivalente ao comando clear
Ctrl + s
Inibe a exibição de informações na tela de saída
Ctrl + q
Ativa a exibição de informações na tela de saída, inibida pelo Ctrl + s
Ctrl + z
Põe o processo corrente em background (segundo plano)
Icones/importante.png
NOTA: Para maiores detalhes, veja aqui nossa página exclusiva sobre atalhos de teclado no bash.

Teclas de emergência do GNU/Linux

Quem é que já não se deparou com um travamento causado por mal-funcionamento de hardware no Linux? Este tópico ensina a usar as teclas de emergência do kernel.
Icones/importante.png
NOTA: As teclas de emergência do kernel são comandos de baixo nível pouco conhecidos que podem desempenhar uma função primordial na vida de usuários Linux.
Desligando o computador
A primeira combinação de emergência é usada para sincronizar os discos e desligar o computador instantaneamente evitando problemas nos sistemas de arquivos. Ela é ideal para quem precisa desligar o computador rapidamente sem danificar seus sistemas de arquivos, ou quando a máquina trava e por qualquer motivo não permite um desligamento natural através do init.
Mantendo ALT pressionado, tecle Print Screen e depois O.
Reiniciando o computador
Assim como o Ctrl+Alt+Del do MS-DOS o kernel do Linux também possui uma chamada de emergência que permite reiniciar a máquina, com a vantagem de sincronizar os discos evitando danos no sistema de arquivos. Veja como fazer:
Mantendo ALT pressionado, tecle Print Screen e depois B.
Sincronizando os discos
Se você acha que a força vai cair e precisa trabalhar até a ultima hora mas tem medo de danificar seu sistema de arquivo, poderá sincronizar seus discos de tempos em tempos.
Para sincronizar discos em caso de emergência:
Mantendo ALT pressionado, tecle Print Screen e depois S.
Segurança
Se por algum motivo algo está ameaçando a segurança do seu sistema, como a execução acidental de um script malicioso como root ou de programa desconhecido, poderá colocar os discos como somente leitura e evitar danos mais sérios.
Mantendo ALT pressionado, tecle Print Screen e depois U.

Otimizando o desempenho do history com navegação contextual

Como sabemos o ambiente shell do GNU/Linux, no caso o bash, mantém no arquivo .bash_history uma lista com o histórico dos últimos comandos digitados. Com isso e o uso das teclas direcionais UP e DOWN nos permitem "navegar" por esta lista, de modo a retornar com um comando já utilizado e que esteja em nosso histórico armazenado.
Porém por padrão esta navegação será por toda gama de comando já utilizados, o que por vezes faz com que percamos até mais tempo necessário do que se digitarmos novamente o comando.
Com uma dica simples veremos então como fazer com que esta navegação seja otimizada de forma a permitir uma filtragem no histórico de comandos bastando inserir alguns caracteres do mesmo antes de usarmos as setas de navegação.
Agora as setas farão uma procura por contexto. Se você não digitar nada, o efeito será o mesmo que antes, mas se você digitar um caractere e pressionar a seta, ele só irá mostrar os comandos que comecem com aquele caractere. Portanto com este ajuste, se você digitar "ls" e pressionar a seta ele vai navegar apenas nos comandos que começam com "ls".
Para que isso funcione desta forma primeiramente iremos criar no diretório $HOME do usuário desejado o arquivo oculto de nome .inputrc com o seguinte conteúdo abaixo:
“\e[A”: history-search-backward
“\e[B”: history-search-forward
Agora basta fechar a seção atual e abrir uma nova para que a navegação no histórico dos comandos passe a funcionar desta forma mais otimizada.
Notas:
  • Por padrão o Linux armazena no .bash_history os últimos 500 comandos utilizados, mais este número pode ser modificado editando o seu arquivo .bashrc e adicionado as seguintes linhas:
export HISTFILESIZE=XXXX
export HISTSIZE=XXXX
Onde, XXXX deve ser substituído pela quantidade desejada.
  • Como configuração padrão do sistema como um todo existe o arquivo /etc/inputrc, ou seja, caso se deseje que estas novas configurações passem a valer para todos usuários do sistema basta adicionar aquelas 2 linhas do .inputrc neste arquivo.

Usando "grep" com resultados coloridos

Quem costuma usar o grep para fazer filtragens, pode se beneficiar desta pequena e simples dica, fazendo a saída dos resultados ficarem coloridas em destaque.
grep --color=auto
Vamos a um exemplo pratico para entender melhor:
ps aux |grep --color=auto tty
Nota:
Quem gostar do resultado e desejar deixar como padrão, basta editar seu arquivo ~/.bashrc criando um alias para o comando grep conforme abaixo demonstrado.
1. Abra o arquivo em seu editor de texto favorito.
vim ~/.bashrc
2. Adicione a linha baixo no mesmo, e salve o arquivo.
alias grep='grep --color=auto'
3. Agora, basta executar o comando abaixo que este recurso será padrão para este seu usuário.
source ~/.bashrc

Obtendo ajuda

Nosso maior aliado

Warning /!\ Os comandos --help e man podem ser consideradas as duas ferramentas mais importantes em uma linha de comando.
Praticamente todos os comando entendem a opção -h (ou --help), a qual produzirá uma descrição breve e útil do comando e suas opções, e então volta para o terminal. Tente "man -h" ou "man --help" para ver isso em ação.
Todo comando e quase toda aplicação em Linux terá um arquivo man (manual), e encontrá-lo será muito simples. Basta digitar ”man comando” para surgir um manual extenso para o comando especificado. Por exemplo, "man mv" mostrará o manual de mv (Move).
Mova para cima ou para baixo no arquivo man utilizando as teclas Page UP e Page Down ou as setas no teclado, e retorne para a linha de comando teclando q.
"man man" mostrará a entrada do manual para o comando man, e este é um bom lugar para começar!
"man intro" é especialmente útil, pois mostrará a "Introdução para comandos do usuário" que é uma introdução breve e bem escrita sobre a linha de comando.
Além disso, há as páginas de info, que geralmente serão mais detalhados, se aprofundando mais do que as páginas man. Tente "info info" para uma introdução às páginas info.
Procurando por arquivos "man"
Se você não está certo de qual comando ou aplicação você precisa usar, você pode tentar procurando os manuais (arquivos "man").
  • "man -k foo" irá procurar manuais para foo. Tente "man -k nautilus" para ver como isso funciona.
    • Observe que isso é o mesmo que o comando apropos.
  • "man -f foo" procura apenas os títulos dos manuais do seu sistema. Tente "man -f gnome", por exemplo.
    • Isso é o mesmo que o comando whatis.

Outras fontes de consulta

Para maiores informações e detalhes sobre os comandos aqui apresentados, além da consulta as páginas de manuais do seu sistema recomendamos uma visita aos sites abaixo, que também serviram de poderosa fonte de pesquisa para desenvolvimento desta página.

Informações adicionais

  • AptGet - Howto - usando o apt-get para instalar pacotes pela linha de comando.
  • AdicionandoRepositorios - adicionando os repositórios Universe/Multiverse usando a linha de comando.

Créditos

Tirado de: http://wiki.ubuntu-br.org/ComandosBasicos

Em: 14/12/2011

Wikifier: arlei
Atualizado em: 12/08/2007
Mantenedor: arlei

COMO INSTALAR PACOTES NO UBUNTU LINUX SEM CONEXÃO COM A INTERNET

Saiba como instalar pacotes no Ubuntu Linux sem conexão com a Internet no seu computador

Todos que já migraram para o Linux, podem perceber que sem Internet seu uso fica complicado! Principalmente no momento que você deseja instalar algum pacote (quem já tentou instalar um pacote no Linux levando no pendrive - como é feito no Windows - é um "grande guerreiro"). Portanto nesse artigo, você verá como instalar seus programas preferidos sem possuir uma conexão com a Internet rápida ou muito boa para baixar diversos programas.


Você já imaginou como seria o Ubuntu Linux sem o APT? Como nós poderíamos instalar nossos programas? Pois é, sem uma conexão com a Internet digna para baixar diversos pacotes ao mesmo tempo, você com certeza irá penar para baixar seus pacotes (principalmente por causa das dependências de pacote).

Sendo assim, é preciso conhecer o APTonCD. Ele é uma ferramenta com uma interface gráfica que permite criar um ou mais CDs ou DVDs (você escolhe o tipo de mídia) com todos os pacotes que você tenha baixado via apt-get ou aptitude, criando um repositório removível que você pode usar em outros computadores.


Mas como ele funciona?

A medida que você baixa novos pacotes pelo Synaptic (ou apt-get) eles ficam gravados na pasta /var/cache/apt/archives.

Em parte você poderia colocar esses arquivos num CD, contudo para esse CD ser reconhecido pelo Ubuntu ele precisa cumprir certas formalidades. Sendo assim, o que o APTOnCD faz é exatamente isso, transporta esses pacotes para uma mídia de CD/DVD que será reconhecido pelo Ubuntu como sendo um novo repositório pronto para ser reutilizado.

Processo de Instalação


O APTOnCD está disponível nos repositórios do Ubuntu, então para baixá-lo e instalá-lo basta executar o seguinte comando em seu terminal:

sudo apt-get install aptoncd

Tendo instalado corretamente, depois vá em Sistema >> Administração >> APTonCD. Surgirá um tela com duas perguntas: Criar ou restaurar?

Escolha Criar para criar um novo CD/DVD ou uma imagem ISO

Escolha Restaurar para restaurar os pacotes copiados

Posteriormente, selecione os pacotes desejados e selecione a opção Gravar! E pronto!!

Lembrete: Já que você instalou o APTonCD em uma máquina remota, não esqueça de selecioná-lo para instalá-lo em sua máquina também! Pois será preciso para a restauração!

Restaurando os Pacotes

Depois que você fez o backup de todos o seus pacotes, é hora de instalá-los em seu computador!

Através do APTonCD você deve escolher a opção Restaurar.

Restaure a imagem ISO criada (no meu caso - mas pode ter sido um CD/DVD).


Depois clique em Restaurar!!

Isso vai recolocar os arquivos baixados de volta à pasta correspondente e, depois disso, basta abrir o Synaptic e começar a instalação dos programas que você costuma colocar no seu Linux; como eles já estarão 'baixados' no cache do apt, o Synaptic os instalará sem precisar baixá-los de novo, sejam eles programas ou atualizações do sistema.

Você também pode usar o recurso do Terminal, digitando nele "sudo dpkg -i *.deb" para instalar tudo que estiver no cache do apt de uma tacada só; isso costuma dar alguns erros mas nada que o "apt-get install -f" não resolva ;)

Outras finalidades do APTonCD

Ele também se torna interessante para que você faça um backup dos pacotes contidos em /var/cache/apt/archives de tempos em tempos para, além de recuperar espaço em disco, não ter que baixar tudo de novo em uma eventual reinstalação do Linux.

Nota Importante

De acordo com a dica do leitor @RudineiWeschenfelder. Vale a pena destacar que é preciso observar alguns detalhes:

1. Caso já tenha rodado o comando de limpeza da cache de pacotes apt: sudo apt-get clean o diretório /var/cache/apt/ estará vazio, ou terá somente os últimos pacotes baixados após ter rodado o comando sudo apt-get clean.
2. Caso tenha usado algum outro aplicativo de limpeza de pacotes desnecessários, como o Ubuntu Tweak ou BleachBit, também é possível que o diretório de cache do apt esteja vazio.

Nesses casos, o APTonCD não terá muita utilidade, pois como foi falado no post, o APTonCD pega os pacotes que estão no diretório /var/cache/apt/, então se você quer fazer uma backup dos pacotes para instalar em um computador sem internet, certifique-se que dentro diretório /var/cache/apt/ contenha os pacotes e dependências que você quer instalar em um computador sem internet.



Artigo originalmente publicado por Ricardo Ferreira Costa do Blog Linux Descomplicado


Link: http://www.linuxdescomplicado.com.br/2011/12/saiba-como-instalar-pacotes-no-ubuntu.html#more
Data da cópia: 14/12/2011

sábado, 26 de novembro de 2011

Squid, Iptables, Sarg, SaMBa e Apache

Pessoal achei muito interessante este tutorial publicado por Tiago Cruz em 6 de julho de 2007 às 16h06 no site www.guiadohardware.com.br então decidi transcrevê-lo

Introdução

Aviso importante

Olá gente! Tive um contato com alguns servidores e achei legal deixar anotado os passos que fiz para configurar uma máquina semi-morta compartilhando o acesso a internet junto com um firewall protegendo-a.

Já adianto para os chatos de plantão que este documento é feito por mim e para mim! Outra: Se quiser um manual avançado sobre tudo isso procure outro artigo/ tutorial na NET. No final do texto tem alguns links interessantes, pode ir direto para lá.

Meu objetivo aqui é somente reunir umas dicas que achei legal, sem escrever especificamente sobre determinado assunto.


Introdução

Bom, o que rola é que tive que compartilhar um adslmodem para 10 estações, controlar o acesso a NET e deixar a mesma protegida sem gastar U$ 600,00 que é o valor de um firewall/ router em hardware da blackbox (isso é somente um exemplo). Na verdade eu queria mesmo é me divertir com o que tinha em mãos =)


O "Hardware"

Como disse anteriormente, a "máquina" semi-morta estava encostada aqui, porque ela congela geral a cada 5 minutos no windows 98 ou no 95. Troquei tudo, menos a placa-mãe, uma famiguerada PC-Chips M812 LMR... com o KDE/Fluxbox não foi diferente, congelava direto e reto!

Depois de umas duas horas de tentativas (congelava direto), consegui instalar o Kurumin 1.4 no HD e arrancar o modo gráfico dela... hehehehe... agora parece que estabilizou, em modo texto. Deixei ele calculando o valor de 'pi' com 10000 casas decimais, o processador ficou ocupado por muuiito tempo e retornou o valor correto (quero dizer, deve estar correto) sem congelar, que é o que importa. Para quem ficou curioso:

$ echo "scale=10000; 4*a(1)" | bc -l

Bom, acompanhado à mobo zoada, tenho um Duron 950 MHz, um disco rígido de 1.9 GB e 128 MB de RAM DIM PC-100 MHz. Som e modem on-board desabilitado, rede SiS900 ok.



Configuração

Depois do parto para instalar, começa-se a configuração (a parte mais legal)! Como a máquina estava em um ambiente de teste, sob um proxy, coloquei as variáveis dela em /etc/environment... mas não funcionou (pow, da última vez tinha funcionado... :-/ ). Ok, sem stress, coloquei em /etc/profile e ficou tudo certo:
export ftp_proxy="http://192.168.0.1:80"
export http_proxy="http://192.168.0.1:80"

Agora sim, com apt "em mãos" eu pude detonar tudo:

# apt-get update
# apt-get remove xdm kdm kopete gaim [...]


Removi uma porrada de 'tranqueira' que não será usado em um servidor sério como este :) Depois dei um '# apt-get update' e deixei o bixo atualizadinho... mas o X parou de subir... até tentei uns kxconfig e mkxf86config mas depois desisti e acabei arrancando tudo que começava com kde ('dpkg -l kde*') e o pacote 'sudo' também (odeio ele, heheh).

Está ficando interessante! Estava tudo ok para iniciar os testes, mas faltava uma placa de rede! Depois de arrancar uma 3Com509B PCI de um micro aqui, espetar, rodar o hwsetup e descobrir que após o boot eu perco o módulo da placa, adicionar a mesma (o módulo chama-se 3c59x) em /etc/modules para que carregue durante o boot, pude continuar com os servidores em si.

Antes de mais nada, tirei a máquina de seu local de testes e levei-a junto de um teclado velho a seu lugar definitivo, em outro prédio.


Configurando o adslmodem e rede interna

Boiada. Pensei que era pior. Com o comando netcardconfig configurei a eth0 (sis900) como local (192.168.0.1 / 255.255.255.0) e a eth1 (3com) com os dados passados pelo 'tiuzinho' que instalou o speed: IP, gateway, DNS's... e pronto, a net já funcionou! Ainda bem que o IP é fixo, heheheh...

Só uma coisa que tive que fazer é retirar as variáveis de proxy do /etc/profile... senão o apt não iria funcionar mesmo :-/


Compartilhando a NET para os outros micros da rede

Essa parte é fácil, e já está bem manjada:

modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Nas estações, basta configurar um IP tipo 192.168.0.2 / 255.255.255.0, o gateway deve ser a maquina com linux (192.168.0.1) e o DNS o do seu provedor (o do Terra, por exemplo: 200.204.0.10)

Na verdade, andei testando, e parece que nem precisa do DNS... mas se der algum problema, basta coloca-lo...

Se quiser fazer sempre isso, em todos os boots, adicione essas linhas no seu /etc/init.d/bootmisc.sh (Debian/ Kurumin) ou em /etc/rc.d/rc.local (Mandrake / Red Hat)

Eu poderia ter parado por aqui... mas como disse, não teria graça... quero brincar com o squid e com o sarg, ainda! E mexer mais com o iptables também!



Squid: Controle de acesso a NET

Instalei o dito-cujo

apt-get install squid

Mas "deu um erro"... removi e instalei de novo... o erro continuava. Apaguei ele de /var/cache/apt/archives, removi com um dpkg --purge e instalei de novo... deu erro... arrrgghhhh!

Resolvi ler o erro que estava dando (quem nunca fez isso atire o primeiro mouse :) ah... ele ta falando que eu não defini um tal de 'visible_hostname'

# vi /etc/squid.conf
/visible_hostname [enter]

Achei o danado... tem uma descrição mas não mostra um exemplo de uso :-/

Tentei:

visible_hostname="kurumin.proxy"
visible_hostname=kurumin.proxy
visible_hostname "kurumin.proxy"
visible_hostname kurumin.proxy

Até achar um que não reclamasse mais nos logs... que por sinal era o último (maldita lei de murphy...)

Para testar o benedito, adicionei essas linhas na parte das ACL's:

acl rede_interna src 192.168.0.0
http_access allow rede_interna
http_access deny all

Inicia-se o cara:

/etc/init.d/squid start

E testa em uma estação, tomando o cuidado para configurar a mesma para usar a internet via proxy, no IP do servidor linux e a porta 3128 (padrão)

Funcionou? Legal, agora temos um cache de navegação, que deixa a coisa mais rápida e logs de acesso para controlar o povo... muito bom!

Mas se o engraçadinho tirar a opção de navegar com o proxy, ele navega sem ficar logado nada... isso não pode acontecer:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to 3128

Agora sim... ta ficando legal!

Dá para fazer mais uma porrada de coisas legais com o squid, mas de momento, só farei mais uns ajustes no arquivo de configuração dele, nada muito complexo ficando assim:

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
cache_mem 64 MB
cache_access_log /var/log/squid/access.log

acl all src 192.168.0.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl rede_interna src 192.168.0.0

http_access allow rede_interna
http_access deny all

icp_access allow all
cache_mgr tiagocruz @ forumgdh . net
visible_hostname kurumin.proxy
logfile_rotate 10

Bom, note que eu mudei a minha 'acl all src' restringindo somente a minha rede interna. Dica de um colega e colaborador do LinuxRapido, o usuário Challado:

"E uma coisa importante de lembrar pra você, é mudar a configuração da variável all, que está na seguinte ACL:
acl all src 0.0.0.0

para:
acl all src {Endereço ip da sua rede interna}

Porque se não (principalmente se no servidor onde você rodará esse squid você tiver um IP válido você poderá estar criando mais um servidor para ajudar os spammers a espalhar o spam pela net."

Note também que estou dedicando 64 MB para o squid, já que tenho 128 MB e não vou usar modo gráfico...

Outra coisa que você deve estar estranhando é que meu arquivo está bem resumido, sem os comentários... hehehhe... a mágica está aqui (digite no diretório do mesmo):

# cp squid.conf squid.conf.back
# grep -v ^# squid.conf.back|grep -v ^$ > squid.conf

Agora que está tudo legal, vamos ver nos logs o que a galera está fazendo:

# tail -f /var/log/squid/

"Nossa que zona!" Você pensou? Eu também... vamos para a próxima parte deste artigo:


Sarg: Embelezando os logs de acesso

O Sarg é mais um software livre, mas feito por um brazuca! O Pedro Orso está de parabéns!!! Com o sarg, temos relatórios em html com estatísticas, coisa de primeira linha que eu não tenho nem nos proxys comerciais que uso, como o Winproxy.

apt-get install sarg
vi /etc/squid/sarg.conf

Nem precisa mudar muita coisa... é rapidim:
language Portuguese
title "Relatório de uso da internet"
date_format e

E "ja era" tá ótimo! Por padrão (pelo menos no debian) ele irá jogar o relatório em /var/www/squid-reports/.

Digitando sarg, ele irá processar tudo, bonitinho e você irá se espantar com o resultado, caso nunca tenha visto antes... simplesmente fantástico! Esse cara [também] merece uma skol... isso se você tiver um navegador gráfico para visualiza-lo, no meu caso tive que compartilhar a saída do mesmo via SaMBa para poder ver alguma coisa :-p


SaMBa: Compartilhando o relatório para as máquinas windows

Como já escrevi bastante sobre o samba, serei mais direto:

# apt-get install samba
# vi /etc/samba/smb.conf
[global]
workgroup = INTERNET
netbios name = GATEWAY
server string = %h server (Samba %v)
interfaces = eth0, 192.168.0.0/255.255.255.0
security = SHARE
obey pam restrictions = Yes
passdb backend = smbpasswd, guest
passwd program = /usr/bin/passwd %u
passwd chat = *EntersnewsUNIXspassword:* %n

*RetypesnewsUNIXspassword:* %n
.
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
invalid users = root

[squid]
comment = Relatorios do SQUID
path = /var/www/squid-reports
guest ok = Yes

# /etc/init.d/samba start

Bom, como o servidor está direito na Internet, em poucos minutos já apareceu nos logs um monte de prováveis máquinas windows infectadas procurando um compartilhamento 'c' no meu servidor... por isso, restringi o acesso somente à interface 'eth0' (local).

Agora... tenho que bolar um modo de mostrar esse relatório para meu chefe, que está em outro prédio, sem acesso a essa rede...


Apache: Servidor web quebrando um galhão

Foi fácil demais... :-p

# apt-get install apache
# vi /etc/apache/httpd.conf

Nem precisa mudar muita coisa... só uma alteraçãozinha para não mostrar a versão do mesmo, para dificultar um pouco o povo que gosta de invadir os servidores por ae: :-)

Se sua porta 80 estiver bloqueada (speed home) terá que usar outra...
Port 80
ServerSignature Off
ServerTokens Prod

Iniciando...

# /etc/init.d/apache start

Agora sim! De qualquer lugar, digitando http://ip.do.server eu chego nos tão esperados relatórios de acesso a internet! :) :) :)

Como um ótimo complemento, vou deixar aqui a dica de outro usuário do site, o Guilherme Straioto:

" Use o apache com autenticação de usuário, para apenas o pessoal da TI poder ver os relatórios como aqui na empresa... abaixo como fiz, senão você sabe vira festa:

No httpd.conf, edite as tag DocumentRoot e Directory :
DocumentRoot "/var/www/squid-reports/"

e logo abaixo:
AuthName "Area restrita, para Sarg"
AuthType Basic
AuthUserFile /etc/.htpasswd
require valid-user
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all


# AuthUserFile: é onde esta o arquivo de senha e usuário
# require valid-user: aqui pedirá a tela de autenticação qdo solicitado
Agora só criar os usuários com permissão ao acesso:
# htpasswd -c /etc/.htpasswd ti

Pronto! Apenas o usuario ti após autenticado pelo apache terá acesso aos relatórios"


Iptables: Aumentando a segurança

Bom, não sou nenhum especialista em firewall, mas seguindo uns exemplos do Morimoto (abração pra você, velho!) e que achei na NET cheguei a isso:

#! /bin/bash
# Firewall Simples / Compartilhamento
# Carlos Morimoto 05/2003
# Tiago Cruz - 02/2004

# Carrega os módulos
modprobe ip_tables
modprobe iptable_nat

#Limpa tudo
iptables -F
iptables -t nat -F

# Para rede local receber e-mail
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Para nao fugirem do proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to 3128

# Encaminhamento de IP
echo 1 > /proc/sys/net/ipv4/ip_forward

# Abre algumas portas (ssh e http)
iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

# Abre para a rede local
iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP

# Fecha o resto
iptables -A INPUT -p tcp --syn -j DROP

# Se você quiser que o PC também não responda a pings, adicione a linha:
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Basta colocar ele nos scripts de inicialização como dito anteriormente, se desejar isso.



Crontab: Automatizando o processo

Vamos agendar algumas coisas legais no crontab:
root@kurumin:/home/tiago# crontab -l
00 12 * * 1-1 apt-get update && apt-get upgrade -y

00 17 * * 1-5 /usr/sbin/squid -k rotate > /dev/null
00 16 * * 1-5 /usr/bin/sarg

A primeira linha deixa seu servidor sempre atualizado, todas as segundas-feiras ao 12:00.

A segunda linha "roda" os logs do squid (definidos em 'logfile_rotate 10' lá em cima, o que significa que será criado logs de 0 a 9 para não acabar com seu espaço no HD e travar tudo :)

Veja essa dica do meu colega, usuário Jqueiroz sobre os logs:

"Defina quantos arquivos antigos manter: logfile_rotate n

Coloque no crontab o comando abaixo pra rodar o log 1 ou 2 vezes /dia. Aqui (300 máquinas), rodando 2x/dia o access.log fica +- 30MB.
/usr/bin/squid -k rotate > /dev/null

Nota: fazendo 2x/dia, escolha bem a hora em que faz, senão você fica com 1 enorme e outro quase vazio. Eu faço às 3h00 e às 15h00."

A última linha, atualiza seus logs do sarg, as 16:00 de segunda a sexta.


Agradecimentos

Bom gente, gostaria de deixar registrado aqui meus agradecimentos a todos que me ajudaram ou que dedicam seu tempo livre documentando e/ou ajudando outras pessoas ao redor do mundo apoiando o software livre.

Em especial, ao povo citado durante o documento que tiveram bastante paciência em me ajudar, diretamente ou indiretamente (respondendo a outros usuários, por exemplo), passando dicas, dando sugestões e etc.

Valeu mesmo!

Referência: http://www.hardware.com.br/artigos/rapidinhas/
Copiado em : 26/11/2011 - 18:44

Bloqueando por domínios ou palavras no SQUID

O Squid permite bloquear sites indesejados de forma bastante simples usando o parâmetro "dstdomain". Ele permite que você crie acl's contendo endereços de sites que devem ser bloqueados (ou permitidos). Isso é feito em duas etapas. Primeiro você cria a acl, especificando os endereços e, em seguida, usa o parâmetro "http_access" para bloquear ou liberar o acesso a eles.

Veja um exemplo:
acl bloqueados dstdomain orkut.com playboy.abril.com.br
http_access deny bloqueados

Aqui eu criei uma acl chamada "bloqueados", que contém os endereços "orkut.com" e "playboy.abril.com.br" e em seguida usei o parâmetro "http_access deny" para bloquear o acesso a eles. Você pode incluir diversas acls diferentes dentro da configuração do Squid, desde que use um nome diferente para cada uma. De certa forma, elas são similares às variáveis, que usamos ao programar em qualquer linguagem.

Ao aplicar a regra, o Squid faz a resolução do domínio e passa a bloquear todas sub-páginas que estiverem hospedadas dentro dele. Existe uma ressalva: muitos sites podem ser acessados tanto com o "www" quanto sem. Se os dois estiverem hospedados em servidores diferentes, o Squid considerará que tratam-se de dois sites diferentes, de forma que ao bloquear apenas o "www.orkut.com" os usuários ainda conseguirão acessar o site através do "orkut.com" e vice-versa.

Nesses casos, para bloquear ambos, é preciso incluir as duas possibilidades dentro da regra, como em:
acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br
http_access deny bloqueados


Você pode incluir quantos domínios quiser dentro da acl, basta separá-los por espaço e deixar tudo na mesma linha. Se a regra começar a ficar muito grande, você tem a opção de transferir as entradas para um arquivo.

Nesse caso, crie um arquivo de texto simples, com todos os domínios desejados (um por linha), como em:
orkut.com
www.orkut.com
playboy.abril.com.br
www.myspace.com

... e use a regra abaixo na configuração do Squid para que ele seja processado e os domínios sejam incluídos na acl. No exemplo, estou usando o arquivo "/etc/squid/bloqueados":

acl bloqueados url_regex -i "/etc/squid/bloqueados"
http_access deny bloqueados


Naturalmente, não seria viável tentar bloquear manualmente todos os sites pornográficos, chats, comunidades online, e todos os outros tipos de sites que não são úteis em um ambiente de trabalho. A idéia seria logar os acessos (com a ajuda do Sarg, que veremos mais adiante) e bloquear os sites mais acessados, conforme tomar conhecimento deles. É sempre uma corrida de gato e rato, mas, em se tratando de pessoas adultas, não há nada que uma boa conversa com o chefe não possa resolver. ;)
De qualquer forma, em alguns ambientes pode ser mais fácil bloquear inicialmente o acesso a todos os sites e ir abrindo o acesso a apenas alguns sites específicos, conforme a necessidade. Neste caso, invertemos a lógica da regra.

Criamos um arquivo com sites permitidos, adicionamos a regra que permite o acesso a eles e em seguida bloqueamos o acesso a todos os demais, como neste exemplo:

acl permitidos url_regex -i "/etc/squid/permitidos"
http_access allow permitidos
http_access deny all


Nas versões recentes do Squid, ao bloquear um domínio é automaticamente bloqueado também o endereço IP do servidor correspondente. Isso evita que os usuários da rede consigam burlar o proxy, acessando os sites diretamente pelo IP. De qualquer forma, você pode criar diretamente regras que bloqueiem determinados endereços IP, o que é útil em casos de servidores sem domínio registrado, ou que respondam por vários domínios. Nesse caso, a regra ficaria:


acl ips-bloqueados dst 200.234.21.23 200.212.15.45
http_access deny ips-bloqueados


Você pode descobrir rapidamente o endereço IP de um determinado domínio usando o comando

"host", como em:
$ host google.com

google.com A 72.14.207.99
google.com A 64.233.187.99
google.com A 64.233.167.99

Depois de adicionar as novas regras, nosso arquivo de configuração ficaria assim:

http_port 3128
visible_hostname gdh
error_directory /usr/share/squid/errors/Portuguese/
cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl bloqueados url_regex -i "/etc/squid/bloqueados"
http_access deny bloqueados
acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all


Veja que coloquei as duas regras antes do "http_access allow redelocal", que abre tudo para a rede local. Como o Squid processa as regras seqüencialmente, as páginas que forem bloqueadas pela acl "bloqueados" não chegam a passar pela regra que autoriza os acessos provenientes da rede local.
Uma segunda possibilidade é usar o parâmetro "dstdom_regex", que permite bloquear sites de uma forma mais geral, com base em palavras incluídas na URL de acesso. Você pode bloquear todas as páginas cujo endereço inclua a palavra "sexo" ou "orkut", por exemplo. Note que, ao usar esta regra, o Squid verifica a existência das palavras apenas na URL do site e não no conteúdo da página. Para criar filtros baseados no conteúdo, você pode utilizar o DansGuardian, que veremos mais adiante.
Crie mais um arquivo de texto, contendo as palavras que devem ser bloqueadas, uma por linha, como em:
orkut
xxx
sexo
teens
warez


... e adicione a regra abaixo, contendo a localização do arquivo:

acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas"
http_access deny palavrasproibidas


O uso desta regra é um pouco mais problemático, pois bloqueará todas páginas que contenham qualquer uma das palavras listadas na URL. Esta opção sempre levará a alguns falsos positivos e por isso deve ser usada com mais cuidado.

Uma vantagem é que ela permite bloquear facilmente páginas dinâmicas, onde a palavra é passada como parâmetro da URL. Um exemplo é o Orkut, onde, depois da transferência para o Google, os domínios principais passaram a encaminhar para URLs dinâmicas dentro do domínio do Google, como em:

https://www.google.com/accounts/ServiceLogin?service=orkut&continue=http%3A%2F%2Fwww.orkut.com
%2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252F
www.orkut.com%252FHome.aspx&hl=pt-BR&rm=false&passive=true


Você não poderia simplesmente bloquear o domínio "google.com" usando uma regra url_regex, mas poderia muito bem usar o dstdom_regex para bloquear a palavra "orkut" e assim bloquear o acesso ao site sem bloquear o acesso a outros serviços do Google.

Não existe problema em combinar o bloqueio de domínios e de palavras dentro da URL, você pode lançar mão de uma combinação das duas coisas, de acordo com a situação. Para isso, basta usar as duas regras simultaneamente, como em:

acl bloqueados url_regex -i "/etc/squid/bloqueados"
http_access deny bloqueados
acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas"
http_access deny palavrasproibidas
acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all


Incluídas as regras, os clientes passam a ver uma mensagem de erro ao tentar acessar páginas que se enquadrem nos bloqueios:


Por padrão, as mensagens de erro aparecerem em inglês. No nosso caso elas estão aparecendo em português devido à linha "error_directory /usr/share/squid/errors/Portuguese/" que incluí no modelo de configuração anterior.

Você pode personalizar as páginas de erro editando os arquivos dentro da pasta "/usr/share/squid/errors/Portuguese" ou "/usr/share/squid/errors/English" (de acordo com a língua definida na configuração). A pasta contêm várias páginas html, uma para cada tipo de erro indicado.

Referência:  http://www.hardware.com.br/livros/servidores-linux/bloqueando-por-dominios-palavras.html
Copiado em : 26/11/2011 - 18:35

Configurando o proxy transparente no SQUID

O Squid permite compartilhar a conexão entre vários micros, servindo como um intermediário entre eles e a internet. Usar um proxy é diferente de simplesmente compartilhar a conexão diretamente, via NAT.

Ao compartilhar via NAT, os micros da rede acessam a internet diretamente, sem restrições. O servidor apenas repassa as requisições recebidas, como um garoto de recados. O proxy é como um burocrata que não se limita a repassar as requisições: ele analisa todo o tráfego de dados, separando o que pode ou não pode passar e guardando informações para uso posterior.

Um dos principais problemas de usar um proxy é que você precisa configurar manualmente cada micro da rede para utilizá-lo, o que é um trabalho cansativo e tedioso, sobretudo em grandes redes.

O Squid responde a este desafio com a possibilidade de criar um proxy transparente, onde o proxy se integra a uma rede já existente, acelerando a conexão, mas sem precisar de qualquer configuração nos clientes.

Ao usar um proxy transparente, você tem basicamente uma conexão compartilhada via NAT, com a mesma configuração básica nos clientes. O proxy entra na história como um adicional. Uma regra de firewall envia as requisições recebidas na porta 80 do servidor para o proxy, que se encarrega de responder aos clientes. Toda a navegação passa a ser feita automaticamente através do proxy (incluindo o cache dos arquivos do Windows update, downloads diversos e os pacotes instalados através do apt-get), sem que você precise fazer nenhuma configuração adicional nos clientes :).

Mesmo que alguém tente desabilitar o proxy manualmente nas configurações do navegador, ele continuará sendo usado. Basta usar o endereço IP do servidor rodando o proxy como gateway da rede.

Lembre-se de que, para usar o proxy transparente, você já deve estar compartilhando a conexão no servidor via NAT e, naturalmente, já deve estar com um servidor Squid configurado.

Você aprende a configurar o Squid em detalhes no capítulo 5 do livro Redes e Servidores Linux 2ed. Você pode também ler meu tutorial antigo, disponível no: http://www.hardware.com.br/tutoriais/configurando-servidor-proxy-squid/.
Para ativar o proxy transparente, rode o comando abaixo. Ele direciona as requisições recebidas na porta 80 para o Squid:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
O "eth0" no comando indica a placa da rede local, onde o proxy recebe as requisições dos outros micros da rede e o "3128" indica a porta usada pelo Squid. Adicione o comando junto com os 4 comandos que compartilham a conexão no final do arquivo "/etc/rc.d/rc.local" ou "/etc/init.d/bootmisc.sh" (no Debian) para que eles sejam executados durante o boot.Finalmente, você precisa ativar o suporte ao modo transparente dentro do arquivo "/etc/squid/squid.conf" e reiniciar o serviço.
É aqui que entra a parte principal desta dica. A partir do Squid 2.6 a configuração de proxy transparente mudou, tornando desatualizados a maioria dos tutoriais e dicas antigos. Se você está usando uma versão recente, do Squid 2.6 em diante, a configuração de proxy transparente é feita com uma única linha. Basta substituir a linha "http_port 3128" no início do arquivo por:
http_port 3128 transparent
Ou seja, na verdade você precisa apenas adicionar o "transparent", para que o Squid passe a entender as requisições redirecionadas pela regra do firewall.
No caso das versões mais antigas, anteriores à 2.6 (como a usada no Debian Sarge e no Ubuntu 5.10), você usa a receita antiga, onde é necessário adicionar as quatro linhas abaixo, no final do arquivo "/etc/squid/squid.conf" (neste caso, sem alterar a linha "http_port 3128"):
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Em qualquer um dos dois casos, você precisa reiniciar o serviço para que a alteração entre em vigor:
# /etc/init.d/squid restart
Em caso de dúvida sobre qual versão do Squid está instalada, use o comando "squid -v", que além de reportar a versão, informa todas as opções que foram usadas durante a compilação:
# squid -v
Squid Cache: Version 2.6.STABLE2configure options: '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/sbin' '--sbindir=/usr/sbin' '--libexecdir=/usr/lib/squid' '--sysconfdir=/etc/squid' '--localstatedir=/var/spool/squid' '--datadir=/usr/share/squid' '--enable-async-io' '--with-pthreads' '--enable-storeio=ufs,aufs,diskd,null' '--enable-linux-netfilter' '--enable-linux-proxy' '--enable-arp-acl' '--enable-epoll' '--enable-removal-policies=lru,heap' '--enable-snmp' '--enable-delay-pools' '--enable-htcp' '--enable-cache-digests' '--enable-underscores' '--enable-referer-log' '--enable-useragent-log' '--enable-auth=basic,digest,ntlm' '--enable-carp' '--with-large-files' 'i386-debian-linux' 'build_alias=i386-debian-linux' 'host_alias=i386-debian-linux' 'target_alias=i386-debian-linux'
Em resumo, você vai ter a conexão compartilhada via NAT no servidor e configurará os clientes para acessar através dela, colocando o servidor como gateway da rede. Ao ativar o proxy transparente, a configuração dos clientes continua igual, a única diferença é que agora (graças à nova regra do Iptables) todo o tráfego da porta 80 passará, obrigatoriamente, pelo servidor Squid. Isso permite que você se beneficie do log dos acessos e do cache feito pelo proxy, sem ter que se sujeitar às desvantagens de usar um proxy, como ter que configurar manualmente cada estação.
Uma observação importante é que esta configuração de proxy transparente não funciona em conjunto com o sistema de autenticação incluso no Squid. Ao usar o proxy transparente a autenticação deixa de funcionar, fazendo com que você precise escolher entre as duas coisas. Caso você precise combinar o uso de autenticação com o proxy transparente, você precisará utilizar outra solução, como o NatACL ou o NoCatAuth, que você encontra nos links: http://www.hostname.org/proxy_auth/ e http://nocat.net/.


Referência:  http://www.hardware.com.br/dicas/configurando-proxy-transparente-nas-novas-versoes-squid.html
Retirado em : 26/11/2011 - 18:33

Criado por Carlos E. Morimoto em 31 de agosto de 2006 às 20h53

Instalando o Squid

Instalando o Squid

O Squid é composto de um único pacote, por isso a instalação é simples. Instale o pacote "squid" usando o apt-get, yum ou urpmi, como em:
# apt-get install squid
Toda a configuração do Squid é feita em um único arquivo, o "/etc/squid/squid.conf". Caso você esteja usando uma versão antiga do Squid, como a incluída no Debian Woody, por exemplo, o arquivo pode ser o "/etc/squid.conf". Apesar da mudança na localização do arquivo de configuração, as opções descritas aqui vão funcionar sem maiores problemas.
O arquivo original, instalado junto com o pacote, é realmente enorme, contém comentários e exemplos para quase todas as opções disponíveis. Ele pode ser uma leitura interessante se você já tem uma boa familiaridade com o Squid e quer aprender mais sobre cada opção, mas, de início, é melhor começar com um arquivo de configuração mais simples, apenas com as opções mais usadas.
Em geral, cada distribuição inclui uma ferramenta diferente para a configuração do proxy. Uma das mais usadas é o Webmin, disponível em várias distribuições. A função dessas ferramentas é disponibilizar as opções através de uma interface gráfica e gerar o arquivo de configuração com base nas opções escolhidas. Em alguns casos, essas ferramentas ajudam bastante, mas, como elas mudam de distribuição para distribuição, acaba sendo mais produtivo aprender a trabalhar direto no arquivo de configuração, que, afinal, não é tão complicado assim. Assim como em outros tópicos do livro, vamos aprender a configurar o Squid "no muque", sem depender de utilitários de configuração.
Comece renomeando o arquivo padrão, de forma a conservá-lo para fins de pesquisa:
# mv /etc/squid/squid.conf /etc/squid/squid.conf.orig
Em seguida, crie um novo arquivo "/etc/squid/squid.conf", contendo apenas as quatro linhas abaixo:
http_port 3128
visible_hostname gdh
acl all src 0.0.0.0/0.0.0.0
http_access allow all

Estas linhas são o suficiente para que o Squid "funcione". Como viu, aquele arquivo de configuração gigante tem mais uma função informativa, citando e explicando as centenas de opções disponíveis. Apenas um punhado das opções são realmente necessárias, pois, ao omití-las, o Squid simplesmente utiliza os valores default. É por isso que acaba sendo mais simples começar com um arquivo vazio e ir inserindo apenas as opções que você conhece e deseja alterar.
As quatro linhas dizem o seguinte:

http_port 3128: A porta onde o servidor Squid vai ficar disponível. A porta 3128 é o default, mas muitos administradores preferem utilizar a porta 8080, que soa mais familiar a muitos usuários.

visible_hostname gdh: O nome do servidor, o mesmo que foi definido na configuração da rede. Ao usar os modelos desse capítulo, não se esqueça de substituir o "gdh" pelo nome correto do seu servidor, como informado pelo comando "hostname".

acl all src 0.0.0.0/0.0.0.0 e http_access allow all: Estas duas linhas criam uma acl (uma política de acesso) chamada "all" (todos), incluindo todos os endereços IP possíveis. Ela permite que qualquer um dentro desta lista use o proxy, ou seja, permite que qualquer um use o proxy, sem limitações.
Para testar a configuração, reinicie o servidor Squid com o comando:

# /etc/init.d/squid restart
Se estiver no CentOS, Fedora ou Mandriva, pode utilizar o comando "service", que economiza alguns toques no teclado:

# service squid restart
No Slackware, o comando será "/etc/rc.d/rc.squid restart", seguindo a lógica do sistema em colocar os scripts referentes aos serviços na pasta /etc/rc.d/ e inicializá-los automaticamente durante o boot, desde que marcada a permissão de execução.
Para testar o proxy, configure um navegador (no próprio servidor) para usar o proxy, através do endereço 127.0.0.1 (o localhost), porta 3128. Se não houver nenhum firewall pelo caminho, você conseguirá acessar o proxy também através dos outros micros da rede local, basta configurar os navegadores para usarem o proxy, fornecendo o endereço do servidor na rede local.
Caso necessário, abra a porta 3128 na configuração do firewall, para que o Squid possa receber as conexões. Um exemplo de regra manual do Iptables para abrir a porta do Squid apenas para a rede local (a interface eth0 no exemplo) é:

iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT


Referência: http://www.hardware.com.br/livros/servidores-linux/instalando-squid.html
Retirado em 26/11/2011 - 18:29

quarta-feira, 23 de novembro de 2011

EXEMPLO CAMADA OSI

Um exemplo prático utilizando os Correios
Para entender melhor, uma pequena alegoria: um jogo, por correspondência,entre dois enxadristas, um em Teresina e outro em Goiânia5.

Os enxadristas são os usuários. O jogo em si (tabuleiro, peças e regras) é a aplicação (camada 7).

As jogadas são registradas em notação tabular (por exemplo, o movimento de um cavalo poderia ser B3C5) e escritas em folhas de papel – essa é a forma de apresentação do jogo (camada 6).
Note que não basta simplesmente colocar uma papeleta no envelope com a notação da jogada. É de bom tom escrever uma carta completa, com data, saudação e assinatura, perguntar como vai a família, o trabalho, férias, etc. para que se crie um vínculo íntimo entre os dois. Mas como enviar a jogada ao outro enxadrista?

Bem, é necessário estabelecer uma sessão (camada 5) de comunicação. Em nosso caso, a requisição da sessão é representada pelos serviços da ECT. Colocamos a carta no envelope,endereçamos (não esqueça o CEP!), selamos e colocamos na caixa de correio. Do outro lado, nosso colega vai abrir a carta e estabelecer a sessão.

A ECT é responsável pelo transporte de nossa carta (camada 4). Isso significa criar meios para que uma conexão entre os dois enxadristas seja estabelecida. Quando colocamos a carta na caixa de correio, esperamos que, de algum jeito, ela chegue às mãos do destinatário. Os mecanismos usados para tal não nos interessam. A ECT separa as cartas por região, depois por estado, depois por cidade , depois por logradouro.

Uma vez separadas, monta pacotes de cartas destinadas a cada logradouro e os envia para lá. Utiliza-se, para tal, uma rede de vias rodoviárias, ferroviárias e aeronáuticas (camada 3) e um exército de carteiros para entregar as cartas.
Os caminhões, ônibus, aviões, motocicletas e as bolsas dos carteiros são os elementos que transportam os pacotes de cartas dentro de uma mesma rede viária. Os caminhões só andam nas estradas, os aviões só voam, os carteiros só andam nas cidades.

Nenhum deles conhece os detalhes de toda a rota das cartas, sabem apenas como entregar as cartas localmente. São nossa camada 2.  Note que, caso seja preciso trocar de tipo de rede (por exemplo, sair de um avião e entrar num ônibus), nossas cartas são tratadas por funcionários dos correios que trabalham em atividades próprias da camada 3. Eles sabem mapear entre as redes.

Os pilotos dos aviões, por exemplo, não entendem nada disso. Os aviões utilizam-se do ar para sustentação e navegação. Já os caminhões trafegam pela estradas. Os carteiros andam por cada lugar que mereceriam muitas medalhas (nem o vento, nem a chuva…). O ar, as estradas e os morros são nossos meios físicos, por onde é feito o transporte de tudo o que descrevemos nas camadas superiores.

Ufa! Descrevemos pelo modelo OSI, com um exemplo não-tecnológico (tanto o correio quanto o xadrez existem há milhares de anos…), um método de transporte de mensagens entre duas aplicações. Há coisas bem interessantesa se observar nesse exemplo, o que comprova todas as teorias envolvidasno modelo de referência.
Encapsulamento: A jogada foi encapsulada na notação tabular, que foi encapsulada na carta, que por sua vez foi encapsulada em um envelope, que estabeleceu uma sessão de comunicação usando os protocolos de classificação e transporte dos Correios, que envia pacotes de cartas segundo rotas específicas, que para isso trafegou em veículos que rodavam exclusivamente dentro do meio físico específico para os quais foram feitos.
Paridade: Cada uma das camadas possui um emissor e um receptor. O pessoal de classificação e envio (camada 3) “conversa” com o mesmo pessoal da outra localidade, usando os recursos da camada inferior (o caminhão, por exemplo).
Conexão: A partir da camada quatro, vemos que todos os procedimentos precisaram que o emissor e o receptor entrem em negociação. Da camada 3 para baixo, as cartas são transportadas indiscriminadamente, sem se importar se haverá alguém lá para recebê-Ias. Não chega a ser um problema: se apenas uma das camadas estabelecer um canal de conexão permanente, as outras camadas podem trafegar” connectionless”.
Independência: As camadas são completamente independentes. A camada 4 – os setores de recebimento e entrega de cartas – não precisam saber quais rotas o pessoal da camada três – os setores de redes de transporte – utilizou. Esse pessoal trata de coordenar os diferentes meios de transporte – nossa camada 2 -, mas não se preocupa com os problemas inerentes ao transporte – qual caminhão designar,combustível, motorista, problemas com greves, sindicato… Já o motorista, além de não saber por quais outros meios de transporte as cartas trafegaram, muito menos o conteúdo de cada carta individual, preocupa-se apenas em gerenciar os problemas inerentes ao seu trabalho: seguir a rota designada pelo pessoal da camada três, operando o caminhão de acordo com as leis de trânsito, desviando de /buracos, atravessando enchentes, etc. Nenhum dos enxadristas (camada 7) sequer se incomoda em conhecer qualquer uma dessas partes do processo. Para eles, o que vale é mexer o cavalo de acordo com B3C5.

Retirado em : http://estudeccna.com.br/tutoriais/as-camadas-do-modelo-osi-analogia-dos-correios
Data:23/11/2011 - 08:55

sexta-feira, 11 de novembro de 2011

Como é trabalhar com segurança da informação?

O evento de segurança H2HC que ocorreu no último final de semana em São Paulo chamou a atenção do público com apresentações de alto nível técnico. Para entender um pouco mais sobre o universo de segurança, entrevistei Alex Kirk, que palestrou no evento. Ele é o líder de um grupo de pesquisa da Sourcefire, principal responsável pelas atualizações das regras do Snort (um sistema de detecção de intrusão open source), assinaturas e novos métodos do antivírus Clamav. É conhecido também por ser um dos autores do livro: “Practical Intrusion Analysis: prevention and detection for the twenty-first century”.





Como funciona a equipe de pesquisa de vulnerabilidade (Vulnerability Research Team)?


Nunca há um dia de trabalho chato na VRT. Temos um fluxo constante de análise de vulnerabilidades, malware, botnets e outras ameças. Com esse estudo de campo, pensamos em formas de melhorar as detecções existentes. Dada a variedade, precisamos escolher diariamente no que focar.

Embora possa ser frustante lidar com vulnerabilidades 0-day, é muito satisfatório quando conseguimos entender e resolver o problema. Esse tipo de ocasião é denominado “fire drill”. É o momento em que todos param seus trabalhos para analisar algo novo, com uma vulnerabilidade de alto nível ou um pedaço de malware exposto. Todos nós gostamos de saber que estamos contribuindo para uma internet mais segura para os clientes Sourcefire e Snort.



Quais são as ferramentas utilizadas para analisar os novos tipos de ameaças?



Usamos uma série de ferramentas, algumas comerciais e outr as de código aberto. Para engenharia reversa, utilizamos o IDA Pro disassembler ou o WinDBG, este fornecido gratuitamente pela Microsoft. O último é extremamente útil para análise em tempo de execução. Para captura de pacotes, utilizamos o clássico Wireshark. Claro que somos grandes usuários da plataforma de virtualização da VMWare — é muito mais fácil infectar uma máquina virtual com um malware e, em seguida, clicar em “reverter” quando quiser ter a máquina na condição inicial.



Como é o processo de catalogar as ameaças?



Para as vulnerabilidades tradicionais, começamos com a pontuação CVSS (Common Vulnerability Scoring System), o padrão da indústria. Acrescentamos fatores como a disponibilidade de exploits públicos, facilidade de exploração e solicitações de clientes.



Para malware, entra uma combinação do que acreditamos ser mais persistente — ameaças que não duram mais de um dia ou dois, geralmente não valem o esforço — e pedaços de malware que classificamos como alto nível.



A verdade sobre este tipo de coisa é que há tantas ameaças aí fora que é impossível para qualquer organização dar conta de tudo. Por isso meus centros de pesquisa buscam formas genéricas de detectar malware na rede com formas de capturar diferentes tipos de malwares com uma lógica de apenas um bit de informação. Muito além da tradicional abordagem “Wack-a-mole”, que consiste em observar domínios conhecidos, faixa de IPs conhecidos e outros parâmetros.



Para fazer parte dessa equipe, qual treinamento é necessário?



Você precisa de um bom conhecimento de redes e administração de sistemas. Isto significa entender protocolos, como o TCP, HTTP, SMTP etc. Entender também permissões e procedimentos do lado de sistemas.



Precisa também no mínimo ser um programador decente, isto é, precisa entender o suficiente para ler e entender uma linguagem de programação. É importante ser capaz de automatizar tarefas, utilizando alguma linguagem script. Você ganha um bônus se conhecer Assembly x86, ser bom com expressões regulares e conhecer o Snort.

Na realidade o que mais importa é sua mente. Você precisa ser uma pessoa curiosa, desejando testar novas coisas, sempre pensando nos problemas por ângulos não triviais. É muito mais simples ensinar alguma habilidade necessária a alguém inteligente (não contratamos pessoas que não sejam). Francamente, é mais fácil ensinar os detalhes do trabalho se a pessoa é esperta. Acreditamos que esse caminho é o correto.



Na sua opinião, dado o número crescente de ameaças, qual é a forma mais ameaçadora de ataque?



Ataques do lado do cliente continuam como o maior problema. Na metade da última década, os administradores de sistemas e os grandes vendedores, como Microsoft e Oracle acordaram para a segurança. Hoje é mais difícil encontrar falhas em sistemas atualizados e com recursos de proteção. Os códigos dos sistemas também evoluiram neste sentido.



Usuários finais por sua vez, não atualizam seus sistemas, costumam visitar sites maliciosos sem pensar duas vezes e não se importam em instalar um antivírus e mantê-lo rodando. Além disso, há uma boa quantidade de falhas em navegadores e aplicativos como o Adobe Acrobat.



Como você classifica a segurança nos smartphones hoje em dia?



Os smartphones são como o velho Oeste – são poucas as regras em termos de melhores práticas de segurança e há uma tonelada de oportunidades para atores maliciosos fazerem o que bem entenderem. Quase ninguém costuma rodar antivírus em smartphones e operadoras de telecom barram atualizações de sistema, por causa dos custos de banda.



Os usuários costumam aceitar todas as permissões que as aplicações solicitam, porque acreditam que está tudo OK. Na verdade, não está. Principalmente nos Androids, ambiente em que brotam cada vez mais aplicativos com malware. Vi exemplos como um cavalo de troia de SMS na Rússia, espalhado por QRCode. Ou um mensageiro instantâneo chinês que envia seus dados para um servidor remoto.



Acredito que nos próximos anos o crescimento será exponencial e as pessoas precisam acordar para a segurança agora, não no próximo ano, porque pode ser tarde demais.



Quais projetos open source, incluindo o Snort, você recomenda para as empresas?



Obviamente somos fãs do Snort, então esta é nossa primeira recomendação. No mais, depende do que a empresa está tentando fazer. Para segurança em TI, recomendo o uso do PulledPork para gerenciar as atualizações do Snort. Gostamos do Mod_Security como firewall de aplicação web e o OpenBSD packet filter como firewall. É claro, para testes de penetração e validação de sistema de detecção de intrusão (IDS), o Metasploit.



Rodamos o sistema operacional FreeBSD na maioria de nossos sistemas internos e recentemente estamos trabalhado muito com o MongoDB, para lidar com grandes volume de dados.

Retirado de : http://info.abril.com.br/noticias/blogs/zonalivre/seguranca/como-e-trabalhar-com-seguranca-da-informacao/

Em: 11/11/2011 - 17:33

quinta-feira, 3 de novembro de 2011

Dificuldades para migrar para o Linux

Resolvi publicar uma conversa entre pessoas que tem dificuldades de migrar de sistema operacional, abaixo a dúvida postada e mais abaixo a resposta.. é excelente.



Em :03/11/2011



Qual o sistema operacional linux mais usado no mundo e melhor em questão de desempenho, segurança, fácil?

eu preciso desta resposta para escolher um Sistema Operacional Linux para mim dedicar à minha monografia que é falando do incentivo de uso do linux

Melhor resposta - Escolhida por votação

Eu compreendo o indivíduo que declarou ter problemas em passar do Windows para o Linux. Senti o mesmo ao experimentar o Windows. Decidi experimentá-lo, depois de alguns amigos que o usam a toda a hora me dizerem que era ótimo.
Fui até ao site da Microsoft para baixá-lo mas não estava lá disponível. Fiquei frustrado porque não consegui descobrir como se baixava o mesmo. Por fim tive que perguntar a um amigo e ele disse-me que tinha de o comprar.
Fui até o carro, fui até uma loja especializada em venda de softwares diversos e pedi a um dos vendedores uma cópia do Windows. Ele perguntou-me qual, eu disse-lhe: “Quero a mais completa, por favor” e ele respondeu: “São R$ 599,00 por favor…”. Soltei um palavrão e voltei para casa de mãos abanando.
Um dos meus amigos deu-me uma cópia do Windows XP mas disse-me para não dizer nada a ninguém. Achei estranho porque faço sempre cópias do Linux para qualquer pessoa que me peça e digo sempre para passar essa cópia a qualquer outra pessoa que esteja interessada, uma vez que já precisem dela. De qualquer forma coloquei o CD no leitor e esperei que iniciasse o sistema do “Live CD”. Não funcionou. A única coisa que fazia era perguntar-me se o queria instalar. Telefonei para um dos meus amigos, para saber se estava a fazer alguma asneira, mas ele disse-me: “O XP não roda o sistema diretamente do CD”.
Decidi, então, instalá-lo. Segui as instruções que apareciam na tela mas comecei a ficar nervoso porque não perguntou nada sobre os outros sistemas operacionais. Quando instalei o Linux, ele reconheceu que tinha outros sistemas operacionais na máquina e perguntou-me se queria criar uma nova partição e instalar o Linux lá. Voltei a ligar para o meu amigo e ele disse-me que o Windows elimina qualquer outro sistema operacional que encontra, ao instalar-se.
Fiz uma cópia de segurança das minhas coisas e joguei-me de cabeça na instalação. A instalação foi bastante simples, tirando a parte em que tive que escrever umas letras e um código. Tive de ligar outra vez para o meu amigo mas ele ficou chateado e veio escrever ele próprio o código. Voltou a dizer-me para não dizer nada a ninguém (!!!).Depois de reiniciar o computador, dei corrida de olhos pelo sistema.
Fiquei chocado quando me deixou mudar as configurações do sistema sem pedir o acesso de root. O meu amigo começou a ficar um bocado irritado quando liguei outra vez para ele, mas acabou por aparecer em minha casa. Disse-me que o acesso de root era dado logo na inicialização. Tratei logo de fazer outra conta de usuário normal e passei a usá-la. Comecei a ficar confuso quando tentei fazer mudanças e o sistema, ao invés de pedir acesso de root, disse-me que tinha que fechar a sessão de utilizador normal e abrir uma sessão como administrador. Comecei, então, a perceber porque é que tantas pessoas entram sempre como root e tive um arrepio na espinha.
Bom, mas já era hora de trabalhar. Fui ao menu “Iniciar -> Programas”, para abrir uma planilha que eu precisava terminar, mas não consegui encontrar a aplicação de planilhas. O meu amigo disse-me que o Windows não trazia nenhuma aplicação dessas e que eu teria que a baixar da Internet. “Oh…”, pensei, “uma distribuição básica”. Fui ao “Adicionar/Remover Programas” do painel de controle (tal como no Linux), mas não havia lá programas para adicionar. Apenas deixava remover os programas. Não consegui encontrar o botão para adicionar aplicações. O meu amigo disse-me que eu tinha que procurar as aplicações por minha conta. Depois de muita pesquisa no Google, lá encontrei, descarreguei e instalei o OpenOffice.org.
Para dizer a verdade, diverti-me à brava com o Windows. Não entendi muito da terminologia… porque é que há um drive A, depois um C… onde é que está o drive B? Achei a distribuição demasiado básica, não inclui nenhuma aplicação que seja verdadeiramente de produtividade e torna-se muito confuso procurá-la. O meu amigo disse-me que eu precisava de software anti-vírus e anti-spyware, mas o Windows não
vinha com nada disso.
Achei-o difícil, confuso e demasiado trabalhoso para mim. Pode ser bom para uma pessoa que seja do tipo técnico, como o meu amigo, mas eu fico-me pelo Linux, obrigado.
  • 2 anos atrás

terça-feira, 18 de outubro de 2011

XenServer – Backup automático de VMs

Pessoal aqui vai um texto muito interessante sobre o Xenserver que foi extraido de : http://olamundo.org/posts/xenserver-backup-automatico-de-vms/  em : 18/10/2011 - 10:41
Criado por  em 7 de outubro de 2009

Olá Mundo! 
Quem me conhece sabe que não vou gastar um post inteiro com saudações. No máximo uma palavra: Cheguei!
Pronto! Vamos direto ao assunto…

Segue aqui um passo a passo para fazer backup automático de suas máquinas virtuais no XenServer 5.5. Isso deve funcionar em versões anteriores também.
Nesses script, trocamos a turbina do avião com ele voando. :) Ou seja, as VMs não param.

1º Passo: Decobrir quais as VMs existentes.
vms="$(xe vm-list | grep "name-label" | grep -v "Control domain"
| tr -s " " | cut -d " " -f 5)"
Perceba que tive que fazer um filtro inverso para “Control domain”, pois se você usa Pool de hardware aparecem essas “VMs” fantasmas que na verdade representam o controlador.
2º Passo: Definir variáveis.
# Diretorio onde sera feito o backup. Pode ser via NFS...
dirBack=/backup
#Separador de campo para o "for". Previne erros no caso de espaços
# no nome das VMs
IFS="
"
#Inicio do for. Cada loop faz backup de uma VM.
for vm in $(echo $vms)
do
#Cria uma variavel data com o formato da data que quero pra compor
# o nome do arquivo de backup
time=$(date --date "now" +%d_%m_%y_%H:%M)
#Agora componho o nome do arquivo de backup
snapName=$vm-bk-$time
3º Passo: Criar snapshot e obter UID.
#Aqui crio um snapshot. Ele eh necessario para não precisar
# parar a VM. O backup eh feito com ela em producao.
ID=$(xe vm-snapshot vm=$vm new-name-label=$snapName &&
        {
        logger -t "XenBackup" -s "$vm - OK Passo 1"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 1"
        echo 1
        })
#Na criacao do snap acima, a variavel ID recebe o UID do
# snap.No caso de erro, ela recebe "1"
#O logger joga o log joga no /var/log/messages

#Abaixo faço um teste pra checar se deu erro.
if [ "$ID" == "1" ]
then
        exit 1
fi
4º Passo: Transformar o Snapshot em VM.
#Pra essa tarefa, uso o ID obtido no passo anterior.
xe template-param-set is-a-template=false uuid=$ID &&
        {
        logger -t "XenBackup" -s "$vm - OK Passo 2"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 2"
        exit 2
        }
5º Passo: Exportar VM para o DIR de backup.
#Perceba o uso das variaveis. Nao vah se perder ;)
xe vm-export vm=$snapName  filename=$dirBack/$snapName
        {
        logger -t "XenBackup" -s "$vm - OK Passo 3"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 3"
        exit 3
        }
6º Passo: Remover VM.
Agora que a VM criada a partir do SnapShot já foi exportada, podemos descartá-la:
xe vm-uninstall vm=$snapName force=true
        {
        logger -t "XenBackup" -s "$vm - OK Passo 4"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 4"
        exit 4
        }
7º Passo: Plus!
Pra economizar espaço (e economiza muito), vamos “gzipar” a VM:
gzip $dirBack/$snapName
       {
       logger -t "XenBackup" -s "$vm - OK Passo 5"
       }||{
       logger -t "XenBackup" -s "$vm - ERR Passo 5"
       exit 5
       }
#Fala a verdade, voce jah ia esquecer de encerrar o "for"...
done
exit 0
 
em : 18/10/2011 - 10:41
Criado por