Správa serveru

Změna hesla roota a vytvoření vlastního uživatele

U obou nastavit opravdu silné heslo.

Nastavení přihlašování na nového uživatele pomocí SSH klíče

Nezapomenout nainstalovat SSH server.

sudo aptitude install openssh-server

Bude sloužit k tomu, aby se při každém přihlašování z ověřených stanic nemuselo zadávat heslo.

Vygenerování páru SSH klíčů

Klíče se generují programem ssh-keygen.

Soukromý klíč můžeme chránit heslem (dotaz při jeho generování).

Soukromý klíč se uloží do

~/.ssh/id_rsa

veřejný se uloží do

~/.ssh/id_rsa.pub

Soukromý klíč nikomu nedáváme!

Přidání klíče na server

Veřejný klíč přidáme do sbírky veřejných klíčů důvěryhodných hostů v domovském adresáři uživatele, ke kterému se budeme chtít tímto klíčem přihlašovat.

Přidáme jej tedy do souboru /home/<vzdálený_uživatel>/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub <vzdálený_uživatel>@<vzdálený_server>:/home/<vzdálený_uživatel>/

Na serveru vytvoříme (pokud již neexistuje) adresář .ssh/ a přesuneme/přejmenujeme do něj náš veřejný klíč.

cat ~/id_rsa.pub >>~/.ssh/authorized_keys
rm ~/id_rsa.pub

Práci si můžeme zjednodušit příkazem:

ssh-copy-id <vzdálený_uživatel>@<vzdálený_server>

Reálné nebezpečí

Když si prozkoumáme záznam o přihlášení k serveru v souboru /var/log/auth.log zjistíme, že se tam, téměř již v okamžik jeho vytvoření, snažila přihlásit hromada podvodníků.

sudo grep invalid /var/log/auth.log

Proto je dobré využívat přihlášení pomocí SSH klíče a, po nastavení důvěryhodných hostů, přihlašování heslem zakázat.

V souboru /etc/ssh/sshd_config nastavit hodnotu PasswordAuthentication na no.

zdroj:

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-uvod-do-ssh-pro-spravce

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh-1

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni

http://www.linuxexpres.cz/praxe/debian-server-prakticke-rady-pro-zabezpeceni-ssh-4

Nastavení času

Časová zóna se může nastavit dvěma způsoby:

  • V adresáři /usr/share/zoneinfo/ si najdeme region a město a vytvoříme jeho symbolický odkaz do /etc/localtime.
sudo ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtime
  • Spustíme si průvodce a časovou zónu "naklikáme" v něm.
sudo dpkg-reconfigure tzdata

Nastavení aktuálního času necháme jednou denně na NTP serveru.

echo "ntpdate ntp.ubuntu.com" | sudo tee /etc/cron.daily/ntpdate
sudo chmod 755 /etc/cron.daily/ntpdate

zdroj:

http://www.go2linux.org/linux/2010/09/change-time-zone-linux-using-command-line-772

https://help.ubuntu.com/community/UbuntuTime#Using the Command Line (terminal)

Aktualizace zdrojů a systému

Informace o nových aktualizacích

Můžeme si nechat zasílat denní informace o nově dostupných aktualizacích.

O tuto službu se stará script apticron. K práci vyžaduje mimo jiné instalaci postfix.

Informace pak zasílá e-mailem.

zdroj:

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh-1

http://www.debian-administration.org/articles/491

Provádění aktualizací

sudo apt-get update
sudo apt-get upgrade

nebo pohodlnější

sudo aptitude update ; sudo aptitude safe-upgrade

Zjištění vyžadovaného restartu

Pokud se po aktualizaci vytvoří soubor /var/run/reboot-required, je nutné systém restartovat.

Soubor bude obsahovat následující:

*** System restart required ***

zdroj:

http://serverfault.com/questions/92932/how-does-ubuntu-keep-track-of-the-system-restart-required-flag-in-motd/92940#92940

Časovaný restart serveru

Například pokud jsme přes den aktualizovali kernel, a okamžitý restart by obtěžoval nedostupností služeb.

sudo echo "sudo shutdown -r now" | sudo at 22:00

Instalace nejdůležitějších balíčků

aptitude

vim

screen

openssh-server

Nastavení automatického doplňování klávesou Tab

Podle příspěvku Když nebude v konzoli fungovat doplňování [Tab]em

Nastavení jiných barviček shellu

Úplně stačí třeba oranžová na serveru vs. zelená na domácím PC.

Postup je popsán v příspěvku Můj barevný prompt.

Nastavení přidat globálně do /etc/bash.bashrc, nebo jen pro nového uživatele do ~/.bashrc.

Nastavení screen po přihlášení

Snadná cesta k více shellům (a dalším výhodám) na serveru.

Přidat na konec do /etc/bash.bashrc řádek

screen -DRS default

Vysvětlující citace z komentáře Ondřeje Válka na linuxexpres.cz:

neboli "dej mi screen s názvem sezení 'default', pokud neexistuje, tak ho vytvoř, a pokud existuje a má ho někdo jiný připojený, tak ho odpoj a dej mi ho". Výsledek je takový, že ten scree dostanete vždy, nikdy se nevytváří zbytečně nový a navíc se k němu automaticky dostanete i když vám třeba kvůli výpadku zatuhne SSH spojení.

Ovládání programu screen

okna programu screen

panely v okně

Ze serveru se tak budeme odhlašovat zadáním:

~.

Screen se dá nastavit, aby zachovával layout, nabízel předdefinovaný (několik), spouštěl výchozí aplikace ve vytvořených regionech, atd. Svoje nastavení mám na Gist.

zdroj:

http://www.linuxexpres.cz/praxe/screen-spravce-sezeni-v-terminalu

http://www.root.cz/clanky/screen-jeste-mocnejsi-terminal/

http://www.pixelbeat.org/lkdb/screen.html

Hlídání serveru

Výpis (shrnutí důležitých info) z logů různých služeb na serveru zprostředkovává logwatch. Výpis posílá e-mailem.

Automatické banování útočníků (a případné info na mail (s relevantním výpisem z logů)).

fail2ban

Výchozí hodnoty jsou nastaveny v /etc/fail2ban/jail.conf, tyto neupravujeme, ale zapíšeme pouze upravené do /etc/fail2ban/jail.local.

sudo service fail2ban reload
sudo fail2ban-client status
sudo fail2ban-client status ssh

Monitorování systémových hodnot

munin
munin-node
monit
lm-sensors
hddtemp
smartmontools
mdadm
xymon

zdroj:

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh-1

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni

http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-bezpecnost-a-monitorovani-systemu

Přidání služeb po spuštění / restartu serveru

Ubuntu od verze Feisty zavádí Upstart, jako asynchronní náhradu za synchronní /sbin/init. Tyto dva systémy vedle sebe zatím koexistují, takže můžeme využívat obou.

Nejjednodušší forma

Přidat příkaz ke spuštění do /etc/rc.local

Skript podle Upstart

Startovací skripty Upstartu se ukládají do /etc/event.d a na rozdíl od skriptů pro init nemají nastavený spouštěcí bit! Upstart také dokáže spouštět skripty na základě proběhlé akce (zapnutí / vypnutí služby) a ne jen při změně runlevelu.

Skript podle init.d

Init.d je původní spouštěcí démon, založený na sysvinit. Startovací skripty init.d se ukládají do /etc/init.d a /etc/rc?.d podle runlevelů, ve kterých mají být spouštěny.

Podle /etc/init.d/README by se měl požadovaný skript přidat do /etc/init.d/ do souboru pojmenovaného stejně, jako program, který bude spouštět. Spouštěcí skript by měl splňovat požadavky na init skripty podle How to LSBize an Init Script. Skript by měl tedy vypadat nějak takto:

#!/bin/sh
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "$1" in
    start|restart|force-reload)
        #příkazy pro spuštění služby
        ;;
    stop)
        #příkazy pro ukončení služby
        ;;
esac
exit 0

Souboru se skriptem se pak musí přidat ještě příznak pro spouštění a nakonec mu vygenerovat symbolické linky podle runlevelů, ve kterých se bude spouštět:

sudo chmod +x scriptname
sudo update-rc.d scriptname

http://www.ivankristianto.com/os/ubuntu/howto-run-script-on-boot-process-in-ubuntu/1171/

http://en.kioskea.net/faq/3348-ubuntu-executing-a-script-at-startup-and-shutdown

http://www.abclinuxu.cz/slovnik/runlevel

http://wiki.debian.org/LSBInitScripts

http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit

https://help.ubuntu.com/community/RcLocalHowto

http://upstart.ubuntu.com/index.html

https://answers.launchpad.net/upstart

http://www.linux.com/archive/feature/125977

http://upstart.ubuntu.com/wiki/