OpenBSD Fundamentals – From System Architecture to Daily Operation
The System as a Whole
OpenBSD is a Unix operating system whose components are developed together and released as an integrated system. The Base System includes the kernel, system utilities, libraries, and configuration as well as network services such as httpd, smtpd, relayd, and ntpd. Additional software is installed separately as packages.
Security mechanisms are part of this system architecture. Services that are not needed are disabled by default. Many programs use Privilege Separation to divide tasks among multiple processes. pledge(2) limits the system operations available to a process, while unveil(2) can restrict its view of the file system. W^X separates writable and executable memory.
The individual areas of the system do not exist in isolation. Services run with specific privileges, access files, use network interfaces, and are controlled through system configuration. Anyone administering OpenBSD therefore encounters the same components repeatedly in different contexts.
From the Installed System to Daily Operation
The installation already determines parts of the later system, including disk layout, network configuration, and the installed sets. Afterward, the installed system is configured step by step for its intended purpose.
This includes local system configuration, additional packages, users and permissions, networking and routing, packet filtering, and finally the services the system is intended to provide. Maintenance and updates accompany ongoing operation.
These individual areas interact with one another. Network configuration provides interfaces and addresses through which a service can be reachable. Routing determines which paths packets can take. PF can filter traffic and influence its routing. A service, in turn, runs with specific privileges and uses its configuration and files.
Prior Knowledge and Terminology
We explain general Unix fundamentals where they are necessary for the respective context. Topics that extend beyond OpenBSD are covered in more detail in separate fundamentals articles when needed.
This allows us to explain relationships without overloading every article with general fundamentals or simply assuming unfamiliar terminology.
OpenBSD Fundamentals at a Glance
System Fundamentals
OpenBSD Introduction: Security Begins with Design
Installation and First Steps: Setting Up the System
Configuration and Administration
System Configuration: Network, Time, Permissions
Package Management: pkg_add, Updates, Ports
Security and Networking
Security Architecture: pledge, unveil, W^X
pledge(2), unveil(2), W^X, and additional protection mechanisms.
Networking and Routing: Interfaces, IPv6, dhcpd
Firewall with PF
Firewall Fundamentals: PF and Filter Rules
pf.conf, rules and states, and the interaction between PF and the network stack.
NAT and Port Forwarding with PF
PF: Advanced Concepts
Services and Operation
Services and Daemons: httpd, smtpd, relayd
Users and Automation: Administration, cron, rc Scripts
Virtualization and Maintenance
Virtualization with vmm
vmm(4), vmd(8), and vmctl(8) and place them within the networking and operation of the host system.
Backups and Maintenance
Related Fundamentals
Some topics extend beyond OpenBSD or are covered in more detail elsewhere: