Como Instalar o Gitlab com Segurança (Um Tutorial)

Você decidiu que precisa começar a usar o GitLab para a gestão do seu projeto, mas não tem certeza de como instalar o GitLab de forma segura? Não apenas a instalação do GitLab é um processo complexo, mas se não for feito corretamente, seus dados podem estar em risco. Mas não se preocupe, você veio ao lugar certo!

Neste tutorial, você aprenderá todo o processo de instalação segura do GitLab, para que possa configurar a criptografia SSL e configurar o GitLab para um desempenho ideal.

Parece interessante? Vamos lá!

Pré-requisitos

Este tutorial será uma demonstração prática. Se você deseja acompanhar, certifique-se de ter o seguinte:

  • A Linux server with root access – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
  • A fully qualified domain name (FQDN) pointing to your server.
  • Let’s Encrypt instalado no servidor.
  • Requisitos mínimos – 8 GB de RAM, largura de banda de 50-100 Mb/s, processador de 2 GHz e 20 GB de espaço em disco.

Instalando o GitLab Community Edition

Agora que você tem um FQDN e seu servidor preparado, é hora de instalar o GitLab. Existem várias maneiras de instalar o GitLab, como usando o pacote Omnibus ou compilando a partir do código-fonte. Mas este tutorial se concentra na instalação do GitLab usando o repositório GitLab de seu desenvolvedor.

O GitLab vem em duas distribuições:

  • Edição Comunitária do GitLab (CE) – para usuários que preferem uma versão de código aberto e suportada pela comunidade do GitLab.
  • Edição Enterprise do GitLab (EE) – para usuários que necessitam dos recursos extras fornecidos pela Edição Enterprise do GitLab.

Mas esta demonstração utiliza a Edição Comunitária para testar a aplicação no seu ambiente de desenvolvimento.

1. Abra o seu terminal e execute o comando apt update abaixo para garantir que o seu sistema tenha acesso a todas as últimas atualizações de software.

O comando apt update atualiza os arquivos de índice de pacotes usados pelo utilitário apt para obter informações sobre os pacotes disponíveis.

sudo apt update -y
Updating your package index

2. Em seguida, execute o comando apt install abaixo para baixar (curl) e instalar as seguintes dependências necessárias para a instalação do seu GitLab:

  • pacote openssh-server – Contém o daemon do servidor OpenSSH e ferramentas relacionadas, como a ferramenta de gerenciamento de chaves de host e o servidor, para fornecer acesso de login remoto aos usuários.
  • O pacote ca-certificates – Contém uma lista de certificados CA. Este pacote fornece os arquivos necessários para habilitar o suporte HTTPS no seu servidor.
sudo apt install curl openssh-server ca-certificates -y
Installing the required dependencies

3. Execute o comando curl abaixo para baixar (curl) o script de instalação do GitLab (https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce). O comando então salva o script de instalação como um script shell (script.deb.sh) e o executa como superusuário (sudo bash).

sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

Assim que o comando curl for concluído, você receberá a seguinte saída.

Adding the GitLab repository to your system

4. Execute o comando apt-cache abaixo para verificar se você adicionou com sucesso o repositório do GitLab.

apt-cache policy docker-ce
Verifying if GitLab Repository Exists

5. Agora, execute novamente o comando apt update para atualizar a lista de pacotes disponíveis. Este comando garante que seu sistema usará o repositório do GitLab recém-adicionado quando você instalar o GitLab.

sudo apt update -y

6. Por fim, execute o comando apt install abaixo para instalar o GitLab (gitlab-ce) no seu sistema.

sudo apt install gitlab-ce -y
Installing GitLab

A instalação levará um tempo, mas você verá a seguinte saída quando a instalação estiver completa. Esta saída confirma que você agora instalou o GitLab com sucesso no seu sistema.

Getting the Welcome Page after Installing GitLab

Configurando sua Instalação do GitLab

Agora você tem o GitLab instalado no seu sistema, mas precisará fazer algumas alterações de configuração antes de usar o GitLab. O arquivo de configuração do GitLab (/etc/gitlab/gitlab.rb) contém as configurações globais para o GitLab que não são específicas do ambiente do seu servidor GitLab.

Você irá modificar o arquivo de configuração do GitLab para definir o nome de domínio FQDN e a conexão segura com seu domínio.

1. Abra o arquivo de configuração /etc/gitlab/gitlab.rb no seu editor de texto favorito.

Uma das entradas mais importantes no arquivo de configuração do GitLab é a diretiva external url, como mostrado abaixo. Essa diretiva permite que os usuários acessem o GitLab através de um navegador da web.

Altere o valor da diretiva external url de http://gitlab.example.com para https://gitlab.seudominio.com, onde seudominio.com é o nome de domínio FQDN.

Setting FQDN domain name in the external URL directive

2. Em seguida, navegue até a seção integração Let’s Encrypt localizada no final, e configure as diretivas conforme a seguir:

  • Descomente a diretiva letsencrypt['enable'] removendo o # precedente e altere o valor de nil para true. Essa diretiva informa ao GitLab para configurar automaticamente o HTTPS no seu servidor.
  • Descomente a diretiva letsencrypt['contact_emails'] removendo o # precedente, e coloque seu endereço de e-mail como valor. O Let’s Encrypt usará este endereço de e-mail para contatá-lo quando precisar renovar seu certificado SSL (a cada 90 dias).
  • Grave as alterações e saia do editor.
Configuring Let’s Encrypt Integration

3. Por último, execute o comando abaixo para reconfigurar e aplicar as alterações no arquivo de configuração do GitLab /etc/gitlab/gitlab.rb para o GitLab.

sudo gitlab-ctl reconfigure
Reconfiguring GitLab

Configurando seu Firewall para Conexões SSL

Agora que você configurou o GitLab, precisará configurar as regras do seu firewall para permitir conexões SSL e seguras com seu servidor. O Firewall Descomplicado (UFW) é o programa padrão para gerenciar regras de firewall no Ubuntu.

Se você colocou seu servidor atrás de um firewall, precisará abrir a porta HTTP 80 e a porta HTTPS 443 para conexões SSL.

Execute o seguinte comando para abrir as portas OpenSSH, HTTP e HTTPS para o seu servidor GitLab.

sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow http
Adding new firewall rule

Agora, execute o seguinte comando para verificar o status do seu firewall.

sudo ufw status 
Checking the status of your firewall

Protegendo o GitLab via Interface Web

Seu firewall está ativo, mas isso significa que seu GitLab está seguro? Adicionar camadas de segurança nunca é demais. Então você irá garantir ainda mais a segurança da sua instalação do GitLab via interface web.

1. Abra seu navegador favorito e acesse seu servidor GitLab. Por exemplo, http://gitlab.example.com, onde example.com é o nome de domínio FQDN.

Escolha entre o Chrome ou o Firefox ao acessar o seu servidor GitLab para uma melhor segurança. Esses navegadores da web utilizam seus próprios protocolos HTTP/HTTPS, que ajudam a aplicar políticas de segurança.

Abaixo, você pode ver a página de login do GitLab.

Accessing the GitLab Log in screen

2. Em seguida, clique no ícone do cadeado (canto superior esquerdo) ao lado da barra de endereço, e você verá o status da sua conexão. Esta demonstração mostra que a Conexão é segura, indicando que a conexão com o servidor é feita via HTTPS.

Checking your connection status

Volte ao seu terminal e execute o comando cat abaixo para obter a sua initial_root_password.

Por padrão, a instalação do GitLab vem com uma senha inicial de root gerada automaticamente.

 cat /etc/gitlab/initial_root_password

Copie e salve sua senha inicial de root em um local seguro. Você usará essa senha para fazer login no GitLab (passo quatro).

Getting your initial root password

4. Volte ao seu navegador da web, digite root como nome de usuário e insira sua senha inicial de root como senha. Clique em Entrar para fazer login no seu servidor GitLab.

Logging in to your GitLab server

Após fazer login no seu servidor GitLab, seu navegador será redirecionado para o painel do GitLab, conforme mostrado abaixo.

Viewing GitLab Dashboard

Adicionando uma Chave SSH à sua Conta do GitLab

Além da interface web, você também pode acessar o GitLab via ambiente de linha de comando de maneira segura. Como? Primeiro, você precisará adicionar uma chave SSH à sua conta, para poder acessar o GitLab executando um comando no seu terminal sem precisar digitar uma senha.

1. Execute o comando ssh-keygen para gerar um par de chaves SSH adequado para uso em conexões SSH. Quando solicitado, pressione a tecla Enter para manter o local de salvamento padrão para a chave SSH (/root/.ssh/id_rsa) e não adicione uma senha.

ssh-keygen
Generating an SSH keypair

2. Execute o comando cat abaixo para imprimir sua chave pública na tela, conforme mostrado abaixo. Copie toda a string da chave pública ssh-rsa e a salve em um local seguro. Você adicionará esta chave pública ao seu GitLab posteriormente (passo três).

 cat ~/.ssh/id_rsa.pub
Viewing the entire ssh-rsa public key string

3. Volte ao painel do GitLab no seu navegador para adicionar sua chave pública da seguinte maneira:

  • Clique no menu Chaves SSH no painel esquerdo da página de Configurações de Usuário para acessar a página Chaves SSH.
  • Cole a chave pública que você copiou (passo dois) no campo Chave, conforme mostrado abaixo.
  • Forneça o nome desejado para a chave no campo Título. Mas para esta demonstração, o nome está definido como ATAGitHub.
  • Clique em Adicionar Chave para finalizar a adição da chave pública à sua conta.
Adding SSH Keys

Desabilitando Inscrições Públicas

Para segurança adicional, você pode desativar as inscrições públicas no GitLab. Por quê? A funcionalidade de inscrições públicas no GitLab permite que qualquer pessoa crie uma conta no servidor GitLab. Desativar esse recurso evita ataques de força bruta em seu servidor.

1. A partir do painel do GitLab, clique em Menu -> Admin para acessar o painel de administração, em seguida, clique em Configurações para acessar a página de configurações Gerais do painel de administração (passo dois).

Viewing the GitLab Admin panel

2. Desative a opção Ativar inscrição na seção Restrições de inscrição. Fazendo isso, você desabilitará o recurso de inscrições públicas do GitLab.

Disabling GitLab Public Sign-ups

3. Role para baixo e clique em Salvar alterações (parte inferior) para salvar as alterações feitas nas configurações de restrição de inscrição.

Saving your changes

4. Finalmente, faça logout da sua conta e navegue até a tela de login do seu GitLab.

Como você pode ver abaixo, o link Registrar agora desapareceu.

Verifying if the Register now link is gone

Testando seu Servidor GitLab

Neste ponto, você já configurou e protegeu seu servidor GitLab, e isso é ótimo! Mas como você sabe se o seu servidor GitLab está realmente funcionando? Você testará seu servidor criando um projeto GitLab através do painel do GitLab e clonando o projeto para o seu servidor.

1. No painel do GitLab, clique no ícone de adição (+) ao lado da caixa de pesquisa, e depois clique em Novo projeto, conforme mostrado abaixo, para criar um novo projeto GitLab.

Adding New GitLab Project

2. Em seguida, forneça o nome do seu Projeto preferido, mas para esta demonstração, o nome do projeto é definido como ATA GitLab, e o Slug do Projeto é definido como (atagitlab).

Clique em Criar projeto para criar seu novo projeto.

Creating a new project

3. Volte ao seu terminal e execute os seguintes comandos para configurar seu nome de usuário global (--global user.name) e email (--global user.email) para o Git. Cada nome de usuário e email são globalmente únicos em todas as contas no servidor GitLab.

git config --global user.name "ATA"
git config --global user.email "[email protected]"

4. Agora, execute o comando git clone abaixo para clonar o projeto GitLab ATA que você criou (passo dois) para o seu diretório atual. Substitua yourdomain.com pelo seu FQDN.

git clone http://gitlab.yourdomain.com/root/ATA-GitLab.git

Se tudo correr bem, você verá uma saída semelhante à abaixo. Quando a clonagem estiver completa, você terá um novo diretório chamado ATA-GitLab.

Cloning the ATA GitLab project

5. Por fim, execute o comando ls para verificar se o diretório ATA-GitLab existe.

ls

Como você pode clonar o novo projeto GitLab ATA e o diretório GitLab ATA existe, a saída abaixo confirma que seu servidor GitLab está funcionando corretamente.

Listing new directory ATA-GitLab

Conclusão

Neste tutorial, você aprendeu como realizar uma instalação segura do GitLab em seu sistema Ubuntu Linux. Você se certificou de garantir seu servidor GitLab via interface web, adicionar chaves SSH à sua conta GitLab e testar se seu servidor GitLab funciona.

Com esse conhecimento recém-adquirido, talvez você queira aprender como configurar sistemas de Integração Contínua (CI) automatizados com GitLab?

Source:
https://adamtheautomator.com/install-gitlab/