Commit graph

136 commits

Author SHA1 Message Date
Ben Arent 930be29dd2
Updated Auth Connectors Examples and Documentation.
* Update all connector YAML configs
* User <cluster-url> as standard
* Leverage markdown_include.include
* Include screenshots for Buttons based on Display.
2020-02-26 14:57:25 -08:00
Ben Arent cbfd977f83
Set Teleport binary & golang version from markdown.yaml per version.
Starting with 4.2
2020-02-14 11:22:32 -08:00
Russell Jones 3640b5f098 Fix memory leak and pass variables to PAM. 2020-02-06 11:15:44 -08:00
Russell Jones 69f6c666bf Added more test support to pam_teleport.so.
Added support for "pam_putenv" and "pam_get_item" to fetch PAM_RUSER to
pam_teleport.so. This is used for test coverage.
2020-02-06 11:15:44 -08:00
Ben Arent b0b7263296
Updated mkdocs base image used in Docs (#3314)
* WIP to update MkDocs base theme.
2020-02-04 15:58:15 -08:00
Russell Jones e76cd0ba3b Updated build tooling for CentOS 6. 2020-01-20 14:04:36 -08:00
Gus Luxton e7e7afabc9
Update package URL to link to Teleport docs (#3266) 2020-01-13 17:29:01 -04:00
Gus Luxton a679d3e6b4
Adds support for client-only builds for Mac, plus signing/notarization/stapling (#3159) 2019-12-19 20:42:50 -04:00
Russell Jones 77e8b63470 Enhanced Session Recording.
Added package cgroup to orchestrate cgroups. Only support for cgroup2
was added to utilize because cgroup2 cgroups have unique IDs that can be
used correlated with BPF events.

Added bpf package that contains three BPF programs: execsnoop,
opensnoop, and tcpconnect. The bpf package starts and stops these
programs as well  correlating their output with Teleport sessions
and emitting them to the audit log.

Added support for Teleport to re-exec itself before launching a shell.
This allows Teleport to start a child process, capture it's PID, place
the PID in a cgroup, and then continue to process. Once the process is
continued it can be tracked by it's cgroup ID.

Reduced the total number of connections to a host so Teleport does not
quickly exhaust all file descriptors. Exhausting all file descriptors
happens very quickly when disk events are emitted to the audit log which
are emitted at a very high rate.

Added tarballs for exec sessions. Updated session.start and session.end
events with additional metadata. Updated the format of session tarballs
to include enhanced events.

Added file configuration for enhanced session recording. Added code to
startup enhanced session recording and pass package to SSH nodes.
2019-12-02 15:10:39 -08:00
Russell Jones 667ae84a8c Vendored bcc-tools 0.11.0 headers. 2019-12-02 15:10:39 -08:00
Gus Luxton c2e8fa19ad
Fix for CentOS 6 builds (#3179) 2019-11-26 14:15:28 -04:00
Gus Luxton 2dffdf2a50
Fixes for CentOS 6 builds (#3178) 2019-11-26 13:38:27 -04:00
Gus Luxton 926cdcc141
Add support for CentOS 6 builds in Docker (#3175) 2019-11-26 12:26:42 -04:00
Russell Jones e6a024b820 Upgrade Go to 1.13.2. 2019-10-24 15:16:04 -07:00
Lele c2f656cefe Update teleport.yaml, for pkg/etc/teleport.yaml and it's systemd unit. 2019-10-17 18:44:33 -07:00
Gus Luxton b08034a908
Add FIPS Docker build support (#3046) 2019-10-16 13:31:46 -03:00
Gus Luxton 2e08236078 Don't run fpm docker container with a TTY 2019-07-12 19:11:12 -03:00
Gus Luxton c6f7aa7142 Fix OS X enterprise package name 2019-07-12 18:43:35 -03:00
Gus Luxton 6db03d91e3
Add package build script and package commands to Makefile (#2855) 2019-07-12 14:47:59 -03:00
Russell Jones 040836a671 Upgrade to Go 1.12.1. 2019-05-21 10:22:13 -07:00
Russell Jones 6d1c16f745 Added support for nodes dialing back to cluster.
Updated services.ReverseTunnel to support type (proxy or node). For
proxy types, which represent trusted cluster connections, when a
services.ReverseTunnel is created, it's created on the remote side with
name /reverseTunnels/example.com. For node types, services.ReverseTunnel
is created on the main side as /reverseTunnels/{nodeUUID}.clusterName.

Updated services.TunnelConn to support type (proxy or node). For proxy
types, which represent trusted cluster connections, tunnel connections
are created on the main side under
/tunnelConnections/remote.example.com/{proxyUUID}-remote.example.com.
For nodes, tunnel connections are created on the main side under
/tunnelConnections/example.com/{proxyUUID}-example.com. This allows
searching for tunnel connections by cluster then allows easily creating
a set of proxies that are missing matching services.TunnelConn.

The reverse tunnel server has been updated to handle heartbeats from
proxies as well as nodes. Proxy heartbeat behavior has not changed.
Heartbeats from nodes now add remote connections to the matching local
site. In addition, the reverse tunnel server now proxies connection to
the Auth Server for requests that are already authenticated (a second
authentication to the Auth Server is required).

For registration, nodes try and connect to the Auth Server to fetch host
credentials. Upon failure, nodes now try and fallback to fetching host
credentials from the web proxy.

To establish a connection to an Auth Server, nodes first try and connect
directly, and if the connection fails, fallback to obtaining a
connection to the Auth Server through the reverse tunnel. If a
connection is established directly, node startup behavior has not
changed. If a node establishes a connection through the reverse tunnel,
it creates an AgentPool that attempts to dial back to the cluster and
establish a reverse tunnel.

When nodes heartbeat, they also heartbeat if they are connected directly
to the cluster or through a reverse tunnel. For nodes that are connected
through a reverse tunnel, the proxy subsystem now directs the reverse
tunnel server to establish a connection through the reverse tunnel
instead of directly.

When sending discovery requests, the domain field has been replaced with
tunnelID. The tunnelID field is either the cluster name (same as before)
for proxies, or {nodeUUID}.example.com for nodes.
2019-04-26 15:41:45 -07:00
cove 3db2c38402 fix package not found error due to apt-update not being run, consolidate package install into one layer (#2642) 2019-04-23 15:59:49 -07:00
Ev Kontsevoy 51ab559872 Documentation improvements
- Faster docs build time due to parallel builds
- Added "agentless" entry to Q&A
- Documented -o flag support for `tsh ssh`. Closes #2330
2019-02-12 16:39:21 -08:00
Russell Jones 94c47d11a6
Update Makefile 2019-01-28 14:58:40 -08:00
Russell Jones c0dea43d70 Fix Docker image. 2019-01-10 17:23:56 -08:00
Russell Jones 4883b83980 Upgrade to Go 1.11.4. 2018-12-18 11:13:07 -08:00
Sasha Klizhentas f40df845db Events and GRPC API
This commit introduces several key changes to
Teleport backend and API infrastructure
in order to achieve scalability improvements
on 10K+ node deployments.

Events and plain keyspace
--------------------------

New backend interface supports events,
pagination and range queries
and moves away from buckets to
plain keyspace, what better aligns
with DynamoDB and Etcd featuring similar
interfaces.

All backend implementations are
exposing Events API, allowing
multiple subscribers to consume the same
event stream and avoid polling database.

Replacing BoltDB, Dir with SQLite
-------------------------------

BoltDB backend does not support
having two processes access the database at the
same time. This prevented Teleport
using BoltDB backend to be live reloaded.

SQLite supports reads/writes by multiple
processes and makes Dir backend obsolete
as SQLite is more efficient on larger collections,
supports transactions and can detect data
corruption.

Teleport automatically migrates data from
Bolt and Dir backends into SQLite.

GRPC API and protobuf resources
-------------------------------

GRPC API has been introduced for
the auth server. The auth server now serves both GRPC
and JSON-HTTP API on the same TLS socket and uses
the same client certificate authentication.

All future API methods should use GRPC and HTTP-JSON
API is considered obsolete.

In addition to that some resources like
Server and CertificateAuthority are now
generated from protobuf service specifications in
a way that is fully backward compatible with
original JSON spec and schema, so the same resource
can be encoded and decoded from JSON, YAML
and protobuf.

All models should be refactored
into new proto specification over time.

Streaming presence service
--------------------------

In order to cut bandwidth, nodes
are sending full updates only when changes
to labels or spec have occured, otherwise
new light-weight GRPC keep alive updates are sent
over to the presence service, reducing
bandwidth usage on multi-node deployments.

In addition to that nodes are no longer polling
auth server for certificate authority rotation
updates, instead they subscribe to event updates
to detect updates as soon as they happen.

This is a new API, so the errors are inevitable,
that's why polling is still done, but
on a way slower rate.
2018-12-10 17:20:24 -08:00
Russell Jones 5d1c9f25ac Build improvements to allow passing in ARCH and RUNTIME. 2018-10-30 17:01:30 -07:00
Kevin Nisbet 830bc74073 Use ubuntu as the base image for a clean clair security scan 2018-10-04 10:08:16 -07:00
Russell Jones 56ad5d0fec Pass the OS when calling the Makefile. This allows building of Teleport
within a container when the host OS does not have Go installed.
2018-09-26 15:24:37 -07:00
Sasha Klizhentas c3806ca62b Switch back to 1.9.7 2018-09-17 13:00:26 -07:00
Sasha Klizhentas bcc25f971f Upgrade etcd backend
New Etcd backend is using GRPC api v3,
dependencies were updated accordingly.
2018-09-10 15:58:05 -07:00
Russell Jones bdb3f0608d Always re-build image before cutting release. 2018-08-06 16:58:38 -07:00
Russell Jones 2702ed4b5e Updated Makefiles. 2018-08-03 11:06:08 -07:00
Russell Jones c217b7f387 Updated Makefile to support building on Windows. 2018-08-03 11:06:08 -07:00
Ev Kontsevoy b2c12066a0 Updated getting started experience for systemd users
- Modified the default teleport.service to start without
  /etc/teleport.yaml
- Updated REAMDE for systemd unit
- Updated ./install script
2018-07-19 18:04:14 -07:00
Sasha Klizhentas 5273d7ea96 Add support for running tests in K8s 2018-06-15 15:35:21 -07:00
Sasha Klizhentas 73c3ba38d9 Switch to 1.10.3 2018-06-12 17:26:43 -07:00
Sasha Klizhentas cece4be212 Initial implementation of Kubernetes support
This issue updates #1986.

This is intial, experimental implementation that will
be updated with tests and edge cases prior to production 2.7.0 release.

Teleport proxy adds support for Kubernetes API protocol.
Auth server uses Kubernetes API to receive certificates
issued by Kubernetes CA.

Proxy intercepts and forwards API requests to the Kubernetes
API server and captures live session traffic, making
recordings available in the audit log.

Tsh login now updates kubeconfig configuration to use
Teleport as a proxy server.
2018-06-03 12:55:13 -07:00
Ev Kontsevoy 5a595437da Documented certificate rotation 2018-05-03 17:44:29 -07:00
Ev Kontsevoy fa50bc72d2 Updated with PR comments 2018-05-02 16:13:19 -07:00
Ev Kontsevoy 8ae705c7f9 Dockerfiles redesign
This commit optimizes the usage of Docker images.
There are 2 major changes:

* Docs and code are built using different Docker images:
        * `teleport-buildbox` is for building the code
        * `teleport-docsbox`  is for building the documentation
* Both docker images above are constructed using Gravitational-hosted
  _base_ images hosted on quay.io. Basically this means that majority of
  images are pre-built and hosted on quay. This makes the build process
  much faster.
2018-05-02 16:13:19 -07:00
Russell Jones 785967e37f Added PAM support to Teleport. 2018-03-20 14:20:43 -07:00
Alexey Kontsevoy ca56318778 (web) docs new nav styles 2018-02-08 13:58:36 -05:00
Sasha Klizhentas ff00a698be switch builder to go 1.9.2 2018-01-15 14:52:39 -08:00
Ev Kontsevoy a43487f5b3 Fixed Docket-based documentation generation 2017-10-12 15:56:11 -07:00
Ev Kontsevoy 92bfdcd541 Small changes to build/install process.. 2017-09-19 12:54:02 -07:00
Ev Kontsevoy 3b9d374c39 Removed the need to have autotools installed
Previous versions of Teleport relied on `make` command to be available,
which is never the case with all supported Linux distributions
2017-09-17 16:24:11 -07:00
Ev Kontsevoy 226745661d Minor formatting to the Makefile 2017-08-23 21:40:31 -07:00
Ev Kontsevoy eac2fe7522 Improved documentation-building scripts 2017-08-17 17:03:53 -07:00