Giter Club home page Giter Club logo

passmanjs's Introduction

# How to setup PassManJs
1. clone the project
2. if you want a full production deployment host on a domain, then follow these steps
  1. make sure you have the star deployer available (from the ImperialStarDeployer repo)
  2. make sure certain system dependencies are installed, these include nginx and systemd, and an ssl certificate (I use certbot to manage that)
  3. make sure star deployer is aware of how your nginx is configured (here I assume nginx configuration lives in /etc/nginx)
    1. you should have a /etc/nginx/conf.d directory, if you don't then here are the steps to create it
      1. `sudo mkdir /etc/nginx/conf.d`
      2. then modify the /etc/nginx/nginx.conf and in the "http" section (starting with "http {" and ending with "}")
        - add a line that says "include /etc/nginx/conf.d/*.conf;"
    2. the full path to that conf.d directory should be specified in a project variable for star deployer named "nginx_conf_d_dir".
      - since this is a system variable, I usually include it in the root /.imperial-star-deployer.json variable file
  4. make sure star deployer is aware of how your systemd is configured
    - usually just set the "systemd_etc_path" variable to the path /etc/systemd if that is where your systemd stores its configuration files
    - it is assumed that {systemd_etc_path}/system is where service files are located
  5. make sure star deployer is aware of how your ssl certificate is configured
    1. 2 files are referred to by the PassMan nginx conf file: "nginx_ssl_cert" and "nginx_ssl_cert_key"
    2. I usually run certbot and have it automatically add its certificate paths to a dummy nginx conf file and then copy those paths into these 2 variables
      - on my raspberry pi these paths were the following:
        - nginx_ssl_cert: /etc/letsencrypt/live/isaacsteadman.com/fullchain.pem
        - nginx_ssl_cert_key: /etc/letsencrypt/live/isaacsteadman.com/privkey.pem
  6. make sure star deployer is aware of the domain you are hosting PassMan on by adding a project local .imperial-star-deployer.json variable file
    - all you need to include is `{"project_domain": "your domain"}`
  7. run `{ImperialStarDeployer directory}/star deploy {PassManJs directory}`
  8. and now you should be good to go.
3. if you don't need a full production deployment and want to just run it locally, then follow these steps
  1. cd into PassManJs
  2. to get dependencies run `yarn install`
  3. to build run `yarn run build-client && yarn run build-server`
  4. to run the server and make the client available to a browser run `yarn run start-server`

# Current Considerations
- avoid DoS attack surface
  - only make changes to the file system after the user is authenticated and request is permitted by server policy
  - ony read user header before client is authenticated
    - also avoids unauthenticated metadata leakage
  - server policy was created primarily to mitigate DoS attack
    - the server may still get overloaded in terms of CPU and network capacity, but the storage on the host will not if you limit account creation and account size with server policy (see `class LimitedPolicy` in ServerPolicy.ts)
- lock the userLock before any filesystem access

passmanjs's People

Contributors

isaacsteadman avatar

Stargazers

Ben Buhse avatar

Forkers

bwbuhse

passmanjs's Issues

PassGen ignores user defined charset

In PassGen
when the checkbox for "Must Have Symbol? " is checked
and the user clicks "Generate Password", the symbols used do not appear to come from the user defined charset

Add built-in password generator

Add a built-in password generator with the following features

  • Custom character options
  • Security strength (in bits)
  • Password length (in characters)
  • Integration with the password table

Create Firefox plugin

Create a plugin for this password manager to integrate into Mozilla Firefox web browser.

multiple instances of passman may become desynchronized

Change passman to pull from the server and check the last modified date and compare it to the last modified date of the data the current instance pulled from the server and perform a merge if necessary

merge may require user interaction to decide which changes from which password vault to keep

Create an program like ssh-agent for user passwords

Create a program that will attach credentials to requests.
Things to keep in mind when thinking about security:

  • do not let the request go to an arbitrary target (without user approval) to prevent password extraction
  • potentially lock down passwords and store information about which sites it can be used on

Fix CSV Import of passwords

I added some passwords to passman via CSV import and some of them have an extra double-quote character in them

  • one thing of note is that passwords with a double quote in the password got an additional double quote (this may not be the only case but they seem correlated)

Having multiple logged instances is unsafe

We have 2 PassManJs client instances: A, and B

  1. A logs into an account
  2. B logs into same account
  3. A changes password table
  4. A saves password table
  5. B changes password table differently
  6. B saves password table

NOTE: step 6 overwrites the changes A saved in step 4

SECURITY: possible account creation overload

There is a security bug that would allow users to overload the server with too many new accounts which would fill up the file system.

Potential solutions include CAPTCHA and/or email verification.

Make rows in edit mode more robust

  • Searching for passwords does not find rows in edit mode with any search string. Choose whether the saved value or the current value is used for searching
  • Ask the user when closing the window if they want to save the edits they make to a password if there are any rows in edit mode

Create Chrome Plugin

Create a plugin for this password manager to integrate into Google Chrome web browser.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.