Upozornění - tato sekce již nebude nadále udržována, neboť jsem kompletně přešel na CentOS. Poslední verze, kterou jsem provozoval na serverech, byla Fedora 12 a něco málo jsem zkoušel na verzi Fedora 13. Protože některé servery, které spravuji ještě jedou na Fedoře, zatím tento článek ponechávám, ale postupem času hodlám všechny tyto servery zvirtualizovat (Citrix XenServer) a převést na CentOS. Z hlediska správy je totiž mnohem jednodušší mít předkonfigurované VM a na zákaznické servery tyto snapshoty jen nakopírovat, než konfigurovat celý server od začátku...
Po instalaci nabootuje Fedora do grafického rozhraní X-windows. To je sice hezké pro desktop, na serveru je to však zbytečné. Do konzolového režimu se přepneme pomocí klávesové kombinace CTRL-ALT-F2. Start přímo do textového příkazového režimu se zajistí změnou runlevelu v souboru /etc/inittab (změníme řádek id:5:initdefault na id:3:initdefault) a po pozdějším restartu počítače (změna selinux) už X nebudou vůbec spouštěna.
Nastavení síťového rozhraní
service NetworkManager stop
chkconfig --del NetworkManager
Nyní je zapotřebí nakonfigurovat soubory /etc/sysconfig/network-script/ifcfg-eth0:
# Výrobce síťové karty - text vytvořen při instalaci
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.250
NETWORK=192.168.1.0
HWADDR=00:16:e6:00:11:22
ONBOOT=yes
* HWADDR je nepovinné, použije se jen v případě, že má být jistota přiřazení IP ke správné kartě. Dále je možné místo NETMASK= použít PREFIX= s odpovídající hodnotou (např. k masce 255.255.255.252 odpovídá PREFIX=30).
a /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=jmenoserveru
Poznámka: V poslední době jsem se setkal s tím, že dodatečně přidaná další síťová karta je systémem pojmenována nikoliv jako "ethX", ale jako "ethX_rename". Případně po výměně síťové karty si ji systém stále pamatuje a nové kartě přídělí číslo vyšší. V obou případech je konfigurace méně přehledná, než při používání klasického "ethX". Tyto údaje jsou uloženy v souboru /etc/udev/rules.d/70-persistent-net.rules . Většinou pomůže tento soubor smazat (systém si jej při bootu sám znovu vytvoří), ale v jednom případě se mi stávalo, že se vytvořil špatně a při následujícím rebootu se opět číselné značení karet posunulo. Proto je možné tento soubor ručně upravit, kde se označení přímo přiřadí ke kartám pomocí MAC-adres:
# PCI device 0x10ec:0x8168 (r8169) (custom name provided by external tool)
SUBSYSTEM=="net",
ACTION=="add", DRIVERS=="?*", ATTR{address}=="6c:f0:49:e2:30:26",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x107c (e1000)
SUBSYSTEM=="net",
ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:68:74:d3",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:0x10d3 (e1000e)
SUBSYSTEM=="net",
ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:74:3b:c3",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x8086:0x10d3 (e1000e)
SUBSYSTEM=="net",
ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:74:3d:c2",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
Pro správnou funkci je ještě zapotřebí nastavit /etc/resolv.conf (samozřejmě se použijí skutečné hodnoty)
nameserver 192.168.1.100
nameserver 192.168.1.200
Nyní se již může síťové rozhraní nastartovat
service network start
chkconfig --level 2345 network on
Funkčnost sítě je možné ověřit příkazem ping, případně traceroute. Pokud se zdá, že síť není funkční, je možné, že správné komunikaci brání nenastavený firewall. To je možné ověřit jeho dočasným vypnutím
service iptables stop
Firewall však má své opodstatnění, takže hned po vyzkoušení síťové komunikace jej raději nakonfigurujeme a zapneme. Konfiguraci je možné provádět buď ručně v souboru /etc/sysconfig/iptables, nebo (raději) pomocí příkazu system-config-firewall.
Dále je vhodné upravit soubor /etc/hosts.
Je také vhodné povypínat nepoužívané služby a případně s ohledem na bezpečnost také vypnout všechny vzdálené služby (rpc)
chkconfig --del bluetooth
chkconfig --del ip6tables
chkconfig --del NetworkManager
a také vypnout selinux. To se provede v souboru /etc/sysconfig/selinux nastavením řádku SELINUX=disabled
Po změně v nastavení selinux je zapotřebí provést restart počítače. To je možné provést nyní, já to však dělám až po upgrade systému (následující krok).
Nyní je již možné systém upgradovat a doinstalovat další potřebné balíčky. Upgrade se provádí příkazem
yum update
Po upgrade systému a restartu po změně selinux (předpokládám též, že je již upraven i firewall), je server připraven pro instalaci a konfiguraci potřebných služeb. V tuto chvíli je již též možné provádět správu dálkově pomocí ssh.
Je možné si nyní doinstalovat i další programy usnadňující další správu počítače. Já například používám pro editaci konfiguračních souborů textový editor joe, a život zpříjemní i midnight-commander...
yum install mc joe wget bzip2 unzip zip nmap openssl lynx fileutils ncftp gcc gcc-c++
Pro synchronizaci času na serveru je možné využít službu NTP. Seznam některých českých NTP serverů:
- tik.cesnet.cz
- tak.cesnet.cz
- ntp.ujf.cas.cz
- ntp2.ctt.cz
- ntp.cgi.cz
- clock1.zcu.cz
- clock2.zcu.cz
- ntp.karpo.cz
- time.dkm.cz
- ntp1.contactel.cz
- ntp2.contactel.cz
- ntp1.sh.cvut.cz
Některé zde zveřejněné serverů však nemusí být funkční, je zapotřebí si je nejprve ověřit. To se dá příkazem (například pro server tik.cesnet.cz):
ntpdate tik.cesnet.cz
jako odpověď je buď zpráva o neexistenci serveru, nebo že byl lokální čas nastaven - a v tomto případě jej můžeme použít. Najdeme dva funkčních servery (nejlepší je použít každý v jiné síti, i když cesnet s dvojicí serverů tik a tak přímo láká). Tyto servery zapíšeme do souboru /etc/ntp/ntpservers. Synchronizace se potom spustí příkazem
service ntpd start
chkconfig --level 234 ntpd start
Ještě jedno upozornění - pokud je spuštěn démon ntpd, není možné použití příkazu ntpdate. A protože při větší časové odchylce se ntpd špatně chytá, je lepší prvotní seřízení času provést právě pomocí ntpdate. Aby to bylo možné, je zapotřebí (dočasně) ntpd vypnout (service ntpd stop)
Pokud se na server používá starší hardware, které již spolehlivě nedrží čas v BIOSu, je vhodné přidat příkaz ntpdate <server> do startovacích scriptů pro prvotní "přednastavení" času (nejlépe do souboru /etc/rc.d/rc.local)
Pro instalaci některých dalších balíčků je zapotřebí určit, ve kterých repozitářích se budou hledat. Poměrně velký repozitář je RPM Fusion, vzniklý sloučením tří menších repozitářů - Dribble, Freshrpms a Livna.
rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
Pokud chceme zamezit slovníkovým útokům s pokusy o prolomení hesel na serveru, můžeme použít program fail2ban. Tento program po několikerém neúspěšném pokusu o nalogování na určitou dobu zablokuje útočníkovu IP adresu. Počet neúspěšných pokusů o přihlášení se dá nastavit různý pro jednotlivé služby serveru, dá se nastavit i doba, po kterou bude útočníkova IP zablokována. Tato konfigurace se provádí v souborech v adresáři /etc/fail2ban/. Mimo blokace např. pomocí iptables nebo shorewall si můžeme i nechat poslat mail s informací o probíhajícím útoku.
yum install fail2ban
chkconfig --levels 2345 fail2ban on
Pro kontrolu systému je velice užitečný program rkhunter. Tento program si při prvním spuštění na čistém (čerstvě nainstalovaném a nakonfigurovaném serveru před jeho veřejným spuštěním) systému vytvoří "otisk" všech programů a při periodické kontrole jej pak porovnává s aktuálním stavem serveru. Okamžitě jsou pak vidět veškeré změny, které od instalace proběhly (ať už legální, tak i nelegální). Informace o stavu je automaticky odesílána mailem.
yum install rkhunter
rkhunter --update --propupd
Volbou --propupd se vytvoří referenční otisk systému, který se pak porovnává příkazem
rkhunter --check
Kontrolu lze provádět ručně, ale při instalaci se automaticky vytvoří záznam cronu pro periodickou denní kontrolu v rámci systémové údržby (cron.daily). V konfiguračním souboru /etc/rkhunter.conf si můžeme přizpůsobit jeho nastavení - ja vše nechávám implicitní, pouze si zde nastavím mailovou adresu pro zasílání logu.