Giter Site home page Giter Site logo

nbeguier / cassh Goto Github PK

View Code? Open in Web Editor NEW
70.0 7.0 20.0 382 KB

SSH CA administration via CLI and GUI

Home Page: https://medium.com/leboncoin-engineering-blog/cassh-ssh-key-signing-tool-39fd3b8e4de7

License: Apache License 2.0

Python 54.57% CSS 5.12% HTML 2.68% Shell 37.05% Dockerfile 0.58%
ssh sign authority-control krl python cli

cassh's People

Contributors

dependabot[bot] avatar mattrose avatar nbeguier avatar ttinkr avatar xakraz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cassh's Issues

Add OAuth2/OpenID Connect authentication

This is a feature request.

In addition to LDAP authentication, it would be possible to authenticate users with OpenID Connect. This would make it possible to integrate cassh into environments where Google Accounts are used to authenticate users (and, of course, other environments that employ an identity provider which supports OpenID Connect).

Cassh Server - clean functions

A Server Class that has the CASSH specific methods

  • list_keys
  • sign_keys
    A ClusterController Class with:
  • status (cluster_alived)
  • get_krl (cluster_last_krl)
  • update_krl (cluster_update_krl)
    Maybe Server would merge into ClusterController at some point and just be renamed as Controller with a option / param to support cluster mode.

And finally the Tools class could be removed and these methods would go back as functions :

pg_connection
get
post
sql_to_json
and tools might me renamed as cassh_utils

Add a "signed" filed to the "cassh status" command

Context

When you add a key, you can see explicitly that the status is Pending

$ cassh status
{
    "expiration": "1970-01-01 01:00:00 (UTC+0000)", 
    "realname": "Firstname Lastname", 
    "ssh_key_hash": "2048 e8:00:ed:f3:ae:8c:d1:65:e6:3b:48:8f:d5:84:fd:f5 ", 
    "status": "PENDING", 
    "username": "username"
}

After an admin "activate" a user, same result, we can clearly see the status:

 $ cassh status
Please type your LDAP password (user=Xavier Krantz): 
{
    "expiration": "1970-01-01 01:00:00 (UTC+0000)", 
    "realname": "Xavier Krantz", 
    "ssh_key_hash": "2048 e8:00:ed:f3:ae:8c:d1:65:e6:3b:48:8f:d5:84:fd:f5 ", 
    "status": "ACTIVE", 
    "username": "username"
}

However, currently there is no way to know if the key is signed ...
Even if we can guess it, since we have an expiration date that is defined in the future:

$ cassh status
{
    "expiration": "2017-08-26 11:29:19 (UTC+0000)", 
    "realname": "Firstname Lastname", 
    "ssh_key_hash": "2048 e8:00:ed:f3:ae:8c:d1:65:e6:3b:48:8f:d5:84:fd:f5 ", 
    "status": "ACTIVE", 
    "username": "username"
}

Feature Request:

It could be nice to have an explicit field for quick understanding, especially for users who are not very familiar with CLI and ssh practices. Maybe a new field or update the status filed to SIGNED ?

Display pubkey better hash and add rate

keys are not display properly :

    "ssh_key_hash": "2048 e8:47:77:a6:ea:aa:7d:26:67:24:ba:3a:52:b6:3f:ce ", 

    "ssh_key_hash": "2048 SHA256:R8NwvNikoqVR9DMwvNikoqVR9DdOSwvNikoqVR9D roberto@roberto-ThinkPad-T470p (RSA)\n", 

    "ssh_key_hash": "256 SHA256:hf44FmQ8YdbeEdO+u7geOKv", 

It could be better to split this into category :

  • DSA (weakest)
  • RSA (standard)
  • ECDSA (better)
  • Ed25519 (strongest but not suported on old OS)

and show the length.

Why not add a rate to help the admin to validate a key

How to deploy CA files to ssh servers.

So, I have set up the cassh server, and created a key, but I have no idea how to deploy the files necessary to be able to use my newly created and signed key on an SSH server.

Could somebody write up some quick instructions on the following:

  1. What files are necessary to copy from either the CASSH server or the CASSH client to the remote SSH server?
  2. what sshd_config configuration options need to be set for the remote SSH server to be able to authenticate the CASSH-signed key.

Getting all settings / configurations / paths through env variables and mounted secrets

It would be really great to be able to specify all configuration attributes via environment variables. For example to the path to settings.txt for cassh-web.
Further more it would be also super handy to be able to define keys as paths to files. This would allow keys to be mounted in kubernetes as secrets and the rest of the configuration could reside in a ConfigMap.
Both changes would allow a fast and consistent configuration and deployment of all the components in a Kubernetes cluster.

Thanks,
Thomas

tmp file not readable

127.0.0.1:41578 - - [09/Jul/2017 12:04:07] "HTTP/1.1 GET /admin/user" - 200 OK
do_ca_sign: unable to open "/tmp/tmpDAkVaX": No such file or directory

Increase log verbosity

Add ip, user agent, version, account and wrong inputs

Also, disable logs for /ping and /health

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.