Proteger um servidor baseado em Raspbian.

Princípios básicos para proteger um servidor baseado em Raspbian.

Logo depois de gravar o cartão SD, e admitindo o funcionamento headless

  • Colocar os seguintes ficheiros em /BOOT
    • ssh (ficheiro em branco com este nome, sem extensão)
    • wpa_supplicant.conf

Conteúdo de wpa_supplicant.conf

update_config=1
ctrl_interface=/var/run/wpa_supplicant

network={
 scan_ssid=1
 ssid="nome da rede"
 psk="pass"
}

Aquando do primeiro boot:

  • Aceder via SSH (user: pi; password. raspberry)
  • Configurar IP Fixo:

Para isso modificar o conteúdo do ficheiro /etc/dhcpcd.conf segundo o modelo (ajustar valores e comentários de acordo com necessidade):

######################################################
# Modelo: IP diferente para redes diferentes
#
#           O endereço arping deve ser o router
#           ou outra máquina disponível. É necessário
#           conhecer o endereço dos servidores Se nenhum. 
#           dos arpings encontrar um servidor activo então
#           o endereço será atribuído por DHCP.
######################################################
interface wlan0
arping 192.168.1.1
# arping xxx.xxx.x.xxx #colocar o IP de outros routers possiveis

profile 192.168.1.1
static ip_address=192.168.1.xxx/24 #o IP escolhido
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 

profile 192.168.0.254
static ip_address=192.168.0.44/24
static routers=192.168.0.254
static domain_name_servers=192.168.0.254

Fazer o upgrade e update:

sudo apt-get update 
sudo apt-get upgrade -y

Configurar Hostname e outras opções básicas:

sudo raspi-config 
  • Selecionar Hostname, mudar o nome de raspberrypi para xxxxxx
  • Modificar LOCALE e timezone no menu
  • Modificar distribuição da memória / expand filesystem

Modificar password do user actual (pi)

passwd

Adicionar novo utilizador

sudo adduser xxxxxx
sudo passwd xxxxx #mudar a password do novo user (que será criado em /home/xxxxxx/

Adicionar utilizador XXXXXX com permissões SUDO

sudo visudo #(fazer scroll e duplicar linha root com novo username)

atribuir ao novo user as mesmas permissões e grupos do user pi

groups pi
sudo passwd NOVOUSER group xxx

Encerrar sessão e iniciar com novo user Remover user pi

sudo deluser pi (ou sudo deluser --remove-all-files pi)

ou

sudo passwd --lock pi #pode-se fazer o mesmo a outras contas como root

Remover user pi do grupo sudo:

sudo deluser pi sudo

e

sudo sed -ri -e 's/pi ALL=(ALL) NOPASSWD: ALL/# pi ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers.d/010_pi-nopasswd

Obrigar o uso de password no sudo

sudo nano /etc/sudoers.d/010_pi-nopasswd
pi ALL=(ALL) PASSWD: ALL #(substituir pi pelo user que quisermos mudar)

Mudar que users podem aceder via ssh

sudo nano /etc/ssh/sshd_config 
#adicionar no final deste ficheiro:
AllowUsers xxxxx aaaaa cccccc nnnnnn
# Impedir acesso root via ssh (o acesso pode depois ser obtido por sudo)
PermitRootLogin no

Após alterar é necessário reiniciar o sshd

sudo systemctl restart ssh

Cron job diário para fazer o update

Cron

crontab -e (a primeira vez vai pedir para indicar qual o editor - nano)
	# m h d m s   command
	# * * * * *  command to execute
	# ┬ ┬ ┬ ┬ ┬
	# │ │ │ │ │
	# │ │ │ │ │
	# │ │ │ │ └───── dia da semana (0 - 7) (0 a 6 = Domingo a Sábado)
	# │ │ │ └────────── mês (1 - 12)
	# │ │ └─────────────── dia do mês (1 - 31)
	# │ └──────────────────── hora (0 - 23)
	# └───────────────────────── minuto (0 - 59)

Ver tarefas:

crontab -l

Exemplo:

0 1 * * * /usr/bin/apt-get update
0 10 * * * /usr/bin/apt-get upgrade -y

Configurar o Serviço timesyncd

Editar /etc/systemd/timesyncd.conf;

[Time]
NTP=0.pt.pool.ntp.org
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

Em falta:

  • Fail2Ban
  • Firewall

Artigos recentes