Smazání mailů z fronty podle předmětu

Jak smazat zprávy z fronty posfixu

Občas se něco nepovede a je potřeba promazat mailovou frontu. Pak přijde vhod tento snippet, který projde všechny zprávy ve frontě a smaže ty které mají zadaný předmět subject.

 

OpenConnect CSD wrapper

Wrapper simulující Windows AnyConnect

 

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