Slackjeff Wiki

Bits que significam

Ferramentas do usuário

Ferramentas do site


ergod:install

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
ergod:install [2021/10/12 12:42] asadeltaergod:install [2021/10/16 18:48] (atual) – edição externa 127.0.0.1
Linha 99: Linha 99:
     name: **slackjeff.com.br**     name: **slackjeff.com.br**
 </code> </code>
 +
 +===== Segurança =====
 +O primeiro passo é limitar a quantidade de conexões por IP. Limite a um número baixo variando entre 2 e 4 conexões simultâneas. Isso vai ajudar a proteger em casao de ataque DoS.
 +
 +<code>
 +# maximum concurrent connections per IP/CIDR
 +max-concurrent-connections: **2**
 +</code>
 +
 +O IRC mostra o ip de usuários na rede, você pode ver o mesmo com o comando /whois Usuario por exemplo, ou ao entrar e sair. Para dar mais privacidade aos usuários o ergo define por padrão o Cloaking. Ou seja ao invés de mostrar o ip do usuário mostrará algo "falso" no lugar ficando: //exemplo@12349198897NOMErede//.
 +
 +Para alterar o nome de Cloaking procure pela linha netname e altere para o nome que quiser.
 +
 +<code>
 +# fake TLD at the end of the hostname, e.g., pwbs2ui4377257x8.irc
 +# you may want to use your network name here
 +netname: "irc"
 +</code>
 +
 +Eu alterei para slackjeffHONOR
 +
 +<code>
 +# fake TLD at the end of the hostname, e.g., pwbs2ui4377257x8.irc
 +# you may want to use your network name here
 +netname: "slackjeffHONOR"
 +</code>
 +
 +Vamos agora definir a senha do Operador (OPER). Feche e salve o documento com editor de texto e execute o comando ergo.
 +
 +<code>
 +./ergo genpasswd
 +</code>
 +
 +Vai ser gerado uma hash por exemplo: $2a$04$c4nA4uEf2NzmaJJEIan0HO4sgRRXhFJ/3ichSJ4bRrDoXxlQfMS4y
 +Esta hash você precisa guardar para alterar no documento a seguir.
 +
 +Feito o processo localize a linha # ircd operators e troca a linha password O hash foi gerado anteriormente com o comando
 +
 +<code>
 +./ergo genpasswd.
 +password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234"
 +</code>
 +
 +Por padrão as mensagens em geral do IRC não são gravadas em arquivos mas ficam disponiveis (de uma forma não persistente) na memória RAM do servidor/máquina até o reboot. Esta opção vem habilitada, por questões de privacidade é interessante desabilitar.
 +
 +Afinal as mensagems se o usuário desejar devem ser armazenadas no computador do mesmo e não no servidor. Altere a linha: enabled: true para: enabled: false
 +
 +<code>
 +history:
 +    # should we store messages for later playback?
 +    # by default, messages are stored in RAM only; they do not persist
 +    # across server restarts. however, you may want to understand how message
 +    # history interacts with the GDPR and/or any data privacy laws that apply
 +    # in your country and the countries of your users.
 +    enabled: false
 +</code>    
 +
 +===== Criação de certificados =====
 +
 +Hoje é normal se conectar na porta 6697 que indica que a conexão é criptografada nos servidores IRC. Antigamente utilizava a porta 6667 (até hoje em dia se utilizada) é uma porta que não está criptografada. Normalmente utilizamos criptografia na conexão de entrada e saida impedindo bisbilhoteiros de snifar o trafego do usuário.
 +
 +Esta opção já está habilitada por padrão e você deve apenas gerar o certificado! O certificado será auto assinado, ou seja o usuário a se conectar terá uma mensagem dizendo que o certificado pode não ser seguro justamento por ser auto assinado por você.
 +
 +Esta mensagem é apenas um aviso e se o certificado ser gerado corretamente terá criptografia na conexão.
 +
 +Para gerar o certificado rode o comando ergo!
 +
 +<code>
 +./ergo mkcerts
 +</code>
 +
 +Você deve ter uma saida parecida com esta:
 +
 +<code>
 +$ ./ergo mkcerts
 +2021/09/21 22:07:21 making self-signed certificates
 +2021/09/21 22:07:21  making cert for :6697 listener
 +2021/09/21 22:07:21   Certificate created at fullchain.pem : privkey.pem
 +</code>
 +
 +<note>
 +Caso você queira gerar um certificado com Let's Encrypt você pode utilizar o certbot para isso. É a maneira mais fácil. Certifique-se de ter o certbot instalado na sua distribuição GNU/Linux. Após a instalação o processo é feito da seguinte forma:
 +Para esta operação você precisa se logar como usuário root para ter acesso a estes arquivos!
 +</note
 +
 +<code>
 +# certbot certonly --standalone --preferred-challenges http -d exemplo.com.br
 +Troque o dominio exemplo.com.br pelo seu dominio.
 +</code>
 +
 +O certificado se gerado será encontrado no diretório /etc/letsencrypt/live/exemplo.com.br copie o certificado fullchain.pem e sua chave privada privkey.pem para o diretório do servidor do ergo. Em nosso caso: /home/ergo/server/ .
 +
 +<code>
 +# cp -v /etc/letsencrypt/live/exemplo.com.br/fullchain.pem /home/ergo/server/
 +# cp -v etc/letsencrypt/live/example.com/privkey.pem /home/ergo/server/
 +</code>
 +
 +Ambos certificados precisam ter como dono/grupo o usuário ergo.
 +
 +<code>
 +# chown ergo:ergo /home/ergo/server/*.pem
 +</code>
 +
 +O certificado expira a cada 3 meses. Você pode fazer um script em Shell para a cada 1 mês por exemplo renovar o certificado, não se esqueça que você deve copiar o certificado e chave pública para o diretório do ergo /home/ergo/server/
 +
 +===== Iniciando servidor IRC como serviço com systemd. =====
 +
 +Para as coisas ficarem mais profissionais é interessante criarmos um daemon. Com o systemd é simples, primeiramente vamos criar um script em shell para executar o ergo! Isto deve ser feito no diretório do ergo: /home/ergo/server. Vamos tambem dar a permissão de execução para este script.
 +
 +<code>
 +$ cat << EOF > start.sh
 +#!/bin/bash
 +./ergo run
 +EOF
 +</code>
 +
 +<code>
 +$ chmod +x start.sh
 +</code>
 +
 +Vamos agora criar o serviço ergo.service.
 +
 +<code>
 +$ cat << EOF > ergo.service
 +[Unit]
 +Description=Ergo IRC server
 +After=network.target
 +# If you are using MySQL for history storage, comment out the above line
 +# and uncomment these two instead (you must independently install and configure
 +# MySQL for your system):
 +# Wants=mysql.service
 +# After=network.target mysql.service
 +
 +[Service]
 +Type=simple
 +User=ergo
 +WorkingDirectory=/home/ergo/server
 +ExecStart=/home/ergo/server/start.sh
 +ExecReload=/bin/kill -HUP $MAINPID
 +Restart=on-failure
 +LimitNOFILE=1048576
 +# Uncomment this for a hidden service:
 +# PrivateNetwork=true
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +EOF
 +</code>
 +
 +Vamos agorar instalar e habilitar o serviço para o systemd conseguir "enxergar". Para isso você deve estar logado como root.
 +
 +<code>
 +# ln -s /home/ergo/server/ergo.service /etc/systemd/system/ergo.service
 +# systemctl enable ergo
 +# systemctl start ergo
 +</code>
 +
  
ergod/install.1634053327.txt.gz · Última modificação: 2021/10/16 18:48 (edição externa)