Sziasztok
Adva van egy Debian 6 + Ispcp 1.0.7 + Dovecot + sieve + spamassassin + roundcube (+ sieve, spamassassin plugin) rendszer.
Alapjaiban ezen leírás alapján http://isp-control.net/documentation/howto/mail/replace_courier_with_do…
A problémám az, hogy az ispcp bluefish kódolással tárolja a mail account jelszavakat SQL-ben.
A linkelt howtoban a dovecothoz való átjárhatóságot egy ispcp-dovecot-mngr perl scipttel oldották meg ami sql-ből lekérdezi és visszafejti a kódolt jelszót, majd átadja a dovecotnak.
Szeretném, ha 1:1-ben sqlből mehetne a dovecot auth default {passwd sql} szekcióban, mert:
- Brute force szintű loginok esetén a sok visszafejtés jelentős terhelést okoz.
- Feleslegesnek érzem a közbenső scriptet, hogyha ő is sql-hez fordul. Mehetne natívan a dovecot is.
Utánaolvasva a dovecot nem ismeri ezt a kódolást.
Aki tudja, a ispcp forkolt változata, az I-MSCP default támogatja a dovecotot. A balgák könnyen megoldották a dolgot: kódolatlanul tárolják a mail_users táblában a jelszavakat, így nem okoz gondot a dovecotnak közvetlen sql-ből lekérdezni. Érthető okok miatt ez nekem nem opció.
Mit lehetne kezdeni a helyzettel?
Ötleteléseim:
- Áttúrni az ispcp php fájljait és n+1 helyen átírni a decrypt/encrypt függvényeket -> ha nem muszáj, nem ezzel kezdeném.
- SQL-ben lévő userekből dovecot által emészthető formában file vagy másik táblában sql alapú passwd -t hoznék létre.
Szerintetek miként lehetne még áthidalni a problémát az ispcp lecserélése nélkül?
- 2966 megtekintés
Hozzászólások
Nos úgy néz ki, hogy a belső függvény hívásokat átírva rábeszélhető, hogy a courier userdb helyett dovecot passwdb-be pakoljon egy általam meghatározott szintakt és jelszó kódolás szerint.
Tehát új mail hozzáféréseknél már real time menedzseli a passwdb-t, nem terheli az sql-t.
Már csak arra kell scriptet írni, hogy az sql-ben meglévő bluefish jelszavakból legenerálja 1x a teljes CRAM-MD5-ös passwdb-t.
- A hozzászóláshoz be kell jelentkezni
Meg is van. A /var/www/ispcp/engine mappába kell elhelyezni.
#!/usr/bin/perl
use FindBin;
use lib "$FindBin::Bin/";
require 'ispcp_common_code.pl';
use strict;
use warnings;
use Sys::Syslog;
my $real_password = '';
my @rows;
my $sql = "SELECT mail_pass, mail_addr FROM mail_users WHERE mail_pass != '_no_' ";
my ($rs, $rows) = doSQL($sql);
my $i=0;
foreach (@$rows) {
my $line = @$rows[$i];
($rs,$real_password) = decrypt_db_password(@$line[0]);
print "username:@$line[1]:@$line[0]:$real_password
";
$i++;
}
Biztos szebben is meg lehet oldani, viszont működik és 1x kell a migrálás idejére.
Sorban kiprinteli mailcim:cryptpass:plainpass formában
Ebből pedig már könnyen el lehet készíteni a dovecot passdb-t.
- A hozzászóláshoz be kell jelentkezni
A teszt sikeres volt. 60 párhuzamos pop3 kapcsolódás 5 másodperc timeouttal brutus brute-force programmal tesztelve.
ispcp-dovecot-mng: 100% cpu (bluefish encode/decode miatt)
Dovecot natív passdb használatával 1-7% egy xeon 5620-as processzor 1 magján VPS-ben.
- A hozzászóláshoz be kell jelentkezni
tarolj tobb hash-t az SQL-edben. vagy irj egy storprocot, ami megoldja. egyebkent az nem blowfish (mert az nem visszafejtheto).
egyebkent, meg ha visszafejtheto a kodolas az SQL-ben, akkor meg irsz egy storprocot ra, es minden el van intezve.
- A hozzászóláshoz be kell jelentkezni
en ezt megoldottam fapadosan, csinaltam patchet szinte mindenhez es az sql gyari hash fvg.-t hasznalom. Jo megoldas, viszont a frissites nyugosebb
- A hozzászóláshoz be kell jelentkezni
Másként kódolod le az sql-ben lévő mail usereket? Csak mert a gyári kódolásban elvileg nem érti a dovecot vagy maradtál couriernél?
- A hozzászóláshoz be kell jelentkezni
konkrétan a gyári mysql password fvg.-t használom, majd mindenhez ami nem támogatta (pl.: dovecot) megcsináltam a patchet.
Ha egy picit ért valaki a programozáshoz, meglehetősen rövid idő alatt keresztűl tudja verni a dolgot, nekem ha jól emlékszem pár órámba telt csak.
- A hozzászóláshoz be kell jelentkezni
Küldtem egy privátot ennek kapcsán.
- A hozzászóláshoz be kell jelentkezni