Project

General

Profile

README

DuckCorp Infrastructure

This is the root of the DuckCorp Admin Team materials used to install, configure and manage services.

DuckCorp is commited to Free Software, thus all materials are published under the GPL v3 License (see details of the license in the COPYING file).

Materials

All sensitive materials are encrypted, read the Dealing with Secrets chapter to know more about this.

Configuration Management & Deployment

We use Ansible to help us automate as much as possible; you'll find more about it in the ansible directory.

Still, many things are handled manually, this is WIP.

PKI

Our TLS certificates are managed using mkcert. The mkcert.conf file holds the DuckCorp-specific configuration, and services contains the specific service names not in /etc/services. The keys configuration and resulting certificates are stored in the pki directory.

With this layout, mkcert can be run in-place (at the top-level of this repository), automagically finding its configuration and work directories.

Scripts

In the scripts directory are the following scripts:

  • adm_check_*: this series of scripts check various resources hosted by DuckCorp against the outside world to see if there is any misconfiguration or if the hosting became obsolete (without the user telling us, which happen very often…)
  • adm_publish_tlsa: compute TLSA DNS RR for DNSSEC-enabled DNS zones based on the available TLS certificates
  • check_certs_expiration: warn when certificates are nearly expired (or already expired)

They are meant to be run in-place from the top of this repository. The lib subdirectory contains code factorized between the scripts.

Documentation

The admin-oriented documentation can be found alongside the other materials, but for some topics we might write a dedicated explanation and store it in the doc directory.

For Admin Team Members

Sensitive Data

You need to set the ANSIBLE_VAULT_PASSWORD_FILE environment variable with the path to the password file.

Requirements

First, clone [the repository](ssh://vcs-git.duckcorp.org/srv/vcs/git/duckcorp/duckcorp-infra.git). You should probably have a look at the Requirements in the underlying directories too.

Git configuration

  • Always create a merge commit : $ git config --local merge.ff false
  • Allow fast-forward merges when using pull : $ git config --local pull.ff only
  • All commits must be GPG signed : $ git config --local commit.gpgSign true

Dealing with Secrets

We use Ansible Vault to hide some parameters like service credentials, user personal information or emails to avoid SPAM.

To make it easy git attributes are defined to make diff-ing and merging easy.

Your configuration needs to be enhanced to tel git how to handle these files. This is very easy, look at this URL for more info:

: https://github.com/building5/ansible-vault-tools

Git usage

When merging a branch, use --verify-signatures switch. If this fails, then DO NOT MERGE!!!

When adding submodule, please use the HTTPs URL to allow contributors to clone. Also use --name to set the submodule name or the path is taken by default. Then, you can ask git to automatically rewrite the URL to the right form with this command:

git config --global url.ssh://vcs-git.duckcorp.org/srv/vcs/git/.insteadOf https://vcs-git.duckcorp.org/

For External Contributor

You're welcome to contribute ideas, report problems, send patches… using our Ticket Tracker (in the Contribution tracker).

You can clone this repository or browse it.

Statistics
| Branch: | Revision:

duckcorp-infra @ 802177b7

Name Size Revision Age Author Comment
  ansible 802177b7 4 months Marc Dequènes Orfeo: needs accounts resolution It was remove...
  doc 02d7c212 9 months Marc Dequènes Elwing: switch to new ISP
  pki df6e330d 4 months Marc Dequènes static.perso.duckcorp.org: no need for TLS to r...
  scripts 171152bb 5 months Marc Dequènes lib/ansible_inventory: find_host_by_fqdn() is n...
.gitignore 221 Bytes 134fa877 5 months Marc Dequènes ignore '__pycache__' directories
.gitmodules 2.37 KB 16c6bf14 5 months Marc Dequènes mail: create mail storage partition
COPYING 34.3 KB 5d76f2d8 over 1 year Marc Dequènes First public version
README.md 3.85 KB 6f55d8c4 11 months Marc Dequènes document a better way to access DC's VCS as a c...
mkcert.conf 154 Bytes 5d76f2d8 over 1 year Marc Dequènes First public version
services 347 Bytes e9b7d9a0 12 months Marc Dequènes removed obsolete im_gateway service #2

Latest revisions

# Date Author Comment
802177b7 2018-12-30 14:44 Marc Dequènes

Orfeo: needs accounts resolution

It was removed in e8b3717 because Orfeo does not have historical VIP
shell accounts anymore, but certain services needs it (like
cyborghood_postman).

aad53888 2018-12-30 13:41 Marc Dequènes

dns: adjust rate limiting

f498ead5 2018-12-30 10:33 Marc Dequènes

Pond: experimenting with Bind DNSSEC support

55ee712d 2018-12-30 10:32 Marc Dequènes

Pond: update list of reverse zones

a7da91d8 2018-12-29 10:18 Marc Dequènes

dns: add rate limiting

6e731173 2018-12-29 08:31 Marc Dequènes

added duckcorp/www.milkypond.org

9ab70ad9 2018-12-29 07:59 Marc Dequènes

dc-postfix: rework TLS security

  • enforce server cipher order
  • be more restrictive with mandatory secured connections
  • smtpd?_tls_session_cache_database is not needed anymore, RFC 5077 TLS
    session tickets is recommended instead
  • share TLS settings among server types
7dcda2d6 2018-12-28 16:35 Marc Dequènes (Duck)

www.duckcorp.org: webstats are no more

Removed Piwik/Matomo from the CSP.

0cf9ae03 2018-12-28 16:27 Marc Dequènes (Duck)

www.duckcorp.org: forgot alias to TLD

e8b37173 2018-12-28 07:35 Marc Dequènes (Duck)

Orfeo: not a shell server anymore

View all revisions | View revisions

Also available in: Atom