Jak obejít politiku Cisco AnyConnect VPN klienta

VPN klient blokuje přístup do LAN

Občas se potřebuji připojit k pracovní VPN. Používáme Cisco Anyconnect Secure Mobility Clienta, který si při každém připojení stáhne profil podle vybrané skupiny a následně podle toho co je v profilu buď blokuje přístup do lokální sítě (tedy i do internetu, pokud nevyužiji firemní proxy server).

Kdyby naše firemní proxy fungovala spolehlivě tak to vem čert, ale jelikož nefunguje dobře tak raději využívám svoje připojení do internetu. Profil VPN skupiny kterou používám pro připojení schválně blokuje přístup do LAN. Musím tedy neustále vypínat a zapínat VPN, podle toho jestli chci hledat něco v Google nebo se chci připojit na nějakou firemní aplikaci.

Jak obejít blokaci

Našel jsem postup na webu superuser.com, který krásně funguje. Ve zkratce jde o to že se zkompiluje jednoduchá knihovna, která bude odchytávat volání Cisco AnyConnect. VPN klient totiž přenastaví a následně hlídá routovací tabulku voláním nějaké funkce ve svojí knihovně. V tom mu zabráníme.

Kompilace knihovny

V první řadě je nutné vytvořit C++ soubor s názvem třeba hack.c:

Následně zkompilujeme do vlastní knihovny pomocí:

Výslednou knihovnu přesunout nejlépe k ostatním knihovnám AnyConnectu:

Nyní je nutné zastavit službu vpnagentd:

Po zastavení služby vpnagentd už stačí jenom upravit init skript, třeba pomocí editoru vi:

V init skriptu je nutné najít místo kde se spouští samotná binárka vpnagentd a upravit takto:

Po tomto kroku je již možné spustit vpnagentd:

Nastavení routingu

Nyní lze po připojení nastavovat libovolně routy – tedy je možné opravit to co nastaví AnyConnect client a používat plnohodnotně lokální síť současně s VPN. Já vždycky po připojení VPN spustím tyto příkazy:

První příkaz odstraní blokování nastavené v iptables (ano – to taky nastavil Cisco AnyConnect, díky). Druhý smaže routu která říká že všechno poleze do rozhraní cscotun0. Třetí příkaz řekne že do rozhraní cscotun0 poleze pouze síť 192.1.0.0/16.

 

Přihlášení na SSH pomocí expectu

Nechci psát heslo dvakrát

Spravuji linuxové servery na kterých je zakázané přihlášení pomocí uživatele root. Přihlásit se na takového uživatele pro mne znamená:

  1. Přihlásit se pomocí SSH pomocí mého osobního účtu = 1x zadávám svoje heslo
  2. Po přihlášení napsat příkaz sudo -i a znovu zadat heslo = 1x zadávám svoje heslo

Musím tedy dvakrát po sobě zadávat stejné heslo. Proto jsem si udělal script v expectu, kterému sdělím svoje heslo pouze jednou. Script se následně pod mým loginem přihlásí na server a spustí příkaz sudo -i, kterému pošle heslo které jsem mu sdělil. V následujícím scriptu se heslo čte ze stdin, ale je možné ho načítat i ze souboru (nedoporučuji):

Vytvoření aliasu pro bash

Vytvořil jsem si taky jednoduchý bash alias proto abych do skriptu nemusel psát natvrdo svůj login. Tento wrapper vypadá následovně:

Wrapper je potřeba umístit do souboru .bash_aliases v home adresáři.

Jak se nyní přihlašovat

Nyní stačí zavolat příkaz ssh-login server.domena.tld, příkaz se zeptá jen jednou na heslo:

Po úspěšném přihlášení mi skript dovolí s root shellem interagovat.

Obnova certifikátu SAP routeru bez odstávky

Jak obnovit certifikát pro SAProuter

Již dříve jsem psal článek o tom jak rozchodit saprouter, který komunikuje po zabezpečeném kanálu. Jelikož je pro SNC spojení nutný certifikát, který má pouze roční platnost je nutné certifikát přes skončením platnosti prodloužit.

Špatná dokumentace od SAPu

Na spoustě webů (včetně oficiální dokumentace SAPu) je popsán špatný postup, který předpokládá že je možné provést odstávku saprouteru. V těch špatných postupech vám tvrdí že je nutné smazat privátní klíč, znovu ho vygenerovat, pak z vygenerovat CSR a ten podepsat na stránkách SAPu. Jde to ale i jinak. Nebude nutné hlásit odstávku – pokud ano tak pouze pro restart saprouter daemona, což zabere asi 5 sekund.

Kontrola stavu certifikátu

Prvním krokem bude že se podíváme do kdy platí stávající certifikát:

Tento příkaz nám vypíše výstup podobný tomuto:

Z výstupu je vidět že certifikátu brzy skončí platnost – tedy je nutné ho nahradit novým.

Vygenerování CSR

Následujícím příkazem vygenerujete CSR, který následně najdete ve složce $SECUDIR a samotný soubor s CSR se bude jmenovat certreq:

Nyní je nutné zkopírovat obsah souboru certreq do schránky. Soubor je možné vypsat třeba takto pomocí příkazu cat:

Obsah souboru certreq by měl vypadat přibližně takto:

Podepsání CSR

Nyní je nutné podepsat CSR na stránkách SAPu. Stránky SAPu se často mění, ale přesto uvádím odkaz: https://support.sap.com/remote-support/saprouter/saprouter-certificates.html. Na těchto stránkách vložíte obsah schránky do textového pole a projdete průvodcem, který vám vygeneruje z CSR certifikát. Certifikát si opět zkopírujeme do schránky. Na serveru kde máme saprouter ho uložíme do souboru s názvem cert, který musí být ve složce $SECUDIR. V souboru cert bude pravděpodobně starý certifikát – tedy ho přepište novým. Pokud si nevěříte tak si raději předem tento soubor zazálohujte.

Import certifikátu

Posledním krokem je import/nahrazení samotného certifikátu. To provedeme příkazem:

Kontrola importu

Ověříme že se certifikát opravdu naimportoval a nahradil certifikát původní:

Nyní zbývá už jenom provést restart saprouteru pomocí příkazu:

Ubuntu 14.04 smazání starých kernelů

Občas mi při update kernelu dojde místo v /boot a potom je potřeba smazat starší kernely, které již nepoužívám. Dělat to po jednom ručně je děsně otravné. Proto jsem našel tento script, který stará jádra smaže.

Pozor jaká jádra mažete! Doporučuji chápat co tento příkaz dělá, pokud mu nerozumíte raději stará jádra mažte ručně!

Zdroj: http://askubuntu.com/questions/2793/how-do-i-remove-old-kernel-versions-to-clean-up-the-boot-menu

Jak změnit structural objectClass v OpenLDAP

Typy objectClass

objectClass (třída objektu/objektová třída) může být následujících typů:

  1. STRUCTURAL (konstrukční) – Každý objekt musí mít právě jednu, je využita k vytváření datových objektů v backendu a je tedy povinná.
  2. AUXILIARY (pomocná/doplňující) – Může být přidána nebo odebrána na kterémkoli objektu podle toho jak se nám to hodí.
  3. ABSTRACT (abstraktní) – Nejběžnější abstraktní třída je objectClass top která je na nejvyšší úrovni hierarchického stromu tříd objektů.

Chyba při změně structural třídy

Pokud se pokusíte změnit objectClass která je structural tak se to nepovede a LDAP zahlásí chybu podobnou této:

[LDAP: error code 69 – structural object class modification from ‚Person‘ to ‚Account‘ not allowed]

Až dosud jsem to tedy řešil tak že jsem objekt na kterém jsem potřeboval takovouto změnu provést vyexportoval do ldif formátu, provedl změnu, původní objekt smazal a naimportoval upravený objekt. Nevýhoda tohoto řešení je že se musí něco mazat, což není nikdy moc dobré. Může dojít k chybě při importu a uživatel se nebude moci chvilku přihlásit.

Další možností bylo zastavit slapd, vyexportoval pomocí slapcat databázi do ldif, provést změnu a znovu naimportovat databázi pomocí slapadd. Mělo to výhodu v tom že zůstala zachovaná metadata objektů (kdo ho vytvořil a kdy), nevýhodou byla samozřejmě odstávka LDAP serveru a reindexace všech objektů při importu, což může chvilku trvat.

Využití Relax Rules control

Pro mě novou možností je využití příznaku control:

Při využití příznaku control s hodnotou 1.3.6.1.4.1.4203.666.5.12 lze structural objectClass změnit. Samozřejmě musí Relax Rules control podporovat váš slapd daemon. Velkou výhodou tohoto řešení je to že se nic nemusí mazat.

Více si o tom můžete přečíst na tomto odkazu https://tools.ietf.org/html/draft-zeilenga-ldap-relax-03#section-3.1. Jinak já jsem se k této vychytávce dostal přes tento článek.

Záloha Active Directory do čitelného ldif souboru

Jak vytáhnou databázi AD do ldifu

Poměrně chvilku jsem hledal Jak vytáhnout celou databázi Active Directory do ldif souboru. Problém byl v tom že AD vždy po chvilce vrátilo size limit exceeded. Trik je v tom že se musí nástroji ldapsearch nastavit parametr -E kterým řekneme že chceme vždy pouze 1000 položek na stránku a noprompt říká že nechceme potvrzovat stahování jednotlivých stránek:

Zdroj: http://blog.tirasa.net/getting-around-active-directory-search.html

 

Čistý výstup z nástroje ldapsearch

Dekódování z base64 a odstranění zalomení jedním řádkem

Poslední dobou pracuji hodně s MS Active Directory a potřebuji dostat při hledání pomocí nástroje ldapsearch nezalomený výstup a rozkódovaný z base64:

Tento snippet pochází z http://www.private-pages.com/index.php/Ldapsearch_cleanup_output.

SSL certifikáty na jeden rok zdarma

Již dříve jsem psal o tom jak vytvořit certifikát. Dnes jsem si zaregistroval novou doménu a potřeboval jsem pro ni získat důvěryhodný certifikát. Již brzy (3.12.2015) by měla být spuštěna veřejná beta verze projektu Letsencrypt na kterou se už moc těším a doufám že ji můj webhosting ihned implementuje. Pomocí ní bude možné generovat důvěryhodné certifikáty zdarma. O Letsencrypt píšou třeba na root.cz.

Nechtělo se mi tedy samozřejmě za certifikát pro testovací doménu platit – takže jsem zagooglil a našel jsem společnost čínskou společnost WoSign, která nabízí důvěryhodný certifikát na jeden rok zcela zdarma. Stačí se zdarma zaregistrovat, ověřit doménu pomocí e-mailu nebo nahráním vygenerovaného html souboru.

Zdroj: https://www.ohling.org/blog/2015/02/wosign-free-2y-ssl-certificate.html

 

 

Nastavení saprouteru a zabezpečení pomocí SNC

Instalační balíčky

Instalační balíčky je možné stáhnout na stránkách SAPu. Jsou potřeba tři balíčky:

  1. SAPCAR (na rozbalení SAR archivů)
  2. SAPROUTER (samotný program saprouter)
  3. SAPCRYPTOLIB (nutné pro podporu zabezpečené komunikace – SNC)

Balíčky s příponou *.sar se musí rozbalit pomocí programu SAPCAR:

Dále je zapotřebí vytvořit následující složkovou strukturu ve /var/lib/saprouter/ a do ní zkopírovat libsapcrypto.so a sapgenpse vybalené z archivu sapcryptolib, výsledná struktura by měla vypadat takhle:

Vytvořit link pro binárku sapgenpse:

Vytvořit uživatele pod kterým bude spuštěn saprouter:

Nastavit proměnné pro sapgenpse vytvořením následujícího souboru /etc/profile.d/saprouter.sh:

Init script

SAP společně s binárkou saprouter bohužel nedodává init script, jak saprouter startovat po startu nechává na lidové tvořivosti. Zde je funkční init script pro RedHat 6.x který spouští saprouter pod dedikovaným uživatelem. Umí také provést reload saprouttabu.

Zajistit spouštění služby po startu systému:

Dále je dobré nastavit v /etc/sudoers přebírání proměnných které říkají kde je umístěna knihovna sapcryptolib a secudir (složka obsahující certifikát a úložiště privátního klíče):

Dále lze v sudoers povolit uživateli admin-saprouter pomocí příkazu sudo provádět restart saprouteru a generování certifikátu pomocí sapgenpse, podobným způsobem lze nastavit pro skupinu uživatelů:

Saprouttab a SNC komunikace

Pokud chcete aby saprouter komunikoval zabezpečeně je potřeba nastavit ho pro takzvanou SNC komunikaci. Tato komunikace je zabezpečena certifikátem. Proto aby vám SNC fungovalo potřebujete nakonfigurovat saprouter tak aby používal sapcryptolib a certifikát, který si vygenerujete na stránkách SAPu.

Generování certifikátu pro SNC

Všechno začíná návštěvou stránek SAPu kde po přihlášení můžete najít svoje DN (Your Distinguished Name). Toto jméno vyplníte do příkazu pomocí kterého vygenerujete privátní klíč a vaši žádost o podepsání certifikátu:

Nyní vezmete soubor umístěný v $SECUDIR a jmenující se cert do schránky a projdete procesem vystavění certifikátu na stránkách SAPu, kde bude potřeba tuto žádost o certifikát vložit. Po úspěšném absolvování tohoto procesu by jste měli získat certifikát podepsaný SAP autoritou, který lze naimportovat do souboru local.pse:

Posledním krokem je vytvoření souboru pro odemknutí úložiště (local.pse) pro uživatele saprouter (pro uživatele pod kterým poběží saprouter):

Následně je potřeba v init scriptu nastavit správné DN certifikátu a přepsat/vytvořit saprouttab do následující syntaxe:

Test spojení do OSS pomocí niping

Binární soubor niping je testovací program pro NI-Layer (dá se přirovnat k nástroji ping). Jestli je všechno správně nastavené tak lze pomocí nipingu vyzkoušet spojení na servery SAPu:

Tento návod budu postupně ještě doplňovat. V případě dotazů pište komentáře.

Dell iDrac Enterprise Evaluation License

Kdo používá Dell servery které mají out-of-band management – iDrac a chtěl by si před zakoupením iDrac Enterprise Evaluation licence vyzkoušet jak tyto prémiové funkce vlastně fungují, může využít tuto třicetidenní trial licenci:


Stačí pomocí webového rozhraní iDrac naimportovat jako XML soubor a restartovat iDrac.