📚 Series Maritime Cybersecurity Learning Roadmap | PART 1 Lesson 3 of 5 · Course Index →
PART 1 · Lesson 3 Fundamentals Operating Systems

Linux & Operating System Fundamentals

Processes · Users & Groups · Permissions · File System · Services · Log Analysis · Windows vs Linux — the host-level knowledge that underpins every attack technique, every detection rule, and every forensic investigation in cybersecurity. For maritime: why OS fundamentals matter more on ships than most people think.

Captain Paul
Captain Paul
Maritime Cybersecurity · IACS UR E26/E27
September 2026
Maritime Cybersecurity Learning Roadmap
🎯 Lesson Objective

After this lesson you can explain what a process is and identify suspicious process behaviour, describe how Linux user/group/permission models enforce the principle of least privilege, navigate the Linux file system and recognise security-sensitive paths that attackers target, explain what a service daemon is and why disabling unnecessary services matters, use core Linux monitoring commands to establish a system baseline, read and interpret key log files, and compare the Windows and Linux security models — with direct application to the OS reality of maritime OT workstations.

In Lessons 1 and 2, you learned what you are protecting (assets, CIA Triad) and how data moves between protected systems (TCP/IP, networks). This lesson addresses the third question: what happens inside the systems themselves?

Every attack that succeeds on a network eventually reaches a host — a server, a workstation, a control system. That host runs an operating system. The operating system manages processes (which programs are running), users (who can do what), the file system (where data lives), and services (what listens on which ports). Understanding these host-level concepts is the prerequisite for everything else in cybersecurity: writing effective detection rules, conducting forensic investigations, securing systems against privilege escalation, and understanding how attackers achieve persistence.

For maritime professionals, this lesson has a particular edge: the operating systems running on shipboard navigation and OT workstations are, in many cases, well past their end-of-life dates. Understanding what good OS security looks like makes it immediately clear why end-of-life OS on safety-critical systems is a serious problem — and why patching those systems is so operationally complex.

1. Processes — What's Running and Why It Matters

A process is a running instance of a program. When you open a browser, a navigation software application, or execute a malware payload — the operating system creates a process. Each process has its own memory space, open file handles, network connections, and execution context. Every process is assigned a PID (Process ID) — a unique integer used to reference it.

Processes have a parent–child hierarchy. When one process spawns another (its child), the child inherits certain properties from the parent — including the user context under which it runs. This relationship is fundamental to both system operation and attack technique. A word processor spawning a command shell is abnormal. A browser spawning PowerShell.exe is a major red flag — exactly the behaviour pattern that attackers use when exploiting document-based malware, and exactly what Endpoint Detection and Response (EDR) tools are designed to catch.

From a security standpoint, you need to understand both what processes should be running (the baseline) and how to identify ones that should not be. The process name alone is not reliable — attackers commonly name malware after legitimate Windows processes (svchost.exe, lsass.exe) or place legitimate-looking names in unexpected file system locations.

Core Linux Process Commands
ps aux# All running processes with CPU/memory and full path
ps aux | grep <name># Filter for a specific process name
pstree -p# Show parent-child relationships with PIDs
top / htop# Interactive real-time process monitor
lsof -p <PID># Files and sockets opened by a specific process
ls -la /proc/<PID>/exe# Show actual binary path for a running process
kill -15 <PID># Graceful termination (SIGTERM)
kill -9 <PID># Forced termination (SIGKILL) — last resort

Security relevance — process anomalies: Threat hunters and EDR platforms look for: (1) unexpected parent–child relationships (e.g., svchost.exe → cmd.exe → powershell.exe — a common malware execution chain); (2) processes listening on network ports that should not be (a text editor with an active TCP listener); (3) processes running from world-writable locations like /tmp or C:\Users\Public; (4) processes with the same name as legitimate system processes but running from a different path or with a different parent. Each of these is a behavioural detection signal.

2. Users, Groups, and Permissions — Least Privilege in Practice

Linux enforces access control through a user/group/permission model that implements the principle of least privilege — each user, process, and service should have only the minimum access rights needed to perform its function, and no more. This is one of the most important security principles in computer science, and its violations are one of the most common paths to privilege escalation.

Every file and directory in Linux has three permission sets: one for the owner, one for the group, and one for everyone else (others). Each set has three bits: read (r = 4), write (w = 2), and execute (x = 1). Permissions are displayed in long listing format (ls -la) or set numerically (e.g., 755, 644).

Reading Linux Permissions
-rwxr-xr-- 1 captain mariners 4096 Sep 10 config.sh
-File type (- = file, d = directory, l = symlink)
rwxOwner (captain): read + write + execute
r-xGroup (mariners): read + execute only
r--Others: read only — no write, no execute
# Numeric equivalent:
chmod 754 config.sh # 7=rwx (owner), 5=r-x (group), 4=r-- (others)

The root user (UID 0) has unrestricted access to the entire system — bypassing all permission checks. Root is the equivalent of SYSTEM on Windows. Attackers always seek to escalate to root. The root account should never be used for routine operations; use sudo for specific privileged commands, which creates an audit trail in /var/log/auth.log.

A particularly dangerous permission is the SUID bit (Set User ID): a file with SUID set runs with the file owner's privileges, regardless of who executes it. A SUID binary owned by root effectively gives any user who can execute it temporary root-level access. Attackers search for misconfigured SUID binaries as a privilege escalation path. The command find / -perm -4000 2>/dev/null finds all SUID files on a system.

Key User / Permission Commands
User Enumeration
  • cat /etc/passwd
  • cat /etc/shadow
  • id <username>
  • who / w / last
  • getent passwd
Privilege Analysis
  • sudo -l
  • cat /etc/sudoers
  • find / -perm -4000
  • find / -perm -2000
  • getfacl <file>

3. The Linux File System — Where Attackers Look and Defenders Monitor

Linux uses a single hierarchical file system rooted at /. Everything is a file — including processes (/proc), hardware devices (/dev), and configuration settings (/etc). Unlike Windows with its drive letter system, there are no C:\ or D:\ drives in Linux. All storage, including external drives, is mounted into the same tree.

Security analysts need to know the standard directory layout because attackers consistently target and abuse specific paths — and defenders write monitoring rules around them. Knowing what should be at a given path makes it easier to identify what should not be there.

Path Contents & Security Relevance
/etcSystem configuration files. /etc/passwd (user accounts — readable by all), /etc/shadow (password hashes — root-only), /etc/sudoers (sudo privileges), /etc/crontab (scheduled tasks), /etc/ssh/sshd_config (SSH daemon config). Attackers target these to understand the user landscape and escalate privileges.
/var/logSystem and application logs. /var/log/auth.log (authentication events, sudo usage, SSH logins), /var/log/syslog (system events), /var/log/kern.log (kernel events). Primary forensic evidence source for incident response. Attackers often try to delete or overwrite these files — log integrity monitoring is therefore a key detective control.
/tmpWorld-writable temporary directory. Any user (and any process) can write to /tmp. Malware frequently writes its payload here, downloads additional components here, or uses it as a staging area. Monitoring for executable files in /tmp or /var/tmp is a standard detection rule. Some hardened systems mount /tmp with noexec (no execution from this directory).
/homeUser home directories. Each user has a directory here (/home/username). Contains .ssh/authorized_keys (SSH public keys that allow passwordless login — attackers add their own keys for persistent access), .bash_history (command history — evidence of attacker activity), and application credential files. A common attacker target for credential harvesting.
/bin /usr/binStandard system binaries (ls, cat, grep, ps, netstat). Attackers may replace legitimate binaries with trojaned versions — known as living-off-the-land or binary planting. File integrity monitoring (FIM) tools alert when these binaries change unexpectedly.
/procVirtual filesystem providing a live view into the kernel and all running processes. /proc/<PID>/ contains per-process information: /proc/<PID>/exe (binary path), /proc/<PID>/cmdline (full command line with arguments), /proc/<PID>/net/tcp (network connections). Forensically valuable — contains state that disappears when the process ends.
/rootRoot user's home directory. If an attacker has achieved root, they may store tools, SSH keys, and scripts here. Should be inaccessible to non-root users (/root is typically mode 700 or 750).

4. Services and Daemons — What Runs in the Background

A service (called a daemon on Linux) is a background process started at boot time that provides a persistent function: a web server (nginx, Apache), an SSH server (sshd), a database engine (postgresql), a mail daemon (postfix), or a logging collector (rsyslog). Daemons typically end in 'd' by naming convention — sshd, crond, httpd, auditd.

Modern Linux uses systemd as the service manager and init system. Services are defined in unit files (typically in /etc/systemd/system/ or /lib/systemd/system/) and can be started, stopped, restarted, enabled (auto-start on boot), or disabled. Every service has a corresponding log stream accessible via journalctl.

Key systemd Commands
systemctl list-units --type=service --state=running# All active services
systemctl status sshd# Detailed status + recent log entries
systemctl enable nginx# Configure to start on next boot
systemctl disable <service># Remove from boot sequence
journalctl -u sshd -n 100 --no-pager# Last 100 SSH log lines
systemctl list-units --type=service --state=failed# Failed services — investigate

From a security perspective, services are both a risk surface and a persistence mechanism. Every unnecessary service is an attack surface — an additional port listening, an additional codebase that may contain vulnerabilities, an additional process that could be exploited. The hardening principle is simple: if a service is not required, disable it.

Attackers install malicious services to achieve persistence — ensuring their access survives system reboots. A malicious systemd service file in /etc/systemd/system/ will be executed as root at every boot. Service enumeration is therefore a mandatory step in post-compromise forensics: compare the current service list against a known-good baseline and investigate any additions. Scheduled tasks (cron on Linux, Scheduled Tasks on Windows) are similarly abused for persistence.

5. Log Analysis and System Monitoring

Logs are the primary evidence source for both proactive security monitoring and reactive forensic investigation. Every authentication event, every process start, every file modified, every network connection — each generates log entries. Without logs, you cannot detect attacks in progress, reconstruct what happened after a breach, or demonstrate compliance with security requirements.

Effective log analysis requires knowing what normal looks like. A single failed SSH login is noise. One thousand failed SSH logins in two minutes from a single IP is a brute-force attack. Two failed logins followed by one successful login followed by immediate execution of id && whoami && cat /etc/shadow is a confirmed breach. Pattern recognition — establishing the baseline and detecting deviations — is the core skill of a security analyst.

Command / ToolWhat It ShowsSecurity Use
tail -f /var/log/auth.logLive authentication events (SSH, sudo, su)Real-time brute-force detection, unauthorized sudo
grep "Failed password" /var/log/auth.logFailed SSH login attemptsIdentify brute-force source IPs, targeted usernames
ss -tulpnAll listening ports with owning processesFind unexpected listeners (backdoors, C2 implants)
lsof -i -n -PAll open network connections with PIDsIdentify which process is making unexpected outbound connections
auditd / ausearchKernel audit: syscalls, file access, executionTrack privilege escalation, file modifications, exec'd commands
journalctl -fLive systemd journal streamReal-time system events; service failures; kernel messages
find / -newer /tmp/ref -type f 2>/dev/nullFiles modified after a reference timestampFind recently modified files — useful in timeline analysis after breach

In a SIEM (Security Information and Event Management) environment — covered in depth in Part 4 — logs from all these sources are collected centrally, parsed, and correlated across events from multiple systems. The host-level log knowledge in this lesson directly feeds into the detection rules and investigation workflows you will encounter in the SIEM lessons.

6. Windows vs Linux — Security Architecture Comparison

Both Windows and Linux are pervasive in security operations — Windows dominates corporate desktops and many maritime OT HMIs; Linux underpins servers, network devices, embedded systems, and the majority of security tooling. Understanding the security architecture of both is essential for any practitioner who works across mixed environments — which describes almost every maritime cybersecurity engagement.

FeatureLinuxWindows
Privilege modelroot (UID 0) = unrestricted. sudo for per-command elevation with audit trail.Administrator + SYSTEM. UAC (User Account Control) prompts for elevation. LSASS manages credentials.
Loggingsyslog, journald, auditd. Structured with journalctl. Custom audit rules via auditd.Windows Event Log (Security, System, Application, PowerShell). Event IDs are standardised (4625 = failed login, 4688 = process creation).
Remote accessSSH (port 22) — encrypted, key-based auth recommended, widely supported.RDP (port 3389) — frequently exposed to the internet, a primary ransomware initial access vector. Also WinRM.
Malware exposureLower on desktop (smaller installed base). Higher on servers. Ransomware increasingly targets Linux servers.Dominant ransomware target. The majority of commodity malware targets Windows.
PatchingPackage manager (apt, yum, dnf). Generally straightforward to patch without rebooting for most updates.Windows Update / WSUS / MECM. Patch Tuesday cycle. Many updates require reboot — operationally disruptive for OT systems.
Persistence mechanismscron, systemd units, /etc/rc.local, .bashrc, .profile, SSH authorized_keys, LD_PRELOADRegistry Run keys (HKCU/HKLM), Scheduled Tasks, Windows Services, WMI event subscriptions, Startup folder
Credential storage/etc/shadow (hashed), SSH private keys, environment variables, application config filesSAM database, NTDS.dit (domain), Windows Credential Manager, LSASS memory (targeted by Mimikatz)
Captain Paul
✍️ Author Insight — From the Field
Captain Paul · Maritime Cybersecurity Consultant · IACS UR E26/E27

One of the most striking findings encountered in IACS UR E26 CRSI assessments is an ECDIS workstation running Windows XP. In 2024. Windows XP reached official end-of-support in 2014 — ten years prior. That system was running navigation software used across active voyages, connected to a VSAT network with internet access, with no record of when a security patch had last been applied.

Why this matters beyond theory: every OS vulnerability discussed in this lesson — SUID misconfigurations, the world-writable /tmp directory, services running without security patches — all of these exist in Windows XP. In an unpatched state. The shipowner cannot apply patches because the OEM only certified their navigation software on that specific OS version. Apply a patch and the navigation software is no longer supported, risking loss of type approval from the class society.

This is exactly why IACS UR E26 introduced the concept of Compensating Controls — providing alternative risk-reduction approaches for legacy systems where patching is not feasible: network isolation, application whitelisting, and continuous monitoring. Understanding OS security fundamentals makes the full picture clear: why end-of-life operating systems are so dangerous, why "just upgrade it" is not a viable answer in practice, and how to manage that gap responsibly.

✅ What We Learned
  • A process is a running program instance with its own PID, memory, and parent–child relationship. Anomalous parent–child relationships are a primary EDR detection signal.
  • Linux enforces access via user/group/permission bits. The principle of least privilege (minimal required access) limits the blast radius of any compromise. SUID files are a privilege escalation risk.
  • Security-sensitive paths: /etc (config, credentials), /var/log (forensic evidence), /tmp (world-writable, malware staging), /home (SSH keys, history), /proc (live process data).
  • Services are attack surface and persistence targets. Disable everything not required. Enumerate services as a mandatory forensic step.
  • Log analysis — knowing what normal looks like — is the foundation of both detection and incident response. Key logs: auth.log, syslog, auditd. Key commands: ss, lsof, journalctl.
  • Windows and Linux have different privilege models, logging systems, remote access protocols, and persistence mechanisms — both appear in maritime environments.
  • Maritime OT workstations frequently run end-of-life operating systems (Windows XP, Windows 7) that cannot be patched without voiding OEM certification. Compensating controls (isolation, monitoring, whitelisting) are the IACS UR E26 response to this reality.
▶ Where This Leads Next

Lesson 4 — Kali Linux and Security Testing applies the OS knowledge from this lesson in a security assessment context. Kali Linux is a Debian-based Linux distribution purpose-built for security testing. Understanding processes, file systems, services, and monitoring commands — everything in this lesson — is the prerequisite for using Kali Linux effectively and responsibly. You will also learn the critical ethical and legal framework for security testing, and why maritime OT environments require a much more cautious approach than standard IT penetration testing.

⚓ Join the ShipPaulJobs Community

Join →
Share

Comments

Top Ranked · All Posts

Popular Posts