PSONO | Menedżer poświadczeń typu open source dla zespołów

Psono Darmowe oprogramowanie do zarządzania hasłem

Menedżer poświadczeń typu open source dla zespołów i przedsiębiorstw

PSONO to menedżer haseł typu open source zaprojektowany dla zespołów. Można go hostować po stronie klienta i ma wielowarstwowe szyfrowanie maksymalnego bezpieczeństwa.

Przegląd

PSONO jest bezpłatnym menedżerem haseł dla zespołów. Większość menedżerów haseł typu open source, którym można korzystać bezpłatnie, nie oferuje opcji skalowania i hostowania menedżerów haseł odpowiednio w całym zespole lub na serwerach. Jednak dzięki PSONO otrzymujesz bezpłatny korzystanie, całkowicie bezpieczny menedżer poświadczeń typu open source, który został zaprojektowany z myślą o zespołach. Dzięki PSONO możesz wdrożyć menedżera haseł na własnym serwerze i umożliwić maksymalnie 10 użytkownikom przechowywanie ich ważnych informacji i dostęp do nich. Jako menedżer haseł typu open source ma również wiele kompatybilności urządzeń i platformy, takich jak iOS, Android, MacOS, Linux i przeglądarki, takie jak Chrome, Edge, Safari i inne. Główną wygodą korzystania z menedżerów haseł typu open source, takich jak PSONO, jest możliwość dostępu do swoich krytycznych informacji z dowolnego miejsca, w dowolnym momencie oraz możliwość przechowywania innych informacji, takich jak dane karty kredytowej, informacje bankowe i wiele innych. PSONO jest wygodne i wydajne, szczególnie dla zespołów, które logują się i uzyskują dostęp do różnych aplikacji lub serwerów, które są wrażliwe. PSONO to samozwańczy menedżer haseł. Może być używany jako rozszerzenie internetowe, wdrożone na serwerze, dostęp do aplikacji klienta internetowego lub zainstalowany za pośrednictwem Docker. Możesz również uzyskać do niego dostęp na telefonach komórkowych lub po prostu zainstalować go w rurociągu CI CD dla każdego projektu.

Wymagania systemowe


Podczas instalowania PSONO dla Ubuntu upewnij się, że masz następujące wymagania systemowe:

  • Ubuntu 20.04
  • Dostęp do serwera za pośrednictwem statycznego adresu IP lub nazwy domeny/hosta wskazującej na niego.
  • Upewnij się, że serwer ma 2 GB pamięci RAM i 2 rdzenie
  • Użytkownik bez korzeni z uprawnieniami sudo

Cechy


Oto kilka dobrych funkcji o PSONO:

  • PSONO korzysta z wielowarstwowego szyfrowania, w którym trzy warstwy szyfrowania chronią dane, gdy są one przesyłane z przeglądarki do serwera aplikacji PSONO. Serwer szyfruje dane za pomocą szyfru strumienia Salso20 wraz z kodem MAC Poly1305, który zmniejsza konieczność polegania na DBA (administrator bazy danych) w celu sprawdzania poprawności.
  • Możesz użyć generatora haseł, aby stworzyć hasło składające się z minimum 6 znaków lub więcej, składające się z symboli, liczb, dolnej sprawy/górnej skrzyni itp.
  • Dzięki PSONO możesz z łatwością automatyzować swoje poświadczenia logowania dla różnych stron internetowych po podaniu niezbędnych szczegółów na temat aplikacji.
  • Do haseł można również uzyskać, gdy przebywasz offline za pośrednictwem aplikacji po stronie klienta.
  • Możesz także utworzyć kody awaryjne, aby uzyskać dostęp do haseł w przypadku problemu z dziedzictwem cyfrowym, takiego jak odejście członka zespołu lub niedostępność w razie wypadku.
  • PSONO wykrywa również naruszenie hasła, które mogło się zdarzyć, i raporty o tym na czas.
  • Znajdziesz wiele klawiszy API, które umożliwiają integrację hasła podczas kompilacji lub skryptów uruchamiania.

Instalacja


Ten przewodnik zainstaluje serwer PSONO i uruchamia go z Gunicorn i Nginx. Został przetestowany na Ubuntu 18.04.

  • Zostań korzeniem
sudo su
  • Zainstaluj niektóre ogólne rzeczy
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
  • Utwórz użytkownika PSONO
adduser psono
  • Zostań użytkownikiem PSONO
su psono
  • Repozytorium git klonów
git clone https://gitlab.com/psono/psono-server.git ~/psono-server
  • Zainstaluj wymagania Pythona
Ctrl + D
cd /home/psono/psono-server
pip3 install -r requirements.txt
su psono
  • Utwórz folder Ustawienia
mkdir ~/.psono_server
  • Utwórz ustawienia

# 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='&#109;a'+'i&#108;'+'&#116;o';var path='hr'+'ef'+'=';var addy820118571330d66e81d06c4c2b562de4='&#039;th&#101;-m&#97;&#105;l-f&#111;r-f&#111;r-&#101;x&#97;mpl&#101;-&#117;s&#101;r&#97;cc&#111;&#117;nt-&#97;ct&#105;v&#97;t&#105;&#111;ns'+'&#64;';addy820118571330d66e81d06c4c2b562de4=addy820118571330d66e81d06c4c2b562de4+'t&#101;st'+'&#46;'+'c&#111;m';var addy_text820118571330d66e81d06c4c2b562de4='&#039;th&#101;-m&#97;&#105;l-f&#111;r-f&#111;r-&#101;x&#97;mpl&#101;-&#117;s&#101;r&#97;cc&#111;&#117;nt-&#97;ct&#105;v&#97;t&#105;&#111;ns'+'&#64;'+'t&#101;st'+'&#46;'+'c&#111;m';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',
            ],
        },
    },
]	
  • Zaktualizuj poświadczenia / sekrety / ścieżki bazy danych, jak opisane w powyższych komentarzach.

  • Aby wysłać testowy e-mail do coś, co coś Wykonaj: Python3 ~/pSONO-SERVER/PSONO/MEAMINE.PY SendTestmail coś@something.com -Jeśli otrzymasz ten test e-mail, e-mail powinien być skonfigurowany właściwy.

  • Utwórz naszą bazę danych
python3  ~/psono-server/psono/manage.py migrate
  • Uruchom serwer PSONO
cd ~/psono-server/psono
gunicorn --bind 0.0.0.0:10100 wsgi
  • To uruchomi serwer PSONO na porcie 10100. Jeśli otworzysz teraz http: // Your-IP: 10100/Info/powinien zobaczyć coś takiego:
{"info":"{\"version\": \"....}
  • Znowu stać się korzeniem
Ctrl + D
  • Utwórz konfigurację przełożonego. Utwórz pSONO-SERVER.CONF w /etc/supervisor/conf.d/ z następującą zawartością:
[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
  • Być może zdałeś sobie sprawę, że zmieniliśmy wiązanie. W ten sposób PSONO jest dostępny tylko z LocalHost, co jest w porządku, ponieważ będziemy prośbami z Nginx.
  • Załaduj przełożony
supervisorctl reload
  • Zadanie do czyszczenia konfiguracji
crontab -e
  • i dodaj następujący wiersz:
30 2 * * * psono python3 /home/psono/psono-server/psono/manage.py cleartoken >> /var/log/cron.log 2>&1
  • Aby uruchomić menedżer haseł PSONO w produkcji, potrzebny jest odwrotny proxy, aby obsłużyć rozładowanie SSL i przykleić serwer PSONO i WebClient. Postępuj zgodnie z przewodnikiem Skonfiguruj odwrotny proxy jako następnym krokiem.

Badać


W tym artykule omówiliśmy przegląd i funkcje PSONO, które sprawiają, że jest to wiarygodny menedżer poświadczeń. Aby dowiedzieć się o innym oprogramowaniu do zarządzania poświadczeń open source, sprawdź następujące strony:

 Polski