CTIC:Servidores

De MediaWiki do Campus São José
Revisão de 09h32min de 16 de março de 2012 por Etorresini (discussão | contribs) (Monitoramento)
Ir para navegação Ir para pesquisar

Padrões e Normas

Início (boot)

  • Seja por hardware particular ou ambiente virtualizado, todo servidor deve iniciar após falha de energia. No ambiente virtualizado, deve-se estabelecer uma sequência de início (boot) dos servidores baseada na precedência dos serviços em rede:
<graphviz>

digraph Boot {

 "Sistemas de arquivos" [shape=Mrecord]
 "Diretórios e autenticação" [shape=Mrecord]
 "Compartilhamento e publicação de arquivos" [shape=Mrecord]
 "Comunicação por texto, voz e vídeo" [shape=Mrecord]
 "Sistemas de arquivos" ->
 "Diretórios e autenticação" ->
 "Compartilhamento e publicação de arquivos" ->
 "Comunicação por texto, voz e vídeo"

}

</graphviz>

Backup

A política adotada é de backup do sistema operacional com periodicidade mensal e arquivos pessoas com periodicidade diária, com prazo máximo de recuperação de 28 dias. Haverá cópias em mídia local e remota.

Pré-Instalação

  • Configuração de hardware: ajustes de periféricos.
  • Atualização de firmware para todo o hardware, quando disponível.

Instalação

Particionamento

  • Partição primária para a raiz (/), com 15GB.
    • Área de troca (swap) como arquivo regular (/swap com permissões 0400), com tamanho de 2GB (ou RAM + swap = 4GB).
touch /swap
chown root:root /swap
chmod 400 /swap
dd if=/dev/zero of=/swap count=1 bs=2048M
mkswap /swap
echo "/swap none swap sw 0 0" >> /etc/fstab
swapon /swap
  • Partição primária para LVM, com adequação para cada necessidade/cenário.

Pós-Instalação

Como os discos de instalação do sistema podem estar desatualizados em relação aos pacotes que o compõem, o primeiro passo após a instalação é atualizar o sistema.

  • Configuração do arquivo /etc/apt/sources.list:
deb http://debian.pop-sc.rnp.br/debian stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
  • Atualização do sistema:
aptitude update
aptitude safe-upgrade
aptitude full-upgrade

Ambiente do usuário Root

Aplicativos

  • Programas para CLI:
aptitude install less vim bash-completion git keychain

Bash

  • /root/.bash_logout
clear
  • /root/.bashrc
export PS1='\h:\w\$ '
umask 077
alias ls='ls --color=auto'
alias l='ls -l'
alias ll='l -a'
alias rm='rm -ri'
alias cp='cp -ri'
alias mv='mv -i'
alias grep='grep --color=auto'
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
. /etc/bash_completion
if [ -x /usr/bin/keychain ]
then
    keychain id_rsa
    [ -z "$HOSTNAME" ] && HOSTNAME=‘uname -n‘
    [ -f $HOME/.keychain/$HOSTNAME-sh ] && . $HOME/.keychain/$HOSTNAME-sh
    [ -f $HOME/.keychain/$HOSTNAME-sh-gpg ] && . $HOME/.keychain/$HOSTNAME-sh-gpg
fi

Git

  • Configuração para o usuário root no arquivo /root/.gitconfig:
[user]
    name = Administrador do Sistema
    email = coinf.sj@ifsc.edu.br

VIm

  • /root/.vimrc
set ic
set noai
set ts=4
set magic
syntax on
set hlsearch

Sistema

Uma vez que o sistema já está atualizado e o usuário root tem um ambiente de trabalho mais rico em funcionalidades, pode-se partir para a configuração do sistema de fato. Antes disso, é importante marcar um ponto de partida dos arquivos: uma primeira versão. Foi adotada a ferramenta Git para controle de versão e como política somente os arquivos modificados por um administrador humano serão controlados (sob demanda).

  • Criação do repositório no diretório /etc para controle da configuração do sistema:
cd /etc
git init
chmod 700 .git

Após isso, pode-se iniciar o "versionamento" do diretório de configuração do sistema, o diretório /etc/. Porém, antes, é boa prática manter o relógio do sistema alinhado com a hora legal:

aptitude install ntp

Em seguida, faz-se um registro do original para, depois, atribuir como servidor (server) o do NIC.br: pool.ntp.br.

cd /etc
git add ntp.conf
git commit -a -m "Configuração original do serviço NTP."
vi /etc/ntp.conf
service ntp restart
git commit -a -m "NTP configurado para sincronizar com relógio do NIC.br: pool.ntp.br."

Com a primeira versão catalogada, pode-se iniciar a configuração do sistema. Por questão de proteção, o usuário root deve ser o único usuário local com senha e interpretador de comandos (shell) válidos. Demais com interpretador /bin/false (sistema) ou /usr/sbin/nologin (regulares, como LDAP). Depois de modificado o arquivo, é essencial registrar a modificação:

cd /etc
git add passwd
git add shadow
git commit -a -m "Configuração original da lista de usuários e senhas."
vi passwd
vi shadow
git commit -a -m "Somente usuário root com shell válido."

Serviços

Após o sistema, parte-se para a instalação, via pacotes, dos serviços:

aptitude install snmp snmpd ssh

SNMP

No caso do SNMP, será utilizada a versão 2c sem autenticação - considerando que esse serviço poderá ser aproveitado em disciplinas de Telecomunicações, como por exemplo Gerência de Redes.

  • Serão monitoradas as conexões TCP dos serviços usando script próprio (/usr/local/sbin/conexoes_tcp).
touch /usr/local/sbin/conexoes_tcp
chmod 755 /usr/local/sbin/conexoes_tcp
vi /usr/local/sbin/conexoes_tcp

Com o conteúdo:

#!/bin/sh
if [ "${1}" -gt 0 -a "${1}" -lt 65536 ]
then
	/bin/netstat -ant|grep ":${1} "| grep STAB | wc -l
else
	echo "Use: ${0} (porta)"
	exit 255
fi
exit 0
  • Esse script comporá a configuração do serviço. Antes, o registro do original, modificação para a política do campus e reinício do serviço:
cd /etc/
git add snmp/snmpd.conf
git commit -a -m "Configuração original do serviço SNMP."
vi snmp/snmpd.conf

com o conteúdo:

rocommunity ifsc
sysLocation <sala>
sysContact coinf.sj@ifsc.edu.br
sysServices 72
exec conn_ssh /usr/local/sbin/conexoes_tcp 22
exec conn_http /usr/local/sbin/conexoes_tcp 80

onde <sala> identifica a localização física do equipamento, como por exemplo "RNP" ou "Laboratorio de Desenvolvimento".

Finalizando o processo:

service snmpd restart
git commit -a -m "SNMP somente leitura: versão 2, comunidade ifsc."

SSH

Em relação ao servidor SSH (/etc/ssh/sshd_config), será permitida apenas a conexão utilizando par de chaves pública/privada. Além disso, estará desativado o subsistema SFTP.

cd /etc
git add ssh/sshd_config
git commit -a -m "Configuração original do serviço SSH."
vi ssh/sshd_config

com o seguinte conteúdo:

# Rede
Port 22
Protocol 2
#
# Certificados do servidor
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#
# Segurança interprocesso
UsePrivilegeSeparation yes
StrictModes yes
#
# Sessão
KeyRegenerationInterval 3600
ServerKeyBits 768
AcceptEnv LANG LC_*
PrintLastLog yes
#
# Manutenção da sessão
TCPKeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 4
#
# Log
SyslogFacility AUTH
LogLevel INFO
#
# Autenticação
LoginGraceTime 120
PermitRootLogin yes
Allowusers root
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
#
# Autorização
UsePAM yes

Por fim, o registro do novo arquivo e reinício do serviço:

service ssh restart
git commit -a -m "Serviço SSH apenas com autenticação via certificado."

Para isso, deve-se ter o arquivo da chave pública para o acesso remoto - arquivo /root/.ssh/authorized_keys com permissões mínimas (0400):

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDxhJ4O/n9OEr9bRdIEqp1z2ocGFZrnG6nKBMF4MvMC14rM1R+Ge988dfhe8zylx2+37SYk4+tFia2YJLL5jq5N0nOnoorZq7Tfh+bcwe9x0V0rbGM/nzlVqgBusFzdNWZUQx7y3/dFGmM+Faiwum1c89NzeLjhZFJeXUadJnXSmodiRpjlyKD6StvJ96KefKJIqHf6S/+gch50AFph5MlOakTbylo/4aMRnSvM8kXCugret24Ny/3ELfSP51xmAJSqYYArCfPJmrtFlziv2CRTzPlwF4uK7g6iEkuPmPG4BAmAt/k4bz657oyMrS12pbQlG7HrukrwtLkgmFmIlYYQCwyunNnwjTottqXnYHQB7yaVU6L4sRi658lAqZTbn8/g0PtTsl1ROhEAaTd1ZzhLdycCJme0bHDrXEVFHCEISRIc2WyIf+qGcgM/t+JupyA5OlB3N4kJ2C731wzczhrpdwp83RlO92vofAuHkYskVlBVyUW1EmvcqmlmeWGg0mj5+9I3ST/Ikn0TMilVlLhaK+NEyOL5bxxZn5GAJi3XAbui5yZh6sX6V2l8Bt0sss2Qe1N6IuiASXCq0IZGqhW7eZopFuBfQoYS+RoOYbjB2C7xm0WDl/o72NB4BUMz/OGtlFb8S8DdQAdtO+eqKNb/oUC0aD26m+eHzz1tbfsdsw== root@asimov

Descrição Específica por Máquina

Asimov

  • Fabricante: IBM
  • Modelo: x3200 M2, 4368

Hardware

  • Inserida a interface dual-port Intel Pro-1000T PCI-Express.

Firmware

  • Atualizado o firmware de acordo com o pacote UpdateXpress System Pack obtido no site do fabricante.

Disco

  • Configuração de RAID 1 (IM Volume) usando 2 discos SATA hot-swap de 250GB:

Resultando em 250GB de espaço disponível em disco:

BIOS

  • Configuração na BIOS para iniciar o sistema via CD-ROM ou RAID 1:
  • Configuração para sempre (re)iniciar o sistema após recuperação de energia:

Rede

  • Todas as interfaces de rede em uma única agregação de enlace[1] (LAG) combinada a interfaces virtuais para acesso às VLANs via porta do switch em modo trunking.

Instalação dos pacotes necessários:

aptitude install ifenslave vlan
cd /etc
git add network/interfaces
git commit -a -m "Configuração original das interfaces de rede."
vi network/interfaces

E configuração de VLAN sobre interface trunking:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto eth2
iface eth2 inet manual

# LACP Group ID = 3
auto bond3
iface bond3 inet manual
    bond-slaves eth0 eth1 eth2
    bond-mode 4
    bond-miimon 100
    bond-lacp_rate 1

auto vlan1
iface vlan1 inet static
    address 172.18.1.1
    netmask 255.255.255.0
    vlan-raw-device bond1

auto vlan110
iface vlan110 inet static
    address 172.18.110.1
    netmask 255.255.255.0
    gateway 172.18.110.254
    vlan-raw-device bond1

auto vlan120
iface vlan120 inet static
    address 172.18.120.1
    netmask 255.255.255.0
    vlan-raw-device bond1

auto vlan200
iface vlan200 inet static
    address 172.18.200.1
    netmask 255.255.255.0
    vlan-raw-device bond1 

e finalizando:

service networking restart
git commit -a -m "Interfaces Ethernet em LAG 1 e VLANs: 001 (default), 110 (lan_admin), 120 (lan_educ) e 200 (lan_midia)."

Referências



Voltar para Rede