Psono Ücretsiz şifre yönetim yazılımı
Ekipler ve İşletmeler için Açık Kaynak Kimlik Bilgileri Yöneticisi
Psono, ekipler için tasarlanmış açık kaynaklı bir şifre yöneticisidir. Müşteri tarafında kendi kendine barındırılabilir ve maksimum güvenlik için çok katmanlı şifrelemeye sahiptir.
Genel Bakış
Psono, ekipler için ücretsiz bir şifre yöneticisidir. Kullanımı ücretsiz olan çoğu açık kaynak şifre yöneticisi, ekibinizde veya sunucularınızda parola yöneticilerini ölçeklendirme ve barındırma seçeneği sunmaz. Ancak, Psono ile, ekipleri göz önünde bulundurarak tasarlanmış, tamamen güvenli, açık kaynaklı kimlik bilgileri yöneticisi elde edersiniz. Psono ile şifre yöneticisini kendi sunucunuza dağıtabilir ve en fazla 10 kullanıcının önemli bilgilerini depolamasına ve erişmesine izin verebilirsiniz. Açık kaynaklı bir şifre yöneticisi olarak, iOS, Android, macOS, Linux ve Chrome, Edge, Safari ve daha fazlası gibi tarayıcılar gibi birden fazla cihaz ve çapraz platform uyumluluğuna sahiptir. Psono gibi açık kaynak şifre yöneticilerini kullanmanın ana kolaylığı, kritik bilgilerinize her yerden, herhangi bir zamanda ve kredi kartı verileri, bankacılık bilgileri ve daha fazlası gibi diğer bilgileri depolama yeteneğidir. Psono, özellikle hassas olan farklı uygulamalara veya sunuculara giriş yapan ve erişen ekipler için uygun ve verimlidir. Psono, kendi kendine barındırılan bir şifre yöneticisidir. Bir web uzantısı olarak kullanılabilir, sunucunuzda dağıtılır, web istemcisi uygulaması aracılığıyla erişilebilir veya Docker aracılığıyla yüklenebilir. Ayrıca cep telefonlarınızda erişebilir veya herhangi bir proje için CI CD boru hattınıza yükleyebilirsiniz.
Sistem gereksinimleri
Ubuntu için psono yüklerken aşağıdaki sistem gereksinimlerine sahip olduğunuzdan emin olun:
- ubuntu 20.04
- Statik IP veya ona işaret eden bir etki alanı/ana bilgisayar adı aracılığıyla sunucu erişimi.
- Sunucunun 2GB RAM ve 2 Çekirdek olduğundan emin olun
- sudo izinleri olan kök olmayan bir kullanıcı
Özellikler
İşte Psono hakkında bilgi edinmek için bazı iyi özellikler:
- Psono, bir tarayıcıdan Psono Uygulama Sunucusuna aktarılırken verileri koruduğu üç katmanlı şifrelemeli bir şifreleme kullanır. Sunucu, doğrulama için DBA’ya (veri tabanı yöneticisi) güvenmenin gerekliliğini azaltan Poly1305 MAC kodu ile birlikte Salso20 Stream Cipher kullanarak verileri şifreler.
- Parola jeneratörünü, semboller, sayılar, küçük/büyük harf karakterleri vb.
- Psono ile, uygulama hakkında gerekli ayrıntıları sağladıktan sonra farklı web siteleri için giriş bilgilerinizi kolayca otomatik olarak otomatikleştirebilirsiniz.
- Şifrelere, istemci tarafı uygulamaları aracılığıyla çevrimdışı olduğunuzda da erişilebilir.
- Acil durumlarda bir ekip üyesinin vefat edilemezlik gibi dijital eski bir sorunun durumunda şifrelere erişmek için acil durum kodları da oluşturabilirsiniz.
- Psono ayrıca, gerçekleşmiş olabilecek herhangi bir şifre ihlalini tespit eder ve zamanında rapor verir.
- Yapılar veya başlangıç komut dosyaları sırasında şifrenin entegrasyonuna izin veren birden fazla API anahtarı bulacaksınız.
Kurulum
Bu kılavuz Psono sunucusunu yükleyecek ve Gunicorn ve Nginx ile çalıştıracak. Ubuntu 18.04 üzerinde test edilmiştir.
- Kök Olun
sudo su
- Bazı genel şeyler yükleyin
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
- Psono kullanıcısı oluştur
adduser psono
- Psono kullanıcısı olun
su psono
- Klon git deposu
git clone https://gitlab.com/psono/psono-server.git ~/psono-server
- Python gereksinimlerini yükleyin
Ctrl + D
cd /home/psono/psono-server
pip3 install -r requirements.txt
su psono
- Ayarlar klasörü oluştur
mkdir ~/.psono_server
- Aşağıdaki içerikle ~/ .psono \ _server/
# 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',
],
},
},
]
-
Yukarıdaki yorumlarda açıklanan gibi veritabanı kimlik bilgilerini / sırları / yolları güncelleyin.
-
Somethingsomethingcom execute’a bir test e-posta göndermek için: python3 ~/psono-sverver/psono/yönet. -Bu test e-postasını alırsanız, e-posta uygun şekilde yapılandırılmalıdır.
- Veritabanımızı oluşturun
python3 ~/psono-server/psono/manage.py migrate
- Psono sunucusunu çalıştırın
cd ~/psono-server/psono
gunicorn --bind 0.0.0.0:10100 wsgi
- Bu, PSONO sunucusunu 10100 numaralı bağlantı noktasında başlatacaktır. Şimdi açarsanız http: // your-ip: 10100/info/böyle bir şey görmeliyiz:
{"info":"{\"version\": \"....}
- Tekrar Kök Olun
Ctrl + D
- Süpervizör yapılandırması oluşturun. Aşağıdaki içerikle birlikte /etc/supervisor/conf.d/ içinde bir psono-server.conf oluşturun:
[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
- Bağlantıyı değiştirdiğimizi fark etmiş olabilirsiniz. Bu şekilde Psono sadece LocalHost’tan erişilebilir, bu da Nginx ile istekleri vekalet edeceğimiz için iyi.
- Supervisorctl’i yeniden yükle
supervisorctl reload
- Temizleme işini kurulum
crontab -e
- ve aşağıdaki satırı ekleyin:
30 2 * * * psono python3 /home/psono/psono-server/psono/manage.py cleartoken >> /var/log/cron.log 2>&1
- Psono şifre yöneticisini üretimde çalıştırmak için, SSL boşaltma işlemini işlemek ve Psono sunucusunu ve webClient’i bir araya getirmek için ters bir proxy gerekir. Bir sonraki adım olarak Ters proxy kurulum kılavuzunu takip edin.