- Criar uma máquina virtual utilizando um hypervisor tipo 2
- Configurar um sistema operacional (linux) com algumas restrições
A [máquina virtual], ou VM, é um ambiente virtual que funciona como um sistema de computação com sua própria CPU, memória, interface de rede e armazenamento. Esse sistema virtual é criado a partir de um sistema de hardware físico.
Uma máquina virtual é definida como “uma duplicata eficiente e isolada de uma máquina real”. Em uma máquina real, uma camada de software de baixo nível (por exemplo, a BIOS dos sistemas PC) fornece acesso aos vários recursos do hardware para o sistema operacional, que os disponibiliza de forma abstrata às aplicações.
Um software chamado de [hypervisor] separa do hardware os recursos utilizados pela máquina virtual e os provisiona adequadamente.
Um exemplo de de hypervisor popular é o VirtualBox. Este software cuida de alocar partes de sua CPU, RAM, armazenamento e outros componentes para que uma máquina virtual possa usá-las.
O hipervisor tipo 2 nada mais é do que um programa (mais especificamente um ambiente de virtualização) que roda no sistema instalado no hardware como se fosse um processo deste SO e permite a criação de máquinas virtuais, onde poderão ser instaladas várias instâncias de sistemas virtualizados. Neste caso o sistema operacional que recebe o hipervisor tipo 2 é chamado de sistema operacional hospedeiro, enquanto aquele que é instalado nas máquinas virtuais é chamado de sistema hóspede (ALVES, 2010).
O sistema escolhido para execução deste exercicio, foi o [Debian] 11 stable, e o hypervisor utilizado foi o [VirtualBox].
adduser <username> #Adicionar usuario
usermod -aG <groupname> <username> #Adicionar usuario a um grupo
groups <username> #Verificar grupos de determinado usuario
groupadd <groupname> #Adicionar novogrupo
hostnamectl status #Mostrar o hostname
hostnamectl set-hostname <new-hostname> #Alterar hostname
passwd <username> #Trocar senha
Para visualizar a tabela de partições utilize o comando:
lsblk
Utilizando o LVM foi criado a seguinte estrutura de partições.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30.8G 0 disk
├─sda1 8:1 0 476M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 30.3G 0 part
└─sda5_crypt 254:0 0 30.3G 0 crypt
├─LVMGroup-root 254:1 0 9.3G 0 lvm /
├─LVMGroup-swap 254:2 0 2.2G 0 lvm [SWAP]
├─LVMGroup-home 254:3 0 4.8G 0 lvm /home
├─LVMGroup-var 254:4 0 2.9G 0 lvm /var
├─LVMGroup-srv 254:5 0 2.9G 0 lvm /srv
├─LVMGroup-tmp 254:6 0 2.9G 0 lvm /tmp
└─LVMGroup-var--log 254:7 0 5.5G 0 lvm /var/log
As operações de gestão de pacotes baseadas em repositório no sistema Debian podem ser executas por muitas ferramentas de gestão de pacotes baseadas no APT e disponíveis no sistema Debian. Para as operações de gestão de pacotes que envolvam a instalação ou atualização de meta-dados do pacote, necessita de ter privilégios de root.
Para este projeto a lista de pacotes abaixo foi adicionada ao /etc/apt/sources.list
.
deb http://ftp.debian.org/debian stable main contrib non-free
Com a placa de rede configurada como "bridge" no hypervisor execute o seguinte commando para desabilitar o dhcp e manter o ip como estático.
Comando para instalar o net-tools
apt install net-tools
Após instalar o net-tools adicione as linhas abaixo ao arquivo /etc/network/interfaces
.
*exemplo utilizando a minha rede local!
iface ... inet static
address "192.168.1.102"
gateway "192.168.1.1"
netmask "255.255.255.0"
Apt ou Advanced Packaging Tool é um software de código aberto e gratuito que lida com a instalação e remoção de software.
Sempre que invocado a partir da linha de comando junto com a especificação do nome do pacote a ser instalado, ele encontra esse pacote na lista configurada de fontes especificadas em '/etc/apt/sources.list' junto com a lista de dependências para aquele pacote e os classifica e os instala automaticamente junto com o pacote atual, permitindo que o usuário não se preocupe em instalar dependências.
É altamente flexível, permitindo ao usuário controlar várias configurações facilmente, como: adicionar qualquer nova fonte para pesquisar pacotes, apt-pinning, ou seja, marcar qualquer pacote indisponível durante a atualização do sistema, tornando assim sua versão atual a sua versão final instalada, "inteligente" atualizar, ou seja, atualizar os pacotes mais importantes e deixar os menos importantes (Linux Console, 2021).
Aptitude é um front-end criado pela equipe do Debian, para uma ferramenta de empacotamento avançada que adiciona uma interface de usuário à funcionalidade, permitindo ao usuário pesquisar interativamente por um pacote e instalá-lo ou removê-lo. Além da principal diferença ser que o Aptitude é um gerenciador de pacotes de alto nível, enquanto o APT é um gerenciador de pacotes de nível inferior que pode ser usado por outros gerenciadores de pacotes de nível superior. A diferença mais óbvia é que aptitudefornece uma interface de menu de terminal (semelhante ao Synaptic em um terminal), enquanto apt não fornece.
Para instalar o aptitude utilize o comando:
apt install aptitude
AppArmor é um sistema de Controle de Acesso Mandatório (MAC - Mandatory Access Control) construído sobre a interface LSM (Linux Security Modules) do Linux. Na prática, o kernel consulta o AppArmor antes de cada chamada do sistema para saber se o processo está autorizado a fazer a operação dada. Através desse mecanismo, o AppArmor confina programas a um conjunto limitado de recursos. É semelhante ao SELinux, usado por padrão no Fedora e no Red Hat. Embora funcionem de forma diferente, o AppArmor e o SELinux fornecem segurança de “controle de acesso obrigatório” (MAC). Na verdade, o AppArmor permite que os desenvolvedores do Debian restrinjam as ações que os processos podem realizar.
Para instalar o AppArmor utilize o comando:
aptitude install apparmor
Para habilitar o AppArmor utilize o comando:
aa-status
systemctl enable apparmor
Para instalar e habilitar o ufw utilize os comandos:
aptitude install ufw
systemctl enable ufw
O UFW, ou Uncomplicated Firewall, é uma interface de gerenciamento simplificado de firewall que esconde a complexidade das tecnologias de filtragem de pacotes de baixo nível, como iptables e nftables.
Para adicionar uma nova porta utilize o comando:
ufw allow "porta"
systemctl enable ufw
Para habilitar o ufw ao iniciar o sistema:
systemctl enable ufw
O SSH é um protocolo que garante que cliente e servidor remoto troquem informações de maneira segura e dinâmica. O processo é capaz de criptografar os arquivos enviados ao diretório do servidor, garantindo que alterações e o envio de dados sejam realizados da melhor forma.
O protocolo SSH é um dos parâmetros de trabalho que garantem que as informações estarão devidamente protegidas.
SSH é uma sigla, ou acrônimo, para o termo secure shell, que significa cápsula segura. Na prática, o protocolo SSH é um mecanismo de segurança oferecido pelos serviços de hospedagem.
A função dele é garantir que haja uma conexão segura entre o computador e o servidor remoto, o que garante a transferência de dados sem nenhuma perda de informação.
O SSH tem a função de permitir aos usuários e desenvolvedores realizarem qualquer modificação em sites e servidores utilizando uma conexão simples.
Para instalar o ssh utilize os comandos:
aptitude install openssh-server
aptitude install openssh-client
systemctl start sshd
systemctl enable sshd
Para configuração do ssh adicione as linhas abaixo ao arquivo /etc/ssh/sshd_config
.
Port 4242
PermitRootLogin no
Após editar o arquivo execute systemctl restart sshd
para atualizar as configurações do ssh.
Para conectar a VM utilizando o ssh execute o comando abaixo utilizando suas configurações de rede e usuário.
No meu caso o comando foi:
ssh anhigo-s@192.168.1.100 -p 4242
Este comando permite executar um comando como se fosse o superusuário (root) ou um outro usuário.
Algumas opções do comando:
- -h exibe as opções do comando.
- -l lista os comandos permitidos (e os comandos proibidos) para o usuário no ambiente de trabalho atual.
- -u usuário : o sudo executa o comando com os privilégios do usuário especificado.
- -V : fornece informações sobre o comando.
No debian o sudo não vêm instalado no sistema, para instalar execute o comando abaixo:
aptitude install sudo
Após a instalação execute os comandos abaixo para criar a pasta onde serão armazenados os arquivos e diretórios de log e o softlink necessário para executar o sudoreplay.
mkdir /var/log/sudo
ln -s /var/log/sudo /var/log/sudo-io
Para configurar o sudo conforme os parâmetros do exercício, execute o comando visudo
e adicione as linhas abaixo ao arquivo.
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Defaults requiretty
Defaults passwd_tries=3
Defaults badpass_message="Bad password, You shall no pass"
Defaults logfile=/var/log/sudo/sudo.log
Defaults log_input, log_output
Defaults log_year
Defaults iolog_dir=/var/log/sudo
Política de senhas corporativas envolve regras que devem ser seguidas por todos os usuários, além de garantir que uma equipe seja responsável por realizar o monitoramento de todos os acessos.
Ela ainda visa assegurar que critérios mínimos de segurança durante o acesso aos sistemas e dispositivos corporativos sejam seguidos.
Neste exercício a politica de senha foi:
- Expirar a cada 30 dias
- Número mínimo de 2 dias para alterar a senha.
- O usuário recebe uma mensagem de aviso 7 dias antes de sua senha expirar.
- A senha deve conter pelo menos 10 caracteres. A senha deve ter pelo menos uma letra maiúscula e um número.
- Não pode ter 3 caracteres consecutivos iguais.
- A senha não pode incluir o nome do usuário.
- Deve ter pelo menos 7 caracteres que não fazem parte da senha anterior (não se aplica ao root *difok).
Adicionar as seguintes linhas no arquivo /etc/login.defs
.
PASS_MAX_DAYS 30
PASS_MIN_DAYS 2
PASS_WARN_AGE 7
LOGIN_RETRIES 3
Adicionar as seguintes linhas no arquivo etc/security/pwquality.conf
.
difok = 7
minlen = 10
dcredit = -1
ucredit = -1
maxrepeat = 3
usercheck = 1
retry = 3
enforce_for_root