Skip to content

Latest commit

 

History

History
159 lines (106 loc) · 9.25 KB

README-ptbr.md

File metadata and controls

159 lines (106 loc) · 9.25 KB

Born2beRoot - @42sp

ℹ️ Setup de um servidor Debian GNU/Linux em uma VM e mais alguns scripts úteis.

110/100 ✔️

Índice

O que é Born2beRoot?

O quarto projeto no Instituto 42. Consiste em configurar o seu primeiro servidor seguindo algumas regras específicas, desenvolver um script que mostra informações relevantes do sistema e submeter no repositório git da 42 somente um arquivo signature.txt contendo a assinatura do Disco Virtual (vdi) da VM.

📑 As Regras:

🔹 Crie pelo menos 2 partições encriptadas usando LVM.

🔹 O hostname da sua máquina virtual deve ser acesar-l42 e você deve modificar esse hostname durante uma avaliação por pares.

🔹 Além do usuário root, um usuário com nome acesar-l deve estar presente e pertencer aos grupos user42 e sudo.

🔹 Implemente uma dura política de senhas, que consiste em:

A senha deve expirar a cada 30 dias.

O mínimo de dias permitidos antes da mudança de uma senha deve ser configurado para 2.

O usuário deve receber uma mensagem de alerta 7 dias antes da sua senha expirar.

A senha deve ter pelo menos 10 caracteres. Deve conter uma letra maiúscula e um número.
Também, não deve conter mais que 3 caracteres idênticos repetidos.

A senha não deve conter o nome do usuário.

A regra a seguir não se aplica a senha do root: A senha deve conter pelo menos 7 caracteres que não
são parte da senha atual.

Obviamente, sua senha do root deve cumprir com essa política.

🔹 Instale e configure o sudo seguindo regras rígidas:

Autenticação usando o sudo deve ser limitada a 3 tentativas na ocorrência de uma senha incorreta.

Uma mensagem customizada, de sua escolha, deve ser exibida no caso de um erro de
senha quando usando sudo.

Cada comando usando o sudo deve ser arquivado, tanto input quanto output. O arquivo log
deve ser salvo na pasta /var/log/sudo/.

Por razões de segurança o modo TTY deve estar ativado.

Por razões de segurança também, os caminhos que podem ser usados pelo sudo devem ser restritos.

Como funciona?

Para o momento de fazer o setup do servidor (Após a instalação da VM e do servidor Debian nela), fiz questão de criar alguns scripts para facilitar bastante o processo - sinta-se livre para alterar segundo sua necessidade.

Scripts

Os dividi em 4 categorias:

Setup Scripts - Feitos para ser usados apenas uma vez, durante a configuração (do firewall ou servidor ssh, por exemplo). Eles trocam algumas configurações padrão por outras definidas no script, então se tentar utilizar novamente eles podem simplesmente não fazer nada, adicionar um texto extra desnecessário ou trocar uma configuração que não era a pretendida.

Useful Scripts - Scripts que podem ser reutilizados e usados no dia a dia de um servidor. Coisas como mudar o hostname ou mostrar como se conectar com a máquina via SSH.

monitoring.sh - Script pedido pelo subject, deve mostrar algumas informações relevantes do sistema a cada 10 minutos em todos os terminais.

Evaluation Scripts - Scripts que facilitam o trabalho do avaliador do projeto na 42, mostrando algumas configurações do servidor e os requisitos do sujetct.

Scripts de Setup

install_packages.sh - Instala todos os pacotes necessários para os outros scripts e para as outras ações requeridas pelo subject.

set_firewall.sh - Configura o firewall UFW (uncomplicated firewall), libera a porta 4242(requerido pelo subject) e mostra seu status.

set_loginuser.sh - Cria, caso necessário, o usuário com o login da intra e o adiciona aos grupos sudo e user42(caso não esteja presente é criado) e ainda aplica parte da política de senhas ao usuário.

set_passwdpolicy.sh - Aplica a política de senhas requerida pelo subject, mas parte dela apenas para novos usuários. Para atualizar um usuário criado antes para também estar sob essa política basta rodar o comando:

sudo passwd -n 2 -x 30 -w 7 ${OLD_USER}

set_sshserver.sh - Configura o servidor SSH e mostra como conectar via outra máquina.

complete_setup.sh - Roda todos os scripts necessários para o setup(acima).

Useful Scripts

set_newuser.sh - Cria um novo usuário, o coloca no grupo escolhido (caso não esteja presente é criado) e ainda aplica parte da política de senhas ao usuário. O script deve ser executado seguido do nome do novo usuário e do grupo. Por exemplo:

./set_newuser.sh becker familia_becker
Em que becker é o novo usuário e familia_becker o grupo a qual ele vai ser adicionado.

Faz algumas verificações para checar se o grupo ou o usuário já existem. Funciona também apenas com o argumento do usuário.

hostname.sh - Redefine o hostname do servidor. Deve ser rodado seguido do novo hostname

./hostname.sh becker

ssh_connect.sh - Mostra o comando necessário para uma conexão SSH com seu servidor

monitoring.sh

42 Cursus

A 42 é uma iniciativa educacional global que propõe uma nova forma de aprender tecnologia: sem professores, sem salas de aula, estudantes aprendendo com seus colegas estudantes (Aprendizado peer to peer), com uma metodologia que desenvolve habilidades de computação e da vida. Sem mencionar que é completamente gratuita e aberta para todos, sem pré-requisitos.

As admissões na 42 são diferentes de outras escolas. Usamos um processo de admissão baseado em mérito. O passo final no processo é a Piscina - parte parte do processo seletivo que requer 4 semanas de código intenso e imersivo. Não é necessário experiência anterior em programação.

Você pode conferir mais sobre o processo de admissão no site da 42sp: https://www.42sp.org.br

ou no meu repositório do github: 42 Piscine

Para ver outros projetos da 42 desenvolvidos por mim, clique aqui: 42 Cursus

Autor

Augusto Becker | acesar-l | 🇧🇷👨‍🚀

👋 Fale comigo: