Baixe o app para aproveitar ainda mais
Prévia do material em texto
INTRODUÇÃO AO LINUX André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES APOSTILA 03 INTRODUÇÃO AO LINUX Conceitos Iniciais André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES • Sistema Operacional baseado em Unix; • Surgiu no início dos anos ‘90; • Seu kernel é “monolítico” (com característica “modular”) • Menos “reboots”; • Não tem os mesmos problemas de malwares que o Windows; • Comunidade de desenvolvedores grande e participativa • Correção rápida de “bugs”; • Open Source • Licença GNU GPL. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Linux • Hoje são mais de 200 (e continuam surgindo mais!); • Todas, direta ou indiretamente, derivam-se de 3 distribuições originais: • Slackware (a mais antiga); • Debian; • Red Hat. • Cada distribuição procura atender uma necessidade específica. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES As distribuições Linux • Uma distribuição Linux é o resultado da conjunção de 3 componentes, a saber: • Kernel Linux; • Ferramenta de gerenciamento de pacotes; • Aplicativos em geral. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • Ferramentas de gerenciamento de pacotes (instalando): • Slackware: • Fedora: • Red Hat: # installpkg libdvdread # yum install mplayer # rpm –i kst-1.8.0-1.i386.rpm André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • Ferramentas de gerenciamento de pacotes (removendo): • Slackware: • Fedora: • Red Hat: # removepkg libdvdread # yum remove mplayer # rpm –e kst André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • Ferramentas de gerenciamento de pacotes (atualizando): • Slackware: • Fedora: • Red Hat: # upgradepkg libdvdread # yum update # rpm –U kst • Aplicativos: • Apache; • PHP; • MySQL; • OpenOffice; • Gnome / KDE; • GIMP; • VSFTPD; • Pidgin; • SQUID; • etc... André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • O kernel é comum a todos, indistintamente... • Salvo por pequenas adaptações, feitas para que a distribuição tenha a característica que deseja atender. Exemplo: ativação ou desativação de drivers e componentes de mídia. • As ferramentas de Gerenciamento de Pacotes são as mesmas para as distribuições derivadas de uma distribuição-mãe. • Os aplicativos são comuns a todos. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • O que diferencia uma distribuição da outra, então?... • As adaptações que são feitas no kernel; • O tamanho da Comunidade de simpatizantes e colaboradores; • Periodicidade das atualizações e correções; • Os aplicativos que já traz instalados consigo (embora outros aplicativos possam ser instalados depois). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • O que faz com que uma distribuição seja mais “querida” do que a outra?... • O tamanho da Comunidade de simpatizantes e colaboradores (quanto maior, mais artigos, dicas, tutoriais, apoio, ajuda mútua, etc.); • Periodicidade das atualizações (quanto mais atualizações, mais melhorias); • Periodicidade das correções (o sistema se torna confiável); • A percepção de “utilidade” dos aplicativos; • Questões subjetivas dos usuários. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é uma Distribuição? • Não existe a “melhor” distribuição!; • Existem distribuições mais técnicas, mais abrangentes, mais especializadas, ou mais “amigáveis” para os usuários; • Cada distribuição procura atender a uma necessidade específica; • Existem versões/distribuições voltadas para usuários finais (“mais amigáveis”), para corporações ( “desktops”), e para servidores de rede (“servers”). Qual a que atende ao seu caso? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Qual a “melhor” Distribuição? • Distribuição derivada do Debian; • Possui 2 versões principais: • Desktop (para usuário final. Interface UNITY); • Server (plataforma para servidores de rede). • Possui versões alternativas: • Kubuntu (Ubuntu Desktop com interface KDE); • Ubuntu MATE (Desktop com interface GNOME); • Xubuntu (Ubuntu Desktop para PC’s antigos. Usa interface XFCE). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é o “UBUNTU”? • Por que o Ubuntu é tão popular? • Imensa Comunidade de colaboradores (farta documentação e ajuda); • Atualizações regulares (nova versão a cada 6 meses); • Correções regulares (confiabilidade); • Vasto repositório de aplicativos (praticamente todos os aplicativos “free” e “non-free”); • As versões atendem a todos os gostos e necessidades; • Simpatizantes desenvolvem aplicativos para ele; • Utiliza os pacotes Debian (.deb) – ainda mais aplicativos! • Compatibilidade com os drivers dos principais hardwares André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é o “UBUNTU”? INTRODUÇÃO AO LINUX POR QUE USAR O UBUNTU? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES • Porque o GOVERNO BRITÂNICO considerou o Ubuntu o Sistema Operacional mais seguro da atualidade! • Fonte: Canaltech — 15 de janeiro de 2014. http://canaltech.com.br/noticia/linux/Governo-britanico-considera- Ubuntu-o-sistema-operacional-mais-seguro/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? • Porque o Ubuntu foi considerado o melhor servidor Linux corporativo, de acordo com os testes da NetworkWorld — derrotando até mesmo a Red Hat! • Fonte: NetworkWorld — 09 de setembro de 2013. http://www.networkworld.com/reviews/2013/090913-ubuntu-test- 273462.html André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? • Porque, enquanto plataforma para jogos, a performance do Ubuntu rivaliza até com a do Windows 8.1! • Fonte: HotHardware — 29 de outubro de 2013. http://hothardware.com/News/Ubuntu-Linux-Gaming-Performance- Rivals-Windows-81/default.aspx André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? • Porque a Microsoft disponibiliza o Ubuntu Juju para implementação de serviços de cloud no Microsoft Azure. • Fonte: Microsoft Azure — 17 de setembro de 2013. https://azure.microsoft.com/pt-br/blog/windows-azure-now-fully- supported-by-juju/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? • Porque a IBM fechou um acordo com a Canonical para criação de uma versão do Ubuntu para mainframes. • Fonte: Ubuntu Insights — 17 de agosto de 2015. https://insights.ubuntu.com/2015/08/17/ibm-and-canonical-plan- ubuntu-support-on-ibm-z-systems-mainframe/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? • Porque o Ubuntu é a primeira distribuição Linux para PC’s a possuir uma versão para smartphones, totalmente projetada para integrar-se perfeitamente à versãodesktop, de modo a trazer conforto, simplicidade e familiaridade de uso. Conheça: http://www.ubuntu.com/phone e http://www.youtube.com/watch?v=-dpfHYpfEXY&hd=1 André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Por que usar o “UBUNTU”? E MUITOS OUTROS MOTIVOS! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES INTRODUÇÃO AO LINUX Conceitos Iniciais (retornando…) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES • “REPOSITÓRIO” é um site onde ficam armazenados (e disponíveis para download) todos os aplicativos compatíveis com (e oferecidos por) uma determinada distribuição. • Cada instalação de uma distribuição possui seu próprio repositório local, que se sincroniza com o repositório remoto, atualizando a lista de aplicativos disponíveis. http://packages.ubuntu.com André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “REPOSITÓRIO”? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “REPOSITÓRIO”? Apache 2.2.9 Drivers Ekiga 0.5.1 GIMP 2.0.3 MySQL 5.3 Nessus 4.0.1 OpenOffice 3.1 PHP 5.5 VSFTPD 2.0.7 Apache 2.2.8 Drivers Ekiga 0.5.1 GIMP 2.0.2 MySQL 5.3 Nessus 3.9 OpenOffice 3.1 PHP 5.3 VSFTPD 2.0.5 Apache 2.2.6 Drivers Ekiga 0.5.1 GIMP 2.0.3 MySQL 5.2 Nessus 2.2 OpenOffice 3.0 PHP 5.3 VSFTPD 2.0.5 Apache 2.2.9 Drivers Ekiga 0.5.1 GIMP 2.0.3 MySQL 5.3 Nessus 4.0.1 OpenOffice 3.1 PHP 5.5 VSFTPD 2.0.7 • Quando o usuário instala um aplicativo pelo repositório da distribuição Linux, ele também instala, junto, todas as dependências relativas àquele aplicativo. Isso torna a instalação rápida e muito simples, com garantia de funcionamento e compatibilidade com o sistema! • “Dependências” são os arquivos adicionais (bibliotecas, drivers, módulos... Enfim...) dos quais o aplicativo principal depende para funcionar corretamente. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “REPOSITÓRIO”? • Se um aplicativo for instalado independentemente do repositório (“por fora”), é possível (não necessariamente obrigatório) que o usuário tenha que, manualmente, instalar as dependências antes do/junto com o aplicativo propriamente dito. • Contudo, pacotes de programas fora do repositório (obtidos em separado) também podem trazer, consigo, as dependências necessárias ao aplicativo em questão. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “REPOSITÓRIO”? André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES QUAL A DIFERENÇA ENTRE AS ATUALIZAÇÕES DO WINDOWS (“WINDOWS UPDATE”) E AS ATUALIZAÇÕES FEITAS PELOS REPOSITÓRIOS DO LINUX? • No Windows, são feitas atualizações somente para o próprio sistema, e para os aplicativos Microsoft. Como os demais aplicativos são instalados em separado, e possuem questões legais relativas à licença proprietária, o Windows não se responsabiliza por suas atualizações — as quais devem ser feitas individualmente. • No Linux, TODOS os aplicativos do repositório são atualizados! • Desenvolvedores de aplicativos podem disponibilizar o seu próprio repositório, inteiramente independente do repositório oficial da distribuição Linux; • É o chamado “repositório extra”; • É manualmente adicionado pelo usuário. A partir daí usam-se os mesmos procedimentos normais de instalação, atualização e remoção; • Neste caso, o usuário pode adicionar esses repositórios extras na lista local de repositórios do sistema, de modo que ele (o sistema) sempre busque instalações e atualizações de aplicativos nos repositórios indicados. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositórios “Extras” André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “PACOTE”? • “PACOTE” é um contâiner de instalação e configuração de um aplicativo, onde estão agrupados os aplicativos principais, as bibliotecas, e documentações necessárias a uma determinada aplicação; • Um pacote também contém a rotina de instalação, que instala os arquivos necessários nos diretórios indicados; • Essa rotina também contém informações sobre como remover o aplicativo, quando assim solicitado. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “PACOTE”? • Fazendo uma comparação, um pacote equivale ao arquivo “setup.exe” para Windows; • No Windows, o “setup” instala o aplicativo e suas dependências (arquivos .DLL, e outros.) nos diretórios indicados, cria chaves de registro (se necessário), realiza outras rotinas, etc. • Quando você instala um programa no Windows, o “setup” também instala o “uninstall.exe”, para remoções futuras; • O mesmo princípio vale para os pacotes de aplicativos instalados no Linux. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “PACOTE”? • O Ubuntu usa pacotes “Debian” (.deb) — inclusive para aqueles aplicativos que não estejam disponíveis nos repositórios; • Esses pacotes podem ser obtidos e instalados diretamente via Repositório, ou independentemente (fora dos repositórios), pela Internet. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O que é um “PACOTE”? • Um pacote .deb é nomeado da seguinte maneira: Nome-do-aplicativo_versão_arquitetura.deb Exemplos: skype-debian_2.0.0.72-1_i386.deb webmin_1.410_all.deb virtualbox-2.2_2.2.2-46594_amd64.deb André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes Naturalmente, pode surgir a pergunta: “É melhor instalar programas pelo repositório, ou por pacotes independentes?” A resposta é: depende! Depende do que se quer, ou se pretende! Vamos analisar os prós e contras:... André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes REPOSITÓRIO (Vantagens): • Via de regra, as dependências são instaladas junto com aplicativo, tornando a instalação rápida e simples; • A mantenedora da distribuição garante as atualizações de segurança do aplicativo, e, eventualmente, as atualizações de versão — quando houver; • Total garantia de funcionamento e compatibilidade do aplicativo com o Linux! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes REPOSITÓRIO (Desvantagens): • Dependendo do tempo transcorrido entre as atualizações de versão da distribuição Linux propriamente dita, o aplicativo também pode permanecer um certo (ou longo) tempo sem atualizações de versão; • Aplicativos instalados pelo repositório não são, necessariamente, as versões mais atuais disponíveis! O objetivo é garantir o máximo de compatibilidade, sem, com isso, garantir o máximo de atualização na versão; André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes REPOSITÓRIO (Desvantagens) (Continuação): • Eventualmente, aplicativos que o usuário queira instalar podem não estar disponíveis nos repositórios oficiais da distribuição Linux, obrigando-o a obter os aplicativos independentemente; • Os repositórios podem não conter os chamados programas gratuitos “non-free”, que o usuário queira instalar. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes PACOTES INDEPENDENTES (Vantagens): • O usuário pode obter a versão mais recente do aplicativo; • Pode-se instalar programas que não façam parte dos repositórios oficiais da distribuição Linux; • Quandohouver atualização na versão da distribuição Linux, o pacote independente não sofre alterações*. * Isso pode ser uma vantagem ou desvantagem, dependendo do ponto de vista! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Repositório X Pacotes PACOTES INDEPENDENTES (Desvantagens): • Atualizações na versão, ou atualizações de segurança devem ser feitas manualmente (de tempos em tempos o usuário deve acessar o website do desenvolvedor e verificar se houve mudanças); • Não há garantias de total compatibilidade com o sistema operacional; • Quando houver atualização na versão da distribuição Linux, o pacote independente não sofre alterações*. * Isso pode ser uma vantagem ou desvantagem, dependendo do ponto de vista! • As vantagens no uso de repositórios extras é que ele reúne o melhor dos dois mundos: • Os aplicativos instalados serão sempre atualizados diretamente pelo website do desenvolvedor; • Todas as dependências podem ser instaladas e mantidas, sem necessidade de instalações paralelas/complementares. • As desvantagens são: • Eventualmente podem ocorrer incompatibilidades com o sistema operacional; • Eventualmente o repositório extra (o website do desenvolvedor) pode “sair do ar”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Usando Repositórios “Extras” • Atualizando o repositório local: • Baixando e atualizando o sistema e seus aplicativos: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES $ sudo apt-get update $ sudo apt-get upgrade Instalando pelo REPOSITÓRIO NOTA: Em lugar do “APT-GET” você pode usar a ferramenta “APTITUDE”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Ferramentas de Gerenciamento • APT-GET: instala programas do repositório, via terminal; • APTITUDE: instala programas do repositório, via terminal; • DPKG: instala pacotes .deb, via terminal; André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Ferramentas de Gerenciamento • SYNAPTIC: interface gráfica de instalação de programas do repositório. Seu uso é mais complexo e, portanto, não recomendado para usuários inexperientes; • CENTRAL DE PROGRAMAS DO UBUNTU: interface gráfica de instalação de programas do repositório. Seu uso é simples e intuitivo e indicado para usuários de todos os níveis de experiência; • UPDATE-MANAGER: atualiza o sistema operacional e todos os seus aplicativos. Presente somente na interface gráfica. • Instalando aplicativos pelo repositório: • Removendo aplicativos instalados pelo repositório: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES $ sudo apt-get install <nome-do-pacote> $ sudo apt-get remove <nome-do-pacote> Instalando pelo REPOSITÓRIO EXEMPLOS: • Instalando um só aplicativo (ex.: iptables): • Instalando mais de um aplicativo (ex.: iptables e squid): André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Instalando pelo REPOSITÓRIO $ sudo apt-get install iptables $ sudo apt-get install iptables squid EXEMPLO: Instalando pela interface gráfica: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Instalando pelo REPOSITÓRIO EXEMPLO: • Instalando o SKYPE: • Removendo o SKYPE: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Pacotes “DEBIAN” $ sudo dpkg –i skype-debian_2.0.0.72-1_i396.deb $ sudo dpkg –r skype • A conta “root” é conhecida como “super- usuário” porque possui poderes administrativos ilimitados. • Nenhum comando do root é ignorado ou abortado por falta de permissão! Ele pode tudo! • Salvo raras exceções, NADA é perguntado a ele! Os comandos são cumpridos sem necessidade de confirmação! • No prompt (ou “terminal”) a conta root se caracteriza pelo “ # ”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos • No Ubuntu, por padrão, a conta root é bloqueada (por questões de segurança); • Também por segurança, recomenda-se o uso do recurso SUDO; • “SUDO” faz com que uma conta de usuário comum realize trabalhos com privilégios administrativos; • O usuário que usa o “SUDO” é chamado de “sudoer” (“sudo member”); • Para ser um “sudoer” o usuário tem que fazer parte do grupo “sudo” ou “admin”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos • Ao fazer parte de qualquer um dos grupos, “sudo” ou “admin”, a conta de usuário passa a ter o poder de usar a ferramenta sudo. • Recentemente, e por segurança, o grupo “admin” passou a não mais existir por padrão no Ubuntu, devendo ser criada manualmente. • Já o grupo “sudo” continua existindo. • Portanto, o administrador do sistema tem a opção de inserir a conta de usuário no grupo “sudo” (que já existe), ou criar o grupo “admin” e inserir a conta nele. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos Por que funciona assim? • Porque o arquivo /etc/sudoers possui os parâmetros: %admin ALL=(ALL) ALL %sudo ALL(ALL:ALL) ALL Ambos os parâmetros especificam os privilégios de sudoer para os membros dos grupos “admin” (%admin) e “sudo” (%sudo). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos • EXEMPLOS: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos $ sudo rm –R temporario/ # rm –R temporario/ Como “sudoer”: Como root: TORNANDO A CONTA UM “SUDOER”: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos $ sudo adduser –g sudo joaosilva OPÇÃO 1: Cria a conta “joaosilva”, inserindo-a no grupo “sudo”: OU OPÇÃO 2: Cria o grupo “admin” e, em seguida, cria a conta “joaosilva” inserindo-a no grupo: $ sudo groupadd admin $ sudo adduser -g admin joaosilva LISTANDO OS GRUPOS EXISTENTES E AS CONTAS QUE ESTÃO INSERIDAS NELES: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos $ cat /etc/group • Em certos momentos pode ser necessário o “sudoer” executar um procedimento como root; • Nesse caso, ele pode habilitar a conta root e trabalhar nela. O comando que habilita a conta do root é este: • O comando que desabilita o root é: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos $ sudo passwd root $ sudo passwd -l root • O comando que troca o usuário “sudoer” pelo root é: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Privilégios Administrativos $ sudo su INTRODUÇÃO AO LINUX EXERCÍCIO / DISCUSSÃO EM SALA André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES 1. No seu entendimento, o “sudo” pode ser comparado ao “runas” (“run as...”) do Windows? 2. Quais são as diferenças entre “sudo” e “runas”? 3. Na sua opinião algum dos dois (“sudo” e “runas”) oferece mais segurança que o outro? Justifique a resposta. 10 minutos • O WGET é uma ferramenta de linha de comando (não possui interface gráfica) que permite que seja feito o download de arquivos e páginas internet, sem necessidade de um browser. • Suporta os protocolos HTTP, HTTPS, FTP. • Sintaxe (não é necessário privilégio administrativo): André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Ferramenta WGET $ wget http://www.dominio.com.br/downloads/arquivo.zipINTRODUÇÃO AO LINUX CONHECENDO O LINUX André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES • Em um sistema Unix tudo é um arquivo. Se não é arquivo, então é um processo. • Nos sistemas Unix os nomes de diretórios são “case sensitive” – isto é, sensíveis a maiúsculas e minúsculas. • No Linux os diretórios são especificados pela barra “ / ”, e não pela contra-barra “ \ ”, como ocorre no Windows. Exemplo: /home/joao/downloads/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Os Diretórios • No Linux o Diretório-Raiz é o diretório principal do sistema e, abaixo dele, estão todos os demais diretórios e subdiretórios. Ele é representado somente pela barra “ / ”, sendo o primeiro na hierarquia de diretórios – daí é chamado de raiz. • Sob ele estão os diretórios principais do sistema, os diretórios dos usuários, os respectivos subdiretórios, e assim sucessivamente. Nele encontram-se diretórios tais como: /etc, /var, /bin, /usr, e outros. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Diretório-Raiz • A organização dos diversos diretórios principais forma um padrão, que é o mesmo para todas as distribuições Unix modernas. • Isto quer dizer que essa mesma hierarquia de diretórios é observada em todos os sistemas Unix/Linux, não importando seus distribuidores e suas versões. • Esses diretórios organizam arquivos de usuários, drivers, kernels, logs, programas, utilitários, etc., em diferentes categorias. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES A Hierarquia de Diretórios André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES A Hierarquia de Diretórios Diretório Descrição / Diretório raiz ou root. É o diretório de mais alto nível. Todos osdemais diretórios são seus subdiretórios. /bin Utilitários de linha de comando essenciais. /boot Reúne os arquivos necessários para a inicialização do sistema,incluindo o kernel. /dev Permite o acesso a drivers de dispositivos de hardware e software para tudo, desde unidades de disquete até terminais – incluindo os Discos Rígidos. /etc É onde se localizam os arquivos de configuração dos diversosserviços e aplicativos instalados. /home Contém o diretório home dos usuários. É onde se localizam aspastas de cada usuário do sistema. /lib Bibliotecas de programa para o kernel e vários outros utilitários. /mnt Ponto de montagem temporário para mídias removíveis, como disquetes e discos ZIP, e também para acesso a HD’s compartilhados, ou conexões via SSH (Secure SHell). O CD-Rom tem seu próprio ponto de montagem, o /cdrom. /opt Destinada a abrigar aplicações de terceiros, que não façam parte dadistribuição. /root Diretório home do super-usuário root. /usr Diretório dos aplicativos. A maioria dos softwares é instalada nessediretório, e ele pode ser compartilhado. /var Contém os arquivos que são gravados freqüentemente pelos aplicativos do sistema, tais como: e-mails, spool de impressora, e outros. É também onde se localiza o subdiretório /www/ usado pelo webserver Apache para hospedar as páginasweb. • Não somente a estrutura de diretórios no sistema tem suas particularidades, como também é o modo como o Linux representa seus dispositivos. • Foi visto no slide anterior que o diretório /dev é o local onde estão os arquivos usados para acessar os drivers de dispositivos do computador. • Isto posto, é importante conhecer esta estrutura. A seguir se apresenta uma tabela que compara a estrutura dos dispositivos no Linux com a forma usada no MS-Windows:... André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES A Estrutura dos Dispositivos WINDOWS LINUX A: /dev/fd0 B: /dev/fd1 C: /dev/hda1 LPT1 /dev/lp0 LPT2 /dev/lp1 LPT3 /dev/lp2/ COM1 /dev/ttyS0 COM2 /dev/ttyS1 COM3 /dev/ttyS2 COM4 /dev/ttyS3 André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES A Estrutura dos Dispositivos • /hd→ corresponde aos discos rígidos IDE; • /sd→ corresponde aos discos rígidos SCSI; • *a→ 1º Disco Rígido: /hda ; • *b→ 2º Disco Rígido: /hdb ; • *c, *d, *e → Outros HD’s: /hdc, /hdd, /hde... etc. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Discos e Partições UNIDADE O QUE É... /dev/fd0 1ª Unidade de disquete. /dev/fd1 2ª Unidade de disquete. /dev/hda 1º HD IDE – Primary Master. /dev/hda1 1ª partição do 1º HD IDE. /dev/hdb 2º HD IDE – Primary Slave. /dev/hdb1 1ª partição do 2º HD IDE. /dev/sda 1º HD SCSI. /dev/sda1 1ª partição do 1º HD SCSI. /dev/sdb 2º HD SCSI. /dev/sdb1 1ª partição do 2º HD SCSI. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Discos e Partições André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Discos e Partições Assim, temos: /dev/sda1 Diretório onde são armazenados os dispositivos existentes. Tipo do HD (IDE ou SCSI). Primary ou Slave. Partição do HD. • Nas distribuições Linux que utilizam o recurso sudo, a primeira conta de usuário criada durante a instalação é conta sudoer; • Todas as demais contas criadas serão, por padrão, contas comuns; • Toda vez que uma conta de usuário é criada, cria-se também, automaticamente, um grupo de mesmo nome. Este é o grupo primário do usuário recém-criado. • O usuário pode fazer parte de outros grupos, que serão considerados grupos secundários. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Contas de Usuários • Da mesma forma, quando a conta de usuário é criada, também é criada uma pasta com o mesmo nome dentro de /home. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Contas de Usuários Assim, temos (quando a conta é criada): • Nome de usuário: joaosil • Grupo Primário: joaosil • Diretório principal: /home/joaosil/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Contas de Usuários • Terminal, também é conhecido como CLI (Command Line Interface), console, ou ainda, shell — muito embora essa última denominação não seja realmente correta... • O terminal é o equivalente ao prompt de comando no Windows. Ele nada mais é do que uma interface-texto. • Ou seja, é uma interface de acesso ao shell propriamente dito, e por meio dele são inseridas linhas de comando, para execução de toda e qualquer tarefa no Sistema Operacional. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Terminal ou Console André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Terminal ou Console • SHELL = interpretador de comandos. • Um interpretador de comandos (ou “shell”) é: • É um programa que permite a interpretação e execução de comandos; • O “shell”, ao receber o comando, repassa a instrução para o kernel, e ele, por sua vez, retransmite para a arquitetura da máquina (se a instrução for interna), ou para a arquitetura da rede (se a instrução destina-se à rede); • O Shell também pode ser uma GUI (Graphical User Interface) para o disparo de comandos por meio do mouse. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell • O usuário interage com o S.O. por meio de uma aplicação especial, denominada “shell”, ou interpretador de comandos; • A maioria dos interpretadores atuais trabalha através de: • Interfaces de texto (terminais) que permitem a um usuário emitir comandos via texto digitado no teclado; ou • Interfaces GUI (Graphical User Interface) com recursos interativos de mouse. • Exemplos: • No Linux, existea instalação do núcleo shell de comandos em texto, e posteriormente pode-se instalar a camada de interface. • No Windows, utiliza-se preferencialmente a interface gráfica, e as vezes o Prompt de Comando (antigo “DOS”) para comandos em texto. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell Percebe-se, portanto, que existem duas maneiras de se inserir comandos em um sistema operacional: através de texto (terminal), ou através do mouse (interface gráfica, ou GUI). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell • Por exemplo, no Windows, para abrir o editor de textos (i.e., o MS-Word) você pode dar dois cliques no respectivo ícone, na área de trabalho, ou pode digitar o comando (sem as aspas) “start winword.exe” no prompt. • O Shell interpretará os dois comandos (texto e mouse) da mesma forma, e abrirá o programa desejado. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell • No Linux (versões que possuam GUI) ocorre a mesma coisa: programas podem ser iniciados pelo terminal ou pela interface gráfica. Para chamar um programa pelo terminal, basta digitar o seu nome. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell • Nas distribuições Linux que utilizem o “SUDO”, ele também está presente na interface gráfica. Ele se manifesta através de uma janela que pede a senha do usuário, antes de executar uma tarefa. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Shell • Uma das coisas interessantes a respeito dos sistemas operacionais abertos (especialmente o Linux) é a possibilidade que o usuário tem de escolher a interface gráfica de seu sistema. • Cada interface gráfica possui um modo particular de gerenciar a sua aparência. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) • “Gerenciadores de janelas” (nome mais correto) são programas que controlam como as janelas devem ser apresentadas no Sistema Operacional, a posição dos botões, quais são suas funções, o que pode ocorrer em uma janela, a organização e distribuição do menu de opções, e assim por diante. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) • Em outras palavras um gerenciador de janelas tem a função de, como o próprio nome diz, gerenciar a apresentação das janelas e fornecer métodos para controlar aplicações, criar e acessar menus. Além de fornecer meios para que o usuário possa personalizar o seu ambiente. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) • No Linux, este relacionamento é feito pelo Servidor de Janelas X ou simplesmente X. • Seu objetivo é fornecer acesso aos dispositivos existentes em seu computador (mouse, teclado) e fornecer um ambiente agradável para a manipulação de aplicações, através de componentes chamados Janelas. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) • Mas, não confunda estes dois conceitos: o servidor de janelas possui recursos para implementar as aplicações em forma de janelas e formar um ambiente agradável para o usuário; • Já o gerenciador de janelas vai fornecer métodos para que o usuário possa modificar o tamanho das janelas, o papel de parede, enfim, o layout da interface gráfica. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) • Para sistemas Unix (e não somente Linux!) existem algumas opções de interface gráfica, tais como: • GNOME; • KDE; • XFCE; • FluxBox; • WindowMaker; • ... E outras. • As 2 mais usadas/conhecidas são: GNOME e KDE. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Interfaces Gráficas (ou “gerenciadores de janelas”) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES GNOME KDE André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES WINDOWMAKER • Path (em inglês, “caminho”) é o caminho de procura dos arquivos ou comandos executáveis. • Quando um comando ou arquivo está dentro do diretório Path isto quer dizer que ele pode ser executado de qualquer lugar. • Isso é especialmente útil quando se deseja que um arquivo seja executado, e o caminho deve ser “de conhecimento público”, ou então, deve ser “facilmente encontrado”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH • O path (caminho) é armazenado na variável de ambiente PATH. Pode-se visualizar o conteúdo desta variável com o seguinte comando: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH # echo $PATH Os vários paths são separados por dois pontos (“ : ”) O Path é uma variável e ela determina os caminhos de busca que serão percorridos pelo shell quando um comando for informado. Se não fosse pela variável PATH seria necessário especificar o caminho completo de um programa para poder executá-lo. Ao invés de digitarmos... $ passwd teríamos que digitar... $ /usr/bin/passwd André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH Neste caso (exemplo do slide anterior), o caminho /usr/bin já está definido no PATH como um dos caminhos de procura do shell. O que ocorre é que, já que não foi fornecido o caminho do comando (digitou-se, simplesmente, “passwd”, e só!), o shell busca nos “paths” conhecidos por ele se existe esse comando armazenado. Quando o encontra, executa-o. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH • Caso um arquivo ou comando não esteja localizado em nenhum dos diretórios do Path, pode-se executá-lo, mesmo sem informar o caminho, usando a combinação “ ./ ” (sem as aspas) na frente do comando — desta forma: • Outra maneira é inserir o diretório desejado na lista Path. Para isso, faça assim no CLI: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH # ./comando-qualquer # PATH=$PATH:/diretorio-a-ser/colocado/no-path O comando acima é válido somente para a sessão atual do sistema. Assim que o sistema for reiniciado, o path se apagará. Para introduzir um path permanente no sistema pode-se fazer os seguintes: • Introduzir o comando mostrado (slide anterior) dentro de: /home/nome-do-usuario/.bashrc (desvantagem: é válido somente para o próprio usuário). • Introduzir as seguintes linhas no arquivo /etc/profile (vale para todos os usuários): André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH if [ “$PATH” ]; then PATH=’/pasta/subpasta/comando-inserido’ fi • Método mais comum e eficiente: → Suponha que haja um script dentro de: /home/script/ (o que equivale a: ~/script) o qual você deseje incluir no PATH. Digite, então, o seguinte comando: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES PATH # export PATH=“$PATH:~/script” INTRODUÇÃO AO LINUX MÓDULOS André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Módulos são partes do kernel que são carregados somente quando solicitados por algum aplicativo ou dispositivo, e descarregados da memória quando não são mais necessários. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MÓDULOS• A parte interessante é que esses módulos são carregados e descarregados durante o pleno funcionamento do Linux, sem que isso cause nenhum tipo de sobrecarga ou deficiência ao sistema. • Justamente por ser possível carregá-los ou não, de acordo com a demanda dos seus aplicativos correspondentes, é que recebem esse nome de “módulos” — ou, melhor ainda, uma designação mais completa: módulos carregáveis do kernel (LKM — Loadable Kernel Modules). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MÓDULOS Este recurso é útil por dois motivos: • Evita a construção de um kernel grande (estático) que ocupe grande parte da memória com todos os drivers compilados; e • Faz com que partes do kernel ocupem a memória somente quando forem necessários, poupando os recursos da mesma para as tarefas realmente exigidas. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MÓDULOS • Os módulos só são carregados quando assim solicitados, e pelo tempo que for preciso; percebe-se, então, que os recursos de hardware, mais notadamente o processador e a memória, serão ocupados somente com as tarefas necessárias. • Os módulos do kernel estão localizados no diretório: /lib/modules/sua-versão-de-kernel-instalada/ Onde: “sua-versão-de-kernel-instalada” refere-se à versão atual do kernel instalada no sistema. Se, por exemplo, a versão de kernel que estiver sendo usada pelo Linux for 3.11.0-15-generic, então o subdiretório será: /lib/modules/3.11.0-15-generic/. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MÓDULOS • Os módulos são carregados automaticamente quando solicitados, através do programa kmod, ou manualmente pelo arquivo /etc/modules, ou ainda por meio dos comandos insmod ou modprobe. • Para saber a versão de kernel do sistema, execute o seguinte comando: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MÓDULOS # uname -r INTRODUÇÃO AO LINUX O KERNEL DO LINUX André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O kernel do Linux nasceu “monolítico”, mas atualmente possui características de “semi- monolítico” ou “modular” — muito embora, para todos os efeitos, ainda seja considerado “monolítico”. O kernel monolítico define uma interface de alto nível sobre o hardware virtual, com um conjunto de primitivas ou chamadas de sistema para implementar serviços de sistema operacional, como gerenciamento de processos, concorrência e gerenciamento de memória em vários módulos que são executados em modo de supervisor. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux Mesmo que a execução das operações de cada módulo esteja separada do todo, a integração de código é muito “apertada”, tornando difíceis execuções corretas — e, como todos os módulos são executados no mesmo espaço de endereçamento, um erro em um deles pode derrubar todo o sistema. O argumento a favor da estrutura monolítica é que ela divide o kernel em vários componentes, facilitando seu desenvolvimento. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux Com o tempo, o kernel do Linux incorporou algumas características de um kernel modular, o que pode fazer com que seja compreendido como “semi-monolítico”*. Todo o kernel, incluindo os drivers de dispositivo e demais componentes, ainda formam um único bloco de código gigantesco (com mais de 30 MB, quando compactado), mas que, agora, pode ser compilado separadamente na forma de módulos. * Muito embora, repita-se, em essência ainda é “monolítico”! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux Estes módulos* podem ser carregados e descarregados a qualquer tempo, como seria possível num kernel modular, porém sem a perda de desempenho ou aumento da complexidade que existiria ao utilizar um kernel 100% modular. * Vide o tópico “Módulos”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux A desvantagem da atual estrutura do Linux é que os módulos compilados para uma determinada versão do kernel não podem ser usados em outros computadores que utilizem versões diferentes. Mesmo drivers binários, como os destinados aos softmodems, precisam, primeiro, ser transformados em módulos (utilizando o código-fonte, ou os headers do kernel atual), para, só depois, poderem ser usados. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux Isso é resolvido de uma das duas formas: • As atualizações nas versões das distribuições; ou • Através de compilação de kernel. Considerando-se que várias distribuições Linux atualmente lançam atualizações de versão com bastante regularidade, as compilações de kernel têm caído cada vez mais em desuso. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Kernel Linux INTRODUÇÃO AO LINUX COMPILAÇÃO DO KERNEL André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Para que se compila o kernel do Linux? 1. Ativação ou desativação de aplicativos, recursos de hardware e software, ferramentas de sistema, suporte a drivers de dispositivos e protocolos de redes em geral. Nesse aspecto a compilação é quase como uma personalização do sistema, onde o usuário ativa somente as características que lhe interessam, e desativa todas aquelas que lhe são desnecessárias; André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel 2. Realização de atualizações de segurança contra vulnerabilidades descobertas no kernel, quando isto ocorrer (e, sim!, isso acontece!); 3. Testes de novos recursos e ferramentas, ou adequação para desenvolvimento de aplicativos específicos. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Em suas primeiras versões o kernel do Linux era inteiramente monolítico. O usuário realmente tinha que compilá-lo com bastante freqüência, com o objetivo de ativar ou desativar aplicativos, funções, e suporte a drivers e recursos em geral. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Naturalmente, dada a “trabalheira” que isso causava, costumava se imaginar se não seria possível simplesmente compilar o kernel ativando todos os recursos de uma só vez, poupando o esforço. A resposta é “NÃO!”, porque o resultado de tal compilação generalizada e indiscriminada levaria o sistema a se tornar paquidérmico — um verdadeiro “peso-pesado”! —, e daí a solução era passar algumas horas pesquisando sobre os recursos disponíveis, para, então, compilar o kernel ativando-se somente o necessário para o funcionamento da máquina. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Hoje, a característica “modular” do Linux faz com que o sistema possua “aberturas”, ou “slots”, que permitem carregar e descarregar pedaços de código conforme necessário. Cada dispositivo de hardware, cada sistema de arquivos ou mesmo serviços, como o IPTables, são representados cada qual por um módulo. Eles podem ser carregados e descarregados conforme a necessidade, de modo a garantir performance e leveza ao sistema. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel As distribuições Linux incluem quase todos os componentes na forma de módulos. Apenas alguns destes módulos são necessários para a máquina (o Kernel 2.4 já incluía uns 100 módulosdiferentes para placas de som, mas, na prática, o usuário só utiliza um deles...). Os módulos que não estão sendo usados ficam repousando na forma de inocentes arquivos no HD, apenas ocupando espaço. Se eles são arquivos, isso significa que o usuário pode deixar para instalar alguns deles só quando precisar — e assim, nem espaço eles vão ocupar! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Por tudo isso, hoje em dia um usuário Linux terá poucas oportunidades para se aventurar a compilar um kernel. Uma delas será quando ele quiser testar versões ainda em fase de desenvolvimento, que não são muito recomendáveis, de qualquer forma, por incluírem novos recursos e funcionalidades que ainda não foram bem testados. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Compilações como essas podem ocorrer porque tais sistemas são enviados em código- fonte, e esse código-fonte precisa ser compilado para inserir-se no sistema. Em se tratando dessa característica, essa “não-recomendação” é especialmente válida e importante em casos de sistemas Linux instalados em servidores de produção (isto é, servidores plenamente funcionais que atendem a um ambiente de rede). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Com máquinas críticas assim não se brinca — e, nelas, testes e experimentos nunca são bem-vindos! O fato é que a própria conversão da estrutura do kernel do Linux, de monolítica para híbrido- monolítica, ou modular, está, aos poucos, tornando as compilações eventos bastante raros. Cada nova distribuição Linux lançada no mercado vem tornando essa tarefa menos e menos freqüente. A utilização massiva de módulos está consolidando essa tendência. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Na prática o que tem ocorrido é o seguinte: Distribuições Linux criam seus sistemas com os kernels já devidamente adaptados para as funções às quais o sistema se propõe. Os módulos necessários ao funcionamento do sistema já estão devidamente habilitados, e prontos para funcionar. Todos os recursos necessários à distribuição já estão instalados! Isso se deve ao surgimento de distribuições especializadas do Linux. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Caso haja a necessidade de se habilitar novas funcionalidades, excluir funcionalidades desnecessárias, ou realizar correções de segurança no kernel, as atualizações disponibilizadas pelas distribuições executam essa tarefa, tornando desnecessária a compilação pelo usuário. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel Assim sendo, a compilação de kernel no Linux está se tornando uma atividade cada vez mais rara. Na prática, grande partes das compilações que ainda ocorrem se devem a experimentações, desenvolvimento de sistemas embarcados, e outras atividades específicas. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Compilação de Kernel INTRODUÇÃO AO LINUX ATUALIZAÇÕES DE KERNEL André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Conforme mencionado no tópico anterior (“Compilação de Kernel”), as distribuições Linux realizam atualizações de kernel sempre que: • Desejam ativar e/ou desativar recursos em seus sistemas; • Disponibilizam correções de segurança no kernel. Assim, as atualizações de kernel são equivalentes às atualizações de segurança do Windows — e devem sempre ser feitas! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Atualizações de Kernel André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Atualizações de Kernel Cada atualização cria um novo arquivo de kernel que é carregado pela distribuição durante o processo de bootstrapping (carregamento inicial do sistema operacional). No Linux as atualizações de versão do kernel vão se acumulando dentro do diretório /boot. Com isso, o gerenciador de boot (LILO, GRUB) identifica cada uma dessas versões como se fosse um sistema diferente. Por padrão ele carrega a versão mais recente. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Atualizações de Kernel André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Atualizações de Kernel Com isso, se ocorrer algum problema de funcionamento o usuário tem a opção de carregar a versão de kernel que estava funcionando perfeitamente. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Atualizações de Kernel Lista de versões de kernel que o gerenciador de boot pode usar para carregar o sistema. INTRODUÇÃO AO LINUX SISTEMA DE NUMERAÇÃO DO KERNEL André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O comando a seguir exibe a versão de kernel usada (carregada) pelo sistema: Atualmente a versão de kernel do Linux em desenvolvimento é a 3.14. Para aprendermos como funciona esse sistema de numeração, tomemos como exemplo a versão: 3.11.0-15-generic André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL # uname -r André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL Vamos, então entender como se caracteriza: Primeiramente existe a numeração específica do kernel geral do Linux. A maneira como a desenvolvedora (Red Hat, Canonical, etc.) da distribuição/ferramenta constrói o kernel de seu sistema adiciona mais uma camada de complexidade. A versão do sistema está em conformidade com a sequência numérica no formato: versão-principal.revisão-principal.construção-do-patch 3 11 0. . O nome vmlinuz é o padrão para as imagens do kernel do Linux. Assim, todas as vezes que vir este nome (“vmlinuz”), saiba que se refere ao kernel do sistema. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL Voltando a atenção ao número do exemplo (3.11.0-15-generic), verifica-se o primeiro número (3) que especifica o número principal da versão, associado a grandes mudanças no kernel. Mudanças no número principal da versão são reservadas somente para quando ocorrem desenhos (ou projetos) totalmente novos do kernel. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL O segundo número (11) significa duas coisas: • Que esta é a décima-primeira principal revisão do kernel 3 do Linux; • E que está associada com a versão estável de produção do kernel. Quando a versão seguinte 3.12 foi lançada ela também se tornou uma versão estável de produção do kernel. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL O terceiro número (0) é conhecido como o número de versão do patch, o qual, tipicamente, inclui pequenas mudanças, “bug fixes”, “security fixes”, e melhorias (adição de novas funcionalidades e compatibilidades). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL O quarto número (-15-generic) é adicionado pelo desenvolvedor da distribuição/ferramenta. Nesse caso, é a 15ª construção do kernel 3.11.0, personalizado para a distribuição ou ferramenta em questão. André Luiz Carvalho Scampini– SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL Vale reforçar a idéia, já apresentada nesta apostila, de que o kernel é o mesmo para todas as distribuições (3.11); mas essas mínimas diferenças permitem algumas implementações nas distribuições, o que as ajuda a serem únicas, ou pelo menos, muito pouco diferentes das demais distribuições — principalmente das distribuições-mãe*. *(O Debian, por exemplo, que é a distribuição-mãe do Ubuntu; isto é, a distribuição que deu origem ao Ubuntu). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL Essas pequenas “customizações” não tornam o kernel usado pela distribuição/ferramenta muito diferente do kernel principal — apenas servem para permitir agregar certas funcionalidades que a equipe de desenvolvimento da distribuição deseja inserir em seu produto. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES NUMERAÇÃO DO KERNEL INTRODUÇÃO AO LINUX DIFERENCIANDO “DISTRIBUIÇÃO” DE “FERRAMENTA” André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Alguns sistemas em Linux são chamados de “ferramentas” e outros de “distribuições”. Existem diferenças conceituais entre um e outro. Vamos ver quais são:... André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES FERRAMENTAS & DISTRIBUIÇÕES FERRAMENTA: Sistema baseado em Linux que possui todos os aplicativos de trabalho já instalados, sem possibilidade de gerenciamento dos mesmos (instalação, atualização, remoção). Mas a principal característica é que ela (a ferramenta) não permite atualizações de kernel, atualizações de versão do sistema, e não possui um repositório de aplicativos à disposição. É, em suma, um sistema “engessado”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES FERRAMENTAS & DISTRIBUIÇÕES DISTRIBUIÇÃO: Sistema baseado em Linux que vem com vários os aplicativos já instalados, mas permite o gerenciamento desses aplicativos (instalação, atualização e remoção), bem como permite atualizações de kernel, atualizações de versão do sistema, e, geralmente, possui um repositório de aplicativos à disposição. É um sistema flexível. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES FERRAMENTAS & DISTRIBUIÇÕES INTRODUÇÃO AO LINUX CONHECENDO O UBUNTU André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O Linux UBUNTU será a distribuição que usaremos nesta disciplina. Por que? • Atualizações a cada 6 meses, com palpáveis avanços em cada uma delas; • Versátil: possui versões “desktop” e “server”; • Aceitação e utilização cada vez maiores; • Farta documentação e literatura de apoio; • Atualizações de segurança quase semanais!; • Sistema maduro, robusto e estável (confiabilidade!). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU Uma versão é lançada a cada 6 meses... • Geralmente nos meses de Abril (mês 4) e Outubro (mês 10); • A versão é numerada da seguinte maneira: Ano.Mês EXEMPLOS: 6.06 — Lançado em Junho (06) de 2006 (6) 9.04 — Lançado em Abril (04) de 2009 (9) 10.10 — Lançado em Outubro (10) de 2010 (10) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU Cada versão possui o nome de um animal e seu adjetivo, da seguinte maneira: The + adjetivo + animal ... O nome e o adjetivo usam a mesma letra, e a letra segue a ordem alfabética: AA, BB, CC, DD, EE, FF... Etc. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU EXEMPLO — a versão 13.10 chama-se: The Saucy Salamander (“A atrevida Salamandra”) CONHECENDO O UBUNTU André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES EXEMPLO — a versão 15.04 chama-se: The Vivid Vervet (“O vívido Macaco”) CONHECENDO O UBUNTU André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O próximo lançamento será: • 15.10 TheWilyWerewolf (“O astuto Lobisomen”) Os lançamentos anteriores: • ... • 11.10 The Oneiric Ocelot • 12.04 The Precise Pangolin • 12.10 The Quantal Quetzal • 13.04 The Raring Ringtail • 14.04 The Trusty Tahr André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU O Ubuntu é mantido pela empresa Canonical Ltd., criada por Mark Shuttleworth (fundador e ex-dono da Autoridade Certificadora Thawte Inc.) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU • O Ubuntu é 100% livre, e existe o compromisso formal de que sempre será! • A Canonical oferece suporte pago (opcional!) para empresas, merchandising (camisetas, bonés, canecas, etc.), treinamento oficial e OEM (Original Equipment Manufacturer); • NÃO existe “versão paga” (“professional”, “enterprise”, etc.) ou “versão Community” (livre / grátis)! A versão que o cliente com suporte usa é a mesma que o cliente sem suporte! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU Websites oficiais: http://www.ubuntu.com/ http://www.canonical.com/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES CONHECENDO O UBUNTU INTRODUÇÃO AO LINUX SEGURANÇA NO LINUX André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES • O Linux é baseado no UNIX, um sistema criado em 1969 pelo time de desenvolvedores da Bell Labs, incluindo: Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy e Joe Ossanna; • Na época, “segurança” não era preocupação!; • O Linux segue a arquitetura do Unix, que, por sua vez, é um projeto de 40 anos de idade!; • Portanto, em sua essência, o Linux não é seguro! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux • Em palestra proferida na “LinuxCon” (Conferência Internacional sobre Linux), ocorrida em Boston/MA, entre os dias 10 e 12 de agosto de 2010, o engenheiro de sistemas da Red Hat, e desenvolvedor do kernel do Linux, James Morris, declarou que: “O Linux não é tão seguro quanto parece!” Fonte: http://www.slideshare.net/jamesmorris/linux-kernel- security-overview-kca-2009 André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux Fonte: http://www.slideshare.net/jamesmorris/linux-kernel- security-overview-kca-2009 André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux Um dos slides da palestra. • O Linux é baseado no UNIX, que não foi projetado pensando em segurança; • Apesar dos mecanismos adicionais de segurança (AppArmor, Tomoyo, LSM, SELinux, Smack...), esses recursos não podem ser usados todos ao mesmo tempo (usa-se um ou outro); • Os usuários em geral subestimam as configurações de “hardening” dos aplicativos (o perigo dos “tutos” que “funfam”...); • Além das falhas dos próprios aplicativos! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux • Em seu livro “On The Security of Unix” (“Sobre a segurança do Unix”), Dennis Ritchie, um dos criadores do Sistema, afirmou (tradução livre): “O primeiro fato a enfrentar é que o UNIX não foi desenvolvido tendo-se qualquer ideia de segurança em mente. Esse fato, por si só, já garante um grande número de brechas.” Onde ler: http://www.tom-yam.or.jp/2238/ref/secur.pdf André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DEREDES DE COMPUTADORES Segurança no Linux • O que mais chama a atenção é o primeiro parágrafo, que diz (tradução livre): “Recentemente tem havido muito interesse nos aspectos relacionados à segurança de sistemas operacionais e softwares.” Atentemos para o detalhe do “recentemente”: 10 anos depois da criação do UNIX — o que prova que ele realmente não foi desenvolvido pensando-se em segurança. Onde ler: http://www.tom-yam.or.jp/2238/ref/secur.pdf André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux “O Linux é mais seguro que o Windows!” (slogan decorado e repetido à exaustão por entusiastas do Linux) • Não! O Linux tem problemas de segurança diferentes do Windows!; • Existem vários “backdoors” para Linux; • Comandos maliciosos de websites nocivos podem interferir no funcionamento de aplicativos no Linux; • A maioria dos ataques ao Linux são “escaladas de privilégio” (obter privilégios de “root”)! André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux • O kernel do Linux e seus aplicativos possuem falhas de segurança (deve-se fazer as atualizações sempre que disponíveis!) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux • Em setembro de 2009 um pesquisador russo, Denis Sinegubko, descobriu uma “botnet” (rede de “bots”) toda formada por servidores Linux; • Essa rede era usada para executar “botnets” em sistemas Windows; • Esses servidores Linux localizavam-se em grandes data centers de provedores de dados; • O que causou isso: configurações malfeitas dos administradores desses sistemas Linux. Fonte: http://www.itworld.com/security/77499/first-linux-botnet André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux Em março de 2013 um pesquisador configurou remota e ilegalmente 420 mil terminais botnet, correspondendo a 1/4 do total de sistemas ideiais, e esses terminais rodavam Linux. Fonte: http://www.theregister.co.uk/2013/03/19/carna_botnet_ipv4_inte rnet_map/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux • Em dezembro de 2013 foi descoberta uma outra rede botnet em máquinas rodando Windows e... sim, Linux! • O Linux era invadido por meio de um ataque dicionário ao serviço SSH do sistema, por onde o atacante ganhava o controle da máquina e instalava o bot. • Especialistas acreditavam que o Linux estava sendo atacado por ser o sistema mais usado como servidor de rede e, portanto, os atacantes teriam mais largura de banda disponível para realizar seus ataques a outras vítimas. Fonte: http://news.softpedia.com/news/CERT-Poland-Warns-of-DDOS-Botnet- Targeting-Windows-and-Linux-Machines-410223.shtml André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux A “Lei de Linus” (Torvalds), diz que: “Given enough eyeballs, all bugs are shallow” ("Dados olhos suficientes, todos os erros são superficiais"). Ela foi tema de um “paper” da NCSU — Universidade da Carolina do Norte, EUA, que analisou empiricamente essa “lei”, com o título: “Secure Open Source Collaboration: An Empirical Study of Linus’ Law” (“Colaboração ao Código Aberto Seguro: Um estudo empírico sobre a Lei de Linus”). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MITO: A “Lei de Linus” O estudo revelou que: a. arquivos modificados por vários grupos separados de desenvolvedores são mais propensos a vulnerabilidades do que se modificados por um só grupo; e b. arquivos tendem a ser vulneráveis quando alterados por muitos desenvolvedores, os quais também trabalham em outros projetos open source. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MITO: A “Lei de Linus” Por que? A explicação é simples: gente demais “botando a mão” acaba criando terreno fértil para o surgimento de bugs. E pessoas se preocupando com projetos simultâneos demais também podem criar bugs — mesmo que inadvertidamente. Fonte: http://www4.ncsu.edu/~apmeneel/ccs221-meneely.pdf André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MITO: A “Lei de Linus” Em março de 2014 foi descoberta uma vulnerabilidade grave na biblioteca do GnuTLS, que é usada nas comunicações criptografadas fim-a-fim (HTTPS, FTPS, etc.), pois implementa os protocolos SSL, TLS e DTLS. Essa vulnerabilidade permitia que atacantes pudessem espionar as comunicações, mesmo estando criptografadas pelos protocolos SSL/TLS. Várias distribuições Linux e aplicativos open source apoiam-se sobre o GnuTLS. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MITO: A “Lei de Linus” Segundo discussões em fórum especializado, essa vulnerabilidade existiria desde 2005, e foi descoberta em 2014, tendo, portanto, 9 anos de existência. Esse é um daqueles casos em que a “Lei de Linus” não funcionou... Fontes: http://arstechnica.com/security/2014/03/critical-crypto-bug-leaves-linux-hundreds- of-apps-open-to-eavesdropping/ http://www.reddit.com/r/netsec/comments/1zhjwh/certificate_verification_vulnerabi lity_in_all/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES MITO: A “Lei de Linus” Em abril de 2014, logo em seguida à descoberta da vulnerabilidade do GnuTLS, foi descoberta uma falha ainda maior e mais preocupante, que ficou conhecida como “Heartbleed”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O bug “Heartbleed”: um escândalo! O Heartbleed é um bug na biblioteca do OpenSSL, que permite a um atacante ler a memória de um servidor ou de um cliente, permitindo-o recuperar chaves SSL privadas. Em outras palavras, todas as chaves criptográficas estavam comprometidas! Os logs examinados levaram à conclusão que vários hackers podem ter explorado a falha por pelo menos cinco meses (!) antes que fosse descoberta. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O bug “Heartbleed”: um escândalo! O grande problema foi que várias Autoridades Certificadoras renomadas, como Certisign e Verisign usam o OpenSSL, e portanto, seus certificados digitais ficaram todos comprometidos. Isso significa dizer que também a segurança de inúmeros websites críticos também ficou comprometida: não apenas as das grandes corporações da Internet (Google, Microsoft, Facebook, Twitter, etc.), mas bancos, instituições financeiras em geral, sites governamentais, militares, etc., etc. etc... Saiba mais: http://heartbleed.com/ André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O bug “Heartbleed”: um escândalo! As consequências foram quase catastróficas, e isso levantou uma série de questões sobre a real privacidade dos dados na Internet: Estamos realmente seguros? Que bugs ainda não foram descobertos, mas que já estão sendo explorados? Ainda hoje os efeitos do bug Heartbleed repercutem nas discussões de segurança. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES O bug “Heartbleed”: um escândalo! Maciça operação destinada a infectar 500 mil computadores, e 25 mil servidores dedicados — todos eles de arquitetura Unix (Linux, BSD e OS X). A “operação” é descoberta em setembro de 2013, e tornada pública em março de 2014. Estudos apontam que essa operação já estava em curso desde setembro de 2011. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Operação “Windigo” A operação também atingiu máquinas rodando Windows,caso o sistema operacional estivesse executando o Cygwin. Cygwin é uma grande coleção de ferramentas GNU open source que proveem funcionalidades similares às distribuições Linux no Windows. Trata-se de uma .dll (cygwin1.dll) que fornece substanciais funcionalidades do API POSIX. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Operação “Windigo” Trojans usados na “Operação”: 1. Linux/Ebury— backdoor OpenSSH, usado para controlar os servidores e furtar credenciais (“escalada de privilégio”); 2. Linux/Cdorked — backdoor HTTP usado para redirecionar tráfego web; 3. Linux/Onimiki — backdoor que modificava servidores DNS, usando-os para resolver endereços IP arbitrários; 4. Perl/Calfbot — script em Perl usado para enviar spam. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Operação “Windigo” Não utilizava nenhuma vulnerabilidade nova nos sistemas Unix/Linux. Aproveitava-se de fraquezas sistêmicas já conhecidas. Fontes: RELATÓRIO COMPLETO E DETALHADO: http://www.welivesecurity.com/wp-content/uploads/2014/03/operation_windigo.pdf ARTIGO: http://thehackernews.com/2014/03/operation-windigo-linux-malware.html André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Operação “Windigo” RESUMO DA ÓPERA (RECOMENDAÇÕES): • Não basta confiar na “segurança” do sistema. O administrador deve fazer configurações realmente seguras (os chamados “hardenings”); • As atualizações de sistema e de aplicativos devem ser feitas sempre! (Não existe o conceito “configure-e-esqueça”!); • Utilize um dos mecanismos de segurança existentes (AppArmor, GRSecurity, SELinux, etc.) André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Segurança no Linux INTRODUÇÃO AO LINUX LICENÇAS: DIFERENCIANDO “FREEWARE” DE “OPEN SOURCE” André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Comecemos do princípio: primeiro, vamos entender o significado da palavra inglesa “free”... “FREE”, em inglês, tanto significa “grátis”, como também significa “livre”. Pode ser usado para referenciar um produto que é gratuito (“free beer” – cerveja grátis), como também pode ser usado para referenciar um estado ou condição (“I am a free person” – eu sou uma pessoa livre). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Quando Richard Stallman criou o Projeto GNU em 1984, o objetivo era criar um sistema operacional totalmente livre, que qualquer pessoa teria o direito de usar, modificar e redistribuir — e não apenas o software, mas também o seu código-fonte. Em função disso, em 1985 Stallman criou o “Free Software Foundation” (Fundação do Software Livre — ou, simplesmente, FSF), com o objetivo de divulgar essa ideia. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Em concordância à filosofia proposta por Stallman, a FSF orienta os desenvolvedores de softwares livres a não usarem o termo “freeware”, e sim “free software”. Para a FSF, a palavra “free” deve ser entendida pelos 2 significados (“grátis” e “livre”), mas o termo “freeware” é entendido apenas como grátis, e não como “livre”, e por isso não deve ser usado para designar softwares que pretendam ser considerados “livres”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Todo software livre, obrigatoriamente, deve ser distribuído junto com o código-fonte — ou então, o código-fonte deve estar fácil e livremente disponível para obtenção. Aquele que deseja desenvolver um software livre não deve, de forma alguma, cobrar qualquer forma de pagamento ou compensação pela obtenção do código-fonte. Se, por exemplo, o código-fonte estiver disponível para download, não se deve exigir registro, cadastro em website, ou qualquer forma de condição para esse download. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Richard Stallman O software livre se baseia em 4 liberdades fundamentais: André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... 1. Liberdade Nº 0: A liberdade de executar o programa, para qualquer propósito; 2. Liberdade Nº 1: A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades. O acesso ao código-fonte é um pré- requisito para esta liberdade; 3. Liberdade Nº 2: A liberdade de redistribuir cópias de modo que se possa ajudar ao seu próximo; 4. Liberdade Nº 3: A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles. O acesso ao código-fonte é um pré-requisito para esta liberdade. Segundo a FSF, um software livre... • ... não pode ter o seu código apropriado/fechado por ninguém, de modo que se impeça o acesso de outros; • ... pode ser modificado e a licença dessa modificação vendida, desde que o código-fonte original permaneça disponível para outras pessoas; • ... pode estar agregado a serviços e produtos cobrados, como suporte técnico, módulos adicionais, etc. — desde que se respeitem as liberdades fundamentais. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... No entendimento da FSF um software é considerado “free” ou “non-free”. Softwares “free”, já sabemos, são aqueles livres e grátis. Já os softwares “non-free”, segundo o entendimento da FSF, são aqueles que não são livres! Mesmo que os softwares em questão sejam gratuitos, o conceito de “non- free” refere-se àqueles que possuem o código fechado (proprietários). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Como consequência dessas ideias, a FSF criou e disponibiliza as chamadas licenças “GNU GPL” — GNU General Public License, que são licenças públicas, que estabelecem as condições de licenciamento dos chamados “softwares livres”. A licença GPL já se encontra na versão 3, sendo referenciada como “GPLv3”. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... Há, ainda, outras licenças, a saber: • GNU AGPL — GNU Affero General Public License • GNU LGPL — GNU Lesser General Public License • GNU FDL — GNU Free Documentation License • GNU APL— GNU All-Permissive License André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... GNU AGPL (“Affero”): Licença destinada a softwares que são executados via rede, trocando dados com programas proprietários. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... GNU LGPL (“Lesser”): Licença destinada a softwares que precisam usar/carregar/se relacionar com módulos (softwares) proprietários. É compatível com a licença GNU GPL, mas menos “radical”, uma vez que a GPL impõe sérias restrições ao uso dos/relacionamento com os chamados softwares “non-free” (“não- livres”). André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... GNU FDL (Documentation): Licença destinada à documentações em geral: manuais, guias de usuário, etc. André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES Freeware? Open source?... GNU APL (“All-Permissive”): Licença destinada à arquivos “README”
Compartilhar