LPS:CFEngine3/Implementace
Seznam toho, co CFEngine vlastně spravuje. Ve skutečnosti je toho trochu více (kontroluje, že běží NTP, ...). Zde jsou uvedeny ty nejdůležitější změny, které by mohly ostatní překvapit.
Jak zjistím, jestli něco spravuje
Pokud běží procesy cfengine:
ps xfa |grep cf- 22160 pts/0 S+ 0:00 \_ grep cf- 13626 ? Ss 140:15 /var/cfengine/bin/cf-execd 13634 ? Ss 143:35 /var/cfengine/bin/cf-serverd 13644 ? Ss 54:00 /var/cfengine/bin/cf-monitord
a chcete zjistit, jestli spravuje /etc/resolv.conf, pak stačí:
grep -r /etc/resolv.conf /var/cfengine/inputs/ /var/cfengine/inputs/services/base/fcopy.cf: "file[/etc/resolv.conf]" string => "default"; /var/cfengine/inputs/services/network/resolver.cf: "resolv_conf" string => "/etc/resolv.conf";
Protože CFEngine používá výhradně absolutní cesty, tak když grep nic nevrátí, CFEngine s ním nic nedělá.
Co vlastně spravuje
Toto je jen přehled, kam všude CFEngine šahá, pokud upravuje nějaký soubor, pak je v jeho záhlaví většinou komentář:
############################################################## # CF3 - spravuje CFEngine3 - vsechny upravy budou zruseny! # # ---------------------------------------------------------- # # Hint: pouzij /etc/sysctl.d/ nebo se domluv se spravcem # # http://helpdesk.zcu.cz/wiki/LPS:CFEngine3/Implementace # ##############################################################
ale:
- existují soubory (např. /etc/hostname) kde nejsou komentáře povoleny.
- soubory, které mají svůj vzor na AFS (nejčastěji /afs/zcu.cz/common/etc/), protože se hlídá, zda nejsou rozdílné (např. /etc/krb5.conf)
Systém
/etc/apache2/mods-available/ssl.conf
Je generovan kompletne z templatu, volby lze pripadne upravit u jednotlivych hostingu vyjma SSLCipherSuite.
/etc/apache2/sites-available/*
Všechny volby SSLCipherSuite zakomentuje, povolene typy šifrování hlídáme z globálního konfiguráku /etc/apache2/mods-available/ssl.conf, nelze obejít.
/etc/apt/apt.conf
Vlastní základní nastavení pro dpkg a apt, použij /etc/apt/apt.conf.d/
/etc/apt/sources.list
Kopíruje vlastní dle verze debianu, pro svoje rozšíření použij /etc/apt/sources.list.d/
/etc/apt/preferences
Kopíruje vlastní dle verze debianu, pro svoje rozšíření použij /etc/apt/preferences.d/
/etc/hosts.allow
Řádkové úpravy pro jednotlivé služby, možno upravovat, pokud tam něco bude CFEnginu chybět, tak si to doplni.
/etc/krb5.conf
Kopíruje se dle vzoru z /afs/zcu.cz/common/etc/
/etc/modules
Přidava ipmi_si a ipmi_devintf záznamy, po přidání řádku modul zavede. Ostatní řádky je možné upravovat.
/etc/nagios/nrpe.d/zcu.cfg
Kopíruje se dle vzoru z /afs/zcu.cz/common/etc/nagios/nrpe_local.cfg
/etc/ntp.conf
Udržuje konfiguraci dle RT#186029 na klientech, servery mají lehce odlišnou konfiguraci. Nelze obejít.
/etc/passwd
Řádková úprava, kde si vynucuje hodnotu 'x' v pozici hesla uživatele root. Nelze obejít.
/etc/shadow
Řádková úprava pro nastavení hesla uživatele root. Nelze obejít.
/etc/services
Přidávají se řádky pro naše služby, zatím jen pro afsadm
/etc/resolv.conf
Kopiruje se resolv.conf dle doporuceneho nastaveni od hostmastera, prakticky odpovida /afs/zcu.cz/common/etc/resolv.conf.linux
/etc/ssh/sshd_config
Udržuje požadovanou konfiguraci sshd, nelze obejít.
/etc/sudoers
Provádí se řádkové úpravy, v plánu generovat z template.
/etc/sysctl.conf
Používá se template, pro lokální úpravy je možné využít /etc/sysctl.conf.d/, ale lepší je integrace do template.
/etc/vim/vimrc.local
Předkonfigurovaný vim, nastavuje se obarvení syntaxe, změny barev u komentářů a pod. Pokud chceš změnu, domluv se se správcem.
/root/.config/mc/ini
Spravuje konfiguraci pro Midnight Commander, všechny úpravy budou zrušeny, nelze obejít.
/root/.mc/
Stará konfigurace Midnight Commanderu, bez milosti a nahrady smazana.
/root/.bash_logout
Kopiruje se z template, nelze obejít, domluv se s adminem.
/root/.bashrc
Kopiruje se z template, nelze obejít, domluv se s adminem.
/root/.k5login
Spravuje CF3, nové uživatele přidává, pokud je někdo navíc přidán ručně, začne na to upozorňovat. Nutné informovat správce.
/root/.profile
Kopiruje se z template, nelze obejít, domluv se s adminem.
/root/.screenrc
Předkonfigurovaný screen, pokud chceš změnu, domluv se se správcem.
Cron
/var/spool/cron/crontabs/root
Řádkové úpravy, hlídá že tam jsou ty řádky které tam chceme a které tam být naopak nemají být. Je možné upravovat příkazem crontab -e, pokud smažete nebo změníte nucený řádek, pak jej tam CFEngine znovu přidá.
FibreChannel
Pokud je nalezena FC karta (dle lspci) pak jsou nainstalovány balíky pro správu fibrechannelu (multipath-tools, firmware-qlogic, qla-tools), pokud karta není, pak jsou balíky odstraněny.
Firewall
Konfigurace
Konfigurační soubory /etc/iptables/rules.v4 a /etc/iptables/rules.v6 jsou generovány z templatů CFEngine3, jakýkoliv zásah do nich bude znamenat vrácení do původního stavu a restart firewallu. Jediná možnost ovlivnit konfiguraci je přes úpravu politiky CFEngine.
Soubory jsou načítány skriptem /etc/init.d/iptables-persistent z balíku iptables-persistent
Změna firewallu
Pokud není možné provést úpravu firewallu přes CFEngine, pak je možno vytvořit změnu přímo příkazem iptables. To vydrží ale jen do:
- restartu => nastartuje se firewall dle konfigurace v /etc/iptables/
- změně v /etc/iptables/ => provede se aktualizace a restart firewallu
- vypnutí firewallu => pokud není politika pro INPUT nastavena na DROP, pak to znamená vypnutý firewall a to není přípustné => restart firewallu
Vypnutí firewallu
Je nutné vypnout také CFEngine, prože se jinak bude snažit firewall nahodit:
/etc/init.d/cfengine-community stop /etc/init.d/iptables-persistent flush
Pro jeho obnovu stačí aktivovat CFEngine:
/etc/init.d/cfengine-community start
Přečti si, co znamená vypnutí CFEngine.
NRPE - Nagios
Kontroluje a udržuje celou část potřebnou pro monitoring stroje přes NRPE, tedy potřebné balíky a konfigurace v /etc/nagios/.
Oracle
/dev/shm
Oracle vyžaduje (oproti Debianu) mít /dev/shm místo /run/shm jinak nefunguje. CFEngine hlídá, že tomu tak je, že má také vhodnou velikost a místo /run/shm vytváří symlink.
Profil
aktuálnost /etc/skel/ -> /root/
Hlídá se aktuálnost vzorů v /etc/skel/ proti souborům v /root/, změny CFEngine hlásí, nevrací zpět.
/root/.bash_aliases
Řádkové úpravy, přidání některých aliasů, např. ohledně fibrechannelu.
Syslog - syslog-ng
Soubor /etc/syslog-ng/syslog-ng.conf je brán jako základ z Debian balíku podle verze nainstalovaného syslogu, protože konfigurace syslogu se hodně mění s každou verzí. Specifické věci (pro ZČU jde o logování na centrální log servery a výpis na /dev/tty63) jsou uloženy do /etc/syslog-ng/conf.d/50zcu-client.conf. Ostatní soubory jsou systémové a je možno si do /etc/syslog-ng/conf.d/ přidat svoje pravidla.
Virtualizace - Xen
Pokud je stroj virtuální, pak jsou některé balíky odstraněny a opačně. Jde o balíky regulující výkon CPU nebo pro SMART disků.
WebAuth
Na stroji zařazený do třídy group_webauth se předpokládá běh apache s webauthem (nikoliv webkdc). Udržuje potřebné balíky a konfiguraci webauthu v /etc/apache2/mods-available/ včetně symlinků v mods-enabled. Dále hlídá práva v /etc/webauth/
Jsem zoufalý aneb jak vypnout CFEngine
CFEngine je monitorován Nagiosem, takže pošlete (upozorněte) správce serveru, proč jste to vypnuli a domluvte se na správném řešení. Sice před jeho nastartováním se snažím pídit po důvodech (hledám kdo a proč), ale pokud je nenajdu, cfengine nastartuji.
Dočasně
/etc/init.d/cfengine-community stop
Vydrží jen do rebootu nebo opětovného startu cfengine.
Na (skoro) věčné časy
/etc/init.d/cfengine-community stop vim /etc/default/cfengine3
Neupravujte /etc/init.d/cfengine-community (např. vložením 'exit 0'), protože při aktualizaci balíku se může přepsat a cfengine opět nastartuje.
Na věčné časy nebo do reinstalace
apt-get remove --purge cfengine-community
Nepoužívat bez vědomí správce!
Nebojím se naučit novou věc
Doporučení: První úpravu je vhodné udělat pod dohledem administrátora, uvědomte si, že špatným zásahem můžete ovlivnit celou infrastrukturu!
V návodu červeně vyznačené části je třeba upravit tak, aby odpovídaly tomu, co chceš provést. Pokud jsi ve skupině system:administrators (lze zjistit příkazem pts mem system:administrators) pak se přihlaš na stroj, kterých chceš upravit a připrav si prostředí:
ssh root@SERVER cd /root if [ ! -d /root/cf ] ; then git clone file:///afs/zcu.cz/project/software/git/cfengine.git cf ; fi cd /root/cf git checkout devel git pull
Udělej a otestuj úpravu:
vim templates/etc/iptables/rules.v4.tmpl cf-agent -Kf /root/cf/promises.cf less /etc/iptables/rules.v4
Ulož změny do gitu, používáme 3 větve (devel, testing, production), je nutné změnu dostat do všech tří, vždy po příkazu git push je vhodné si odskočit na kafe a potom zkontrolovat nagios, jestli se něco nestalo:
git diff git commit -a git push git checkout testing git pull git log devel # seber ID tveho commitu do schranky git cherry-pick ID_tveho_commitu git push git checkout production git pull git cherry-pick ID_tveho_commitu git push
Co se vlastně stalo? Upravili jsme soubor templates/etc/iptables/rules.v4.tmpl, který se v systému ukáže jako /etc/iptables/rules.v4. Přípona .tmpl slouží pro rozlišení obyčejného souboru (bez této přípony), který se "tupě" kopíruje a souboru typu template v kterém se mohou zpracovávat proměnné cfengine a logické operátory. Výsledný soubor po zpracování může vypadat výrazně odlišně. Například:
[%CFEngine uniapps_zcu_cz:: %] -A SHELL -s 147.228.232.113/32 -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "pevna VPN pro uzivatele uniapps, RT#185156" [%CFEngine uniapps_zcu_cz|morpheus_civ_zcu_cz|daphne_civ_zcu_cz:: %] -A SHELL -s 147.228.0.0/16 -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "pro Linuxove helpsaky"
Se první záznam pro IP 147.228.232.113/32 vygeneruje pouze na stroji uniapps.zcu.cz, kdežto druhý řádek na strojích morpheus.civ.zcu.cz, daphne.civ.zcu.cz a také na uniapps.zcu.cz.