From ef2c74ad8806a47efc9d39b7437ff40b87c65103 Mon Sep 17 00:00:00 2001 From: Sam Chudnick Date: Sat, 10 Jun 2023 13:04:24 -0400 Subject: Several updates --- about-me.html | 12 +++- kb.html | 28 +-------- projects/mfa.html | 150 ------------------------------------------------- projects/template.html | 107 ----------------------------------- software.html | 74 ++++++++++++++---------- style.css | 37 +++++++++--- 6 files changed, 87 insertions(+), 321 deletions(-) delete mode 100644 projects/mfa.html delete mode 100644 projects/template.html diff --git a/about-me.html b/about-me.html index afac43f..3045fdd 100644 --- a/about-me.html +++ b/about-me.html @@ -10,7 +10,17 @@

About Me

- A page for biographical information. +

I enjoy cybersecurity, networking, systems administration, and automation.

+

I am currently employed as a SOC analyst.

+

I hold the following certifications:

+ +

When I am not working on various technology projects I enjoy + golfing and tennis. I also occasionally play guitar (poorly)

diff --git a/kb.html b/kb.html index 37bf647..bbd87d2 100644 --- a/kb.html +++ b/kb.html @@ -11,69 +11,45 @@

Knowledge Base

This page contains various articles on technology topics of interest, - typically structured as how-to or tutorial documents. - Items without links indicate future topics I intend to cover. All articles + typically structured as how-to or tutorial documents. All articles are intended for Debian 11 unless otherwise stated, but should be similar if tried on other distros.

Configuration Management

- -

Desktop Programs

-

Identity Management

Miscellaneous

Monitoring

Networking

Security

Self Hosting

diff --git a/projects/mfa.html b/projects/mfa.html deleted file mode 100644 index 2a89856..0000000 --- a/projects/mfa.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - -

Projects

-
-

mfa

-

Check out the source code here - - git.chudnick.com/mfa

- -

mfa is a system for out-of-band multi-factor - authentication with PAM. - My original reason for working on this was to get MFA functionality for - a Postfix/Dovecot mail server that uses PAM for authentication. - Solutions such as pam_oath are not feasible - for this purpose because a mail client has no way of exposing an - interface for the oath challenge-response. - Therefore a way to circumvent the original application to get the request - to the user is needed, which is what mfa does.

- -

The design of mfa is not novel, it works the same way as Cisco's Duo. - Duo does have open source modules for achieving this objective, but all - the authentication requests are - sent back to their proprietary "cloud" service. I'm sure that most - free software - enthusiasts see this as a major red flag, especially for small personal - use cases.

- -

Design

- -

mfa is primarily composed of three parts - the server, the client, - and the PAM module. - The server listens for connections from both clients and PAM - modules. The server receives a - request from a PAM module that includes the username of the user - attempting to authenticate, - the hostname of the computer, and the service being accessed. The - server then correlates the - combination of user, host, and service to a particular client, and - attempts to push a request. - The server will then evaluate the client's response, and either - return to the PAM module that - the user is authenticated or denied.

- -

The server itself consists of two parts that I've called - mfad and - mfac. mfad is the program responsible for doing - what I've described above. - mfac is a command line utility that the administrator uses to - configure the server. mfac is used - to enroll clients in the system and to provision applications. A - client is enrolled by using the - --add-client option and providing an alias for that user. The - server then assigns that user an - identifying key that is used to connect and a TOTP secret key. With - the client enrolled, the - administrator can then assign applications to that client. With the - --add-app command, the - administrator ties a username, hostname, and service combination to - a client alias, so that - when that combination is seen the server knows who to ask for - authentication. The administrator - also identifies which MFA methods are valid for this combination - (currently either or both of - push and/or totp). The example below shows the process of - enrolling a new client called - 'tux' and then provisioning MFA for SSH attempts to - tux@linux.example.org.

- -
# Enroll a client named tux
-mfac --add-client tux
-alias: tux
-client key: VA32LB3SF2HG2FDWJS5XIOFVWTMBQYRSQ3PK3OOPA3FBIQMSMJZCXYJQCYKYUWUU
-totp secret: TGGG3QCXA4MR2S2X6B33GSYN
-uri: otpauth://totp/tux%40mfad?secret=TGGG3QCXA4MR2S2X6B33GSYN
-
-# Provision MFA for SSH tux@linux.example.org allowing for both push
-authentication or TOTP
-mfac --add-app --user tux --host linux.example.org --service sshd --alias tux
---methods push totp
-			
- -

The PAM module of mfa also consists of two parts: the actual PAM - module - pam_mfa.so that gets called in the PAM stack and a - helper - program that interacts with mfad. The job of pam_mfa.so is to - retrieve the - necessary information (user and service) from PAM and then invoke - the helper - program with that data. It then waits for the MFA process to - complete, retrieves - the result, and returns either success or failure to the PAM stack. - The helper - program initiates a connetion to mfad when run and then passes - username, hostname, - and service information to the server. It too receives a success - or failure response - and then relays that information to the PAM module. Here is an - example of using - pam_mfa.so in the PAM stack for sshd.

- -
/etc/pam.d/sshd 
-auth requisite pam_mfa.so
- -

The client program is what the end user interacts with to - provide authentication responses. - Currently it is only a very simple terminal program but expanding - on this is high on the - TODO list. The client opens a connection to the server and - identifies itself with the client - key that was generated during enrollment. The client waits for a - prompt from the server, and - when it receives one, informs the user. The client receives the - users input and sends it back - to the server. The client performs this loop continuously until it - is closed.

- -

clibrary

- -

Check out the source code here - - git.chudnick.com/clibrary

- -

mail-tools

-

- git.chudnick.com/mail-tools -

- -

deploy-scripts

-

- - git.chudnick.com/deploy-scripts -

- -

server-scripts

-

- - git.chudnick.com/server-scripts -

-
- - - - diff --git a/projects/template.html b/projects/template.html deleted file mode 100644 index 77b6c6a..0000000 --- a/projects/template.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - -

Projects

-
-

mfa

-

Check out the source code here - - git.chudnick.com/mfa

- -

mfa is a system for out-of-band multi-factor authentication with PAM. - My original reason for working on this was to get MFA functionality for a Postfix/Dovecot - mail server that uses PAM for authentication. Solutions such as pam_oath are not feasible - for this purpose because a mail client has no way of exposing an interface for the oath - challenge-response. Therefore a way to circumvent the original application to get the request - to the user is needed, which is what mfa does.

- -

The design of mfa is not novel, it works the same way as Cisco's Duo. Duo does have open - source modules for achieving this objective, but all the authentication requests are - sent back to their proprietary "cloud" service. I'm sure that most free software - enthusiasts see this as a major red flag, especially for small personal use cases.

- -

Design

- -

mfa is primarily composed of three parts - the server, the client, and the PAM module. - The server listens for connections from both clients and PAM modules. The server receives a - request from a PAM module that includes the username of the user attempting to authenticate, - the hostname of the computer, and the service being accessed. The server then correlates the - combination of user, host, and service to a particular client, and attempts to push a request. - The server will then evaluate the client's response, and either return to the PAM module that - the user is authenticated or denied.

- -

The server itself consists of two parts that I've called mfad and - mfac. mfad is the program responsible for doing what I've described above. - mfac is a command line utility that the administrator uses to configure the server. mfac is used - to enroll clients in the system and to provision applications. A client is enrolled by using the - --add-client option and providing an alias for that user. The server then assigns that user an - identifying key that is used to connect and a TOTP secret key. With the client enrolled, the - administrator can then assign applications to that client. With the --add-app command, the - administrator ties a username, hostname, and service combination to a client alias, so that - when that combination is seen the server knows who to ask for authentication. The administrator - also identifies which MFA methods are valid for this combination (currently either or both of - push and/or totp). The example below shows the process of enrolling a new client called - 'tux' and then provisioning MFA for SSH attempts to tux@linux.example.org.

- -
# Enroll a client named tux
-mfac --add-client tux
-alias: tux
-client key: VA32LB3SF2HG2FDWJS5XIOFVWTMBQYRSQ3PK3OOPA3FBIQMSMJZCXYJQCYKYUWUU
-totp secret: TGGG3QCXA4MR2S2X6B33GSYN
-uri: otpauth://totp/tux%40mfad?secret=TGGG3QCXA4MR2S2X6B33GSYN
-
-# Provision MFA for SSH tux@linux.example.org allowing for both push authentication or TOTP
-mfac --add-app --user tux --host linux.example.org --service sshd --alias tux --methods push totp
-			
- -

The PAM module of mfa also consists of two parts: the actual PAM module - pam_mfa.so that gets called in the PAM stack and a helper - program that interacts with mfad. The job of pam_mfa.so is to retrieve the - necessary information (user and service) from PAM and then invoke the helper - program with that data. It then waits for the MFA process to complete, retrieves - the result, and returns either success or failure to the PAM stack. The helper - program initiates a connetion to mfad when run and then passes username, hostname, - and service information to the server. It too receives a success or failure response - and then relays that information to the PAM module. Here is an example of using - pam_mfa.so in the PAM stack for sshd.

- -
/etc/pam.d/sshd 
-auth requisite pam_mfa.so
- -

The client program is what the end user interacts with to provide authentication responses. - Currently it is only a very simple terminal program but expanding on this is high on the - TODO list. The client opens a connection to the server and identifies itself with the client - key that was generated during enrollment. The client waits for a prompt from the server, and - when it receives one, informs the user. The client receives the users input and sends it back - to the server. The client performs this loop continuously until it is closed.

- -

clibrary

- -

Check out the source code here - - git.chudnick.com/clibrary

- -

mail-tools

-

- git.chudnick.com/mail-tools -

- -

deploy-scripts

-

- git.chudnick.com/deploy-scripts -

- -

server-scripts

-

- git.chudnick.com/server-scripts -

-
- - - - diff --git a/software.html b/software.html index 928ccfc..9e9cd8a 100644 --- a/software.html +++ b/software.html @@ -11,44 +11,58 @@

Software I Use

This is some of the software that I use and recommend. - It goes without saying, but all of this software is free as in freedom, - libre, open source.

- -

Desktop Programs

-

Window Manager - dwm - [git]

-

Shell - zsh

-

Terminal Emulator - urxvt

-

Statusbar - dwmblocks - [git]

-

Text Editor - vim

-

Music Player - cmus

-

Process Monitor - htop

-

Media Player - mpv

-

Email - neomutt, isync, msmtp - [kb]

-

RSS - newsboat

-

PDF Reader - zathura

-

Sandbox - firejail

-

Virtualization - qemu/kvm + libvirt

-

Firewall - ufw

+ All of this software is FOSS.

Server Software

-

This is some server oriented software that I use.

-

Mail Server - postfix + dovecot - [kb]

-

Media Server - jellyfin

+

Infrastructure

+

Virtualization - Proxmox VE

+

Backups - Proxmox Backup Server

+

DNS - Pi-hole

+ +

Services

+

Authentication and Identity - Authelia

+

LDAP - FreeIPA [kb]

+

RSS Aggregator - FreshRSS

+

Dashboard - Homer

+

Search Engine - SearxNG

+

Wiki - Bookstack

+

Personal Cloud - Nextcloud

+

Photo Management - Photoprism

+

Game Streaming - Sunshine + Moonlight

+

Mail Server - Postfix + Dovecot [kb]

-

Server Monitoring - icinga2 - [kb]

+

Monitoring

+

Service Monitoring - Prometheus + Grafana + Cadvisor

+

Log Management - Loki

-

Configuration Management - ansible

+

Media

+

Media Server - Jellyfin

+

Music Server - Navidrome

-

Identity Management - FreeIPA - [kb]

+

Development

+

Configuration Management - Ansible

+

Git Repository - Gitea

+

Git Mirror - cgit

+

CI/CD - Jenkins

+

Diagramming - draw.io

+

Desktop Programs

+

Window Manager - dwm [git]

+

Shell - zsh [git]

+

Terminal Emulator - st [git]

+

Text Editor - vim [git]

+

Music Player - cmus [git]

+

Process Monitor - htop [git]

+

Media Player - mpv

+

Email - neomutt, isync, msmtp + [git] + [kb]

+

PDF Reader - zathura [git]

+

Sandbox - firejail [git]

+

Firewall - ufw

+
diff --git a/style.css b/style.css index db70bd3..d5f7504 100644 --- a/style.css +++ b/style.css @@ -1,7 +1,27 @@ -body { - color: snow; - background: rgb(10,10,10); - font-size: 14pt; +@charset "UTF-8"; + +:root { + /* Set sans-serif & mono fonts */ + --sans-font: Inter, Lato,Helvetica,"IBM Plex Sans","Roboto","Nimbus Sans L","Noto Sans", "Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif; + --mono-font: "mononoki Nerd Font","IBM Plex Mono","Roboto Mono","Ubuntu Mono","Fira Code","Overpass Mono", Monaco,"Droid Sans Mono",monospace; + --bg: #242933; + --accent-bg: rgb(46, 52, 64); + --text: #eceff4; + --text-light: #d8dee9; + --border: #88c0d0; + --accent: #81a1c1; + --accent-light: #bf616a; + --code: #ebcb8b; + --alert: #a3be8c; + --alert-bg: #8fbcbb; + --code-bg: #2e3440; +} + +html, body, .container { + background: var(--bg); + color: var(--text); + font-family: var(--sans-font); + font-size: 12pt; } h1 { @@ -69,7 +89,7 @@ p.donate { } h2 { - color: firebrick; + color: var(--border); text-align: left; font-size: 20pt; border-bottom: solid 1px; @@ -85,7 +105,7 @@ h2.donate { } h3 { - color: firebrick; + color: var(--border); text-align: left; font-size: 16pt; max-width: 800px; @@ -99,7 +119,7 @@ em { } strong { - color: deepskyblue; + color: var(--accent-light); } /* Sidebar */ @@ -171,3 +191,6 @@ pre { max-width: 600px ; margin: auto ; } + +h3.software { +} -- cgit v1.2.3