From e01bcf949b045fe8181c8c0905dba804e0132ae6 Mon Sep 17 00:00:00 2001 From: Fabio Boi Date: Sun, 4 Oct 2026 11:40:34 +0200 Subject: [PATCH] Correct source transfer encoding for README.md --- README.md | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b6a5e5..9d9d54c 100644 --- a/README.md +++ b/README.md @@ -1 +1,130 @@ -IyBMWEMgRW5yb2xsbWVudAoKSW50ZXJha3RpdmVzIFNrcmlwdCBmdWVyIGVpbmVuICoqUHJveG1veC1Ib3N0KiouIEVzIGluc3RhbGxpZXJ0IGZlaGxlbmRlIFRhaWxzY2FsZS0KdW5kIFdhenVoLUtvbXBvbmVudGVuIGluIGF1c2dld2FlaGx0ZW4gTFhDcywgdmVyYmluZGV0IG5ldWUgVGFpbHNjYWxlLUNsaWVudHMgbWl0CkhlYWRzY2FsZSB1bmQga2FubiAqKlRhaWxzY2FsZSBTU0gqKiBzYW10IExpbnV4LU51dHplciB1bmQgU3VkbyBlaW5yaWNodGVuLgoKIyMgU3RhcnRlbgoKQWxzIHJvb3QgYXVmIGRlbSBQcm94bW94LUhvc3QsIG5pY2h0IGlubmVyaGFsYiBlaW5lcyBMWEM6CgpgYGBiYXNoCmN1cmwgLS1mYWlsIC0tc2lsZW50IC0tc2hvdy1lcnJvciAtLWxvY2F0aW9uIFwKICBodHRwczovL2NvZGUuZmFib2kuY2xvdWQvZmFiaW8vbHhjLWVucm9sbC9yYXcvYnJhbmNoL21haW4vbHhjLWVucm9sbC5zaCBcCiAgLW8gL3J1bi9seGMtZW5yb2xsLnNoICYmIGJhc2ggL3J1bi9seGMtZW5yb2xsLnNoCmBgYAoKQWx0ZXJuYXRpdiBoZXJ1bnRlcmxhZGVuIHVuZCB6dWVyc3QgZGllIEF1c3dhaGwgcHJ1ZWZlbjoKCmBgYGJhc2gKY3VybCAtLWZhaWwgLS1zaWxlbnQgLS1zaG93LWVycm9yIC0tbG9jYXRpb24gXAogIGh0dHBzOi8vY29kZS5mYWJvaS5jbG91ZC9mYWJpby9seGMtZW5yb2xsL3Jhdy9icmFuY2gvbWFpbi9seGMtZW5yb2xsLnNoIFwKICAtbyAvcnVuL2x4Yy1lbnJvbGwuc2gKYmFzaCAvcnVuL2x4Yy1lbnJvbGwuc2ggLS1saXN0CmJhc2ggL3J1bi9seGMtZW5yb2xsLnNoCmBgYAoKYC0tbGlzdGAgbGllc3QgbnVyIGRlbiBha3R1ZWxsZW4gQmVzdGFuZDsgYC0tZHJ5LXJ1bmAgemVpZ3QgbmFjaCBkZXIgQXVzd2FobCBkaWUKZ2VwbGFudGVuIEFlbmRlcnVuZ2VuLiBCZWlkZSBpbnN0YWxsaWVyZW4gbmljaHRzLCBzdGFydGVuIG5pY2h0cyBuZXUgdW5kIHNwZWljaGVybgprZWluZSBFaW5zdGVsbHVuZ2VuLiBGdWVyIGludGVyYWt0aXZlIEVpbmdhYmVuIG11c3MgZWluIFRlcm1pbmFsIHZvcmhhbmRlbiBzZWluOwpkaWUgRWluZ2FiZW4gd2VyZGVuIHVlYmVyIGAvZGV2L3R0eWAgZ2VsZXNlbiwgYXVjaCBiZWltIFN0YXJ0IHBlciBjdXJsLgoKIyMgQWJsYXVmCgoxLiBMYXVmZW5kZSBEZWJpYW4tL1VidW50dS1MWENzIG1pdCBzeXN0ZW1kIGVya2VubmVuLiBHZXN0b3BwdGUsIGdlc3BlcnJ0ZSB1bmQKICAgbmljaHQgdW50ZXJzdHVldHp0ZSBDb250YWluZXIgd2VyZGVuIHVlYmVyc3BydW5nZW4uCjIuIFZvbGxzdGFlbmRpZyBpbnN0YWxsaWVydGUgQ29udGFpbmVyIGF1cyBkZXIgQXVzd2FobCBhdXNibGVuZGVuLiBCZWkgdGVpbHdlaXNlCiAgIGluc3RhbGxpZXJ0ZW4gQ29udGFpbmVybiBudXIgZGllIGZlaGxlbmRlIEtvbXBvbmVudGUgaW5zdGFsbGllcmVuLgozLiBWb3JoZXJpZ2UgRWluc3RlbGx1bmdlbiBhdWYgV3Vuc2NoIGxhZGVuLiBUYWlsc2NhbGUgU1NIIGlzdCBiZWltIGVyc3RlbiBMYXVmCiAgIHN0YW5kYXJkbWFlc3NpZyBha3RpdmllcnQuIExpbnV4LU51dHplcm5hbWUsIFN1ZG8gdW5kIG9wdGlvbmFsIHBhc3N3b3J0bG9zZXMKICAgU3VkbyB3ZXJkZW4gYWJnZWZyYWd0LiBFcyB3aXJkIGtlaW4gT3BlblNTSC1TZXJ2ZXIgaW5zdGFsbGllcnQuCjQuIENUSURzIGF1c3dhZWhsZW4uIE51ciBkaWVzZSBDb250YWluZXIgd2VyZGVuIGJlYXJiZWl0ZXQuCjUuIFdhenVoLU1hbmFnZXItQWRyZXNzZSB1bmQgSGVhZHNjYWxlLUhUVFBTLVVSTCBhYmZyYWdlbi4gRmFsbHMgZ2VuYXUgZWluIGxhdWZlbmRlcgogICBsb2thbGVyIFdhenVoLU1hbmFnZXIgZ2VmdW5kZW4gd2lyZCwgZGVzc2VuIFBha2V0dmVyc2lvbiBhdXRvbWF0aXNjaCB2ZXJ3ZW5kZW47CiAgIGFuZGVybmZhbGxzIGRpZSBleGFrdGUgTWFuYWdlci1QYWtldHZlcnNpb24gYWJmcmFnZW4uCjYuIEluc3RhbGxhdGlvbiBtaXQgYElOU1RBTExgIGJlc3RhZXRpZ2VuLiBGZWhsZW5kZXIgVFVOLVp1Z3JpZmYgd2lyZCBzZXBhcmF0CiAgIGF1ZmdlbGlzdGV0OyBlcnN0IG5hY2ggRWluZ2FiZSB2b24gYE5FVVNUQVJUYCB3ZXJkZW4gZGllc2UgQ29udGFpbmVyIHNhdWJlcgogICBoZXJ1bnRlcmdlZmFocmVuIHVuZCBuZXUgZ2VzdGFydGV0LiBCZXN0ZWhlbmRlIERldmljZS1TbG90cyBibGVpYmVuIGVyaGFsdGVuLgo3LiBIZWFkc2NhbGUtUHJlYXV0aC1LZXkgdmVyZGVja3QgYWJmcmFnZW4uIEZ1ZXIgbWVocmVyZSBuZXVlIENsaWVudHMgZWluZW4KICAgKip3aWVkZXJ2ZXJ3ZW5kYmFyZW4sIGt1cnogZ3VlbHRpZ2VuLCBuaWNodC1lcGhlbWVyZW4gS2V5KiogdmVyd2VuZGVuLiBLZWluCiAgIEhlYWRzY2FsZS1BUEktS2V5LiBPcHRpb25hbGVzIFdhenVoLUVucm9sbG1lbnQtUGFzc3dvcnQgZWJlbmZhbGxzIHZlcmRlY2t0CiAgIGVpbmdlYmVuLCBmYWxscyBkZXIgTWFuYWdlciBlcyB2ZXJsYW5ndC4KOC4gRmVobGVuZGUgUGFrZXRlIGF1cyBzaWduaWVydGVuIG9mZml6aWVsbGVuIEFQVC1RdWVsbGVuIGluc3RhbGxpZXJlbiB1bmQgZGllCiAgIFZlcmJpbmR1bmdlbiBuZXVlciBDbGllbnRzIHBydWVmZW4uIEZlaGxlciB3ZXJkZW4gcHJvIExYQyBhdXNnZXdpZXNlbi4KCiMjIFRhaWxzY2FsZSBTU0ggdW5kIFN1ZG8KCkRhcyBTa3JpcHQgbGVndCBkZW4gZ2V3YWVobHRlbiBMaW51eC1OdXR6ZXIgYmVpIEJlZGFyZiBhbiB1bmQgYWt0aXZpZXJ0CmB0YWlsc2NhbGUgc2V0IC0tc3NoPXRydWVgLiBWb3JoYW5kZW5lIE51dHplciB3ZXJkZW4gbmljaHQgZ2Vsb2VzY2h0IHVuZCB2b3JoYW5kZW5lClBhc3N3b2VydGVyIG5pY2h0IGVyc2V0enQuIEJlaSBXYWhsIHZvbiBTdWRvIHdpcmQgZGVyIE51dHplciB6dXIgR3J1cHBlIGBzdWRvYApoaW56dWdlZnVlZ3QuIEZ1ZXIgKipuZXUgYW5nZWxlZ3RlKiogTnV0emVyIG1pdCBwYXNzd29ydHBmbGljaHRpZ2VtIFN1ZG8gd2lyZCBlaW4KUGFzc3dvcnQgdmVyZGVja3QgYWJnZWZyYWd0LiBBbHRlcm5hdGl2IGthbm4gZXhwbGl6aXQgcGFzc3dvcnRsb3NlcyBTdWRvIGVybGF1YnQKd2VyZGVuLiBEaWUgQXVzd2FobCDigJ5rZWluIFN1ZG/igJwgZW50emllaHQga2VpbmVtIGJlc3RlaGVuZGVuIE51dHplciBSZWNodGUuCgpEYW1pdCBkaWUgQW5tZWxkdW5nIGZ1bmt0aW9uaWVydCwgbXVzcyBkaWUgKipha3RpdmUgSGVhZHNjYWxlLVBvbGljeSBzb3dvaGwgZGllCk5ldHp3ZXJrdmVyYmluZHVuZyBhdWYgUG9ydCAyMiBhbHMgYXVjaCBlaW5lIHBhc3NlbmRlIFNTSC1SZWdlbCoqIGZ1ZXIgUXVlbGxlLApaaWVsIHVuZCBMaW51eC1OdXR6ZXIgZXJsYXViZW4uIERhcyBTa3JpcHQgYWVuZGVydCBkaWUgemVudHJhbGUgUG9saWN5IG5pY2h0IHVuZAprYW5uIG9obmUgZWluZW4gZWNodGVuIExvZ2ludmVyc3VjaCBrZWluZSBTU0gtQW5tZWxkdW5nIGJlc3RhZXRpZ2VuLiBCZWkKSGVhZHNjYWxlIHdpcmQgbm9ybWFsZXJ3ZWlzZSBlaW5lIHBhc3NlbmRlIFNTSC1SZWdlbCBtaXQgYGFjdGlvbjogYWNjZXB0YAp2ZXJ3ZW5kZXQ7IGRpZSBSZWdlbCBtdXNzIHp1IGRlbiB0YXRzYWVjaGxpY2hlbiBCZW51dHplcm4gdW5kIFRhZ3MgcGFzc2VuLgoKTmFjaCBFaW5yaWNodHVuZyB2b24gZWluZW0genVnZWxhc3NlbmVuIEdlcmFldCB0ZXN0ZW46CgpgYGBiYXNoCnNzaCBMSU5VWF9OVVRaRVJAVEFJTFNDQUxFX0lQCmBgYAoKQmVpbSBBa3RpdmllcmVuIGtvZW5uZW4gdm9yaGFuZGVuZSBTU0gtU2l0enVuZ2VuIHVlYmVyIGRpZSBUYWlsc2NhbGUtQWRyZXNzZQp1bnRlcmJyb2NoZW4gd2VyZGVuLiBEaWUgQ29udGFpbmVya29uc29sZSBibGVpYnQgZGVyIFp1Z2FuZyBmdWVyIGRpZXNlbiBMYXVmLgpXZWRlciBTdWJuZXQtUm91dGluZyBub2NoIEV4aXQtTm9kZSwgVGFpbHNjYWxlLU9wZXJhdG9yIG9kZXIgcHJpdmlsZWdpZXJ0ZQpDb250YWluZXIgd2VyZGVuIGVpbmdlcmljaHRldC4gTmV1ZSBDbGllbnRzIHZlcndlbmRlbiBgLS1hY2NlcHQtZG5zPWZhbHNlYCwgdW0KYmVzdGVoZW5kZXMgbG9rYWxlcyBETlMgYmVpenViZWhhbHRlbi4KCiMjIEdlc3BlaWNoZXJ0ZSBFaW5zdGVsbHVuZ2VuCgpBdWYgV3Vuc2NoIHNwZWljaGVydCBkYXMgU2tyaXB0ICoqbnVyIGF1ZiBkZW0gUHJveG1veC1Ib3N0Kio6CgpgYGB0ZXh0Ci9ldGMvbHhjLWVucm9sbC8udmFycwpgYGAKCkRpZXNlIERhdGVpIGlzdCBKU09OLCBrZWluIGF1c2Z1ZWhyYmFyZXMgU2hlbGxza3JpcHQuIFZlcnplaWNobmlzcmVjaHRlIDcwMCwKRGF0ZWlyZWNodGUgNjAwLCBFaWdlbnR1ZW1lciByb290LiBHZXNwZWljaGVydCB3ZXJkZW4gTWFuYWdlci1BZHJlc3NlLApBZ2VudC1QYWtldHZlcnNpb24sIEhlYWRzY2FsZS1VUkwsIFRhaWxzY2FsZS1TU0gtQXVzd2FobCwgTnV0emVybmFtZSB1bmQKU3Vkby1FaW5zdGVsbHVuZ2VuLiBEaWUgQ1QtQXVzd2FobCB3aXJkIGplZGVzIE1hbCBuZXUgZ2V0cm9mZmVuLiBIZWFkc2NhbGUtS2V5cywKRW5yb2xsbWVudC0gdW5kIE51dHplcnBhc3N3b2VydGVyIHdlcmRlbiAqKm5pY2h0KiogZ2VzcGVpY2hlcnQuIFNpZSB3ZXJkZW4gYmVpCkJlZGFyZiBlcm5ldXQgYWJnZWZyYWd0LCBpbiB0ZW1wb3JhZXJlbiBEYXRlaWVuIG1pdCBNb2R1cyA2MDAgdWViZXJ0cmFnZW4gdW5kCmJlaSByZWd1bGFlcmVtIEVuZGUgb2RlciBhYmdlZmFuZ2VuZW0gQWJicnVjaCBlbnRmZXJudC4gRWluIGhhcnRlciBQcm96ZXNzYWJicnVjaAprYW5uIHRlbXBvcmFlcmUgRGF0ZWllbiBpbiBgL3J1bi9seGMtZW5yb2xsLipgIGhpbnRlcmxhc3NlbjsgZGFubiBlbnRmZXJuZW4uCgojIyBHcmVuemVuIHVuZCBXYXJ0dW5nCgotIFVudGVyc3R1ZXR6dCBuYXRpdmUgQVBULS9zeXN0ZW1kLUluc3RhbGxhdGlvbmVuIGluIERlYmlhbiB1bmQgVWJ1bnR1LiBBbHBpbmUsCiAgVk1zLCB3ZWl0ZXJlIEhvc3RzIHVuZCBnZXN0b3BwdGUgQ29udGFpbmVyIHNpbmQgbmljaHQgZW50aGFsdGVuLgotIERlciBQcm94bW94LUhvc3Qgc2VsYnN0IGJla29tbXQgZHVyY2ggZGllc2VzIFNrcmlwdCBrZWluZW4gV2F6dWgtQWdlbnQuCi0gVm9yaGFuZGVuZSBUYWlsc2NhbGUtL1dhenVoLVJlZ2lzdHJpZXJ1bmdlbiB3ZXJkZW4gbmljaHQgdmVyYWVuZGVydC4gQmVyZWl0cwogIGluc3RhbGxpZXJ0ZSwgYWJlciBuaWNodCB2ZXJidW5kZW5lIERpZW5zdGUgbXVlc3NlbiBzZXBhcmF0IHJlcGFyaWVydCB3ZXJkZW4uCiAgRWluIGZlaGxnZXNjaGxhZ2VuZXIgRW5yb2xsbWVudC1WZXJzdWNoIGthbm4gZGVzaGFsYiBtYW51ZWxsZSBSZXBhcmF0dXIgYnJhdWNoZW4uCi0gRWluIFdhenVoLU1hbmFnZXItTFhDIGJla29tbXQgbmllbWFscyB6dXNhZXR6bGljaCBlaW5lbiBXYXp1aC1BZ2VudDsgZXMga2FubgogIGJlaSBmZWhsZW5kZW0gVGFpbHNjYWxlIGZ1ZXIgZGllIFRhaWxzY2FsZS1FaW5yaWNodHVuZyBhdXNnZXdhZWhsdCB3ZXJkZW4uCi0gRGllIE1hbmFnZXItQWRyZXNzZSBtdXNzIHZvbiBkZW4gamV3ZWlsaWdlbiBMWENzIGF1ZiBUQ1AgMTUxNCB1bmQgMTUxNQogIGVycmVpY2hiYXIgc2Vpbi4gRWluZSBIZWFkc2NhbGUtVVJMIGlzdCBuaWNodCBhdXRvbWF0aXNjaCBkaWUgTWFuYWdlci1BZHJlc3NlLgotIE5ldWUgV2F6dWgtQWdlbnRzIHdlcmRlbiBhdWYgZGllIE1hbmFnZXItUGFrZXR2ZXJzaW9uIGluc3RhbGxpZXJ0IHVuZCBkYW5hY2gKICBhdWYgYGhvbGRgIGdlc2V0enQsIGRhbWl0IHNpZSBkZW4gTWFuYWdlciBuaWNodCBkdXJjaCBlaW4gZWlnZW5zdGFlbmRpZ2VzCiAgVXBncmFkZSB1ZWJlcmhvbGVuLiBCZWkgTWFuYWdlci1VcGdyYWRlcyBkaWUgQWdlbnRzIGJld3Vzc3QgbWl0IGFrdHVhbGlzaWVyZW4uCi0gQ29udGFpbmVya29uZmlndXJhdGlvbmVuIHdlcmRlbiB2b3IgVFVOLUVyZ2Flbnp1bmdlbiB1bnRlcgogIGAvdmFyL2JhY2t1cHMvbHhjLWVucm9sbC9gIGdlc2ljaGVydC4gRWluIGZlaGxnZXNjaGxhZ2VuZXIgc2F1YmVyZXIgU2h1dGRvd24KICB3aXJkIG5pY2h0IGR1cmNoIGdld2FsdHNhbWVzIFN0b3BwZW4gZXJ6d3VuZ2VuLiBJbnN0YWxsYXRpb25lbiBzaW5kIG5pY2h0CiAgdHJhbnNha3Rpb25hbDsgZXJmb2xncmVpY2hlIFRlaWxzY2hyaXR0ZSBibGVpYmVuIGJlaSBlaW5lbSBzcGFldGVyZW4gRmVobGVyLgotIEVucm9sbG1lbnQgYWxsZWluIGtvbmZpZ3VyaWVydCBrZWluZSBEaXNjb3JkLVNpY2hlcmhlaXRzcmVnZWxuIHVuZCBnYXJhbnRpZXJ0CiAga2VpbmUgRXJrZW5udW5nIGFsbGVyIEFuZ3JpZmZlIG9kZXIgQXBwLS9LZXJuZWwtU2Nod2FjaHN0ZWxsZW4uCgojIyBRdWVsbGVuIHVuZCBQcnVlZnVuZwoKLSBbV2F6dWggTGludXgtRGVwbG95bWVudCB1bmQgVmVyc2lvbnNrb21wYXRpYmlsaXRhZXRdKGh0dHBzOi8vZG9jdW1lbnRhdGlvbi53YXp1aC5jb20vY3VycmVudC9pbnN0YWxsYXRpb24tZ3VpZGUvd2F6dWgtYWdlbnQvd2F6dWgtYWdlbnQtcGFja2FnZS1saW51eC5odG1sKQotIFtUYWlsc2NhbGUgaW4gUHJveG1veC1MWENzXShodHRwczovL3RhaWxzY2FsZS5jb20va2IvMTEzMC9seGMtdW5wcml2aWxlZ2VkLykKLSBbSGVhZHNjYWxlLVJlZ2lzdHJpZXJ1bmddKGh0dHBzOi8vaGVhZHNjYWxlLm5ldC9zdGFibGUvcmVmL3JlZ2lzdHJhdGlvbi8pCi0gW1RhaWxzY2FsZSBTU0ggdW5kIFp1Z3JpZmZzcmVnZWxuXShodHRwczovL3RhaWxzY2FsZS5jb20vZG9jcy9mZWF0dXJlcy90YWlsc2NhbGUtc3NoKQoKU3ludGF4IHVuZCBzaW11bGllcnRlIEF1c3dhaGwtL0luc3RhbGxhdGlvbnNhYmxhZXVmZSBzaW5kIGxva2FsIGdlcHJ1ZWZ0LgpFaW4gZWNodGVyIFByb3htb3gtTGF1ZiB1bmQgZWluZSBlY2h0ZSBUYWlsc2NhbGUtU1NILUFubWVsZHVuZyBzdGVoZW4gbm9jaCBhdXMuCg== \ No newline at end of file +# LXC Enrollment + +Interaktives Skript fuer einen **Proxmox-Host**. Es installiert fehlende Tailscale- +und Wazuh-Komponenten in ausgewaehlten LXCs, verbindet neue Tailscale-Clients mit +Headscale und kann **Tailscale SSH** samt Linux-Nutzer und Sudo einrichten. + +## Starten + +Als root auf dem Proxmox-Host, nicht innerhalb eines LXC: + +```bash +curl --fail --silent --show-error --location \ + https://code.faboi.cloud/fabio/lxc-enroll/raw/branch/main/lxc-enroll.sh \ + -o /run/lxc-enroll.sh && bash /run/lxc-enroll.sh +``` + +Alternativ herunterladen und zuerst die Auswahl pruefen: + +```bash +curl --fail --silent --show-error --location \ + https://code.faboi.cloud/fabio/lxc-enroll/raw/branch/main/lxc-enroll.sh \ + -o /run/lxc-enroll.sh +bash /run/lxc-enroll.sh --list +bash /run/lxc-enroll.sh +``` + +`--list` liest nur den aktuellen Bestand; `--dry-run` zeigt nach der Auswahl die +geplanten Aenderungen. Beide installieren nichts, starten nichts neu und speichern +keine Einstellungen. Fuer interaktive Eingaben muss ein Terminal vorhanden sein; +die Eingaben werden ueber `/dev/tty` gelesen, auch beim Start per curl. + +## Ablauf + +1. Laufende Debian-/Ubuntu-LXCs mit systemd erkennen. Gestoppte, gesperrte und + nicht unterstuetzte Container werden uebersprungen. +2. Vollstaendig installierte Container aus der Auswahl ausblenden. Bei teilweise + installierten Containern nur die fehlende Komponente installieren. +3. Vorherige Einstellungen auf Wunsch laden. Tailscale SSH ist beim ersten Lauf + standardmaessig aktiviert. Linux-Nutzername, Sudo und optional passwortloses + Sudo werden abgefragt. Es wird kein OpenSSH-Server installiert. +4. CTIDs auswaehlen. Nur diese Container werden bearbeitet. +5. Wazuh-Manager-Adresse und Headscale-HTTPS-URL abfragen. Falls genau ein laufender + lokaler Wazuh-Manager gefunden wird, dessen Paketversion automatisch verwenden; + andernfalls die exakte Manager-Paketversion abfragen. +6. Installation mit `INSTALL` bestaetigen. Fehlender TUN-Zugriff wird separat + aufgelistet; erst nach Eingabe von `NEUSTART` werden diese Container sauber + heruntergefahren und neu gestartet. Bestehende Device-Slots bleiben erhalten. +7. Headscale-Preauth-Key verdeckt abfragen. Fuer mehrere neue Clients einen + **wiederverwendbaren, kurz gueltigen, nicht-ephemeren Key** verwenden. Kein + Headscale-API-Key. Optionales Wazuh-Enrollment-Passwort ebenfalls verdeckt + eingeben, falls der Manager es verlangt. +8. Fehlende Pakete aus signierten offiziellen APT-Quellen installieren und die + Verbindungen neuer Clients pruefen. Fehler werden pro LXC ausgewiesen. + +## Tailscale SSH und Sudo + +Das Skript legt den gewaehlten Linux-Nutzer bei Bedarf an und aktiviert +`tailscale set --ssh=true`. Vorhandene Nutzer werden nicht geloescht und vorhandene +Passwoerter nicht ersetzt. Bei Wahl von Sudo wird der Nutzer zur Gruppe `sudo` +hinzugefuegt. Fuer **neu angelegte** Nutzer mit passwortpflichtigem Sudo wird ein +Passwort verdeckt abgefragt. Alternativ kann explizit passwortloses Sudo erlaubt +werden. Die Auswahl „kein Sudo“ entzieht keinem bestehenden Nutzer Rechte. + +Damit die Anmeldung funktioniert, muss die **aktive Headscale-Policy sowohl die +Netzwerkverbindung auf Port 22 als auch eine passende SSH-Regel** fuer Quelle, +Ziel und Linux-Nutzer erlauben. Das Skript aendert die zentrale Policy nicht und +kann ohne einen echten Loginversuch keine SSH-Anmeldung bestaetigen. Bei +Headscale wird normalerweise eine passende SSH-Regel mit `action: accept` +verwendet; die Regel muss zu den tatsaechlichen Benutzern und Tags passen. + +Nach Einrichtung von einem zugelassenen Geraet testen: + +```bash +ssh LINUX_NUTZER@TAILSCALE_IP +``` + +Beim Aktivieren koennen vorhandene SSH-Sitzungen ueber die Tailscale-Adresse +unterbrochen werden. Die Containerkonsole bleibt der Zugang fuer diesen Lauf. +Weder Subnet-Routing noch Exit-Node, Tailscale-Operator oder privilegierte +Container werden eingerichtet. Neue Clients verwenden `--accept-dns=false`, um +bestehendes lokales DNS beizubehalten. + +## Gespeicherte Einstellungen + +Auf Wunsch speichert das Skript **nur auf dem Proxmox-Host**: + +```text +/etc/lxc-enroll/.vars +``` + +Diese Datei ist JSON, kein ausfuehrbares Shellskript. Verzeichnisrechte 700, +Dateirechte 600, Eigentuemer root. Gespeichert werden Manager-Adresse, +Agent-Paketversion, Headscale-URL, Tailscale-SSH-Auswahl, Nutzername und +Sudo-Einstellungen. Die CT-Auswahl wird jedes Mal neu getroffen. Headscale-Keys, +Enrollment- und Nutzerpasswoerter werden **nicht** gespeichert. Sie werden bei +Bedarf erneut abgefragt, in temporaeren Dateien mit Modus 600 uebertragen und +bei regulaerem Ende oder abgefangenem Abbruch entfernt. Ein harter Prozessabbruch +kann temporaere Dateien in `/run/lxc-enroll.*` hinterlassen; dann entfernen. + +## Grenzen und Wartung + +- Unterstuetzt native APT-/systemd-Installationen in Debian und Ubuntu. Alpine, + VMs, weitere Hosts und gestoppte Container sind nicht enthalten. +- Der Proxmox-Host selbst bekommt durch dieses Skript keinen Wazuh-Agent. +- Vorhandene Tailscale-/Wazuh-Registrierungen werden nicht veraendert. Bereits + installierte, aber nicht verbundene Dienste muessen separat repariert werden. + Ein fehlgeschlagener Enrollment-Versuch kann deshalb manuelle Reparatur brauchen. +- Ein Wazuh-Manager-LXC bekommt niemals zusaetzlich einen Wazuh-Agent; es kann + bei fehlendem Tailscale fuer die Tailscale-Einrichtung ausgewaehlt werden. +- Die Manager-Adresse muss von den jeweiligen LXCs auf TCP 1514 und 1515 + erreichbar sein. Eine Headscale-URL ist nicht automatisch die Manager-Adresse. +- Neue Wazuh-Agents werden auf die Manager-Paketversion installiert und danach + auf `hold` gesetzt, damit sie den Manager nicht durch ein eigenstaendiges + Upgrade ueberholen. Bei Manager-Upgrades die Agents bewusst mit aktualisieren. +- Containerkonfigurationen werden vor TUN-Ergaenzungen unter + `/var/backups/lxc-enroll/` gesichert. Ein fehlgeschlagener sauberer Shutdown + wird nicht durch gewaltsames Stoppen erzwungen. Installationen sind nicht + transaktional; erfolgreiche Teilschritte bleiben bei einem spaeteren Fehler. +- Enrollment allein konfiguriert keine Discord-Sicherheitsregeln und garantiert + keine Erkennung aller Angriffe oder App-/Kernel-Schwachstellen. + +## Quellen und Pruefung + +- [Wazuh Linux-Deployment und Versionskompatibilitaet](https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-linux.html) +- [Tailscale in Proxmox-LXCs](https://tailscale.com/kb/1130/lxc-unprivileged/) +- [Headscale-Registrierung](https://headscale.net/stable/ref/registration/) +- [Tailscale SSH und Zugriffsregeln](https://tailscale.com/docs/features/tailscale-ssh) + +Syntax und simulierte Auswahl-/Installationsablaeufe sind lokal geprueft. +Ein echter Proxmox-Lauf und eine echte Tailscale-SSH-Anmeldung stehen noch aus.