<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" 	xmlns:content="http://purl.org/rss/1.0/modules/content/" 	xmlns:wfw="http://wellformedweb.org/CommentAPI/" 	xmlns:dc="http://purl.org/dc/elements/1.1/" 	xmlns:atom="http://www.w3.org/2005/Atom" 	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 	xmlns:slash="http://purl.org/rss/1.0/modules/slash/" 	> <channel> 	<title>Linux admin</title> 	<atom:link href="https://malina.hu/feed/" rel="self" type="application/rss+xml" /> 	<link>https://malina.hu</link> 	<description>Úgy érzed, hogy nincs elég időd? Aludj gyorsabban!</description> 	<lastBuildDate>Fri, 12 Apr 2024 13:30:35 +0000</lastBuildDate> 	<language>hu-HU</language> 	<sy:updatePeriod> 	hourly	</sy:updatePeriod> 	<sy:updateFrequency> 	1	</sy:updateFrequency> 	 	<item> 		<title>Proxmox webfelülethez certbot tanúsítvány beállítása</title> 		<link>https://malina.hu/proxmox-webfelulethez-certbot-tanusitvany-beallitasa/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Thu, 17 Oct 2019 13:18:45 +0000</pubDate> 				<category><![CDATA[Proxmox]]></category> 		<category><![CDATA[certbot]]></category> 		<category><![CDATA[proxmox]]></category> 		<category><![CDATA[pveproxy]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=362</guid> 					<description><![CDATA[Bár triviálisnak tűnik, az ember (köztük Én) hajlamos elfelejteni a módszerét ennek a ritkán ismétlődő igénynek: Proxmox node-okon a telepítő által webfelülethez (pontosabban pveproxy) generált ssl tanúsítvány cseréje. Érdemes inkább megörökíteni, hogy később ne okozzon fejfájást és időrablást az újabb internetes kutatás. Az alábbiak frissen telepített Proxmox 6.0-án, így Debian 10-en történnek. Feltételezem, hogy egy [&#8230;]]]></description> 										<content:encoded><![CDATA[ <p>Bár triviálisnak tűnik, az ember (köztük Én) hajlamos elfelejteni a módszerét ennek a ritkán ismétlődő igénynek: Proxmox node-okon a telepítő által webfelülethez (pontosabban pveproxy) generált ssl tanúsítvány cseréje. Érdemes inkább megörökíteni, hogy később ne okozzon fejfájást és időrablást az újabb internetes kutatás.</p> <p>Az alábbiak frissen telepített Proxmox 6.0-án, így Debian 10-en történnek. Feltételezem, hogy egy ideálisan beállított node-on vagy, amelynek van publikus ip címe (vagy legalábbis ide jut be), és van egy, az ip címhez társított host neved. Példának kedvéért: </p> <ul class="wp-block-list"> <li>host neved: pve01.host.hu</li> <li>ip címed: 1.1.1.1</li> </ul> <p>Feltételezem azt is, hogy nincs webszerver telepítve a node-on, vagyis azt, hogy egy program sem használja a 80-as portot.</p> <p>Mint minden webhely tanúsítványa, ez is 3 fontos dolgot igényel: tanúsítványt, privát kulcsot és a felsőbb szintű lánc tanúsítványokat &#8211; ebben tehát nincs ördöngösség. A plusz az, hogy a pveproxy-t kell újra indítani. </p> <p>Először is célszerű telepíteni a certbot-ot:</p> <figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" width="1024" height="301" src="http://malina.hu/hunevig/2019/10/le-logo-wide-1024x301.png" alt="" class="wp-image-366" style="width:599px;height:176px" srcset="https://malina.hu/hunevig/2019/10/le-logo-wide-1024x301.png 1024w, https://malina.hu/hunevig/2019/10/le-logo-wide-300x88.png 300w, https://malina.hu/hunevig/2019/10/le-logo-wide-768x226.png 768w, https://malina.hu/hunevig/2019/10/le-logo-wide-990x291.png 990w, https://malina.hu/hunevig/2019/10/le-logo-wide-1320x389.png 1320w, https://malina.hu/hunevig/2019/10/le-logo-wide.png 1335w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#apt install certbot</pre> <p>Ezután kérjünk egy tanúsítványt:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">certbot certonly --standalone --preferred-challenges http -d pve01.host.hu</pre> <p>Ezzel tulajdonképpen meg is vagy. Megkérdez 1-2 dolgot (email cím, hozzájárulás), majd ha a hitelesítés rendben lefut, máris legenerálta a tanúsítványt, kulcsot és miegymást, amire csak szükséged lehet. Mindezt az /etc/letsencrypt/live/pve01.host.hu könyvtárban fogod megtalálni.</p> <p>A következő lépésben másold át az alábbi fájlokat az /etc/pve/local könyvtárba:</p> <ul class="wp-block-list"> <li>/etc/letsencrypt6archive/pve01.host.hu/fullchain1.pem</li> <li>/etc/letsencrypt6archive/pve01.host.hu/privkey1.pem</li> </ul> <p>Ezek tulajdnonképpen symlinkelve vannak a korábban említett /etc/letsencrypt/live/pve01.host.hu könyvtárba, csak éppen symlinket nem lehet használni az /etc/pve könyvtárban, így a tényleges tartalmat kell áthelyezni.</p> <p>Következő lépésben le kell cserélned a Proxmox tanúsítványát és kulcsát. ezt mindig az adott node könyvtárában találod, amit az /etc/pve/local alatt találsz. Ide másoltad át az előbbiekben a fájlokat, és itt fogod megtalálni pve-ssl.key és pve-ssl.pem fájlokat, amelyekt most lecserélsz. Ha gondolod, előtte mentsd le ezeket.</p> <p>Átnevezések:</p> <ul class="wp-block-list"> <li>/etc/pve/local/fullchain1.pem -&gt; /etc/pve/local/pve-ssl.pem</li> <li>/etc/pve/local/privkey1.pem -&gt; /etc/pve/local/pve-ssl.key</li> </ul> <p>Ezután már csak újra kell indítanod a pveproxy szolgáltatást.</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#systemctl restart pveproxy</pre> <p>A webfelület pedig máris valid. Ha mégsem (és ez előfordulhat), akkor először próbáld ki privát ablakban, majd ha ott jól működik, akkor egyszerűen csak zárd be a korábbi tab-ot/ablakot, és nyiss egy újat, abban nyisd meg a Proxmox webfelületét.</p> <div class="pvc_clear"></div><p id="pvc_stats_362" class="pvc_stats all  " data-element-id="362" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p><div class="pvc_clear"></div>]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Elasticsearch telepítése Arch Linuxon</title> 		<link>https://malina.hu/elasticsearch-telepitese-arch-linuxon/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Sun, 16 Jun 2019 16:51:17 +0000</pubDate> 				<category><![CDATA[Adatbázis]]></category> 		<category><![CDATA[Arch Linux]]></category> 		<category><![CDATA[elasticsearch]]></category> 		<category><![CDATA[elasticsearch-7.1]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=345</guid> 					<description><![CDATA[Az Elasticsearch ugyan telepíthető hivatalos forrásból, de hosszú távon előre tekintve nem biztos, hogy ez a változat a megfelelő, ugyanis nem tartalmazza az X-Pack modult. Elasticsearch 7.1 verziót fogunk telepíteni, amely tartalmazza az egyébként szükséges X-Pack modult is. Az Elasticsearch alapból nem ad hitelesítéssel és jogosultsággal kapcsolatos funkciókat. Ezeket az X-Pack nevű modul biztosítja, ami [&#8230;]]]></description> 										<content:encoded><![CDATA[ <p>Az Elasticsearch ugyan telepíthető hivatalos forrásból, de hosszú távon előre tekintve nem biztos, hogy ez a változat a megfelelő, ugyanis nem tartalmazza az X-Pack modult. Elasticsearch 7.1 verziót fogunk telepíteni, amely tartalmazza az egyébként szükséges X-Pack modult is.</p> <span id="more-345"></span> <p>Az Elasticsearch alapból nem ad hitelesítéssel és jogosultsággal kapcsolatos funkciókat. Ezeket az X-Pack nevű modul biztosítja, ami bár fizetős, csak akkor, ha teljes körűen akarjuk használni. Ingyen is használható pár hitelesítési és jogosultságkezelési opciója. Erről bővebben az <a rel="noreferrer noopener" aria-label=" (új fülön nyitja meg)" href="/elasticsearch-hitelesites" target="_blank">Elasticsearch hitelesítés</a> oldalon tudsz olvasni.</p> <p>Ahogy korábban említettem, Arch Linux esetében pacman-el telepíthető lenne az <a rel="noreferrer noopener" aria-label="elasticsearch (új fülön nyitja meg)" href="https://www.archlinux.org/packages/community/x86_64/elasticsearch/" target="_blank">elasticsearch</a> csomag, de ebből sajnos hiányzik az X-Pack. Valószínűsítem, hogy licencelési okok állnak a háttérben. Neked a teljes változatra van szükséged, amely tartalmazza az X-Pack modult. A teljes változat nem azt jelenti, hogy egyből fizetőssé válik a szoftver. Az X-Pack modul sok funkciót tartalmaz, fizetni pedig csak a modul bővebb használatáért kell. Kétféle előfizetés választható, amikhez szokásos módon külön licence is jár. Ennek birtokában tudod elérni a plusz funkciókat. Erről többet itt olvashatsz: <a rel="noreferrer noopener" aria-label=" (új fülön nyitja meg)" href="https://www.elastic.co/subscriptions" target="_blank">https://www.elastic.co/subscriptions</a></p> <p>Érdekesség kedvéért találtam 1-2 beszélgetést a Reddit-en az X-Pack költségeit illetően. Ezek alapján:</p> <figure class="wp-block-table"><table><tbody><tr><td>Platinum</td><td>~ 7.000 euró/node/év</td></tr><tr><td>Gold</td><td>~ 5.500 euró/node/év</td></tr></tbody></table></figure> <h4 class="wp-block-heading">Telepítés</h4> <p>Hivatalosan .deb és .rpm  csomag, illetve a forráskód áll rendelkezésünkre az Elasticsearch oldalán: <a rel="noreferrer noopener" href="https://www.elastic.co/downloads/elasticsearch" target="_blank">https://www.elastic.co/downloads/elasticsearch</a>. A .deb és .rpm csomagok telepítésének leírását nem taglalom.</p> <p>A hivatalos Arch telepítő csomag esetében a PKGBUILD-ben lévő forrás URL-ben van egy oss jelölés, ami által &#8211; vélhetően &#8211; csupán az Open Source változat tölthető le. Az oss jelölés nélküli URL a teljes változatot tartalmazza. Megoldásként két dolgot tehetsz: </p> <ol class="wp-block-list"> <li>telepítesz Elasticsearch forrásból, amihez összeütsz egy service fájlt &#8211; ez némileg fapados, pár dolgot manuálisan kell még utána megcsinálnod (felhasználó létrehozás, tmp könyvtár, stb)</li> <li>az eredeti PKGBUILD alapján készítesz egy saját csomagot, amiben a forrás a teljes változat</li> </ol> <p>Én az utóbbit választanám. Ehhez letöltöd az Arch Linux community repóját, hogy hozzáférj az elasticsearch csomaghoz szükséges egyéb fájlokhoz (service, tmpfile, stb). Ezzel sok időt nyerhetsz.</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git clone https://git.archlinux.org/svntogit/community.git .</pre> <p>A PKGBUILD-ben kicseréled a forrást a teljes verzióra (<a href="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz">https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz</a>), illetve kicserélted hozzá az aktuális sha256sum értéket. Generálsz hozzá egy .SRCINFO fájlt majd minden mást módosítatlanul hagyva futtattod a makepkg-t és végül telepíted a csomagot.</p> <div class="pvc_clear"></div><p id="pvc_stats_345" class="pvc_stats all  " data-element-id="345" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p><div class="pvc_clear"></div>]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Elasticsearch hitelesítés és jogosultság kezelés</title> 		<link>https://malina.hu/elasticsearch-hitelesites/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Tue, 11 Jun 2019 10:31:27 +0000</pubDate> 				<category><![CDATA[Adatbázis]]></category> 		<category><![CDATA[database]]></category> 		<category><![CDATA[elasticsearch]]></category> 		<category><![CDATA[elasticsearch-7.1]]></category> 		<category><![CDATA[file-realm]]></category> 		<category><![CDATA[native-realm]]></category> 		<category><![CDATA[security]]></category> 		<category><![CDATA[x-pack]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=281</guid> 					<description><![CDATA[Elasticsearch 7.1 verzióval kapcsolatos a leírásom, melyben megpróbálom bemutatni egy ingyenesen használható, alapszintű hozzáférési rendszer beállítását. Az elasticsearch alapból nem ad hitelesítéssel és jogosultsággal kapcsolatos funkciókat. Ezeket az X-Pack nevű modul biztosítja, amelynek használata első olvasatra fizetős. Második olvasatra viszont észre vehetjük, hogy ha nem igényeljük az X-Pack teljes fegyvertárát, akkor a Basic verzióként (ami [&#8230;]]]></description> 										<content:encoded><![CDATA[ <p>Elasticsearch 7.1 verzióval kapcsolatos a leírásom, melyben megpróbálom bemutatni egy ingyenesen használható, alapszintű hozzáférési rendszer beállítását.</p> <span id="more-281"></span> <p>Az elasticsearch alapból nem ad hitelesítéssel és jogosultsággal kapcsolatos funkciókat. Ezeket az X-Pack nevű modul biztosítja, amelynek használata első olvasatra fizetős. </p> <p>Második olvasatra viszont észre vehetjük, hogy ha nem igényeljük az X-Pack teljes fegyvertárát, akkor a Basic verzióként (ami még szintén ingyenes) használhatunk alapfokú hitelesítési és jogosultságkezelő funkciókat. Jól látható, hogy az RBAC (Role-based access control), illetve a file és native realm típusú hitelesítés érhető el számunkra:</p> <figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="864" src="http://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic-1024x864.png" alt="" class="wp-image-284" srcset="https://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic-1024x864.png 1024w, https://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic-300x253.png 300w, https://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic-768x648.png 768w, https://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic-990x835.png 990w, https://malina.hu/hunevig/2019/06/Screenshot_2019-06-10-Subscriptions-·-Elastic-Stack-Products-Support-Elastic.png 1144w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <h3 class="wp-block-heading">Első lépések</h3> <p>A telepítésről itt tudsz bővebben olvasni: <a rel="noreferrer noopener" aria-label=" (új fülön nyitja meg)" href="/elasticsearch-telepitese-arch-linuxon" target="_blank">Elasticsearch telepítése Arch Linuxon. </a>Miután telepítetted a megfelelő verziót és megejtetted az első beállítások (cluster, node, network), először érdemes beállítani a beépített felhasználók jelszavát. Jelen állapotban ugyanis szabad a vásár, az csatlakozik az adatbázishoz aki akar. A jelszavak beállítása után ezt már nem lehet megtenni. A beépített felhasználók listája:</p> <ul class="wp-block-list"> <li>apm_system</li> <li>kibana</li> <li>logstash_system</li> <li>beats_system</li> <li>remote_monitoring_user</li> <li>elastic</li> </ul> <p>A jelszavak beállítását egy parancssoros programmal tudjuk megtenni:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#elasticsearch-setup-password auto</pre> <p>Használható az interactive opció is az auto helyett, de túl sok jelszót kell bepötyögni, érdemes az auto-t használnod. A felhasználókat és a generált jelszavakat kiírja a konzolra, ezeket érdemes elmenteni. Ezek után ha csatlakozni akarsz a REST API-hoz, az elastic felhasználót és annak jelszavát kell használnod (amíg nincsenek más felhasználóid).</p> <h3 class="wp-block-heading">Konfiguráció</h3> <p>Ahogy korábban is beszéltük, a sokfajta hitelesítési megoldás közül a file és a native realm áll ingyenesen a rendelkezésünkre. Mindegy, hogy melyiket választod, azt előtte engedélyezned kell.</p> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack:   security:     authc:       realms:         file:           file1:             order: 1             enabled: false         native:           native1:             order: 0</pre> <p>Először is engedélyezned kell az X-Pack security-t. Ez a beállítás megköveteli a transport csatorna SSL beállítását, tehát ezt is beállítjuk. Ezután beállíthatod a file vagy native realm-t. Akár mindkettőt is használhatod egyszerre, lényeg, hogy az order tulajdonságuk is beállításra kerüljön, amivel a hitelesítési sorrendet határozzuk meg. Jelen példában sorrendben első a native, majd a file, bár a fenti példában a file realm kikapcsolásra került (enabled: false).</p> <h3 class="wp-block-heading">Native realm</h3> <p>A dokumentácó szerint a legkönnyebb hitelesítési lehetőséget a native realm adja (persze annak, akinek a REST API használata nem gond). A native realm által kezelt felhasználói adatok a clusterre egészére vonatkoznak, így nem konfigurációs fájl, hanem REST API segítségével lehet menedzselni a felhasználókat, jogosultságokat és jelszavakat. Ezeket az adatokat a _security index alatt tárolja a rendszer, ami természetesen a cluster összes node-ján megtalálható lesz. </p> <p>Mivel korábban már beállítottuk a beépített felhasználók jelszavát, a REST API használatához loginolni kell. Az elastic nevű felhasználó megfelelő lesz hozzá. </p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -u elastic -X POST "127.0.0.1:9200/_security/user/username" -H 'Content-Type: application/json' -d' {   "password" : "password",   "roles" : [ "superadmin"],   "full_name" : "User Name",   "email" : "username@example.com",   "metadata" : {     "intelligence" : 7   } } '</pre> <p>A parancs futtatásakor a curl bekéri az elastic user jelszavát, de ha megadható előre a -u elastic@password formátummal is. Ha minden rendben, az alábbi választ kapod vissza:</p> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{     "created": true }</pre> <p>Ezek után tudod lekérdezni a felhasználó adatait:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -u username -X GET "127.0.0.1:9200/_security/_authenticate"</pre> <p>És a válasz:</p> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "username": "username",   "roles": [     "superadmin"   ],   "full_name": "User Name",   "email": "username@example.com",   "metadata": {     "intelligence": 7   },   "enabled": true,   "authentication_realm": {     "name": "native1",     "type": "native"   },   "lookup_realm": {     "name": "native1",     "type": "native"   } }</pre> <h3 class="wp-block-heading">File realm</h3> <p>A file realm segítségével a felhasználókat és jogait konfigurációs fájlból olvassa ki az adatbázis. Mivel ez a módszer fájl alapon működik, a konfigurációs fájlokat a cluster mindegyik node-jára át kell másolni. A használható fájlok: </p> <ul class="wp-block-list"> <li>role_mapping.yml</li> <li>roles.yml</li> <li>users</li> <li>users_roles</li> </ul> <p>A role_mapping.yml fájlt most nem érintjük. A roles.yml tárolja az általunk létrehozott egyedi role szabályokat, az users tárolja a felhasználókat és azok hash jelszavait, az users_roles pedig a felhasználók és role-ok kapcsolásait. Egy felhasználóhoz akár több role is társítható, ezek soronként kerülnek be az users_role fájlba.</p> <p>Nem kell a fájlokat magunknak szerkesztenünk, kapunk hozzá parancssoros programot: elasticsearch-users. Használata faék egyszerű:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#felhasznalok listazasa elasticsearch-users list #felhasznalo letrehozasa elasticsearch-users useradd username #role beallitasa elasticsearch-users roles username -a superadmin #role torlese elasticsearch-users roles username -r superadmin #felhasznalo torlese elasticsearch-users userdel username  #jelszo csere elasticsearch-users passwd username</pre> <h3 class="wp-block-heading">Role rendszer &#8211; RBAC</h3> <p>A szerver mindegyik felhasználóhoz társít egy alapértelmezett role-t. Ez a role engedélyezi a felhasználóknak az authentication végpont elérését, jelszavuk cseréjét és információ kérését saját magukról.</p> <p>Ezen felül van pár beépített role a rendszerben, amelyek közül majdnem bármelyiket hozzáköthetjük bármelyik felhasználóhoz. Ezek a role-ok rögzített jogosultságokkal rendelkeznek és nem módosíthatóak. Van olyan role, amit nem lehet felhasználóhoz társítani.</p> <ul class="wp-block-list"> <li><strong>apm_system</strong><br>Biztosítja az APM rendszer felhasználójának szükséges hozzáférést ahhoz, hogy rendszer szintű adatokat (például monitoring) küldjön az Elasticsearch-nek.</li> <li><strong>apm_user</strong><br>Biztosítja az APM-felhasználók számára szükséges jogosultságokat (például az apm-* és .ml-anomalies* indexek olvasási és view_index_metadata jogosultságait).</li> <li><strong>beats_admin</strong><br>Hozzáférést biztosít a .management-beats indexhez, amely a Beats konfigurációs adatait tartalmazza.</li> <li><strong>beats_system</strong><br>A Beats rendszer felhasználójának hozzáférést biztosít a rendszer szintű adatok (például megfigyelés) elküldéséhez az Elasticsearch-nek.</li> <li><strong>ingest_admin</strong><br>Hozzáférést biztosít az összes index sablon és az összes ingest pipeline konfiguráció kezeléséhez.</li> <li><strong>kibana_dashboard_only_user</strong><br>Hozzáférést biztosít a Kibana Dashboardhoz, és csak olvasási engedélyeket biztosít a Kibana számára. Ez a role nem fér hozzá a Kibana szerkesztési eszközeihez.</li> <li><strong>kibana_system</strong><br>A Kibana rendszer felhasználójának szükséges hozzáférést biztosít a Kibana indexek olvasásához és írásához, index sablonok és tokenek kezeléséhez, valamint az Elasticsearch fürt elérhetőségének ellenőrzéséhez. Ez a szerep biztosítja a read hozzáférést a .monitoring-* indexekhez, valamint az olvasási és írási hozzáférést a .reporting-* indexekhez. </li> <li><strong>kibana_user</strong><br>Kibana minden funkciójának elérése.</li> <li><strong>logstash_admin</strong><br>Hozzáférést biztosít a .logstash* indexekhez a konfigurációk kezeléséhez.</li> <li><strong>logstash_system</strong><br>Biztosítja a Logstash rendszer felhasználójának szükséges hozzáférést ahhoz, hogy rendszer szintű adatokat (például monitoring) küldjön az Elasticsearch-nek.</li> <li><strong>machine_learning_admin</strong><br>Biztosítja a <code>manage_ml</code> cluster  jogosultságokat, ezenkívül olvasási elérést az .ml-<code>anomalies</code>*, .ml-<code>notifications</code>*, .ml-state *, .ml-meta* indexekhez és írási jogosultságot az .ml-<code>annotations</code>* indexekhez.</li> <li><strong>machine_learning_user</strong><br>Biztosítja a gépi tanulás konfigurációjának, állapotának és eredményeinek megtekintéséhez szükséges minimális jogosultságokat. Ez a szerepkör biztosítja a <code>monitor_ml</code> cluster jogosultságait, olvasási hozzáférést az .ml-<code>notifications</code> és a .ml-anomalies* indexekhez (amelyek a gépi tanulási eredményeket tárolják), és írási hozzáférést az .ml-annotations* indexekhez.</li> <li><strong>monitoring_user</strong><br>Biztosítja az X-Pack monitoring használatához szükséges minimális jogosultságokat, kivéve a Kibana használatához szükséges jogosultságokat. Ez a szerepkör lehetővé teszi a monitoring indexekhez való hozzáférést és az alapvető cluster információk olvasásához szükséges jogosultságokat. A monitoring_users felhasználókhoz a kibana_user role-t is hozzá kell rendelni.</li> <li><strong>remote_monitoring_agent</strong><br>Biztosítja a minimális jogosultságokat az adatok monitoring indexekbe történő írásához (.monitoring-*). Ez a szerepkör a Metricbeat indexek (metricbeat- *) létrehozásához és a hozzájuk tartozó adatok írásához szükséges jogosultságokkal is rendelkezik.</li> <li><strong>remote_monitoring_collector</strong><br>Biztosítja azokat a minimális jogosultságokat, amelyek az Elastic Stack monitoring adatainak gyűjtéséhez szükségesek.</li> <li><strong>reporting_user</strong><br>Biztosítja az X-Pack felhasználóknak a riport jogosultságot, kivéve a Kibana használatához szükséges más jogosultságokat. Ez a szerepkör hozzáférést biztosít a report indexekhez; de mindegyik felhasználó csak saját jelentéseihez férhet hozzá. A riport felhasználókhoz hozzá kell rendelni a kibana_user szerepkört és egy olyan szerepkört, amely hozzáférést biztosít számukra a jelentések létrehozásához használt adatokhoz.</li> <li><strong>snapshot_user</strong><br>Biztosítja a szükséges jogosultságokat az összes index pillanatfelvételének létrehozásához és a meta adatok megtekintéséhez. Ez a szerepkör lehetővé teszi a felhasználók számára, hogy megtekinthessék a meglévő pillanatfelvétel-tárolók és pillanatfelvételek részleteit. Nem engedélyezi a tárolók eltávolítását vagy hozzáadását, illetve a pillanatképek visszaállítását. Nem teszi lehetővé az index beállítások módosítását vagy az index adatok olvasását vagy frissítését.</li> <li><strong>superuser</strong><br>Teljes hozzáférést biztosít a cluster-hez, beleértve az összes indexet és adatot. A felhasználók, akiknek a superadmin szerepe van, a felhasználókat és szerepköröket is kezelheti, és bármilyen más felhasználót is megszemélyesíthet a rendszerben.</li> <li><strong>transport_client</strong><br>Biztosítja a Java Transport Client által a cluster eléréséhez szükséges jogosultságokat. A Java Transport Client a cluster csomópontjairól információkat gyűjt a Node Liveness API és a Cluster State API használatával.</li> <li><strong>watcher_admin</strong><br>Olvasási hozzáférést biztosít a .watches indexhez, olvasási hozzáférést a watch history-hoz a triggered watch indexekhez és lehetővé teszi az összes watch action végrehajtását.</li> <li><strong>watcher_user</strong><br>Biztosítja az olvasási hozzáférést a .watches indexhez, és szintén biztosítja a get watch action és a watcher statisztikát.</li> </ul> <p>Az összes beépített role közül a <strong>superadmin </strong>a legérdekesebb. Ez a role teljes hozzáférést biztosít <strong>mindenhez</strong>, így csínján kell vele bánni.</p> <h3 class="wp-block-heading">Egyedi role</h3> <p>Saját role-ok is létrehozhatóak. Egy role-ban pár tulajdonságot szabályozni kell:</p> <ul class="wp-block-list"> <li><code>applications</code><br>Lista, amely az alkalmazások jogosultsági listáját tartalmazza. A lista elem tartalmazza: <code>application</code>, <code>privileges</code>, <code>resources</code>. Nem kötelező mező.</li> <li><code>cluster</code><br>A cluster jogosultságok listája. Ezek a jogosultságok határozzák meg azokat a cluster-szintű műveleteket, amelyeket az ilyen szerepkörrel rendelkező felhasználók képesek végrehajtani. Nem kötelező mező.</li> <li><code>global</code><br>A globális jogosultságokat meghatározó objektum. A globális jogosultság a cluster jogosultságának formája, amely kérés-érzékeny. A szabványos cluster jogosultság kizárólag a végrehajtott cselekvésen alapuló engedélyezési döntéseket hoz. A globális jogosultság figyelembe veszi a kérelemben szereplő paramétereket is. A globális jogosultságok támogatása jelenleg az alkalmazásjogosultságok kezelésére korlátozódik. Ez a mező nem kötelező.</li> <li>indices<br>Az indexek hozzáférési listája. A lista elem tartalmazza: <code>field_security</code>, <code>names</code>, <code>privileges</code>, <code>query</code>. Nem kötelező mező.</li> <li><code>metadata</code><br>Objektum, amely opcionális metaadatokat tartalmazhat. A metaadat objektumon belül az _ használatával kezdődő kulcsok a rendszerhasználat számára vannak fenntartva.</li> <li>run_as<br>Azoknak a felhasználóknak a listája, akik az ezt tulajdonoló felhasználókat megszemélyesíthetik.</li> </ul> <h4 class="wp-block-heading">role</h4> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "run_as": [ ... ],    "cluster": [ ... ],    "global": { ... },    "indices": [ ... ],    "applications": [ ... ]  }</pre> <h4 class="wp-block-heading">indices</h4> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "names": [ … ],   "privileges": [ … ],   "field_security" : { … },   "query": "…" }</pre> <ul class="wp-block-list"> <li>names<br>Az indexek (vagy indexnevek) listája, amelyekre az ebben a bejegyzésben szereplő jogosultságok érvényesek.</li> <li>privileges<br>Indexszintű jogosultság a kapcsolódó indexeken (azok az indexek, amelyek a name mezőben vannak megadva)</li> <li>field_security<br>A dokumentum mezők leírása amelyhez a felhasználók olvasási hozzáféréssel rendelkeznek</li> <li>query<br>Egy olyan keresési lekérdezés, amely meghatározza az elérhető dokumentumok olvasási jogát. A társított indexeken belüli dokumentumnak meg kell egyeznie ezzel a lekérdezéssel annak érdekében, hogy a szereplők számára hozzáférhető legyen.</li> </ul> <h4 class="wp-block-heading">global</h4> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "application": {     "manage": {             "applications": [ ... ]      }   } }</pre> <ul class="wp-block-list"> <li>manage<br>Az egyetlen támogatott globális jogosultság az alkalmazások jogosultságainak kezeléséhez</li> <li>applications<br>A kezelendő alkalmazások neveinek listája. Ez a lista támogatja a helyettesítő karaktereket (pl. &#8220;myapp-*&#8221;) és a reguláris kifejezéseket (pl. &#8220;/ app[0-9]*/&#8221;)</li> </ul> <h4 class="wp-block-heading">application</h4> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "application": "my_app",    "privileges": [ ... ],      "resources": [ ... ]      }</pre> <ul class="wp-block-list"> <li>application<br>Alkalmazás neve.</li> <li>privileges<br>Az alkalmazáshoz tartozó jogosultságok neveinek listája.</li> <li>resources<br>Azok az erőforrások, amelyekre e kiváltságok érvényesek. Ezeket ugyanúgy kezelik, mint az indexnév minta az indices jogosultságban. Ezeknek az erőforrásoknak nincs különösebb jelentősége az Elasticsearch biztonsági jellemzőihez.</li> </ul> <h4 class="wp-block-heading">Egy teljes példa</h4> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "cluster": ["all"],   "indices": [     {       "names": [ "index1", "index2" ],       "privileges": ["all"],       "field_security" : { // optional         "grant" : [ "title", "body" ]       },       "query": "{\"match\": {\"title\": \"foo\"}}" // optional     }   ],   "applications": [     {       "application": "myapp",       "privileges": [ "admin", "read" ],       "resources": [ "*" ]     }   ],   "run_as": [ "other_user" ], // optional   "metadata" : { // optional     "version" : 1   } }</pre> <p>A role-okat természetesen REST API-n keresztül a legkönnyebb menedzselni, amihez a felhasználónak szüksége van a <code>manage_security</code> cluster jogosultságra.</p> <p>Egy role létrehozása:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -u username -X POST "127.0.0.1:9200/_security/role/clicks_admin" -H 'Content-Type: application/json' -d' {   "run_as": [ "clicks_watcher_1" ],   "cluster": [ "monitor" ],   "indices": [     {       "names": [ "events-*" ],       "privileges": [ "read" ],       "field_security" : {         "grant" : [ "category", "@timestamp", "message" ]       },       "query": "{\"match\": {\"category\": \"click\"}}"     }   ] } '</pre> <p>A válasz:</p> <pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{   "role": {     "created": true    } }</pre> <p>A fenti definíció alapján a clicks_admin szerepkörrel rendelkező felhasználó:</p> <ul class="wp-block-list"> <li>megszemélyesítheti a clicks_watcher_1 felhasználót és kéréseket hajthat végre a nevében</li> <li>monitorozhatja az Elasticsearch cluster-t</li> <li>olvashatja az összes events- kezdetű indexből származó adatokat</li> <li>&nbsp;ezeken az indexeken belül csak a click kategóriájú events olvashatja el</li> <li>&nbsp;ezeken a dokumentumon belül csak a category-, @timestamp- és message mezők olvashatók.</li> </ul> <h4 class="wp-block-heading">Fájl alapú role-ok</h4> <p>A fájl alapú role-ok esetében egy role definicióját a roles.yml fájlban hozzuk létre:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">click_admins:   run_as: [ 'clicks_watcher_1' ]   cluster: [ 'monitor' ]   indices:     - names: [ 'events-*' ]       privileges: [ 'read' ]       field_security:         grant: ['category', '@timestamp', 'message' ]       query: '{"match": {"category": "click"}}'</pre> <p>Az Elasticsearch folyamatosan monitorozza a roles.yml fájlt, és automatikusan alkalmazza a változásokat.</p> <p>A users_roles fájlban társítjuka felhasználót és a role-t. Egy sorban egy társítás:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">superuser:user1 click_admins:user2</pre> <p>Ne felejtsd el, hogy a file realm (azaz a fájl alapú felhasználó és role kezelés) node alapú. Ha több node-ból áll a clustered, akkor a cluster összes node-jára el kell juttatnod a fájlokat, illetve az esetleges változtatásokat.</p> <div class="pvc_clear"></div><p id="pvc_stats_281" class="pvc_stats all  " data-element-id="281" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p><div class="pvc_clear"></div>]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>SSSD telepítése Active Directory és krb5 beállításával Arch Linuxon</title> 		<link>https://malina.hu/sssd-telepitese-active-directory-krb5-beallitasaval-arch-linuxon/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Sat, 29 Oct 2016 05:05:49 +0000</pubDate> 				<category><![CDATA[Arch Linux]]></category> 		<category><![CDATA[Egyéb]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=237</guid> 					<description><![CDATA[Az SSSD a System Security Services Daemon rövidítése. Elsődleges célja az, hogy egy keretrendszeren keresztül hozzáférést és autentikációs, hitelesítési megoldást adjon távoli erőforrásokon található személyazonosságokhoz cache és offline állapot támogatással. Az SSSD PAM és NSS modulokat is biztosít (illetve D-BUS alapú felületet is a későbbiekben), míg a háttérben számos backend támogatja a különböző rendszerek elérhetőségét. A [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>Az SSSD a System Security Services Daemon rövidítése. Elsődleges célja az, hogy egy keretrendszeren keresztül hozzáférést és autentikációs, hitelesítési megoldást adjon távoli erőforrásokon található személyazonosságokhoz cache és offline állapot támogatással.</p> <p>Az SSSD PAM és NSS modulokat is biztosít (illetve D-BUS alapú felületet is a későbbiekben), míg a háttérben számos backend támogatja a különböző rendszerek elérhetőségét. A backendek tárolják az identitásokat és egyéb adatokat. A backend nevet Én akasztottam rá, egyébként <em>authentication provider-</em>nek hívják. Backendek a teljesség igénye nélkül:</p> <ul> <li>LDAP</li> <li>Windows Active Directory (AD)</li> <li>FreeIPA</li> <li>krb5</li> <li>local SSSD</li> <li>proxy</li> </ul> <p><span id="more-237"></span></p> <p>Azt nem mondanám, hogy a téma zsebemben van, így elképzelhető, hogy egy-két részlet nem teljes, következetlen, vagy más rendszereken (pl. Ubuntu) nem teljes mértékben használható.  A krb5 például teljesen felesleges (csak szerverek között az Active Directory is, elég lenne az LDAP), de korábban még ezzel alakítottam ki a rendszereket, és nem volt időm foglalkozni a krb5 nélküliséggel.</p> <p>A leírás során azt feltételezem, hogy van már egy beállított Samba 4 vagy Windows AD rendszered unixos felhasználókkal és csoportokkal.</p> <p>Az SSSD telepítése rém egyszerű:</p> <pre class="lang:default decode:true">pacman -Sy sssd</pre> <p>Amennyiben nem létezik az /etc/sssd/sssd.conf fájl, hozd létre az alábbi tartalommal:</p> <pre class="lang:default decode:true">[sssd] services = nss, pam, sudo, ssh domains = domain.tld #debug_level = 9 [nss] [pam] [domain/domain.tld] #debug_level = 9 cache_credentials = true krb5_store_password_if_offline = true id_provider = ad access_provider = ad auth_provider = ad krb5_keytab=/etc/krb5.keytab krb5_realm = DOMAIN.TLD ldap_id_mapping = false #fallback_homedir = /home/%u #default_shell = /bin/bash enumerate = true</pre> <p>A domain.tld tartomány egy példa tartomány, Neked le kell cserélned a sajátodéra. Az sssd.conf fájlt csak a root írhatja és olvashatja (0600).</p> <p>Az /etc/krb5.conf fájlban az  alábbiakat állítsd be:</p> <pre class="lang:default decode:true ">[libdefaults]         default_realm = DOMAIN.TLD         dns_lookup_realm = true         dns_lookup_kdc = true         ticket_lifetime = 1d         forwardable = true         proxiable = true [realms]         DOMAIN.TLD = {                 kdc = domain.tld                 admin_server = domain.tld                 default_domain = domain.tld         } [domain_realm]         .domain.tld = DOMAIN.TLD         domain.tld = DOMAIN.TLD #       domain = DOMAIN.TLD [appdefaults]         pam = {         ticket_lifetime         = 1d         renew_lifetime          = 1d         forwardable             = true         proxiable               = false         retain_after_close      = false         minimum_uid             = 10000         debug                   = false         } [logging]         default                 = FILE:/var/log/krb5libs.log         kdc                     = FILE:/var/log/kdc.log         admin_server            = FILE:/var/log/kadmind.log</pre> <p>A domain.tld tartomány szintén lecserélendő a saját tartományoddal. A kdc és admin_server értéke a valós szerver legyen ne a tartomány neve. Ha samba-t használsz, akkor annak a neve, ha pedig ténylegesen Windows AD-hoz akarsz csatlakozni, akkor azét. Előfordulhat, hogy megegyezik a tartomány nevével, de általában külön aldomaint kap, mivel a domain controller szokta ezt a funkciót ellátni (pl. ad.domain.tld, pdc.domain.tld, kdc.domain.tld, stb).</p> <p>Exportáld ki a krb5 machine keytab fájlt a samba vagy AD szerveren. Samba esetében:</p> <pre class="lang:default decode:true ">net ads keytab create -U Administrator</pre> <p>Az Administrator nevű user a Te rendszeredben más is lehet, erre figyelj oda. Ha esetleg egy másik gépeden már megvan a keytab fájl, akkor csak másold át. A keytab fájlt csak a root írhatja és olvashatja (0600).</p> <p>/etc/nssswitch.conf módosítása:</p> <pre class="lang:default decode:true "># Begin /etc/nsswitch.conf passwd: files sss group: files sss shadow: files sss sudoers: files sss publickey: files hosts: files dns myhostname networks: files protocols: files services: files ethers: files rpc: files netgroup: files # End /etc/nsswitch.conf</pre> <p>Ebben tulajdonképpen felvettük az sss értéket, illetve a sudoers teljes sort.</p> <p>Az /etc/nscd.conf fájlban kapcsoljuk ki a rendszer cache funkcióját userek és groupok tekintetében. A módosítandó rekordok:</p> <pre class="lang:default decode:true">enable-cache            passwd          no enable-cache            group           no</pre> <p>Létrehozzuk az /etc/pam.d/sss fájlt az alábbi tartalommal:</p> <pre class="lang:default decode:true">auth     sufficient pam_unix.so nullok try_first_pass auth     sufficient pam_sss.so use_first_pass auth     required   pam_deny.so account  required   pam_unix.so #account  [default=bad success=ok user_unknown=ignore] pam_sss.so account  optional   pam_sss.so password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=0 ucredit=0 ocredit=0 lcredit=0 type= password sufficient pam_unix.so try_first_pass nullok sha512 shadow password sufficient pam_sss.so use_authtok password required   pam_deny.so session         required        pam_mkhomedir.so skel=/etc/skel umask=0077 session  required   pam_unix.so session  optional   pam_sss.so</pre> <p>Szintén létrehozzuk a /etc/pam.d/sssd-shadowutils fájlt (az sssd telepítése után valószínűleg már létezik):</p> <pre class="lang:default decode:true">#%PAM-1.0 auth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass auth        required      pam_deny.so account     required      pam_unix.so account     required      pam_permit.so</pre> <p>Az /etc/pam.d könyvtárban az alábbi fájlokat módosítjuk:</p> <p>/etc/pam.d/passwd</p> <pre class="lang:default decode:true">#%PAM-1.0 password        include         sss </pre> <p>/etc/pam.d/su</p> <pre class="lang:default decode:true">#%PAM-1.0 auth            sufficient      pam_rootok.so auth            include         sss account         include         sss session         include         sss</pre> <p>/etc/pam.d/su-l</p> <pre class="lang:default decode:true">#%PAM-1.0 auth            sufficient      pam_rootok.so auth            include         sss account         include         sss session         include         sss</pre> <p>/etc/pam.d/system-auth</p> <pre class="lang:default decode:true">#%PAM-1.0 auth      include   sss auth      required  pam_unix.so     try_first_pass nullok auth      optional  pam_permit.so auth      required  pam_env.so account   include   sss account   required  pam_unix.so account   optional  pam_permit.so account   required  pam_time.so password  include   sss #password  required  pam_unix.so     try_first_pass nullok sha512 shadow password  optional  pam_permit.so session   required  pam_limits.so session   include   sss session   required  pam_unix.so session   optional  pam_permit.so</pre> <p>Elméletileg az összes szükséges elem megvan, csupán a szolgáltatásokat kell elindítani vagy újra indítani:</p> <pre class="lang:default decode:true">systemctl restart nscd systemctl enable sssd systemctl start sssd </pre> <p>Ezután a teszt, például felhasználók listázása. Ebben már meg kell jelennie az AD-ban lévő felhasználóknak is:</p> <pre class="lang:default decode:true">getent passwd vagy getent passwd username</pre> <p>A csoportok hasonlóképpen működnek:</p> <pre class="lang:default decode:true ">getent group vagy  getent group groupname</pre> <p>Amit még ne felejts el: /etc/sudoers fájl szerkesztése felhasználók és/vagy csoportok jogosultság beállításának érdekében. Nem kötelező, de általában szoktuk.</p> <div class="pvc_clear"></div> <p id="pvc_stats_237" class="pvc_stats all  " data-element-id="237" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Postgresql telepítése</title> 		<link>https://malina.hu/postgresql-telepitese/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Tue, 02 Feb 2016 23:10:55 +0000</pubDate> 				<category><![CDATA[Adatbázis]]></category> 		<category><![CDATA[Arch Linux]]></category> 		<category><![CDATA[postgresql]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=217</guid> 					<description><![CDATA[A PostgreSql (más nevén Postgres) nyílt forráskódú objektum-relációs adatbázis rendszer. Történetét már több mint 15 éve aktív fejlesztés jellemzi, melynek során az architektúra bizonyított és kiérdemelt hírnévre tett szert többek között a megbízhatóság, az adatok integritásának területén. Ha minden igaz, telepítési metódja Linux disztribúciótól független, de tudnod kell, hogy jelen leírásnak Arch Linux-on történő telepítés [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>A <strong>PostgreSql </strong>(más nevén Postgres) <span class="translation-chunk">nyílt forráskódú objektum-relációs adatbázis rendszer. Történetét már több mint 15 éve aktív fejlesztés jellemzi, melynek során az architektúra bizonyított és kiérdemelt hírnévre tett szert többek között a megbízhatóság, az adatok integritásának területén.</span></p> <p>Ha minden igaz, telepítési metódja Linux disztribúciótól független, de tudnod kell, hogy jelen leírásnak Arch Linux-on történő telepítés az alapja. Aktuális verzió a 9.4.5</p> <p><span id="more-217"></span></p> <h3>Telepítés</h3> <pre class="lang:default decode:true">pacman -S postgresql</pre> <h3>Inicializálás</h3> <p>Első lépésként létre kell hozni az adatbázist tároló területet &#8211; SQL-ben erre a cluster catalog kifejezést használják. Az adatbázis cluster egy olyan adatbázis gyűjtemény, amelyet egy futó adatbázis szerver egyetlen példánya kezel. Az első inicializáció után a cluster egy <b>postgres</b> nevű adatbázist tartalmaz. Minden további adatbázis létrehozása a template1 nevezetű adatbázis alapján történik.</p> <p>Fájlrendszer szinten a cluster adatok egy könyvtáron belül lesznek tárolva, amit data directory vagy data area-nak neveznek. A könyvtár helye teljesen szabad választás, bár a különféle disztribúciók felkínálnak egy alapértelmezett helyet.</p> <p>Az inicializálást a postgres nevű felhasználóval kell végrehajtanod, ehhez a su vagy sudo segítségét tudod igénybe venni:</p> <pre class="lang:default decode:true">su - postgres # ekkor postgres felhasználó leszel vagy sudo -i -u postgres [command] # ekkor postgres felhasználó nevében hajtod végre az utasítást</pre> <p>A cluster létrehozása (az elérési út disztribúciónként változhat, pl.: ubuntun /var/lib/postgresql):</p> <pre class="lang:default decode:true ">[postgres] initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'</pre> <p>A kimenet nagyjából ehhez hasonló (Én hu_HU.UTF8-at adtam meg):</p> <pre class="lang:default decode:true">initdb --locale hu_HU.UTF-8 -E UTF8 -D '/var/lib/postgres/data' The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "hu_HU.UTF-8". The default text search configuration will be set to "hungarian". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgres/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting dynamic shared memory implementation ... posix creating configuration files ... ok creating template1 database in /var/lib/postgres/data/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating collations ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok loading PL/pgSQL server-side language ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok syncing data to disk ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using:     postgres -D /var/lib/postgres/data or     pg_ctl -D /var/lib/postgres/data -l logfile start</pre> <p>Ezután már csak engedélyezni és indítani kell:</p> <pre class="lang:default decode:true  ">systemctl enable postgresql systemctl start postgresql</pre> <h3> Autentikáció beállítása</h3> <p>Első telepítéskor a postgres felhasználóval jelszó nélkül lehet belépni, ezért ezt célszerű módosítani. Először is adj meg egy új jelszót:</p> <pre class="lang:default decode:true ">sudo -u postgres psql template1   ALTER USER postgres with encrypted password 'az_uj_jelszo';   \q</pre> <p>Ezután a hozzáféréseket szabályzó fájlban (pg_hba.conf) szigorítanod kell a hozzáféréseken:</p> <pre class="lang:default decode:true ">local   all         postgres                          md5 local   all             all                           md5</pre> <div class="pvc_clear"></div> <p id="pvc_stats_217" class="pvc_stats all  " data-element-id="217" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Git init</title> 		<link>https://malina.hu/git-init/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Fri, 08 Jan 2016 03:32:27 +0000</pubDate> 				<category><![CDATA[Git]]></category> 		<category><![CDATA[git]]></category> 		<category><![CDATA[git-init]]></category> 		<category><![CDATA[git-remote]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=214</guid> 					<description><![CDATA[Teljesen új git repo beállítása: git init git add . git commit -a -m 'First commit' git remote add origin ssh://.... git push origin master --set-upstream origin master]]></description> 										<content:encoded><![CDATA[<p>Teljesen új git repo beállítása:</p> <pre class="lang:default decode:true">git init git add . git commit -a -m 'First commit' git remote add origin ssh://.... git push origin master <span class="crayon-e">--set-upstream origin master</span></pre> <div class="pvc_clear"></div> <p id="pvc_stats_214" class="pvc_stats all  " data-element-id="214" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>LAMP telepítése Arch Linuxon</title> 		<link>https://malina.hu/lamp-telepitese-arch-linuxon/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Thu, 16 Jul 2015 13:47:09 +0000</pubDate> 				<category><![CDATA[Arch Linux]]></category> 		<category><![CDATA[apache2]]></category> 		<category><![CDATA[lamp]]></category> 		<category><![CDATA[mysql]]></category> 		<category><![CDATA[php]]></category> 		<category><![CDATA[pure-ftpd]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=158</guid> 					<description><![CDATA[LAMP (Linux Apache Mysql Php) környezet telepítése aránylag egyszerű, a különféle komponenseket kell feltelepíteni, beállítani és elindítani. 1. Webszerver és php Apache vagy Nginx: Sajnos apache mindenféleképpen kell, ha valami miatt .htaccess támogatást is kell nyújtanod. Ehhez javaslom a mod_itk használatát, amellyel VirtualHost-onként tudod megadni, hogy melyik linux user jogosultságaival fusson egy folyamat. pacman -S [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>LAMP (Linux Apache Mysql Php) környezet telepítése aránylag egyszerű, a különféle komponenseket kell feltelepíteni, beállítani és elindítani.</p> <p><span id="more-158"></span></p> <h3>1. Webszerver és php</h3> <p>Apache vagy Nginx: Sajnos apache mindenféleképpen kell, ha valami miatt .htaccess támogatást is kell nyújtanod. Ehhez javaslom a mod_itk használatát, amellyel VirtualHost-onként tudod megadni, hogy melyik linux user jogosultságaival fusson egy folyamat.</p> <pre class="lang:default decode:true">pacman -S apache mod_itk php-apache pacman -S php-intl php-mcrypt php-gd php-pear</pre> <p>A webszerver beállítása mod_itk-hoz egy kicsit becsapós. Alapból az mpm_event van engedélyezve. Ezt kommentezd, illetve inkább az alábbiakat másold be:</p> <pre class="lang:default decode:true">#LoadModule mpm_event_module modules/mod_mpm_event.so                         LoadModule unixd_module modules/mod_unixd.so                                  LoadModule mpm_prefork_module modules/mod_mpm_prefork.so                      LoadModule mpm_itk_module modules/mpm_itk.so</pre> <p>A php használatához erre van szükség:</p> <pre class="lang:default decode:true">LoadModule php5_module       modules/libphp5.so AddHandler php5-script php Include conf/extra/php5_module.conf</pre> <p>Pár konfiguráció van még hátra:</p> <ol> <li>Korrektól beállítani a betöltendő modulokat, amelyekre szükséged van</li> <li>dir_module bejegyzéshez felvenni az index.php-t</li> <li>VirtualHost beállítás</li> <li>httpd.conf alján az Include-ok kezelése (melyik kell, melyik nem kell)</li> <li>extra/httpd-mpm.conf-ban másolni az IfModule mpm_prefork_module, majd átnevezni: mpm_itk_module</li> <li>/etc/php/php.ini-ben a szükséges beállításokat megejteni.</li> </ol> <p>Ezután már csak el kell indítani az apache-ot:</p> <pre class="lang:default decode:true ">systemctl enable httpd systemctl start httpd</pre> <h3>2. Mysql telepítése</h3> <p>Az Oracle mysql alapból nem érhető el, viszont van mariaDb és Percona szerver. Én a MariaDb-t szoktam telepíteni.</p> <pre class="lang:default decode:true">pacman -S mariadb innotop xtrabackup</pre> <p>Az xtrabackup csak a mentések miatt szükséges.</p> <p>Inicializálni kell az adatbázisokat:</p> <pre class="lang:default decode:true ">mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql</pre> <p>Ezután indítsd el a szervert, és adj egy új jelszót a root-nak:</p> <pre class="lang:default decode:true">systemctl enable mysqld systemctl start mysqld /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h szervered_fqdn_hosztneve password 'new-password'</pre> <h3>3. Ftp szerver telepítése</h3> <p>Magam részéről a pure-ftpd-t kedvelem. Az aur4-ről való telepítéshez:</p> <pre class="lang:default decode:true">yaourt pure-ftpd-db</pre> <p>Telepítés közben editálni szoktam a PKGBUILD fájlt, kiveszem a postgresql-re vonatkozó dolgokat (depends, fordítási opció), de Neked ezt nem szükséges meglépni.</p> <p>Legegyszerűbb a mysql alapú adattárolás tűnik. Ehhez az <strong>/etc/pure-ftpd/pure-ftpd.conf</strong> fájlban ez az egy opció legyen olyan, amelyik nincs kikommentezve:</p> <pre class="lang:default decode:true">MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf</pre> <p>Tehát az LDAPConfigFile, PGSQLConfigFile, PureDB, ExtAuth,PAMAuthentication, UnixAuthentication paraméterekre nincs szükségünk, ezek legyenek kikommentezve. Ezután hozd létre az <strong>/etc/pure-ftpd/pureftpd-mysql.conf</strong> nevű fájlt, a tartalma pedig az alábbi legyen:</p> <pre class="lang:default decode:true">MYSQLServer     localhost MYSQLPort       3306 MYSQLSocket     /run/mysqld/mysqld.sock MYSQLUser       {mysql_user} MYSQLPassword   {mysql_user_password} MYSQLDatabase   {mysql_database} # Valid values are : "cleartext", "crypt", "md5" and "password" MYSQLCrypt      cleartext MYSQLGetPW      SELECT passw as Password FROM ftpaccount WHERE ftpaccount="\L" MYSQLGetUID     SELECT uid as Uid FROM ftpaccount WHERE ftpaccount="\L" MYSQLGetGID     SELECT gid as Gid FROM ftpaccount WHERE ftpaccount="\L" MYSQLGetDir     SELECT homedir as Dir FROM ftpaccount WHERE ftpaccount="\L"</pre> <p>A lekérdezéshez az adatbázis és a táblát is hozd létre. A tábla létrehozási sql-je:</p> <pre class="lang:mysql decode:true">CREATE TABLE `ftpaccount` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `status` enum('ENABLED','DISABLED') NOT NULL DEFAULT 'ENABLED',   `ftpaccount` varchar(50) NOT NULL COMMENT 'ftp account neve (belepesi nev)',   `passw` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,   `uid` int(11) NOT NULL DEFAULT '-1',   `gid` int(11) NOT NULL DEFAULT '-1',   `homedir` varchar(255) NOT NULL COMMENT 'ftp account home konyvtar (abszolut eleresi ut)',   `ulbandwith` smallint(5) unsigned NOT NULL DEFAULT '0',   `dlbandwidth` smallint(5) unsigned NOT NULL DEFAULT '0',   `ipaccess` varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '*',   PRIMARY KEY (`id`),   UNIQUE KEY `NewIndex1` (`ftpaccount`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8</pre> <p>Nézd át az alap konfigurációs tulajdonságokat, amelyiket úgy érzed, azt állítsd be. Én főleg ezeket szoktam érinteni:</p> <pre class="lang:default decode:true">ForcePassiveIP {server_ip_address} ChrootEveryone yes BrokenClientsCompatibility &amp;nbsp;no DisplayDotFiles             yes AnonymousOnly               no NoAnonymous                 yes DontResolve                 yes MaxIdleTime                 5 AnonymousCanCreateDirs      no PassivePortRange          30000 50000 ProhibitDotFilesWrite       no ProhibitDotFilesRead        no AnonymousCantUpload         yes AltLog                     clf:/var/log/pureftpd.log </pre> <p>Ezután már csak el kell indítani az ftp szervert:</p> <pre class="lang:default decode:true">systemctl enable pure-ftpd systemctl start pure-ftpd</pre> <div class="pvc_clear"></div> <p id="pvc_stats_158" class="pvc_stats all  " data-element-id="158" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Arch Linux telepítése</title> 		<link>https://malina.hu/arch-linux-telepitese/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Sun, 28 Jun 2015 20:23:24 +0000</pubDate> 				<category><![CDATA[Arch Linux]]></category> 		<category><![CDATA[arch-linux]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=133</guid> 					<description><![CDATA[Az Arch Linux egy egyszerű, letisztult Linux disztribúció, amelynek alapelve az, hogy ne bonyolítsuk feleslegesen. És tényleg így is van, a legminimálisabb rendszer fogod feltelepíteni, nem lesz egy felesleges porcikája sem. Reboot után 110 körül lesz a folyamatok száma, az init-en kívül láthatod még: journald (naplózás), timesyncd, networkd, crond, logind. A telepítés során azt feltételezem, [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>Az Arch Linux egy egyszerű, letisztult Linux disztribúció, amelynek alapelve az, hogy ne bonyolítsuk feleslegesen. És tényleg így is van, a legminimálisabb rendszer fogod feltelepíteni, nem lesz egy felesleges porcikája sem. Reboot után 110 körül lesz a folyamatok száma, az init-en kívül láthatod még: journald (naplózás), timesyncd, networkd, crond, logind.</p> <p>A telepítés során azt feltételezem, hogy két db 250 GB-os SSD lemezre telepítesz, és két hálózati kártyád van.</p> <p><span id="more-133"></span></p> <p><strong>A telepítő használata</strong></p> <p>Győződj meg arról, hogy a BIOS-ban be van állítva az USB eszközről való bootolás (vagy eltudod érni a boot menüt). Miután a telepítő betöltődött, látni fogod az Arch Linux logót, és a GRUB-ot. A boot folyamat végeztével meg fog jelenni a parancssoros felület. Úgy sejtem, meglepetésként ér, hogy más disztribúcióknál megszokott (pl. Ubuntu) telepítési folyamat nincs &#8211; de azt gondolom, hogy nem is kezdő linuxosnak van szükségük Arch Linuxra.</p> <p>A legfontosabb tennivalók: merevlemezek előkészítése (particionálás, raid, fájlrendszerek létrehozása), alaprendszer másolása, majd chroot-ba lépés után pár fontos beállítás megejtése, és kész is vagy. Nem állítom, hogy az alábbi telepítési lépések mindegyike kötelező &#8211; Én ezeket és pontosan ebben a sorrendben szoktam megejteni.</p> <p>Telepítési lépések:</p> <ol> <li>Boot</li> <li>Magyar billentyűzetkiosztás betöltése</li> <li>Hálózat beállítása</li> <li>Pontos idő beállítása</li> <li>Csomagforrások beállítása</li> <li>Merevlemez particionálása (UEFI és MBR)</li> <li>Raid létrehozása</li> <li>Particiók formázása: fájl rendszerek és swap</li> <li>Csatolási pontok megadása</li> <li>Alaprendszer telepítése</li> <li>Fstab beállítása</li> <li>arch-chroot</li> <li>RAID beállítások érvényesítése</li> <li>Tükörszerver választása</li> <li>Idő, időzóna beállítása</li> <li>Hosztnév, locales, vconsole beállítása</li> <li>RAM disk készítése</li> <li>Root password beállítása, új felhasználó hozzáadása, sudo telepítése</li> <li>Egyebek telepítése</li> <li>Rendszerbetöltő telepítése (UEFI és MBR)</li> <li>Újraindítás</li> </ol> <p></p> <h3>1. Boot</h3> <p>Boot iso letöltése: <a href="https://www.archlinux.org/download/" target="_blank" rel="noopener noreferrer">https://www.archlinux.org/download/</a></p> <p>USB-re kiírva máris bootolhatsz, tulajdonképpen egy live rendszert. Miután a telepítő betöltődött, látni fogod az Arch Linux logót, és a GRUB-ot. Az első opció máris megfelelő lesz: Boot Arch Linux (x86_64). A boot folyamat végén kapsz egy root promptot.</p> <h3>2. Magyar billentyűzetkiosztás betöltése</h3> <p>Ha nem akarsz angol billentyűzet kiosztással vacakolni, akkor célszerű a magyart beállítani.</p> <pre class="lang:default decode:true">localectl list-keymaps | grep hu loadkeys hu</pre> <h3>3. Hálózat beállítása</h3> <p>A telepítéshez internet kapcsolatra lesz szükséged. Bizonyos meg arról, hogy van hálózati interfészed:</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">ip link</pre> <p>Ha nincs, akkor győzödj meg arról, hogy van bedugva hálózati kábel vagy a kábel megfelelő, esetleg a hálózati eszközök megfelelően működnek.</p> <p>Működő hálózatu interfész esetén dhcp-vel vagy statikus ip beállítással tudsz hálózathoz csatlakozni.<br /> Ha statikus ip címet szeretnél majd használni, érdemes már most előkészülni. Mindenek előtt győződj meg arról, hogy kaptál-e ip címeket. Otthoni környezetben (vagyis dhcp-s router mögött) nagy valószínűséggel igen, így statikus ip cím megadása nélkül is van interneted (szükséges a csomagok telepítéséhez). Önmagában ez nem gond, de statikus ip cím használatához az esetlegesen működő dhcp kliensedet ki kell kapcsolni.</p> <pre class="lang:default decode:true"># ip cím kiosztas és dhcp kliens ellenőrzese #ip a #systemctl status dhcpcd</pre> <p>Ha megelégszel a dhcp-vel, akkor ellenőrizned kell, hogy van-e ip címed, illetve ha nincs (vagy csak ipv6), akkor indítsd el a dhcp-t.</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">#ip a #systemctl start dhcpcd</pre> <p>Jómagam a systemd-networkd rendszert használom hálózat kezelésére, így statikus ip címhez készíts konfigurációs fájlokat: /etc/systemd/network/eth0.network és /etc/systemd/network/eth1.network néven. Tulajdonképpen a fájl neve mindegy, egyedül a .network kiterjesztés a fontos. Én az adott hálókártya eszköznevét szoktam használni.</p> <p>Ne tévesszen meg az eth0 vagy eth1-es hivatkozás. Most csak az egyszerűség kedvéért használom ezeket az elnevezéseket, Neked viszont fontos a saját gépeden kiolvasni a hálókártyák adatait és azokat használni. A hálókártyákat az <strong>ip a</strong> parancssal megtudod jeleníteni.</p> <pre class="lang:default decode:true">#touch /etc/systemd/network/eth0.network #touch /etc/systemd/network/eth1.network</pre> <p>Beállítások:</p> <pre class="lang:default decode:true">#/etc/systemd/network/eth0.network [Match]  Name=eth0 [Network]  Address=192.168.0.50/24 # sajat halozatodbol adj meg egy szabad ip cimet  Gateway=192.168.0.1 # sajat routered ip cimet ad meg</pre> <pre class="lang:default decode:true">#/etc/systemd/network/eth1.network [Match]  Name=eth1 [Network]  Address=192.168.0.50/24 # sajat halozatodbol adj meg egy szabad ip cimet #itt ne add meg a gateway beallitast </pre> <p>A Match/Name fontos, az adott hálókártya neve legyen.</p> <p>Kapcsold ki a dhcpt és be a networkd-t:</p> <pre class="lang:default decode:true">systemctl disable dhcpcd systemctl enable systemd-networkd</pre> <p>Ha esetleg kavarodás van a hálókártya körül, a legegyszerűbb a down/up:</p> <pre class="lang:default decode:true">ip link set eth0 down ip link set eth0 up</pre> <h3>4. Pontos idő beállítása</h3> <p>Ha már van internetes kapcsolatod, az időt is betudod állítani. A systemd-timesyncd alapból engedélyezve van, így internetes kapcsolat esetén automatikusan szinkronizálódik a pontos idő &#8211; elegendő csak ellenőrizni.</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">timedatectl status # ha nem megfelelő timedatectl set-ntp true</pre> <h3>5. Csomagforrások beállítása</h3> <p>Érdemes a csomagforrást beállítani. A csomagokat a hivatalos Arch Linux szerverek tükörszervereiről kell telepíteni. A következő paranccsal állíthatod be a számodra elérhető leggyorsabb tükrözési listát, majd szinkronizáld le az új szerverekről a csomaglistákat.</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">reflector -c 'Hungary' -a 12 - -sort rate - -save etc/pacman.d/mirrorlist pacman -Syy</pre> <h3>6. Merevlemez particionálása</h3> <p>Bizonyos, hogy korábban már megtervezted a lemez(ek), particiók  kiosztását. Ezt kell most megtenned, a számodra legmegfelelőbb eszközzel: fdisk, parted. Particionálás után elkészítheted az esetleges raid tömbjeidet is.</p> <p>Az UEFI és a BIOS egyaránt alacsony szintű szoftver, amely akkor indul, amikor elindítod a számítógépet, és mielőtt az az operációs rendszert indítaná. Az UEFI egy korszerűbb megoldás a BIOS_nál: nagyobb merevlemezeket, gyorsabb indítási időket, több biztonsági funkciót, valamint kényelmes grafikát és egeret támogat.</p> <h5><strong>UEFI:</strong></h5> <p>Ezt a lépést kihagyhatod, ha MBR rendszert akarsz.<br /> Mivel <a href="https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface">UEFI</a> módban kell elinduljon a számítógéped, első lépésben ellenőrizd le, hogy tényleg így történt:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell">ls /sys/firmware/efi/efivars</pre> <p>Ha hiba nélkül listázza a könyvtárat, akkor a rendszered UEFI módban indult el. Ha a könyvtár nem létezik, előfordulhat, hogy a rendszer BIOS (vagy CSM) módban indult el &#8211; ekkor vélhetően alaplap beállításaiban kell tevékenykedned. Ha pl. USB-ről boot-olsz, az alaplap boot menüjében a pendrive-odhoz kétféle opciód lesz, az egyiik UEFI elő vagy utótaggal. Ezt válaszd.</p> <p>Amikor a live rendszer felismeri a lemezeket egy blokkeszközhöz rendeli azokat, például /dev/sda, /dev/nvme0n1 vagy /dev/mmcblk0. Ezen eszközök azonosításához használhatod az lsblk vagy az fdisk parancsot. Példa kimenet (saját gépemről):</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell">#lsblk NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS sda           8:0    0 465,8G  0 disk  └─sda1        8:1    0 465,8G  0 part /shared/data nvme0n1     259:0    0 232,9G  0 disk  ├─nvme0n1p1 259:1    0   512M  0 part /boot ├─nvme0n1p2 259:2    0   220G  0 part / └─nvme0n1p3 259:3    0  12,4G  0 part [SWAP] # fdisk -l Disk /dev/nvme0n1: 232,89 GiB, 250059350016 bytes, 488397168 sectors Disk model: Samsung SSD 970 EVO Plus 250GB           Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9D06D441-CF00-4841-87A0-745E9B5B6CAE Device             Start       End   Sectors  Size Type /dev/nvme0n1p1      2048   1050623   1048576  512M EFI System /dev/nvme0n1p2   1050624 462424063 461373440  220G Linux filesystem /dev/nvme0n1p3 462424064 488397134  25973071 12,4G Linux swap Disk /dev/sda: 465,76 GiB, 500107862016 bytes, 976773168 sectors Disk model: WDC  WDS500G2B0A Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xd8fd5e07 Device     Boot Start       End   Sectors   Size Id Type /dev/sda1        2048 976773167 976771120 465,8G 83 Linux </pre> <p>Annak ellenére, hogy az UEFI rendszer támogatja a fő rendszerindítási rekordot (MBR) és a GUID partíciós táblát (GPT), a lemezt a GPT címkével kell ellátnod, mivel az MBR partíciók mérete és száma korlátozott.</p> <p>Legalább két particíót kötelező készítened: egy root és egy efi particíót. Az <a href="https://wiki.archlinux.org/title/EFI_system_partition">EFI rendszerpartíció</a> (más néven ESP) egy operációs rendszertől független partíció, amely az UEFI firmware által elindítandó EFI rendszerbetöltők, alkalmazások és illesztőprogramok tárolóhelyeként működik. Ez kötelező az UEFI rendszerindításhoz. Ha már van egy efi particíód, akkor nem kell másikat készítened, tökéletes lesz az is. Az efi particíó a /boot könyvtárban lesz elérhető.</p> <p>Az efi paticíó méretére többféle ajánlás létezik. Nyilván el kell férnie a rendszertöltőknek és a rendszerindításhoz szükséges egyéb fájloknak. A microcode itt helyezi el a CPU mikrokódos initramfs fájljait, illetve az mkinitcpio a kerneleket és az initramfs image-ket.<br /> Én 512 MiB adok, az biztos elég (de láttam már 100, 200, 250, 300 MiB ajánlásokat is).</p> <p>A legegyszerűbb módszertan (fdisk-el):</p> <pre class="lang:default decode:true">#van egy /dev/sda eszközünk, meg erintetlen, nincs rajta particios tabla fdisk /dev/sda # guid particios tabla letrehozasa g # efi particio n enter enter +512M t 1 # root particio n enter enter +XG # root particio merete  # swap particio n enter enter enter # ha a hatralevo teruletet adod a swapnak t 3 # particio szama 19 w</pre> <p>Az efi particióra FAT32 fájlrendszert kell készíteni:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell">mkfs.fat -F 32 /dev/sda1 # mount mount --mkdir /dev/<i>sda1</i> /mnt/boot</pre> <h5><strong>MBR:</strong></h5> <p>A legegyszerűbb módszertan (fdisk-el):</p> <pre class="lang:default decode:true">fdisk -l #van egy /dev/sda eszközünk fdisk /dev/sda #particionalsz: elso particio n p 1 enter +XGB # az X helyre add meg a meretet #paricionalsz: swap n p2 enter enter # ha a hatralevo teruletet adod a swapnak t 82 w</pre> <p>Ha esetleg szeretnél gyorsítani, akkor az sfdisk-el másolhatod a partíciós táblákat:</p> <pre class="lang:default decode:true">sfdisk -d /dev/sda | sfdisk --force /dev/sdb</pre> <h3>7. Raid készítése</h3> <p>Szoftveres raid készítéséhez először is az igénybe veendő particíóktípusát kell módosítanod. Jelen példánk alapján sda1 &#8211; sdb1, sda2-sdb2 kettő kell &#8220;Linux raid autodetect&#8221; típusra állítani. Swap-nek szánt particíónkat is bevonjuk ebbe a körbe.</p> <pre class="lang:default decode:true">#fdisk /dev/sda Command (m for help): t Partition number (1,2 default 2): 1 Partition type (type L to list all types): fd Command (m for help): t Partition number (1,2 default 2): 2 Partition type (type L to list all types): fd w </pre> <p>/dev/sdb lemeznél gyorsíthatsz:</p> <pre class="lang:default decode:true">sfdisk -d /dev/sda | sfdisk --force /dev/sdb</pre> <p>Ellenőrízd az eredményt (látni fogod, hogy mindkét lemezed egyforma méretű és típusú particíókat tartalmaz):</p> <pre class="lang:default decode:true">#fdisk -l</pre> <p>Most létre tudod hozni a raid tömbjeidet.</p> <pre class="lang:default decode:true">mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md0 /dev/sda1 /dev/sdb1 mdadm: size set to xxxxK madadm: automatically enabling write-intent bitmap on large array mdadm: array /dev/md0 started # az eredmeny ellenorzese cat /proc/mdstat</pre> <p>Ha esetleg hiányzik egy lemezed a tömbhöz, akkor a hiányzó helyére <strong>missing</strong>-et írj (&#8230; /dev/md0 /dev/sda1 missing).</p> <p>Példánk következő particíója (swap)</p> <pre class="lang:default decode:true">mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md1 /dev/sda2 /dev/sdb2 mdadm: size set to xxxxK mdadm: array /dev/md1 started # az eredmeny ujboli ellenorzese cat /proc/mdstat</pre> <p>EFI particíó esetén &#8211; bár lehetséges &#8211; nem tanácsolják RAID készítését. EFI raid készítése esetén kulcsfontosságú az 1.0 metadata.</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell">mdadm --create --verbose --level=1 --metadata=1.0 --raid-devices=2 /dev/ESP /dev/sdaX /dev/sdbY</pre> <p>Ha esetleg korábbi RAID bejegyzéseket kellene törölnöd (mdadm stop, remove, ilyesmi) de nem sikerül a zero-superblock, az alábbival tudsz segíteni magadoon:</p> <pre class="lang:default decode:true">dd if=/dev/zero of=/dev/sdY bs=1M count=100</pre> <p>Ha esetleg gyorsabb lemezeid vannak, a lemezek szinkronizálását gyorsíthatod:</p> <pre class="lang:default decode:true">echo value &gt; /proc/sys/dev/raid/speed_limit_min echo value &gt; /proc/sys/dev/raid/speed_limit_max # vagy mas modon sysctl -w dev.raid.speed_limit_min=value sysctl -w dev.raid.speed_limit_max=value </pre> <h3>8. Particiók formázása: fájl rendszerek és swap</h3> <p>Root rendszeren ext4</p> <pre class="lang:default decode:true">mkfs.ext4 /dev/md0</pre> <p>Swap</p> <pre class="lang:default decode:true">mkswap /dev/md1 swapon /dev/md1</pre> <h3>9. Csatolási pontok megadása</h3> <p>Mountold fel az új rendszered leendő root-ját a live rendszer /mnt-je alá:</p> <pre class="lang:default decode:true">mount /dev/md0 /mnt # ha van efi particiod mount --mkdir /dev/<i>sda1</i> /mnt/boot</pre> <p>Tegyél ugyanúgy a többi lemezzel, ha szükségesek a telepítéshez. A swap-et nem kell mountolni.</p> <h3>10. Alaprendszer telepítés</h3> <p>Nagyjából 200 MB-nyi adatból 700 MB-nyi területfoglalással telepítheted az alaprendszert. Én a base-devel csomagokat is telepíteni szoktam, a későbbiek során biztos, hogy szükség lesz ezekre, felesleges kihagyni. Régebben nem volt rá szükség, mostanában viszont még meg kell adni az mdadm és a linux csomagot is. Az mdadm a base csomag része, de nem települ. A linux csomag helyett választhatod még a linux-lts-t is.</p> <p>Nagyon kevés időt vesz igénybe a művelet &#8211; persze függ az adott környezettől (hardware), de szerintem ne menj el kávézni.</p> <pre class="lang:default decode:true">pacstrap /mnt base base-devel mdadm linux linux-firmware mc </pre> <h3>11. Fstab beállítása</h3> <p>Ez már a swap-et is rögzíti. Érdemes a kimenetet megnézni úgy, hogy nem irányítod fájlba. A -U kapcsoló UUID azonosítókat ír forrásként az fstab fájlba, egyébként blokk eszköz elérési útvonalakt (pl. /dev/md0 vagy /dev/sda1).</p> <pre class="lang:default decode:true">genfstab -U /mnt &gt;&gt; /mnt/etc/fstab</pre> <p>És amit nagyon érdemes meglépned: ez eddigi beállításaidat (ha volt ilyen) másold át az /mnt alá a megfelelő helyre</p> <h3>12. arch-chroot</h3> <p>Innentől kezdve már nem a live területén kell dolgoznod, így környezetet kell váltanod &#8211; minden, amit csinálsz, az az új rendszeredre lesz befolyással. Váltás után mc-t is telepíts.<br /> Váltás előtt viszont érdemes átmásolnod a live rendszer /etc/systemd/network tartalmát, ha statikus ip címet állítottál be, és a telepített rendszer esetében is ugyanazt akarod használni.</p> <pre class="">#arch-chroot /mnt sh-4.3# #nem lesz mc az uj kornyezetben igy erdemes eloszor azt telepiteni #pacman -S mc</pre> <h3>13. Raid beállítások érvényesítése</h3> <p>Ha a telepítés első részében készítettél raid tömböket, akkor ne felejtsd el a raid beállításokat érvényesíteni, vagy egyáltalán nem fogsz tudni bootolni. Fontos, hogy a /mnt alá mountolt leendő új rendszeren csináld ezt meg, ne a live területén.</p> <p>Először is: updatel-ni kell az <strong>/etc/mdadm.conf</strong>-ot</p> <pre class="lang:default decode:true">mdadm --detail --scan &gt;&gt; /etc/mdadm.conf</pre> <p>Ezután add az <strong>mdadm_udev</strong> -et a mkinitcpio HOOK részéhez, az <strong>/etc/mkinitcpio.conf</strong>-ban:</p> <pre class="lang:default decode:true">#mcedit /etc/mkinitcpio.conf HOOKS="base udev autodetect block mdadm_udev filesystems usbinput fsck"</pre> <p>Majd generáld le újra az initramfs image-t:</p> <pre class="lang:default decode:true">mkinitcpio -p linux</pre> <h3>14. Tükör szerver választása</h3> <p>Konkrétan újra el kell játszanod azt, amit a live rendszer beállítása esetében is. Ehhez viszont fel kell telepítened a szükséges csomagokat is:</p> <pre class="EnlighterJSRAW" data-enlighter-language="shell">pacman -S reflector rsync reflector -c 'Hungary' -a 12 - -sort rate - -save etc/pacman.d/mirrorlist pacman -Syy</pre> <h3>15. Idő, időzóna beállítása</h3> <p>Az operációs rendszerben az időt (órát) négy rész határozza meg: az időérték, legyen az helyi idő vagy UTC, vagy valami más, időzóna és adott esetben a nyári időszámítás (DST). Két óra van jelen a rendszereken: egy hardver óra és egy rendszer óra.</p> <p>A legtöbb operációs rendszertől elvárt viselkedés:</p> <ul> <li><span style="font-size: inherit;">indításkor állítsa be a rendszer óráját a hardver órájából, </span></li> <li>tartsa a rendszeróra pontos idejét</li> <li>leállításkor állítsa be a hardver óráját a rendszer órájából</li> </ul> <p>A hardver óra (más néven a valós idejű óra (RTC) vagy CMOS óra) az év, hónap, nap, óra, perc és másodperc értékeket tárolja. Csak 2016-os vagy később UEFI firmware képes tárolni az időzónát, és hogy a DST-t használják-e.</p> <p>A hardver óra által használt szabványt (CMOS óra, BIOS idő) az operációs rendszer határozza meg. Alapértelmezés szerint a Windows helyi időt, a macOS UTC-t használ, az UNIX-szerű rendszerek pedig változatosan. Az UTC szabványt használó operációs rendszer általában a hardver óráját UTC-nek tekinti, és kiigazítja azt, hogy az OS-t az indításkor az időzóna szerint állítsa be.</p> <p><strong>Időzóna beállítás</strong>a:</p> <pre class="lang:default decode:true ">ln -sf /usr/share/zoneinfo/Europe/Budapest /etc/localtime</pre> <h5>Hardveróra</h5> <p>A hardver óra kiolvasható:</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">hwclock --show</pre> <p>A hardver óra beállítható a rendszeróráról, ami generálja az /etc/adjtime fájlt is (vagy módosítja). Ez a fájl a hwclock által az egyik meghívástól a másikig használt információkat tartalmazza.</p> <pre class="EnlighterJSRAW" data-enlighter-language="null">hwclock --systohc</pre> <h5>Rendszeróra</h5> <p>A rendszeróra (más néven a szoftveres óra) nyomon követi az időt, időzónát és adott esetben a DST-t. A Linux kernel az UTC 1970. január 1. éjfél óta eltelt másodpercek számaként számítja ki. A rendszeróra kezdeti értékét a hardver órájából számoljuk, az /etc/adjtime tartalmától függően. Az indítás befejezése után a rendszer órája függetlenül fut a hardver órájától. A Linux kernel az időzítő megszakításainak számlálásával követi a rendszer óráját.</p> <p>Az aktuális rendszeróra (helyi időben és UTC-ben egyaránt) és az RTC (hardver óra) lekérdezhető és beállítható a timedatectl paranccsal.</p> <pre class="EnlighterJSRAW" data-enlighter-language="null"># lekerdezni #timedatectl # beallitani #timedatectl set-time "yyyy-MM-dd hh:mm:ss" </pre> <p>Ezután még érdemes a pontos időt aktualizálni és rendszeresen frissíteni.<br /> Először is a rendszeróra frissítése, beállítása:</p> <pre>#timedatectl set-ntp true #timedatectl status</pre> <p>Vagy ugyanez ntp-vel:</p> <pre class="lang:default decode:true">#pacman -S ntp  #ntpdate 0.hu.pool.ntp.org</pre> <p>Beállíthatod a systemd-timesyncd programot az állandó pontos idő érdekében:</p> <pre class="lang:default decode:true">#mcedit /etc/systemd/timesyncd.conf NTP=0.hu.pool.ntp.org #A FallbackNTP elol torold a komment jelet #systemctl enable systemd-timesyncd</pre> <h3>16. Editor, hosztnév, locales, vconsole beállítása</h3> <p><strong>Editor beállítás</strong>ához hozz létre egy editor.sh fájlt az /etc/profile.d könyvtárban:</p> <pre class="lang:default decode:true">#mcedit /etc/profile.d/editor.sh EDITOR="/usr/bin/mcedit" export EDITOR export VISUAL=$EDITOR </pre> <p><strong>Hosztnév beállítás</strong>a:</p> <pre class="lang:default decode:true">echo "hosztnév" &gt; /etc/hostname</pre> <p><strong>Locale beállítás</strong>a:</p> <p>A locale lista az /etc/locale.gen fájlban található. editáld úgy, hogy amelyikre szükséged van, azt élesíted (a komment jeled törlöd a sor elejéről). Javaslom az angol és a magyar locale-t: en_US.UTF-8 UTF-8, hu_HU.UTF-8 UTF-8.</p> <p>Ezután generáld le:</p> <pre class="lang:default decode:true ">locale-gen</pre> <p>A locale beállításokat mentsd is el az /etc/locale.conf fájlban:</p> <pre class="lang:default decode:true">echo "LANG=hu_HU.UTF-8" &gt;&gt; /etc/locale.conf</pre> <p>Az /etc/vconsole.conf tartalma:</p> <pre class="lang:default decode:true">#mcedit /etc/vconsole.conf KEYMAP=hu FONT= FONT_MAP=</pre> <h3>17. RAM disk készítése</h3> <p>Szerkeszd az /etc/mkinitcpio.conf fájlt, ha a kernel modulokat szeretnéd kezelni, majd generálj egy RAM diszket:</p> <pre class="lang:default decode:true">mkinitcpio -p linux</pre> <h3>18. Root jelszó beállítása, új user felvétele, sudo telepítése</h3> <p>root jelszavának módosítása a szoksáso passwd programmal oldható meg.</p> <p>Új user telepítése:</p> <pre class="lang:default decode:true">useradd -m -U -G wheel username passwd username</pre> <p>Ezután editáld az /etc/sudoers fájlt, a %wheel bejegyzés előtt töröld a komment jelet. Ezzel a wheel csoport tagjai használhatják a sudo utasítást, de csak a jelszavuk megadása után.</p> <h3>19. Rendszerbetöltő telepítése (UEFI és MBR)</h3> <p>Magam részéről a grub-ot ajánlom. Ha van raid tömböd, akkor ne arra telepítsd, hanem a fizikai eszközre &#8211; az összes olyan eszközre, amely része a bootnak, jelen esetben /dev/sda és /dev/sdb. Ha UEFI rendszered van, akkor szükséged lesz az efibootmgr csomagra is.</p> <p><strong>UEFI:</strong><br /> Grub mellett szükséged van az efibootmgr csomagra is. A GRUB a rendszerbetöltő, míg az efibootmgr-t a GRUB telepítőszkriptje használja rendszerindítási bejegyzések NVRAM-ba írásához.</p> <p>Feltételezem azt, hogy a korábban elkészített efi particíót mountoltad a /boot könyvtárba. A /boot könyvtárban lesz egy EFI könyvtár, ezen belül pedig pl. általad kitalált nevű (ez valójában ID) könyvtár (nem most, hanem a folyamat végén). Tehát választanod kell egy ún. rendszerbetöltő azonosítót, pl. ArchLinux néven (de bármi lehet, akár alma is). Az /boot/EFI könyvtárban létrejön egy ilyen nevű könyvtár az EFI bináris tárolására, és ez a név fog megjelenni az UEFI rendszerindító menüjében a GRUB rendszerindító bejegyzés azonosítására.</p> <pre class="lang:default decode:true">pacman -S grub efibootmgr grub-install --target=x86_64-efi --efi-directory=boot --bootloader-id=ArchLinux grub-mkconfig -o /boot/grub/grub.cfg</pre> <p>Ezek után a /boot/grub könyvtár is létrejön,</p> <p><strong>MBR:<br /> </strong>Némileg egyszerűbb a dolgod: a szokásos grub telepítésre és az mkconfig futtatásra van szükséged.</p> <pre class="lang:default decode:true">pacman -S grub grub-install --target=i386-pc --recheck --debug /dev/sda /dev/sdb grub-mkconfig -o /boot/grub/grub.cfg </pre> <p>Ha esetleg a grub-mkconfig futása során hibaüezenetek kapsz, tele &#8216;null&#8217; jelzésekkel (most nem tudom repordukálni a pontos szöveget), akkor esetleg kifelejtetted az mkinitcpio.conf fájlban a HOOK változóban az mdadm_udev bejegyzést. Ha tényleg így van, akkor pótold (12-es pont alapján), majd újra futtasd az mkinitcpio -p linux utasítást, és ezután próbáld meg újra a grub-mkconfig-ot.</p> <p>Az is elépzelhető, hogy a szoftveres raid létrehozása során csak egy lemezt tettél be (esetleg máris szétesett a raid tömböd, esetleg még nem szinkronizálódott), a lényeg az, hogy degraded vagy fél állapotban vagy. Ebben az esetben nem kell aggódnod, a fent említett hiba üzenet csak alkalmi.</p> <h3>20. Egyebek telepítése</h3> <p>Kikapcsolhatod a speakert:</p> <pre class="lang:default decode:true">rmmod pcspkr </pre> <p>Telepítések:</p> <pre class="lang:default decode:true">pacman -S mc ntp #ha meg nem tetted meg pacman -S cronie dnsutils yaourt openssh pacman -S bash-completion screen wget curl pacman -S atop pwgen rsync zip unzip git</pre> <p>Ha használni is akarod az ssh-t, cron-t, akkor engedélyezned kellőket. Chroot környezetben a cront nem tudod elindítani, de elég csak engedélyezned (enable), reboot után már futni is fog.</p> <pre class="lang:default decode:true">systemctl enable sshd systemctl enable cronie</pre> <h3>21. Újraindítás</h3> <p>Ha végeztél mindennel, lépj ki a chroot környezetből:</p> <pre class="lang:default decode:true">exit # vagy CTRL+D</pre> <p>Csatold le a felcsatolt particiókat:</p> <pre class="lang:default decode:true">umount /mnt</pre> <p>Végül <strong>reboot</strong>, de csatold le a médiaeszközt, nehogy arról indulj el megint.</p> <p>Sikeres bootolás után ellenőrizd le a hálózatot, pingelj ip címet és hoszt nevet külön-külön. Elképzelhető, hogy a névfeloldás nem fog működni, ezért szerkeszd az /etc/resolv.conf-ot:</p> <pre class="lang:default decode:true">nameserver 8.8.8.8 nameserver 8.8.4.4</pre> <p>Tesztelj ping segítségével (hoszt nevet). Lehet, hogy kell várnod pár másodpercet.</p> <div class="pvc_clear"></div> <p id="pvc_stats_133" class="pvc_stats all  " data-element-id="133" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Postfix és DKIM beállítása</title> 		<link>https://malina.hu/postfix-es-dkim-beallitasa/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Fri, 13 Feb 2015 00:17:46 +0000</pubDate> 				<category><![CDATA[Levelezés]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=122</guid> 					<description><![CDATA[Levelek kézbesítésénél a fogadó oldal legfontosabb kérdése: a levél hiteles-e, és az küldte, aki ebben kompetens? Ezt a kérdést a DKIM is segít eldönteni úgy, hogy a levelet hitelesíti, a hitelesítési információkat pedig a levél fejléceiben elhelyezi. Így tulajdonképpen a kérdés az alábbira egyszerűsödik: a levél tartalma módosult-e, és a levél digitálisan titkosított aláírása megegyezik-e a küldő [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>Levelek kézbesítésénél a fogadó oldal legfontosabb kérdése: a levél hiteles-e, és az küldte, aki ebben kompetens? Ezt a kérdést a DKIM is segít eldönteni úgy, hogy a levelet hitelesíti, a hitelesítési információkat pedig a levél fejléceiben elhelyezi.</p> <p>Így tulajdonképpen a kérdés az alábbira egyszerűsödik: a levél tartalma módosult-e, és a levél digitálisan titkosított aláírása megegyezik-e a küldő fél DNS rekordjaiban található információkkal? Ha sorrendben nem, igen a válasz akkor a levél megbízható. Most ezt a funkcionalitást próbáljuk meg a saját levelezőszerverünkhöz hozzáadni.</p> <p><span id="more-122"></span></p> <h2>DKIM tudnivalók</h2> <p>A DKIM (Domain Key Identified Mail) megoldást prominens szolgáltatók, mint pl. a Yahoo, Gmail, AOL, Fastmail közösen fejlesztették ki. Csak ismételni tudom magam: a DKIM segítségével a fogadó oldal egyrészt láthatja, hogy módosult-e a levél a két szerver között, illetve láthatja, hogy az aláírás tényleg a mi kulcsunkkal történt-e? Ez úgy történhet meg, hogy a kimenő levelek fejlécéhez az aláíró program egy <strong>DKIM-Signature</strong>  fejlécet ad hozzá, amely egy &#8220;tag=value&#8221; típusú, vesszővel elválasztott lista elemeit tárolja.  Ez csak a levelező szerverek számára látható, a mindennapi levelezésben egyáltalán nem zavaró. Az aláíráshoz használatos privát kulcsunk publikus részét az adott domain (selector) TXT típusú DNS rekordjában helyezzük el.  A DNS rekord neve (aldomain) kötött.</p> <p>A lista elemeinek tag neve gyakran rövid, egy-két betűs szó. Legismertebbek:</p> <ul> <li><strong>v</strong>= verziószám (statikus 1)</li> <li><strong>a</strong>= aláírás algortimusa</li> <li><strong>c</strong>= canonizálási algortimus a header és body tartalomra</li> <li><strong>q</strong>= az alapértelmezett publikus kulcs lekérdezési eljárás (pl. dns/txt)</li> <li><strong>b</strong>= a tartalom elektornikus aláírása, amely az email header és body-ra vonatkozik</li> <li><strong>bh</strong>= egy body hash</li> <li><strong>d</strong>= az aláíró domain</li> <li><strong>s</strong>= a selector</li> <li><strong>l</strong>=a body canonilizált részének hossza</li> <li><strong>t</strong>= aláírási időbélyeg</li> <li><strong>x</strong>= lejárati idő</li> <li><strong>h</strong>= az aláírásba bekerült fejlécek listája</li> </ul> <p>Egy minta DKIM fejléc:</p> <pre class="lang:default decode:true" title="Mindta DKIM aláírás">DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;      c=relaxed/simple; q=dns/txt; l=1234; t=1117574938; x=1118006938;      h=from:to:subject:date:keywords:keywords;      bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;      b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ               VoG4ZHRNiYzR</pre> <p>A selector kérdésere vissza kell térnünk. Ahhoz, hogy a fogadó fél a publikus kulcsunkat megszerezhesse, azt kihelyezzük egy TXT típusú dns rekordba. A DNS rekord már önmagában is egy elfogadható eljárás, hiszen a saját domainünk DNS rekordjait &#8211; elméletileg &#8211; csak mi tudjuk kezelni. A kérdés az, hogy vajon melyik DNS rekordban rejtettük el az adatokat? Ezt megadhatjuk, méghozzá a tag-ek segítségével.</p> <p>A DNS rekord nevét az alábbi adja meg: <strong>selector</strong>._domainkey.<strong>domain</strong>, vagy ha tag-ekkel írjuk le <strong>s</strong>._domainkey.<strong>d . </strong>A fenti példa adataival behelyettesítve ezt kapjuk: brisbane._domainkey.example.net</p> <p>Tehát a fogadó szerver fogja magát és lekéri a brisbane._domainkey.example.net TXT típusú rekordját, amelyben megtalál a hitelesítéshez minden szükséges információt.</p> <p>Nézzünk egy példa TXT rekordot:</p> <pre class="lang:default decode:true">v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGJY5QnshY9TYF+IL2wU2kBydf971bpGhr9uCNp27Hs9NuxB0G1WOGRFe7mCT+X+6FSc8t9dvhJVlTWuVy6CjyirJ6EiVHZx3ZbNXI067+BV/bktRN5cuCb+NrTF0B1dpZ6p8EIURoJkdtB Yw5pUeZ2ks3y9JWxDM3l9Cc73fanwIDAQAB</pre> <p>Láthatod, hogy itt is van néhány paraméter, a legfontosabb a <strong>p=</strong>, ez tartalmazza a publikus kulcsot.</p> <h2>Telepítés, beállítás</h2> <p>A postfix telepítéséről most nem beszélek, feltételezem, hogy már van egy jól működő példányod.</p> <pre class="lang:default decode:true">apt-get install opendkim opendkim-tools</pre> <p>Az opendkim egy önállón futó démon program, ne lepődj meg, ha látod a folyamat listában. Fontos, hogy betoljuk magunkat az /etc/default/opendkim fájlba, és módosítsuk a SOCKET változó értékét. Egyelőre használjunk TCP-t, így adjuk meg: <strong>SOCKET=&#8221;inet:8891@localhost&#8221;</strong>. Tehát az opendkim csak a localhost 8891-es portján figyeljen a kérésekre. Ha socket-et szeretnél hazsnálni (és miért ne akarnál), valószínűleg célszerű lesz a postfix-ot az opendkim csoporthoz adni.</p> <p>A részletes beállítási lehetőségeket az /etc/opendkim.conf fájlban találod. Máris a multi domaines környezet fogod beállítani (hogy ne kelljen kétszer fáradnod). Egy láma szintű konfiguráció:</p> <pre class="lang:default decode:true"># Always oversign From (sign using actual From and a null From to prevent # malicious signatures header fields (From and/or others) between the signer # and the verifier.  From is oversigned by default in the Debian pacakge # because it is often the identity key used by reputation systems and thus # somewhat security sensitive. OversignHeaders         From # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures # (ATPS) (experimental) #ADSPDiscard no #ATPSDomains            example.com Canonicalization        relaxed/relaxed Mode                    sv SubDomains              yes Syslog                  yes LogWhy                  yes UMask                   022 UserID                  opendkim:opendkim KeyTable                /etc/opendkim/KeyTable SigningTable            /etc/opendkim/SigningTable ExternalIgnoreList      /etc/opendkim/TrustedHosts InternalHosts           /etc/opendkim/TrustedHosts Socket                  inet:8891@localhost Selector                mail DNSTimeout              5 SignatureAlgorithm      rsa-sha256</pre> <p>Ebből csak az a fontos egyelőre, hogy a kulcsok, aláírások, egyebek az /etc/opendkim könyvtárban vannak (ne lepődj meg, a fájlnevek kisnagybetúsek). Ez a könyvtár egyébként nem létezik, Neked kell létrehoznod, a fájlokkal együtt:</p> <pre class="lang:default decode:true">mkdir -p /etc/opendkim/keys touch /etc/opendkim/KeyTable touch /etc/opendkim/SigningTable touch /etc/opendkim/TrustedHosts </pre> <p>Beszéljünk egy kicsit a fájlok szerepeiről:</p> <ul> <li><strong>KeyTable</strong>, amely domainenként a privát kulcsok adatait tartalmazza</li> <li><strong>SigningTable</strong>, amelyben összepárosítjuk a küldő domaint a DNS rekorddal</li> <li><strong>TrustedHosts</strong>, amely IP címeket vagy host neveket tárol</li> </ul> <h4>KeyTable</h4> <p>A KeyTable formátuma meglehetősen egyszerű: ez egy multi mezős sorokat tároló fájl, amelyben a mezők kettősponttal vannak elválasztva, a kulcs-érték párok viszont szóközzel. A rekord struktúra sem nehéz.</p> <pre class="lang:default decode:true">rekord_alneve domain:selector:privat_kulcs_abszolut_eleresi_utja</pre> <p>tehát azt akarják mondani, hogy adj egy álnevet, aliast midne egyes rekordnak, amellyel azonosíthatod a a benne lévő beállítási készeletet (domain, selector, kulcs). Én magam azt csinálom, hogy a TXT rekord nevét adom meg álnévként, így biztos nem kavarodok bele, méghozzá az alábbi módszertan szerint:</p> <pre class="lang:default decode:true">dns_rekord_neve</pre> <p><strong>domain</strong></p> <pre class="lang:default decode:true">:</pre> <p><strong>selector</strong></p> <pre class="lang:default decode:true">:/etc/opendkim/keys/</pre> <p><strong>domain</strong></p> <pre class="lang:default decode:true">/</pre> <p><strong>selector</strong></p> <pre class="lang:default decode:true">.private</pre> <p>Az előző példánál maradva így nézne ki:</p> <pre class="lang:default decode:true">brisbane._domainkey.example.net example.nte:brisbane:/etc/opendkim/keys/example.net/brisbane.private</pre> <p>Így aztán 1000 rekordot is lehet, könnyű lesz keresgélnde &#8211; és hivatkoznod &#8211; az adatokra.</p> <h4>SigningTable</h4> <p>A SigningTable segít összepárosítani a küldő felet a saját kulcsával (azaz a KeyTable megfelelő sorával). Ebben kétmezős sorok vannak, a mezők whitespace-el vannak elválasztva. Bal oldalon a küldő fél, jobb oldalon a KeyTable kompetens sorának álneve.  A küldő fél lehet teljes e-mail cím, vagy domain, illetve e-mail címben használhatunk csillagot is a kukac előtt.</p> <p>Példa:</p> <pre class="lang:default decode:true">president@example.com	brisbane._domainkey.example.net example.com  mail._domainkey.example.net *@example.net selector._domainkey.example.net</pre> <h4> TrustedHosts</h4> <p>Ez tulajdonképpen ip címeket és hostokat tárol, amit több célra is felhasználunk. Az ExternalIgnoreList arra használja, hogy melyek azok a külső szerverek, amelyek további autentikáció nélkül küldhetnek levelet az opendkim által kezelt domainek nevében. Az InternalHosts adja meg azokat, akiket nem kell ellenőrizni, és aláírhatóak.</p> <h4>Kulcsok generálása</h4> <p>Lépjünk be az /etc/domainkey/keys könyvtárba, és készítsünk egy könyvtárt az adott domainek, majd ide is lépjünk be:</p> <pre class="lang:default decode:true">cd /etc/opendkim/keys mkdir /etc/opendkim/keys/example.net cd /etc/opendkim/keys/example.net</pre> <p>A kulcsgeneráláshoz meg kell adnunk a domaint és a selectort:</p> <pre class="lang:default decode:true">opendkim-genkey -s brisbane -d example.net</pre> <p>Ez két fájlt fog létrehozni:</p> <ul> <li>brisbane.private, amely a privát kulcsot</li> <li>brisbane.txt, amely a publikus kulcsot tartalmazza</li> </ul> <p>Cseréld le a a privát kulcs tulajdonosát:</p> <pre class="lang:default decode:true">chown opendkim:opendkim brisbane.private</pre> <p>A publikus kulcsot add a DNS rekordhoz. A brisbane.txt erre elő van készítve, bár az idézőjelekre figyelj oda: a teljes rekord legyen egy idézőjelben.</p> <pre class="lang:default decode:true">v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGJY5QnshY9TYF+IL2wU2kBydf971bpGhr9uCNp27Hs9NuxB0G1WOGRFe7mCT+X+6FSc8t9dvhJVlTWuVy6CjyirJ6EiVHZx3ZbNXI067+BV/bktRN5cuCb+NrTF0B1dpZ6p8EIURoJkdtB Yw5pUeZ2ks3y9JWxDM3l9Cc73fanwIDAQAB</pre> <h4>Postfix beállítása</h4> <p>Ahhoz, hogy a kimenő levelek tényleg aláírásra is kerüljenek, jelezni kell a postfix-nak, hogy tegye is meg. Ezt az /etc/postfix/main.cf fájlban pár sorral meg is oldjuk. Adjuk hozzá:</p> <pre class="lang:default decode:true">milter_default_action = accept milter_protocol = 6 </pre> <p><strong>smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891</strong></p> <p>A vastagon kiemelt sorok a fontosak. Az opendkim-et és a postfix-ot is érdemes a beállítások után újrarúgni.</p> <pre class="lang:default decode:true">service opendkim restart service postfix restart</pre> <p>És máris tesztelhetsz.</p> <div class="pvc_clear"></div> <p id="pvc_stats_122" class="pvc_stats all  " data-element-id="122" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 		<item> 		<title>Csak kimenő smtp postfixal és sasl autentikációval</title> 		<link>https://malina.hu/csak-kimeno-smtp-postfixal-es-sasl-autentikacioval/</link> 		 		<dc:creator><![CDATA[Malina László]]></dc:creator> 		<pubDate>Thu, 12 Feb 2015 21:43:49 +0000</pubDate> 				<category><![CDATA[Levelezés]]></category> 		<category><![CDATA[postfix]]></category> 		<category><![CDATA[sasl]]></category> 		<category><![CDATA[smtpd]]></category> 		<guid isPermaLink="false">http://malina.hu/?p=105</guid> 					<description><![CDATA[Telepítsünk Ubuntu 14.04-en vagy Arch Linux-on egy csak kimenő smtp szolgáltatást nyújtó Postfix-ot, amely sasl segítségével autentikál. Mivel a csak kimenő smtp létjogosultsága általában a szolgáltatás sebességnövelése, az autentikáció nem relációs adatbázisból történik  (pl. mysql), és természetesen nincs vírus-, spam-, és RBL szűrés. Először alapozunk, azután elvégezzük a telepítéseket és beállításokat, majd tesztelünk. Alapozás Egy bejövő levelezésre [&#8230;]]]></description> 										<content:encoded><![CDATA[<p>Telepítsünk Ubuntu 14.04-en vagy Arch Linux-on egy csak kimenő smtp szolgáltatást nyújtó Postfix-ot, amely sasl segítségével autentikál.</p> <p>Mivel a csak kimenő smtp létjogosultsága általában a szolgáltatás sebességnövelése, az autentikáció <strong>nem</strong> relációs adatbázisból történik  (pl. mysql), és természetesen nincs vírus-, spam-, és RBL szűrés. Először alapozunk, azután elvégezzük a telepítéseket és beállításokat, majd tesztelünk.</p> <p><span id="more-105"></span></p> <h2>Alapozás</h2> <p>Egy bejövő levelezésre is alkalmas környezet telepítéséről (és ezen belül a postfix-ről) <a title="Linux levelezés telepítése" href="http://malina.hu/linux-levelezes-telepitese-ubuntu-14-04-postfix-dovecot-amavis-roundcube-mysql-alapokon-webfelulettel/">itt irtam</a>, ezért az alapokról már nem írok. A postfix telepítése/beállítása lényegében majdnem ugyanazok, az igazi különbség az, hogy nincs bejövő e-mail kezelés, illetve az autentikáció no-sql-sasl típusú. Ráadásul &#8211; hogy ne legyen túl sok réteg &#8211; a sasl által kínált sasldb metódust választjuk, ami azt jelenti, hogy nem fordul pl. a PAM-hez, hanem egy általa kezelt adatbázis fájlból veszi az autentikációs adatokat.</p> <h4>De mi is az a SASL?</h4> <p>A SASL egy autentikációs réteg vagy keretrendszer, amelynek segítségével SASL-t implementásló alkalmazások tudnak SASL-t implementáló alkalmazásokkal hitelesíttetni magukat. A SASL jó pár mechanizmust és adattárolási forrást ismer. Ahogy korábban említettem, az adattárolási formák közül a sasldb típusút választjuk, amit hivatalosan talán úgy is hívnak, hogy <strong>libsasl authentication database</strong>.</p> <p>A postfix önmagában kétféle SASL implementációt ismer: dovecot és cyrus. A dovecot most nem lényeges, a cyrus pedig a legjobb olyan megoldás, amely a postfix átírása nélkül lehetséges legtöbb/legjobb funkcionalítást adja. Amit még tudnod kell: a cyrus sasl által egy különálló hitelesítési démon fut a háttérben, amit <strong>saslauthd</strong>-nek hívnak.</p> <h2>Telepítés, beállítások</h2> <p>Először is telepítsük a legfontosabb programokat:</p> <p>Ubuntu:</p> <pre class="lang:default decode:true">#Ubuntu apt-get install postfix postfix-pcre pfqueue libsasl2-modules sasl2-bin libsasl2-2 #Arch Linux pacman -S postfix cyrus-sasl sudo -H -u username yaourt -S pfqueue</pre> <p>A postfix mellett új elemként tűnhet fel:</p> <ul> <li>pfqueue, amely egy queue nézegető program, hibakereséshez kiváló</li> <li>libsasl2, amellyel az smtp autentikációt fogjuk kezelni</li> <li>libsasl-modules, amely a sasldb kezelésének ismeretét hordozza magában</li> <li>sasl2-bin, amely a parancssoros programokat adja, pl. az adatbázis fájl kezeléséhez</li> </ul> <p>A postfix beállításait két fájlban találjuk: /etc/postfix/main.cf és /etc/postfix/master.cf. A main.cf tartalmazza a postfix beállításait, míg a master.cf a postfix belső folyamatainak beállításait.</p> <p>Először a main.cf-ben állítsuk be a legfontosabb paramétereket: hálózat, továbbítások, adatforrások (ezeket később vázoljuk), stmp szerver autentikácó, smtp szerver ellenőrzési paraméterek:</p> <pre class="lang:default decode:true"># NETWORK myhostname = smtp.szerverem.hu myorigin = /etc/mailname mydestination = smtp.szerverem.hu, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 inet_interfaces = all inet_protocols = ipv4 # MAPS mailbox_size_limit = 0 recipient_delimiter = + relay_recipient_maps = local_transport = error local_recipient_maps = transport_maps = hash:/etc/postfix/transport alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases # TUNING default_destination_concurrency_limit=100 default_destination_recipient_limit=100 default_process_limit=300 smtp_mx_session_limit=200 smtpd_client_connection_count_limit=200 smtp_destination_concurrency_limit=100 maximal_backoff_time = 1000s minimal_backoff_time = 300s # SMTP AUTH RULES smtpd_helo_required = yes smtpd_sender_restrictions =  permit_mynetworks,  permit_sasl_authenticated,  reject_unknown_sender_domain smtpd_recipient_restrictions =  reject_non_fqdn_sender,  reject_non_fqdn_recipient,  permit_mynetworks,  permit_sasl_authenticated,  reject_unauth_destination smtpd_relay_restrictions =   permit_mynetworks,  permit_sasl_authenticated,   defer_unauth_destination #STMPD AUTH SETTINGS smtpd_sasl_type = cyrus smtpd_sasl_path = smtpd smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = szerverem.hu smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes disable_vrfy_command = yes </pre> <p>A <strong>permit_mynetworks</strong> akár el is hagyható, legalábbis egy hanyagabb hálózatban veszélyes is lehet. Amire figyelned érdemes, az az <strong>smtpd_sasl_local_domain</strong> paraméter, illetve annak értéke. Később meglátod, hogy miért.</p> <p>Továbbiakban a postfix folyamatait állítjuk be:</p> <pre class="lang:default decode:true">smtp      inet  n       -       -       -       -       smtpd 26      inet  n       -       -       -       -       smtpd submission inet n       -       n       -       -       smtpd   -o smtpd_sasl_auth_enable=yes   -o smtpd_sasl_security_options=noanonymous   -o smtpd_sasl_local_domain=example.tld   -o header_checks=   -o body_checks=   -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject   -o smtpd_sasl_tls_security_options=noanonymous smtps     inet  n       -       -       -       -       smtpd   -o smtpd_tls_wrappermode=yes   -o smtpd_sasl_auth_enable=yes   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject   -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination   -o smtpd_sasl_security_options=noanonymous,noplaintext   -o smtpd_sasl_tls_security_options=noanonymous   -o smtpd_sasl_local_domain=example.tld   -o header_checks=   -o body_checks= </pre> <p>Figyeld meg, hogy itt is megjelenik az <strong>smtpd_sasl_local_domain </strong>paraméter.</p> <p>Most pedig állítsuk be az smtpd hitelesítéshez szükséges sasl paramétereket. Az /etc/postfix mappában hozzunk létre egy könyvtárt: sasl.</p> <pre class="lang:default decode:true">mkdir /etc/postfix/sasl</pre> <p>A sasl könyvtár fogja tartalmazni az smtp authentikáció paramétereit. Itt hozzunk létre egy smtpd.conf fájlt:</p> <pre class="lang:default decode:true">touch /etc/postfix/sasl/smtpd.conf</pre> <p>Az smtpd.conf fájl tartalma:</p> <pre class="lang:default decode:true">pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 allow_plaintext: true </pre> <p>Hozzuk létre a sasldb adatbázist, amely egyébként alapértelmezetten az /etc/sasldb fájl. Az adatbázis kezelését parancssoros programokat teszik lehetővé. A legalapvetőbb feladatok:</p> <ul> <li>új user felvétele</li> <li>user módosítása</li> <li>user törlése</li> </ul> <p>Állítsuk be a sasl adatbázist:</p> <pre class="lang:default decode:true">saslpasswd2 -c -u</pre> <p><strong>szerverem.hu</strong></p> <pre class="lang:default decode:true"> $user chown postfix:postfix /etc/sasldb2 chmod 660 /etc/sasldb2</pre> <p>Kapcsolók jelentése:</p> <ul> <li>-c kapcsoló: create,</li> <li>-u kapcsolo: realm (domain, tartomány)</li> </ul> <p>A -u kapcsoló a lényeg. Korábban már említettem az <strong>smtpd_sasl_local_domain</strong> postfix paramétert: annak értéke kerüljön ide. Mindig. Ha az smtpd_sasl_local_domain értéke humbug.hu, akkor az userek kezelésénél a <strong>-u humbug.hu</strong> kapcsolót kell használnod. Miért fontos? Mert az adatbázis fájlban több alkalmazás adatait tudod tárolni, és az első elválasztó/csoportosító megoldás a realm megadása.</p> <p>A saslpasswd2 bekéri a jelszót kétszer, és nagyjából ennyi az összes feladatod.</p> <p>Tulajdonképpen el is készültél, a programok telepítve, beállítva, az első usered rögzítve. Indulás előtt még meg kell tenned azt, hogy:</p> <p><strong>Ubuntun</strong>: az /etc/default/saslauthd fájlban a START=no értékét állítsd yes-re állítani, illetve a MECHANISMS értéke sasldb legyen (enélkül nem fog menni, mert az alapértelemezett a pam).</p> <p><strong>Arch Linuxon</strong>: az /etc/conf.d/saslauthd fájlban a &#8220;-a pam&#8221; értéket állítsd át:</p> <pre class="lang:default decode:true">SASLAUTHD_OPTS="-a sasldb -n 5 -c "</pre> <p>Ezután indítsd el a saslauthd démont:</p> <pre class="lang:default decode:true">#Ubuntu service saslauthd start #Arch Linux systemctl enable saslauthd systemctl start saslauthd</pre> <p>És itt jön az igazi cheat: ha master.cf-ben az smtp és/vagy a 26-os port chroot oszlopa &#8220;-&#8221; vagy &#8220;y&#8221; értékű, akkor az /etc/sasldb2 fájlt át kell másolnod a /var/spool/postfix/etc mappába, mert a postfix chroot-ban fut, tehát nem lát ki az igazi /etc/sasldb fájlra. Neki ekkor a /var/spool/postfix a root, ezért az itt található etc mappába kell átmásolnod a sasldb fájlt.</p> <p>A másik megoldás az lehet, ha a chroot oszlop értékét &#8220;n&#8221;-re állítod, és akkor nem kell ezzel foglalkoznod:</p> <pre class="lang:default decode:true">smtp      inet  n       -</pre> <p><strong>n</strong></p> <pre class="lang:default decode:true">       -       -       smtpd 26      inet  n       -</pre> <p><strong>n</strong></p> <pre class="lang:default decode:true">       -       -       smtpd</pre> <p>Én ezt választottam.</p> <p>Ezután elindíthatod a levelezőszervert is:</p> <pre class="lang:default decode:true ">#Ubuntu service start postfix #Arch Linux systemctl enable postfix systemctl start postfix</pre> <h2>Smtp teszt</h2> <p>Smtp kapcsolatot (akár autentikációs, akár küldést) a <strong>swaks</strong> programmal tudsz a legjobban tesztelni.</p> <p>Autentikációs teszt:</p> <pre class="lang:default decode:true ">swaks --server szerverem.hu --port 26 --auth PLAIN --auth-user smtpUsername --auth-password smtpuserPassworrd --quit-after AUTH</pre> <p>Teszt levélküldés:</p> <pre class="lang:default decode:true ">swaks --server szerverem.hu --port 26 --auth PLAIN --auth-user smtpuserName --auth-password smtpuserPassword --to to@toDomain.hu --from from@fromDomain.hu</pre> <div class="pvc_clear"></div> <p id="pvc_stats_105" class="pvc_stats all  " data-element-id="105" style=""><i class="pvc-stats-icon medium" aria-hidden="true"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="chart-bar" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-chart-bar fa-w-16 fa-2x"><path fill="currentColor" d="M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z" class=""></path></svg></i> <img loading="lazy" decoding="async" width="16" height="16" alt="Loading" src="https://malina.hu/bupobef/page-views-count/ajax-loader-2x.gif" border=0 /></p> <div class="pvc_clear"></div> ]]></content:encoded> 					 		 		 			</item> 	</channel> </rss> 