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