V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Spolek vpsFree.cz vydal statistiky týkající se distribucí nasazených na serverech členů. V dlouhodobém pohledu je zřejmé, že většina uživatelů z původního CentOS přechází na Rocky Linux. Pozoruhodný je také nárůst obliby distribuce NixOS, která dnes zaujímá třetí místo po Debianu a Ubuntu.
Já sám jsem několik programů z těchto řad vyzkoušel, ale nejvíce si mě získal Pure-FTPd, který je šířen pod licencí GPL. Měl jsem dva základní požadavky - podpora virtuálních uživatelů (nikoliv unixových) umístěných v PostgreSQL nebo MySQL databázi a možnost virtuálních kvót. Obojí Pure-fptd splňuje a umí toho i mnohem více. Tento návod popisuje instalaci Pure-FTPd s podporou PostgreSQL na Debianu. Základním předpokladem je, že máte nainstalovanou PostgreSQL a zvládáte alespoň základní operace s ní (vytvoření databáze, tabulky a její naplnění daty). Pokud preferujete MySQL, můžete tento návod s malými úpravami použít také, protože se jedná o velmi podobnou konfiguraci.
Začneme instalací z repozitářů příkazem:
apt-get install pure-ftpd-postgresql
Nejdříve je třeba nastavit, aby Pure-FTPd běžel trvale jako démon. To provedeme editací souboru /etc/default/pure-ftpd-common
, kde nastavíme parametr STANDALONE_OR_INETD=standalone
. Rovněž je nasnadě zapnout volbu VIRTUALCHROOT=true
, aby nám nikdo nemohl "běhat" po celém filesystému.
Teď přistoupíme k základní konfiguraci, editujeme soubor /etc/pure-ftpd/db/postgresql.conf
. V první řadě musíme programu říci, na kterou databázi a jakým způsobem se má připojit:
PGSQLServer localhost PGSQLPort 5432 PGSQLUser ftpdaemon PGSQLPassword tajneheslo PGSQLDatabase ftp
Nenašel jsem způsob, jak heslo pro přístup k databázi uložit šifrovaně, proto zdůrazňuji, abyste výše zmíněného uživatele ftpdaemon vytvořili pouze s právy pro čtení a souboru postgresql.conf nastavili práva 600.
V dalších odstavcích už konfigurujeme samotné chování FTP. Nastavíme, že uživatelská hesla v databázi jsou pouze MD5 hashe. Můžete také použít volbu cleartext, ale není příliš chytré ukládat hesla v plaintextu.
PGSQLCrypt md5
Následuje SQL dotaz, který při autentizaci hledá platného uživatele s odpovídajícím heslem:
PGSQLGetPW SELECT password FROM users WHERE username='\L' AND active='true'
Další dva dotazy načítají user ID a group ID autentizovaného uživatele, což oceníte zejména při konfiguracích s větším počtem uživatelů:
PGSQLGetUID SELECT uid FROM users WHERE username='\L' PGSQLGetGID SELECT gid FROM users WHERE username='\L'
Pokud je nepotřebujete využívat, můžete nastavit tyto parametry, kterými dosáhneme statického nastavení:
PGSQLDefaultUID 2000 PGSQLDefaultGID 2000
Možná je vhodné poznamenat, že tyto dva parametry přepisují předchozí PGSQLGetUID a PGSQLGetGID
Nyní cesta k adresáři, do kterého bude mít uživatel přístup:
PGSQLGetDir SELECT directory FROM users WHERE username='\L'
A nakonec zde máme volby kvót a omezování uploadu/downloadu:
PGSQLGetQTAFS SELECT quotafiles FROM users WHERE username='\L' PGSQLGetQTASZ SELECT quotasize FROM users WHERE username='\L' PGSQLGetBandwidthUL SELECT uploadbw FROM users WHERE username='\L' PGSQLGetBandwidthDL SELECT downloadbw FROM users WHERE username='\L'
Soubor uložíme a přejdeme k dalšímu kroku.
Nejdříve vytvoříme tabulku users se strukturou odpovídající předchozí konfiguraci:
CREATE TABLE "public"."users" ( "id" SERIAL, "username" VARCHAR(20) NOT NULL, "password" VARCHAR(32) NOT NULL, "active" BOOLEAN DEFAULT true, "uid" INTEGER DEFAULT 2000, "gid" INTEGER DEFAULT 2000, "directory" VARCHAR(100) NOT NULL, "quotasize" INTEGER DEFAULT 0, "quotafiles" INTEGER DEFAULT 0, "downloadbw" INTEGER DEFAULT 0, "uploadbw" INTEGER DEFAULT 0, CONSTRAINT "users_pkey" PRIMARY KEY("id") ) WITH OIDS;
Poté do tabulky přidáme jednoho uživatele na vyzkoušení:
INSERT INTO public.users (username, "password", active, uid, gid, directory, quotasize, quotafiles, downloadbw, uploadbw) VALUES ('test','098f6bcd4621d373cade4e832627b4f6',true,2001,2001,'/var/www/test',10,0,50,0);
Tímto jsme vytvořili uživatele test s heslem test, uživatel je aktivní, jeho UID i GID je 2001, má přístup do složky /var/www/test
, kde má k dispozici 10 MB prostotu, počet souborů pro něj není omezen, stahovat může rychlostí 50 kB/s a uploadovat neomezenou rychlostí.
Nyní spustíme démona #/etc/init.d/pure-ftpd-postgresql start
. Odpovědí by mělo být přibližně toto:
Starting ftp server: Running: /usr/sbin/pure-ftpd-postgresql-virtualchroot -l pgsql:/etc/pure-ftpd/db/postgresql.conf -l pam -u 1000 -E -O clf:/var/log/pure-ftpd/transfer.log -B
Nyní, jestliže jste nikde neudělali chybu, by mělo fungovat připojení přes standardní port 21. V případě neúspěchu si zkontrolujte, zda jste zmíněnou složku uživatele nezapomněli vytvořit, popřípadě při připojování sledujte syslog (tail -F /var/log/syslog
). Pokud funguje vše, kromě omezování rychlosti, popř. i diskových kvót, zkontrolujte si řádně postgresql.conf
, zda v něm jsou stejné názvy sloupců jako v databázi. Pokud se nedaří ani inicializovat spojení, není na škodu pokus o připojení telnetem přímo na stroji s FTP.
telnet localhost 21
Měl by vám odpovědět přibližně takto:
220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 220-You are user number 2 of 50 allowed. 220-Local time is now 14:31. Server port: 21. 220-This is a private system - No anonymous login 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity.
V případě, že se tak nestane, je také možné, že se vám zobrazí nějaká klíčová chybová hláška, která může významně pomoci s hledáním příčiny. Mám zkušenosti, že ani logování na vyšší úrovni nic nezaznamenalo, ale v telnetu mi server odpověděl chybovým hlášením.
Pure-FTPd umí také zobrazovat skryté soubory, neboli soubory, jejichž název začíná tečkou. To ocení zejména provozovatelé webových serverů. Na mnoha hostingách tato funkce chybí, což občas může způsobit spoustu problémů, pokud nevidíte soubor .htaccess. Takže jak na to? Jednoduše!
echo yes > /etc/pure-ftpd/conf/DisplayDotFiles
A restartujeme démona:
/etc/init.d/pure-ftpd-postresql restart
Také vám při větším počtu uživatelů vadí, že má každý svoji vlastní složku a že ji musíte vždy s odpovídajícími právy vytvořit? K tomu je tady možnost existence dalšího konfiguračního souboru:
echo yes > /etc/pure-ftpd/conf/CreateHomeDir
Opět nezapomeňte opět restartovat démona.
Jsou případy, kdy nechceme, aby si uživatel mohl měnit přístupová práva souborů příkazem chmod:
echo yes > /etc/pure-ftpd/conf/NoChmod
Zrychlení FTP lze docílit vypnutím reverzního DNS překladu, který v drtivé většině případů nepotřebujeme:
echo yes > /etc/pure-ftpd/conf/DontResolve
Ve výchozím nastavení Pure-FTPd odpojuje relace neaktivní 15 minut. To můžete změnit takto:
echo 30 > /etc/pure-ftpd/conf/MaxIdleTime
V tomto případě jsme dobu prodloužili na 30 minut.
Pure-FTPd normálně povoluje 50 současných spojení. Pokud jich chcete povolit například 100, zadejte:
echo 100 > /etc/pure-ftpd/conf/MaxClientsNumber
Může dojít i k situacím, kdy nechceme, aby uživatelé mohl zasahovat do souborů začínajících tečkou.
echo yes > /etc/pure-ftpd/conf/ProhibitDotFilesWrite
Podobně funguje také parametr ProhibitDotFilesRead.
Užitečná funkce na veřejných FTP určených k uploadování anonymními uživateli.
echo yes > /etc/pure-ftpd/conf/KeepAllFiles
U této volby jsem se setkal s nemožností uploadu souboru začínajícího tečkou.
Pure-FTPd je mocný nástroj. Umí toho mnohem více, v tomto článku jsem se pokusil o výtah toho všeobecně nejvyužitelnějšího. Jako velké plus vidím možnost postavení si vlastních SQL dotazů pro autentizaci, což nám může umožnit například omezování IP adres, ze kterých se jednotliví uživatelé mohou připojovat. V manuálu naleznete spoustu dalších parametrů týkajících se např. anonymních uživatelů, nastavení globálních diskových kvót, masek pro nové soubory, TLS apod. Věřím, že si u nejednoho uživatele či správce linuxového systému najde domov.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
'; drop table users;(brať iba ako príklad, s pg nemám žiadne skúsenosti). Odporúčam prečítať si minimálne definíciu na wikipedii.
SELECT password FROM users WHERE username='\L' AND active='true'SQL injekce není jen záležitostí webu - týká se každého softwaru, který má nějaké vstupy od uživatele a ty se dostávají do SQL dotazů. Docela bych se divil, kdyby v tomto FTP serveru možnost SQL injekce nebyla ošetřená - to by byl hodně velký amatérismus, ale i to se stává. Parametry dotazů se zásadně mají předávat jako parametry, nikoli slepovat SQL příkaz jako kousky textu!