Oel 9.8
Overview
This guide covers deploying and configuring Oracle Linux 9.8 on Microsoft Azure. It uses SecureAnyCloud's preconfigured virtual machine image from the Azure Marketplace.
Oracle Linux is a free, enterprise-grade Linux distribution built by Oracle to be binary compatible with Red Hat Enterprise Linux 9. Oracle provides the binaries, updates and errata at no cost and permits redistribution. You need no subscription and no licence key to use, patch or resell it.
Version 9.8 is a current minor release in the RHEL 9 family. Oracle Linux 9 follows the RHEL 9 lifecycle and remains supported into 2032. Security backports flow into the latest minor stream, so a fully updated machine reports release 9.8 while carrying current fixes.
Oracle Linux ships two kernel lines, and this image keeps both. The Unbreakable Enterprise Kernel (UEK) is an Oracle-maintained kernel that boots by default. The Red Hat Compatible Kernel (RHCK) is the same 5.14 kernel line that RHEL 9 uses. You can boot either.
What you get:
- Oracle Linux 9.8, binary compatible with RHEL 9
- Every available update applied at build time, which brings the base to the 9.8 point release
- Both kernel lines: Unbreakable Enterprise Kernel 8 (booted by default) and the Red Hat Compatible Kernel
- dnf-automatic armed, so the machine keeps applying security updates on its own
- Azure Linux Agent (waagent) and cloud-init for Azure integration
- Chronyd for NTP time synchronisation
- SELinux in enforcing mode
- BaseOS Latest, Application Stream, Addons and UEKR8 repositories enabled, so your update path is intact
- Gen2 Hyper-V virtual machine support
- 24/7 SecureAnyCloud support
Platform: Microsoft Azure (Gen2 Hyper-V)
Default user: azureuser
Security posture
This image ships with no known credential. There is no default password and no baked-in SSH key.
- The root account password is locked, so no one can log in as root with a password.
PasswordAuthenticationis disabled in the SSH daemon, so every login uses a key.PermitRootLoginis set toprohibit-password, so root cannot be reached with a password even if one were later set.- The only key that works is the public key you supply when you create the virtual machine. Azure injects it into
azureuserat first boot, so no two machines you launch share a secret. - The machine identity and the SSH host keys are regenerated uniquely on every instance, so no two machines share a host key.
- SELinux is left in enforcing mode, the Oracle Linux default.
rpcbind, the RPC port mapper on port 111, is left disabled, so a fresh machine advertises only SSH. NFSv4 does not need it. If you require NFSv3, you can re-enable it, as shown in Step 7.
Prerequisites
Before you deploy this image, make sure you have:
- An active Microsoft Azure subscription
- Access to the Azure Portal or Azure CLI
- An SSH key pair for Linux VM access
- Familiarity with Azure VM management
Recommended VM size: Standard_B2s (2 vCPU, 4 GB RAM) or larger.
Deploy the virtual machine
Option A: Azure Portal
- Go to the Azure Marketplace and search for "Oracle Linux 9.8 SecureAnyCloud".
- Select the image and click Create.
- On Basics, select your Subscription.
- Set Resource Group by creating a new one or selecting an existing one.
- Enter a Virtual Machine Name.
- Select your preferred Region.
- Set Size.
Standard_B2sis recommended. - Under Administrator Account, select SSH public key and enter your key.
- Under Inbound Port Rules, allow SSH (port 22).
- Click Review + Create, then Create.
Option B: Azure CLI
Accept the Marketplace terms, then create the VM.
az vm image terms accept --urn sac1647283583153:oel-9-8:default:latest
az vm create \
--resource-group myResourceGroup \
--name my-oracle-linux-9-8-vm \
--image sac1647283583153:oel-9-8:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardConnect via SSH
Run these commands on your own workstation, not on the VM. Find the public IP, then connect.
az vm show --resource-group myResourceGroup --name my-oracle-linux-9-8-vm --show-details --query publicIps -o tsv ssh azureuser@<vm-ip>There is no password to enter. If SSH asks for one, your client is not offering the key you supplied at create time.
Confirm the release
Check that the machine runs the Oracle Linux 9.8 release you expect.
cat /etc/oracle-release grep -E '^(NAME|VERSION|ID|PLATFORM_ID)=' /etc/os-release uname -rmYou should see output like this.
Oracle Linux Server release 9.8 NAME="Oracle Linux Server" VERSION="9.8" ID="ol" PLATFORM_ID="platform:el9" 6.12.0-204.92.4.4.3.el9uek.x86_64 x86_64The el9uek tag on the kernel version shows that the machine runs the Unbreakable Enterprise Kernel. Oracle Linux also ships the Red Hat Compatible Kernel (a 5.14 el9_8 kernel) alongside it. The next step shows both.
Check the patch level and the two kernel lines
The image is fully updated at build time. dnf check-update returns exit code 100 when updates are pending and 0 when none are.
sudo dnf check-update echo "exit code: $?"List the enabled repositories to confirm that your update path is intact.
dnf repolist --enabledYou should see output like this.
repo id repo name ol9_UEKR8 Oracle Linux 9 UEK Release 8 (x86_64) ol9_addons Oracle Linux 9 Addons (x86_64) ol9_appstream Oracle Linux 9 Application Stream Packages (x86_64) ol9_baseos_latest Oracle Linux 9 BaseOS Latest (x86_64)Both kernel lines are installed and managed by dnf. List them, and see which one is booted.
rpm -q kernel-uek-core kernel-core uname -rYou should see output like this.
kernel-uek-core-6.12.0-204.92.4.4.3.el9uek.x86_64 kernel-core-5.14.0-687.36.1.el9_8.x86_64 6.12.0-204.92.4.4.3.el9uek.x86_64The UEK line (kernel-uek-*) is the default and is what uname -r reports. The RHCK line (kernel-*, the 5.14 el9_8 kernel) is available if you prefer strict RHEL kernel compatibility. Select it from the GRUB menu at boot. Both lines receive security updates.
Because 9.8 is a current minor release in the RHEL 9 family, applying updates keeps you current within the 9 series. This image also arms dnf-automatic, so security updates are downloaded and applied on a timer without any action from you. You can still run updates on your own schedule.
sudo dnf upgrade -yIf a new kernel was installed, reboot.
sudo systemctl rebootVerify the security posture
Confirm that SELinux is enforcing, root is locked, and SSH allows keys only.
getenforce
sudo passwd -S root
sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|pubkeyauthentication)'You should see output like this.
Enforcing root LK 2009-12-21 -1 -1 -1 -1 (Alternate authentication scheme in use.) permitrootlogin without-password pubkeyauthentication yes passwordauthentication nowithout-password is how OpenSSH reports the prohibit-password setting. Both names mean the same thing: root may not authenticate with a password.
Verify Azure integration and unattended updates
Confirm that the Azure Linux Agent, cloud-init and time synchronisation are healthy and that unattended security updates are armed. Then check your resources.
systemctl is-active waagent
systemctl is-enabled waagent cloud-init --version
systemctl is-enabled dnf-automatic.timer
systemctl is-active chronyd df -h / free -hYou should see output like this.
active enabled /usr/bin/cloud-init 24.4-8.0.1.el9_8.1 enabled active Filesystem Size Used Avail Use% Mounted on /dev/mapper/rootvg-rootlv 32G 3.4G 29G 11% / total used free shared buff/cache available Mem: 3.4Gi 577Mi 2.4Gi 16Mi 638Mi 2.8Gi Swap: 0B 0B 0Bwaagent is what lets Azure provision your SSH key, resize the OS disk, run extensions and report VM health, so it should always be active and enabled. dnf-automatic.timer being enabled is what keeps the machine applying security updates on its own after launch. Swap: 0B is expected. Azure manages swap on the ephemeral resource disk, so none is baked into the OS disk.
Networking and the firewall
The Azure Network Security Group is the outer control plane for inbound and outbound traffic, and it is the first place you open a port. The image advertises a single inbound port, SSH on 22.
Before you open anything, confirm what is actually listening.
ss -tlnpOn a fresh machine the only listener is sshd on port 22. rpcbind is disabled on this image, so port 111 is closed by default.
Unlike a stock cloud image, this build also runs a host firewall. firewalld is active and enabled, using the public zone, and it already permits SSH. Inspect it.
sudo firewall-cmd --state sudo firewall-cmd --list-allThe public zone lists ssh among its allowed services, which is why your key-based login works out of the box. To expose another service, open it in both the Azure NSG and firewalld. For example, to allow HTTPS, run these commands.
sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reloadAlways keep the ssh service allowed so a firewall change does not lock you out.
If you need NFSv3, which relies on the RPC port mapper, re-enable rpcbind.
sudo systemctl enable --now rpcbind.socketNFSv4 does not need rpcbind and works without this step.
Install software
The Application Stream carries the application packages. It ships several versions of the same language or database as separate module streams, so you can pick a version rather than take the default.
List the streams for a package.
dnf module list nginxYou should see output like this.
Oracle Linux 9 Application Stream Packages (x86_64) Name Stream Profiles Summary nginx 1.22 common [d] nginx webserver nginx 1.24 common [d] nginx webserver nginx 1.26 common [d] nginx webserver Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalledInstall a specific stream and enable it in the usual way, for example sudo dnf module install -y nginx:1.26 followed by sudo systemctl enable --now nginx.
To add another administrator:
- Create the account with
sudo adduser <name>. - Add it to the
wheelgroup withsudo usermod -aG wheel <name>. - Copy your public key into
/home/<name>/.ssh/authorized_keyswith mode600, and give the.sshdirectory mode700. Both must be owned by that user.
The image ships with no human accounts at all, so azureuser is the only login until you add one. Check the group membership.
getent group wheelCommon Use Cases
- RHEL 9 compatible application hosting
- Modern, long-lived enterprise server workloads
- A base for software certified on the Oracle Linux 9 platform
- Migration target for CentOS Stream and RHEL 9 estates
Troubleshooting
Cannot connect via SSH
- Verify the VM is in Running state in the Azure Portal
- Check that port 22 is allowed in the Network Security Group
- Ensure you are using the correct username:
azureuser - Verify your SSH key matches the one you supplied at create time. Password login is disabled by design, so a wrong key cannot fall back to a password prompt.
To see which key your client is actually offering, run ssh -v azureuser@<vm-ip> from your workstation and look for the Offering public key lines.
Azure agent not running
sudo systemctl status waagentIf it is not running, start it. Run this command on the VM.
sudo systemctl enable --now waagentPackage manager issues
Refresh the metadata cache first.
sudo dnf clean all
sudo dnf makecacheIf repositories are unreachable, check DNS resolution. getent is always present and resolves through the same system resolver.
getent hosts yum.oracle.comTo make dig and nslookup available, install bind-utils.
A service is blocked and the logs mention SELinux
SELinux is enforcing on this image. Rather than disabling it, look at what was denied. On a healthy machine there are no recent denials, so the command reports none.
sudo ausearch -m AVC -ts recent 2>/dev/null || echo "no recent AVC denials"Important Notes
Oracle Linux is free and open source, and Oracle explicitly permits its redistribution. It is not covered by a single licence. It is a distribution assembled from thousands of independently packaged components, each carrying its own terms, including the GPL, LGPL, MIT, BSD, Apache 2.0 and MPL. You can read every package's terms with rpm -qi <package> and under /usr/share/licenses/. No subscription, licence key or Red Hat entitlement is required. A paid Oracle Linux Support subscription is optional and is not needed to use, patch or resell the operating system.
Oracle Linux 9 is supported into 2032. Plan a move to a newer Oracle Linux image before that date for workloads that need to outlive it.
Oracle and Oracle Linux are trademarks of Oracle Corporation. The names are used here nominatively, only to identify the distribution this image contains. SecureAnyCloud is not affiliated with, endorsed by or sponsored by Oracle Corporation.
Support
For help with this image, contact SecureAnyCloud support.
- Website: secureanycloud.com
- Product catalogue: secureanycloud.com/products
- User guides: secureanycloud.com/guides
- SLA: 24 hour response guaranteed
Deploy on Azure
Launch Oracle Linux 9.8 on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com