[PATCH v3] fastd: make secret key updatesafe

Christian Dresel fff at chrisi01.de
Di Jan 7 15:33:09 CET 2020


Hi Adrian

On 07.01.20 15:07, Adrian Schmutzler wrote:
> Hallo Christian,
> 
> siehe unten.
> 
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
>> Christian Dresel
>> Sent: Dienstag, 7. Januar 2020 12:03
>> To: franken-dev at freifunk.net
>> Subject: [PATCH v3] fastd: make secret key updatesafe
>>
>> To use a whitelist easy, it is neccessary to make the fastd key updatesafe
>> This patch safe the key to uci fff and recover it, if a key is after the update
>> available
>>
>> ---
>> Changes in v2:
>> - use variable in if
>> - remove trailing whitespace
>> - remove -q
>> ---
>> Changes in v3:
>> - use only one variable $secret
>> ---
>>
>> Signed-off-by: Christian Dresel <fff at chrisi01.de>
>> ---
>>  .../fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd         | 11 ++++++++++-
>>  1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
>> b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
>> index d53eb43..28384b9 100644
>> --- a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
>> +++ b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
>> @@ -15,9 +15,18 @@ uci batch <<EOF
>>    set fastd.fff.mtu='1426'
>>    set fastd.fff.on_up="/etc/fastd/fff/up.sh"
>>    set fastd.fff.secure_handshakes='0'
>> -  set fastd.fff.secret="generate"
>>  EOF
>>
>> +if ! secret=$(uci -q get fff.fastd.secret); then
>> +	secret=$(/usr/bin/fastd --generate-key --machine-readable)
> 
> uci-defaults wird sehr früh im Bootprozess ausgelöst, noch lange bevor irgendein Dienst startet. Mit dieser Zeile wird demnach der Key viel früher generiert als bisher (denn die Settings werden erst ausgewertet, wenn fastd startet; S=50 glaube ich). Das heißt, die Entropy an der Stelle wird quasi Null sein. Wenn ich mich richtig erinnere, ist uns die Entropy ja ziemlich egal, aber ich kann nicht wirklich abschätzen, ob man bei dieser Variante nicht irgendwann dieselben Keys für verschiedene Router generiert. Für den Aufruf an sich sollte die Tatsache, dass der Dienst noch nicht läuft ja wahrscheinlich egal sein.

puh gute Frage, ich hab da leider kaum Ahnung bisher waren die key immer
einzigartig und ich habs paar mal probiert. Ist aber natürlich keine
große Datenbasis wenn ich jetzt sag so 3-4x vielleicht hab ich es
probiert ;)

> 
>> +	uci set fff.fastd='fff'
>> +	uci set fff.fastd.secret="$secret"
>> +	uci commit fff
> 
> Die /etc/config/fff wird erst in 98-configure-fff generiert (auf einem frischen System). Daher wird das auf einem frischen System zu einem Fehler führen. Die billige Lösung wäre hier ein "touch /etc/config/fff" zu ergänzen, wenn man es richtig machen will müsste ggf. den Start von 98-configure-fff nach vorne verlegen (was aber wieder diverse Nebeneffekte haben könnte.) Ich denke, erstmal reicht es, wenn du ersteres machst.

spannend, du solltest recht haben. Ich hab jetzt aber (wie oben erwähnt)
mehrfach auch mit -n geflasht, da sollte das ja auch zutreffen. Es hat
allerdings funktioniert und das Zeug stand in fff drinnen was ich mir
gerade nicht erklären kann. Dennoch unschön und du hast recht.

Deine billigste Lösung gefällt mir aber auch nicht. Wie wäre es mit, wir
legen eine 15-generate-fff (15 ist jetzt aus der Luft gegriffen, müsste
mal gucken was passt) an, machen dort nur ein touch /etc/config/fff und
nehmen das touch aus der 98er raus lassen dort aber den Rest drinnen um
Nebeneffekte zu vermeiden?

Denke das kann dann in ein eigenes Patch und dann kann man es hier so
lassen. Was meinst du dazu?

> 
>> +fi
>> +uci set fastd.fff.secret="$secret"
>> +uci commit fastd
>> +
>> +
> 
> Eine newline reicht mE.

jo

Gruß

Christian

> 
> Ansonsten sieht das gut aus. Das mit der Entropy sollte man nochmal diskutieren, testen wird man das schlecht können.
> 
> Grüße
> 
> Adrian
> 
>>  [ ! -d /etc/fastd/fff ] &&  mkdir -p /etc/fastd/fff
>>  ln -s /tmp/fastd_fff_peers /etc/fastd/fff/peers
>>  echo "#!/bin/sh" > /etc/fastd/fff/up.sh
>> --
>> 2.11.0

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20200107/32d94432/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev