我目前正在开发一个共享主机的应用程序,为机器使用一个完整的MySQL后端。 我已经build立了我的所有服务,而且他们运作得很好,但是我对pure-ftpd有点问题。
正如你可能知道的,Pure-FTPd可以使用pure-ftpd-mysql
。 以下是基本configuration的样子:
MYSQLServer 127.0.0.1 MYSQLPort 3306 MYSQLSocket /var/run/mysqld/mysqld.sock MYSQLUser myftpdbuser MYSQLPassword myftpdbpassword MYSQLDatabase myftpdb MYSQLCrypt md5 # Here come the selection queries...
正如你所看到的,我select了md5作为encryptionalgorithm,但这是一个问题。 我正在使用Symfony2,并且我已经为我的用户设置了sha512的编码器,当我想创build一个与我的用户相同密码的FTP帐户时,我必须将sha512哈希值复制到FTP帐户。
然而,这是非常令人满意的,Pure-FTPd是为md5configuration的,因此它将无法检查这个密码。 我想尽可能保持sha512,因为使用md5将需要对我的代码进行一些修改以重新encryption。
以下是Pure-FTPdconfiguration示例所说的内容:
# Mandatory : how passwords are stored # Valid values are : "cleartext", "crypt", "sha1", "md5" and "password" # ("password" = MySQL password() function) # You can also use "any" to try "crypt", "sha1", "md5" *and* "password"
所以这里是我的问题:有没有可能设置Pure-FTPd与sha512一起使用,例如使用“crypt”? 也许我可以使用crypt
并将其configuration为在其他地方使用sha512,我不知道…
编辑
我试图与查询工作,但我找不到任何技巧。 这是密码查询:
MYSQLGetPW SELECT password FROM ftp_accounts WHERE username='\L'
解决scheme
经过几次search,并得到了答案,我推断出3个解决scheme:
SHA512_CTX
结构并获得第一个摘要。 用正确的参数迭代500次,并执行base 64编码。 根据Symfony的设置,您也可以使用hex的结果。 crypt(3)
设置为在PureFTPd下使用盐腌的SHA512散列。 棘手的事情,当你开始谈论500次迭代。 /usr/bin/pureftpd-auth
,它只是简单地调用/path/to/php /path/to/app/console your:ftp:auth:command
chmod
it,给它一个合适的解释器( #!/bin/bash
,…),并在共享套接字上启动pure_authd
和pureftpd
,以使它们进行通信。有关更多信息,请参见http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules 。 glibc 2.7及更高版本确实支持sha512,但只能用盐腌方式。 如果你有腌SHA512哈希,使用“地穴”应该立即工作。
如果你确实拥有无懈可击的sha512哈希值,请认真回避它们。 有预先计算的数据库可用,所以从这些数据库查找散列会立即给你明确的密码,或者至less可以成功login的东西。 使用当前GPU计算散列速度也非常快,因此需要避免使用任何无用的方法。
例如, https: //www.crackstation.net/为您提供了一个很好的web界面,用于从哈希中查找数以百万计的未encryption的密码,以及一些关于“腌制与未腌制哈希”的教育,select正确的(随机)盐和“很好“的散列algorithm。
作为一个现实生活中的例子,来自linkedin和lastfm的数以百万计的非哈希密码哈希已经泄漏到了互联网上,并且使用预先计算的哈希数据库或彩虹表,只用了几天的时间就可以find匹配的大多数明文密码。 使用腌过的哈希函数,更有可能需要几个月或几年才能find与哈希值相匹配的明文数据。
如果你确实理解了无风险哈希的风险,并且仍然绝对需要通过MySQL来实现无盐sha512,你可以通过提供一个自定义的skript来实现pure-authd(这样做相当简单)。 有关更多信息,请参见http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules 。