Psono Bezplatný software pro správu hesel
Správce pověření s otevřeným zdrojovým kódem pro týmy a podniky
PSONO je správce hesel s otevřeným zdrojovým kódem určený pro týmy. Může být hostován na straně klienta a má vícevrstvé šifrování pro maximální zabezpečení.
Přehled
PSONO je správce hesel zdarma pro týmy. Většina správců hesel s otevřeným zdrojovým kódem, kteří mohou používat zdarma, nenabízí možnost měřítka a hostování správců hesel napříč vaším týmem nebo na vašich serverech. S PSONO však získáte zdarma, zcela zabezpečený, open source pověření, který je navržen s ohledem na týmy. S PSONO můžete nasadit správce hesel na vlastní server a umožnit až 10 uživatelům uložit jejich důležité informace a také k nim. Jako správce hesel s otevřeným zdrojovým kódem má také kompatibilitu více zařízení a křížové platformy, jako jsou iOS, Android, MacOS, Linux a prohlížeče jako Chrome, Edge, Safari a další. Hlavním pohodlím používání správců hesel s otevřeným zdrojovým kódem, jako je PSONO, je schopnost získat přístup k vašim kritickým informacím odkudkoli, kdykoli a schopnost ukládat další informace, jako jsou údaje o kreditní kartě, bankovní informace a další. PSONO je pohodlný a efektivní, zejména pro týmy, které se přihlásí a přístup k různým aplikacím nebo serverům, které jsou citlivé. PSONO je správce hesel pro hostování. Lze jej použít jako přípona webu, nasazená na vašem serveru, přístup k aplikaci webového klienta nebo nainstalován přes Docker. Můžete k němu také přistupovat na mobilních telefonech nebo jej jednoduše nainstalovat do potrubí CI CD pro jakýkoli projekt.
Požadavky na systém
Při instalaci PSONO pro Ubuntu se ujistěte, že máte následující systémové požadavky:
- Ubuntu 20.04
- Přístup serveru prostřednictvím statické IP nebo názvu domény/hostitele na něj ukazuje.
- Ujistěte se, že server má 2 GB RAM a 2 jádra
- Uživatel bez kořenů s oprávněními sudo
Funkce
Zde je několik dobrých známých funkcí o Psono:
- PSONO používá vícevrstvé šifrování, kde tři vrstvy šifrování chrání data, když jsou přeneseny z prohlížeče na aplikační server PSONO. Server zašifruje data pomocí SalSO20 Stream Cipher spolu s kódem MAC Poly1305, který snižuje nutnost spoléhat se na DBA (správce datové báze) pro ověření.
- Generátor hesla můžete použít k vytvoření hesla sestávajícího z minimálně 6 znaků nebo více sestávajících ze symbolů, čísel, dolních/horních znaků atd.
- S PSONO můžete snadno automatizovat přihlašovací údaje pro různé webové stránky po poskytnutí potřebných podrobností o aplikaci.
- Hesla je také přístupná, když jste offline prostřednictvím aplikací na straně klienta.
- Můžete také vytvořit nouzové kódy pro přístup k heslům v případě problému s digitálním dědictvím, jako je odchod člena týmu nebo nedostupnost v případě nouze.
- PSONO také detekuje jakékoli porušení hesla, ke kterému se mohlo dojít, a podává o něm včas.
- Najdete více klíčů API, které umožňují integraci hesla během sestavení nebo spuštění skriptů.
Instalace
Tato příručka nainstaluje server PSONO a spustí jej s Gunicorn a Nginx. Byl testován na Ubuntu 18.04.
- Staňte se kořenem
sudo su
- Nainstalujte některé obecné věci
apt-get update
apt-get install -y \
git \
libyaml-dev \
libpython3-dev \
libpq-dev \
libffi-dev \
python3-dev \
python-pip \
python3-pip \
python3-psycopg2 \
postgresql-client \
haveged \
libsasl2-dev \
libldap2-dev \
libssl-dev \
supervisor
pip3 install gunicorn
- Vytvořte uživatele psono
adduser psono
- Staňte se uživatelem psona
su psono
- Úložiště klonového git
git clone https://gitlab.com/psono/psono-server.git ~/psono-server
- Nainstalujte požadavky Pythonu
Ctrl + D
cd /home/psono/psono-server
pip3 install -r requirements.txt
su psono
- Vytvořit složku Nastavení
mkdir ~/.psono_server
- Vytvořte nastavení.yaml v ~/ .psono \ _server/ s následujícím obsahem
# generate the following six parameters with the following command
# python3 ~/psono-server/psono/manage.py generateserverkeys
SECRET_KEY: 'SOME SUPER SECRET KEY THAT SHOULD BE RANDOM AND 32 OR MORE DIGITS LONG'
ACTIVATION_LINK_SECRET: 'SOME SUPER SECRET ACTIVATION LINK SECRET THAT SHOULD BE RANDOM AND 32 OR MORE DIGITS LONG'
DB_SECRET: 'SOME SUPER SECRET DB SECRET THAT SHOULD BE RANDOM AND 32 OR MORE DIGITS LONG'
EMAIL_SECRET_SALT: '$2b$12$XUG.sKxC2jmkUvWQjg53.e'
PRIVATE_KEY: '302650c3c82f7111c2e8ceb660d32173cdc8c3d7717f1d4f982aad5234648fcb'
PUBLIC_KEY: '02da2ad857321d701d754a7e60d0a147cdbc400ff4465e1f57bc2d9fbfeddf0b'
# The URL of the web client (path to e.g activate.html without the trailing slash)
# WEB_CLIENT_url: 'https://www.psono.pw'
# Switch DEBUG to false if you go into production
DEBUG: False
# Adjust this according to Django Documentation https://docs.djangoproject.com/en/2.2/ref/settings/
ALLOWED_HOSTS: ['*']
# Should be your domain without "www.". Will be the last part of the username
ALLOWED_DOMAINS: ['psono.pw']
# If you want to disable registration, you can comment in the following line
# ALLOW_REGISTRATION: False
# If you want to disable the lost password functionality, you can comment in the following line
# ALLOW_LOST_PASSWORD: False
# If you want to enforce that the email address and username needs to match upon registration
# ENFORCE_MATCHING_USERNAME_AND_EMAIL: False
# If you want to restrict registration to some email addresses you can specify here a list of domains to filter
# REGISTRATION_EMAIL_FILTER: ['company1.com', 'company2.com']
# Should be the URL of the host under which the host is reachable
# If you open the url and append /info/ to it you should have a text similar to {"info":"{\"version\": \"....}
HOST_url: 'https://www.psono.pw/server'
# The email used to send emails, e.g. for activation
# ATTENTION: If executed in a docker container, then "localhost" will resolve to the docker container, so
# "localhost" will not work as host. Use the public IP or DNS record of the server.
EMAIL_FROM: <span id="cloak820118571330d66e81d06c4c2b562de4">This email address is being protected from spambots. You need JavaScript enabled to view it.</span><script type="text/javascript">document.getElementById('cloak820118571330d66e81d06c4c2b562de4').innerHTML='';var prefix='ma'+'il'+'to';var path='hr'+'ef'+'=';var addy820118571330d66e81d06c4c2b562de4=''the-mail-for-for-example-useraccount-activations'+'@';addy820118571330d66e81d06c4c2b562de4=addy820118571330d66e81d06c4c2b562de4+'test'+'.'+'com';var addy_text820118571330d66e81d06c4c2b562de4=''the-mail-for-for-example-useraccount-activations'+'@'+'test'+'.'+'com';document.getElementById('cloak820118571330d66e81d06c4c2b562de4').innerHTML+='<a '+path+'\''+prefix+':'+addy820118571330d66e81d06c4c2b562de4+'\'>'+addy_text820118571330d66e81d06c4c2b562de4+'<\/a>';</script>'
EMAIL_HOST: 'localhost'
EMAIL_HOST_USER: ''
EMAIL_HOST_PASSWORD : ''
EMAIL_PORT: 25
EMAIL_SUBJECT_PREFIX: ''
EMAIL_USE_TLS: False
EMAIL_USE_SSL: False
EMAIL_SSL_CERTFILE:
EMAIL_SSL_KEYFILE:
EMAIL_TIMEOUT:
# In case one wants to use mailgun, comment in below lines and provide the mailgun access key and server name
# EMAIL_BACKEND: 'anymail.backends.mailgun.EmailBackend'
# MAILGUN_ACCESS_KEY: ''
# MAILGUN_SERVER_NAME: ''
# In case you want to offer Yubikey support, create a pair of credentials here https://upgrade.yubico.com/getapikey/
# and update the following two lines before commenting them in
# YUBIKEY_CLIENT_ID: '123456'
# YUBIKEY_SECRET_KEY: '8I65IA6ASDFIUHGIH5021FKJA='
# If you have own Yubico servers, you can specify here the urls as a list
# YUBICO_API_URLS: ['https://api.yubico.com/wsapi/2.0/verify']
# Cache enabled without belows Redis may lead to unexpected behaviour
# Cache with Redis
# By default you should use something different than database 0 or 1, e.g. 13 (default max is 16, can be configured in
# redis.conf) possible URLS are:
# redis://[:password]@localhost:6379/0
# rediss://[:password]@localhost:6379/0
# unix://[:password]@/path/to/socket.sock?db=0
# CACHE_ENABLE: False
# CACHE_REDIS: False
# CACHE_REDIS_LOCATION: 'redis://127.0.0.1:6379/13'
# Disables Throttling (necessary for unittests to pass) by overriding the cache with a dummy cache
# https://docs.djangoproject.com/en/2.2/topics/cache/#dummy-caching-for-development
# THROTTLING: False
# Enables the management API, required for the psono-admin-client / admin portal
# MANAGEMENT_ENABLED: False
# Enables the fileserver API, required for the psono-fileserver
# FILESERVER_HANDLER_ENABLED: False
# Enables files for the client
# FILES_ENABLED: False
# Allows that users can search for partial usernames
# ALLOW_USER_SEARCH_BY_USERNAME_PARTIAL: True
# Allows that users can search for email addresses too
# ALLOW_USER_SEARCH_BY_EMAIL: True
# Disables central security reports
# DISABLE_CENTRAL_SECURITY_REPORTS: True
# Configures a system wide DUO connection for all clients
# DUO_INTEGRATION_KEY: ''
# DUO_SECRET_KEY: ''
# DUO_API_HOSTNAME: ''
# If you are using the DUO proxy, you can configure here the necessary HTTP proxy
# DUO_PROXY_HOST: 'the-ip-or-dns-name-goes-here'
# DUO_PROXY_PORT: 80
# DUO_PROXY_TYPE: 'CONNECT'
# If your proxy requires specific headers you can also configure these here
# DUO_PROXY_HEADERS: ''
# Normally only one of the configured second factors needs to be solved. Setting this to True forces the client to solve all
# MULTIFACTOR_ENABLED: True
# Allows admins to limit the offered second factors in the client
# ALLOWED_SECOND_FACTORS: ['yubikey_otp', 'google_authenticator', 'duo']
# Your Postgres Database credentials
# ATTENTION: If executed in a docker container, then "localhost" will resolve to the docker container, so
# "localhost" will not work as host. Use the public IP or DNS record of the server.
DATABASES:
default:
'ENGINE': 'django.db.backends.postgresql_psycopg2'
'NAME': 'psono'
'USER': 'psono'
'PASSWORD': 'password'
'HOST': 'localhost'
'PORT': '5432'
# for master / slave replication setup comment in the following (all reads will be redirected to the slave
# slave:
# 'ENGINE': 'django.db.backends.postgresql_psycopg2'
# 'NAME': 'YourPostgresDatabase'
# 'USER': 'YourPostgresUser'
# 'PASSWORD': 'YourPostgresPassword'
# 'HOST': 'YourPostgresHost'
# 'PORT': 'YourPostgresPort'
# Update the path to your templates folder
# If you do not want to change it (yet) you can leave it like it is.
TEMPLATES: [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['/home/psono/psono-server/psono/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
-
Aktualizujte přihlašovací údaje / tajemství / cesty, jako je popsáno v komentářích výše.
-
Chcete-li odeslat testovací e-mail na SomemethingoshingCom Execute: python3 ~/psono-server/psono/manage.py sendtestmail něco -Pokud obdržíte tento testovací e-mail, měl by být e-mail nakonfigurován správně.
- Vytvořte naši databázi
python3 ~/psono-server/psono/manage.py migrate
- Spusťte server Psono
cd ~/psono-server/psono
gunicorn --bind 0.0.0.0:10100 wsgi
- Tím se spustí server PSONO na portu 10100. Pokud nyní otevřete http: // your-ip: 10100/info/by měl něco takového vidět:
{"info":"{\"version\": \"....}
- Znovu se staňte kořenem
Ctrl + D
- Vytvořte konfiguraci supervizora. Vytvořte psono-server.conf in /etc/supervisor/conf.d/ s následujícím obsahem:
[program:psono-server]
command = /usr/local/bin/gunicorn --bind 127.0.0.1:10100 wsgi
directory=/home/psono/psono-server/psono
user = psono
autostart=true
autorestart=true
redirect_stderr=true
- Možná jste si uvědomili, že jsme změnili vazbu. Tímto způsobem je PSONO přístupný pouze od LocalHost, což je v pořádku, protože budeme proxy žádosti s Nginx.
- Reload Supervisorctl
supervisorctl reload
- Úloha pro vyčištění nastavení
crontab -e
- a přidejte následující řádek:
30 2 * * * psono python3 /home/psono/psono-server/psono/manage.py cleartoken >> /var/log/cron.log 2>&1
- Chcete -li spustit správce hesla PSONO ve výrobě, je zapotřebí reverzní proxy, aby zvládl vykládání SSL a přilepšil server PSONO a webclient dohromady. Postupujte podle průvodce Nastavení reverzní proxy jako další krok.