Prévia do material em texto
Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br Linux Essentials 010-160 + Bônus Este curso é uma atualização da conhecida certificação do Linux Essentials 010-160 mais LPI 101 (LPIC-1) com ênfase em segurança da informação e preparação para OSCP. Este curso é supervisionado pelo Linux Professional Institute (LPI) e dá descontos ao aluno para o exame LPIC considerado internacionalmente! É adequado para adolescentes e iniciantes no mundo do Linux. O Linux é um sistema operacional necessário no gerenciamento de redes e segurança da informação e no mundo cibernético. Neste curso, trabalharemos com os sistemas operacionais Kali Linux e Ubuntu. Aula - 2 - Trabalho básico no ambiente Linux Para trabalhar com o Linux com comandos, precisamos abrir o shell, aqui está uma lista de tipos de shell que podem ser abertos: ● sh - uma das primeiras interfaces de comando shell Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br ● Ash - busybox é uma interface de comando para produtos iot(Internet das coisas). ● Bourne Again Shell - Interface de comando Bash ● ksh - Korn shell ● tcsh - Tee See Shell ● zsh - Zee Shell Programas que rodam o shell no terminal executado pelo shell no ● gnome-terminal ● konsole ● console ● xterm ● rxvt ● kvt ● nxterm ● eterm Acessando pela interface de usuário - clicando com o botão direito na tela e selecionando "abra o terminal" funciona na maioria das vezes. Comandos úteis Depois de entender como abrir uma interface de comando, iremos conhecer vários comandos importantes que ajudarão você a trabalhar com o sistema operacional. ls - Exibe todos os arquivos ● d - Na pasta atual. ● i - Exibe inode. ● l - Exibe informações detalhadas sobre cada arquivo. ● t - Exibe por data. ● r - Exibe ao contrário. ● S - Filtre por tamanho, observe que é 'S' maiúsculo e não o 's' minúsculo. Por exemplo: ls -l cd - (Change Directory) O comando de navegação no sistema, este é o comando mais útil. ● / - A cabeça da árvore, inicia a navegação desde o início da árvore. ● ~ - nos levará para a pasta inicial do usuário em que estamos. ● - - Volta para a pasta anterior em que você estava. Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br ● . - Nos deixa no mesmo lugar. ● .. - Move uma pasta para trás. Por exemplo: cd /var/www/ pwd - (Print Working Directory) Exibe o diretório onde estamos no momento. mv - (Move) Um comando para transferir arquivos de um lugar para outro; além disso, você pode usar o comando para renomear um arquivo ou uma pasta. cp - (copy) Um comando para copiar um arquivo de um lugar para outro. rm - (remove) Um comando para excluir um arquivo ou pastas. mkdir - (Make directory) Um comando para criar uma pasta. rmdir - (Remove directory) Exclua pastas. touch - Um comando para criar um arquivo. whoami - Um comando que mostra o usuário no qual você está conectado. echo - comando para imprimir algo na tela. history - Um comando para exibir o histórico de comandos feito no terminal, muito usado após invadir uma máquina ou fazer análises na máquina. clear - Comando para limpa a tela. passwd - Um comando para alterar a senha do usuário atual. ● d - Criar senha sem senha passwd –d wc - Comando para contagem de palavras ou letras em arquivo, para 3 campos de comando durante a impressão: 1- Quantidade de linhas 2- Quantidade de palavras 3- Número de caracteres cat - Exibe o conteúdo do arquivo Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br cut - Comando para cortar caracteres de um resultado de outro comando, cria um novo arquivo com os caracteres que sobraram ou imprime na tela . ● -c - Quais caracteres cortar ● -d - Delimitador de tamanho ● -f - Quais campos exibir após o corte Exemplo: cut –c 3,4,5 hello.txt > file.txt cut --delimiter=":" --fields="1" /etc/passwd cut –d ":" -f "1,2,3" /etc/passwd sort - Um comando de ordenar textos de um arquivo, um comando útil quando você deseja ordernar senhas e excluir duplicatas. sort hello.txt sort -r hello.txt [reverse] sort -R hello.txt [random] uniq - Excluir duplicatas em um arquivo, geralmente combinando-o com sort. less/more - exibe conteúdo do arquivo de forma interativa head - O comando exibe as 10 primeiras linhas no arquivo selecionado. Por padrão, isso pode ser alterado usando o parâmetro -n da seguinte maneira: head -n 2 tail - Exibe as últimas 10 linhas tail -f /var/log/syslog tail –n 2 man - Os desenvolvedores do Linux geralmente escrevem um manual para comandos criados ao usuário, este comando nos permitirá exibir o manual o k - Pesquisar todos os manuais o /show - Procurar uma palavra em todos os manuais o /usr/share/doc/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br Ao utilizar um comando, pense da seguinte estrutura: [Comando] [opções do comando] [Argumentos do comando] ● comando - o comando que você deseja realmente fazer ● opções - Cada comando existe inúmeras opções que permitem ao usuário ajustar o comando para realizar o que ele quer ● argumentos - geralmente um arquivo ou qualquer informação que você possa utilizar o comando Quando executamos um comando em um arquivo composto de 2 palavras ou que contém caracteres especiais, um dos seguintes métodos pode ser usado: ● Aspas únicas ou aspas duplas ● também podem ser usadas barra invertida \ e assim ignorar o espaço touch "nome do arquivo longo" touch long\ file\ name Exercício 1. Vá para a pasta /tmp 2. Crie 5 pastas vazias: pasta1, pasta2, pasta3, pasta4, pasta5. 3. Entre na pasta pasta1 e crie 2 arquivos vazios arquivo1, arquivos2. 4. Copie os arquivos arquivo1 e arquivo2 para a pasta pasta2. 5. Renomeie pasta2 para pasta6. 6. Mova os arquivos da nova pasta6 para a pasta5. 7. Exclua todas as pastas vazias. 8. Veja as últimas 8 linhas no arquivo /var/log/messages. 9. Introduza as 8 primeiras linhas no arquivo /var/log/messages. 10. Vá para a pasta /etc/ e visualize o conteúdo do arquivo passwd. 11. Vá para a pasta /etc/ e filtre o arquivo group, exiba os nomes dos grupos apenas com o comando cut. Um ponto importante a ser observado é que os arquivos no Linux são sensíveis às maiúsculas e minúsculas diferente do Windows, por isso os seguintes arquivos: ● Roman.txt ● roman.txt ● roman.TXT Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br No Linux, esses arquivos são diferentes e no Windows é o mesmo arquivo. Portanto, você deve tratar os dois sistemas operacionais como se fossem sensíveis maiúsculas e minúsculas e escrever tudo em minúsculas. Atalhos de teclado No Linux Existem muitos atalhos de teclado para nos ajudar a trabalhar com a interface de comando: Shift + page up - role a tela para cima. Shift + page down - role a tela para baixo. Ctrl + l - apagar a tela Ctrl + e - final da linha Ctrl + a - início da linha Ctrl + u - exclui a linha de antes da localização atual. Ctrl + c - Desfazer ação Ctrl + z - Enviar comando para background (segundo plano) Tema do LPI 101. Manipulação de input e output (entrada e saída) Alguns termos importantes a serem familiarizados antes de começarmos a manipular os comandos: ● stdin - tudo o que o software recebe como entrada. ● stdout - Tudo o que o softwareemite como saída. ● stderr - Erros recebidos ao executar o software. > Enviar saída + substituir conteúdo do arquivo >> Enviar para fora mantendo o conteúdo existente (anexar) & Execute o software em segundo plano, um tópico do LPI 101-. && Se a ação anterior foi bem-sucedida, execute a ação adicional também. || Somente execute um segundo comando se um primeiro comando não tiver êxito ; Execute outro comando se a primeira ação foi bem-sucedida ou não. < Obter entrada de um arquivo que se parece com wc < roman.txt Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br | Enviar stdout para ser stdin de outro comando. Pesquise todos os arquivos no local atual grep "roman" * Pesquisa recursiva nos subdiretórios grep –rni "roman" * tee - comando que envia o stdout para o arquivo e para a tela ls | tee roman.txt Nem todos os comandos recebem stdin usando "|" Portanto, há uma variável auxiliar que adiciona stdin a um comando chamado xargs: ls | xargs echo A diferença entre wc file.txt wc 0 <file.txt é que, na segunda saída, o comando não sabe qual nome de arquivo em que está trabalhando Para criar um arquivo em branco > file.txt Trabalhando com stderr ls 1> ls.txt [redirecionamento correto] ls 2> ls .txt [erros de redirecionamento] ls >> ls.txt [anexar] Você pode combiná-los: ls bob 1>> results.txt 2>> errors.txt ls bob 1> results.txt 2> errors.txt ls bob 1> results.txt 2>&1 Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br Se eu quero passar saída e erro existe um atalho &> ls bob &> logs.txt quando não está imprimindo erros que você pode jogá-los em / dev / null grep david /etc/* 2> /dev/null Exercício 1. O comando ifconfig exibe o endereço IP da sua máquina, filtrando apenas o endereço IP da tela. 2. O comando find permite procurar no sistema, execute o comando: find / -name "messages" Passe todos os erros para o arquivo error.log e o resultado para o arquivo success.log 3. Repita o comando da seção 2 e, desta vez, apenas mostre os resultados corretos, nenhum erro deverá ser exibido em stdout. 4. Efetue o seguinte comando cat /etc/passwd E mostre todos os usuários do sistema em somente uma linha Wildcard e Globing Quando procuramos arquivos no Linux e não temos certeza de qual é o nome exato do arquivo, podemos fazer uma pesquisa de modelo usando "curingas". Essa pesquisa é chamada Wildcard ou Globing. Existem quatro caracteres que quase todos os comandos do Linux o suportam: ● ? - Troca de caracteres ● * - substitui todos os caracteres. ● [] - Possível lista de caracteres para um único caractere. ● {..} - Corretor de pesquisa (não faz parte da globing). Por exemplo, para visualizar todos os arquivos que contêm os caracteres abc, usamos o asterisco da seguinte forma: ls abc* Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br Exercício Crie 100 arquivos usando o comando touch com caracteres aleatórios e espaços, não pressione acidentalmente em caracteres especiais como por exemplo a tecla capsLock: touch a23{1..10} touch b{a..z} touch hasd sad7 sd asd asd 7gasd a23b asd 8hsad has8d as8dh asads as vacx asc a… Em seguida, faça o seguinte exercício: 1. Veja todos os arquivos que contêm apenas 3 caracteres. 2. Ver todos os arquivos começando com o caractere a. 3. Veja todos os arquivos que começam com o caractere a seguido de 2 caracteres e, em seguida, qualquer caractere dos caracteres de a a k. 4. Exibir todos os arquivos que contêm o caractere h 5. Exiba todos os arquivos que começam com a, b ou c e que terminam com um dos caracteres de g a z. Regex - (Comando de expressão regular) e egrep No mundo Linux o arquivo mais comum é um arquivo de texto e é usado pelo sistema para arquivos de log, arquivos de configurações, scripts e muitos outros usos. A necessidade de pesquisar arquivos de texto e encontrar conteúdo é imperativa e é aí que a expressão regular entra em cena. Expressão regular é um modelo que permite localizar determinado conteúdo em um arquivo que corresponde ao formato que definimos. Os modelos consistem nos seguintes caracteres: ● () - define um modelo como um grupo, segmentando modelos. ● {} - O número de vezes que uma determinada sequência é definida entre parenteses (). ● [] - Várias opções de caracteres únicos ● . - Qualquer caractere (semelhante a "?" Em caracteres wildcard) ● * - O caractere anterior aparece 0 ou mais vezes sendo que a combinação .* Indica algo como (* em caracteres wildcard) ● + - O caractere anterior aparece 1 ou mais vezes, muito semelhante a * Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br ● ^ - A linha deve começar com um determinado caractere e, se o caractere aparecer entre colchetes, indica uma reversão. ● $ - A linha deve terminar com um caractere específico comando grep: ● egrep/ -E - Ativa o regex estendido, sem o comando, algumas opções como [] não podem ser usadas. ● -o - Exibe apenas a correspondência para um formato diferente. A linha inteira será exibida. ● -r - Pesquisa recursiva em todos os arquivos da pasta e seus subdiretórios. ● -n - exibe o número da linha. ● -i - Cancelar caracteres que diferenciam maiúsculas de minúsculas. Por exemplo, para exibir o endereço IP do seu computador, use o comando: ifconfig > ip grep –Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" ip Observe que, se você escrever o comando sem –o, a linha inteira será exibida, às vezes é exatamente isso que queremos, por exemplo, se quisermos exibir todas as pastas, usaremos o seguinte comando: ls -l | grep ^d Exercício 1. Exiba todos os endereços IP no arquivo /var/log/messages e salve-os no arquivo /tmp/ip_log. 2. Veja todos os arquivos na pasta atual usando ls e grep. 3. Veja todos os endereços de Mac Address (se você não souber o modelo de expressão regular, pesquise no Google) no arquivo var/log/messages. 4. Exiba todas as linhas nas quais a palavra contém a palavra error ou Error no arquivo var/log/messages. Deve-se também exibir o número da linha. Todo o conteúdo é propriedade intelectual da CySource LTD www.cysource.com.br http://www.itsafe.co.il/ http://www.cysource.com.br/ Linux Essentials 010-160 + Bônus Aula - 2 - Trabalho básico no ambiente Linux Comandos úteis Exercício Atalhos de teclado Manipulação de input e output (entrada e saída) Exercício Wildcard e Globing Exercício Regex - (Comando de expressão regular) e egrep Exercício