Skip to content

GUIA install anexo2

Peter edited this page May 28, 2020 · 5 revisions

Firewall

....

SSH

Secure Shell para conectar ao servidor através de terminal Unix. Requer os dois lados com aplicações devidamente configuradas: “server SSH” e “client SSH”. Para client em ambiente Windows, ver também Moba. A conexão segura pode ser realizada através de login (user e senha) ou, mais seguro e menos burocrático, através do registro de chaves.

Configuração de Timeout de conexões inativas

Editar o arquivo /etc/ssh/sshd_config e configurar os parâmetros abaixo

# parâmetro para definir o intervalo para enviar pacotes para não perder a conexão com o cliente SSH, foi configurado a 240s
ServerAliveInterval 240

# Contagem total de pacotes de inatividade a serem enviados ao cliente, o valor  é multiplicado pelo intervalo acima para definir o tempo máximo da conexão no exemplo 2x240s = 480s = 8min
ServerAliveCountMax 2

# Parâmetro para manter a conexão ativa, caso não esteja definido, ainda que os parâmetros anteriores estejam definidos, não manterá a conexão ativa
TCPKeepAlive yes

(verificar com grep -i alive /etc/ssh/sshd_config) = ?? cadê ServerAliveInterval??

Túnel SSH para redirecionamento de portas

O SSH permite o acesso externo de serviços internos a usuários conectados por meio de redirecionamento de portas no cliente, o comando é o abaixo ssh -L <listen_port>:<host_tolisten>:<origin_remote_port> <user>@<host>

Exemplo: para que um usuário (nome de usuário: john) tenha acesso ao mysql (porta 3306) que está configurado no servidor com endereço 122.100.0.2, o usuário precisaria digitar o comando em um terminal:

ssh -L 1000:localhost:3306 john@122.100.0.2

Com o comando acima, o usuário conseguiria acessar o mysql no endereço local 127.0.0.1:1000 (desde que previamente registrado no SSH ou sempre livre? e o firewall?)

Comando para acessar PostgreSQL externo no PC local ssh -L 5432:localhost:5432 user@server (pede senha? precisa key?)

Configuração Passwordless

Criação de chaves.. ?Indicar como proceder nos lados server e client.

Fail2Ban

Ver https://www.fail2ban.org

Instalação

# Se necessário ativar o repositório onde o pacote se encontra
# sudo add-apt-repository universe

# Instala o fail2ban
sudo apt update
sudo apt install fail2ban

# Habilitar o serviço para início automático e iniciar, preferindo comando “service”
sudo service fail2ban status

sudo systemctl enable fail2ban
# sudo systemctl start fail2ban
sudo service fail2ban start

sudo service fail2ban status

Configuração e backups

(conferir migração ida e volta pro git)

Copiar arquivos de configuração

# Criar fail2ban.local, que será usado ao invés do fail2ban.conf
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
  
# Fazer o mesmo com o jail.conf
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Configuração mínima para funcionamento a ser definida na seção DEFAULT

[DEFAULT] 
# ip range que ignorado pelas políticas do fail2ban
ignoreip = 192.168.56.2/24
# tempo em segundos em quem um ip ficará bloqueado
bantime  = 21600
# intervalo de máximo para aplicação que punição por eventos malsucedidos
findtime  = 300
# máximo de tentativas durante o intervalo anterior
maxretry = 3
banaction = iptables-multiport
backend = systemd

Serviços a serem monitorados

O Fail2ban permite a monitoração de vários serviços, mas é necessários configurar na seção respectiva, por exemplo para habilitar o monitoramento do SSH é necessário definir o parâmetro enabled=true

[sshd] 
enabled = true

Também é possível redefinir os parâmetros definidos na seção DEFAULT acrescentando-os dentro da seção.

Obter informações do fail2ban

# mostra o status do serviço
sudo fail2ban-client status

# Mostra o log do jail do SSH (mostra o total de ips banidos e também os lista)
sudo fail2ban-client status sshd

# monitorar o log
sudo tail -f /var/log/fail2ban.log


# monitorar o status fail2ban
sudo journalctl -b -u fail2ban

PostgreSQL

Antes de configurar

Os arquivos de configuração do PostgreSQL possuem como proprietário o usuário postgres, sendo assim, qualquer arquivo de configuração dele devem ser feitos por esse usuário e não pelo root.

Para definir o usuário atual como postgres é necessário executar os comandos:

# muda o usuário para o root
sudo su

# muda para o usuário postgres
su postgres

Configuração

Configurar o PostgreSQL para rodar localmente

Abrir o arquivo /etc/postgresql/12/main/postgresql.conf e alterar o parâmetro listen_address.

listen_addresses = '*'

para

listen_addresses = '127.0.0.1'

Autenticação PostgreSQL direta Baseada no Host (PasswordLess)

1 - Modificar o pg_hba (host based authentication):

abrir o arquivo /etc/postgresql/10/main/pg_hba.conf

1.1 Modificar a linha:

Database administrative login by Unix domain socket

local all postgres peer

para

Database administrative login by Unix domain socket

local all postgres peer map=superuser

1.2 Modificar a linha

IPv4 local connections:

host all all 127.0.0.1/32 md5

para

IPv4 local connections:

host all all 127.0.0.1/32 trust

2 - Modificando /etc/postgresql/10/main/pg_ident.conf

abaixo da linha:

MAPNAME SYSTEM-USERNAME PG-USERNAME

foi adicionada configuração para o usuário

MAPNAME SYSTEM-USERNAME PG-USERNAME

superuser postgres superuser root postgres superuser postgres postgres

3 - Exportar o usuário postgres na variável de ambiente

Adicionar a linha abaixo ao final do arquivo .bashrc

export PGUSER=postgres

e carregar usando source .bashrc ou exportar na linha de comando

4 - Reiniciar o serviço do PostgreSQL

service postgresql restart

Criação de usuário e permissões

Os comandos a seguir devem ser executados no psql.

comando para criar um super usuário

CREATE ROLE user1 SUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN ENCRYPTED PASSWORD 'senhadousuario’;

permissão para que o usuário user1 se conecte ao banco1

GRANT CONNECT ON DATABASE banco1 TO user1;

concede todas as permissões de acesso do banco1 ao usuário user1

GRANT ALL ON DATABASE banco1 TO user1;

alterar o proprietário de um banco

ALTER DATABASE banco1 OWNER TO user1;

Clone this wiki locally