Deploying GreenRadius on RedHat Enterprise Linux using Podman
Prerequisites
- A target machine running RHEL 8 or 9
- Adjust SELinux in a way that allows GreenRADIUS to function smoothly
- A GreenRADIUS update package (v5.2.9.9 or later)
Deployment Instructions
- Log in with a user that has sudo access.
- Run
sudo yum update
- Run
sudo yum install -y yum-utils
- Run
sudo yum update
- Run
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E '%{rhel}').noarch.rpm
- Run
sudo yum -y install container-selinux
- Run
sudo yum makecache --refresh
- Run
sudo yum -y install fuse-overlayfs
- Run
sudo yum -y install slirp4netns
- Run
sudo dnf update
- Run
sudo dnf install epel-release
- Run
sudo dnf install --enablerepo="epel" ufw
- Run
sudo yum remove docker-ce docker-ce-cli containerd.io
- Run
sudo dnf install podman
- Run
sudo dnf install podman-plugins
- Run
sudo yum install python3
- Run
sudo yum install python3-pip
- Run
sudo pip3 install podman-compose
- Check where podman-compose has been installed by running
sudo find / -name "podman-compose"
- Create a symlink to this path with
sudo ln -s <path/where/podman-compose/is/installed> /usr/bin/podman-compose
- Run
sudo yum install incron
- Run
sudo yum install unzip
- Run
sudo yum install net-tools
- Run
sudo useradd -d /home/gradmin -m -G wheel -s /bin/bash gradmin
- Run
sudo passwd gradmin
and set the password forgradmin
appropriately - Run
sudo chmod -R 750 /home/gradmin
- Run
sudo chown -R gradmin:gradmin /home/gradmin
- Run
sudo mkdir /home/gradmin/grs-podman-compose
- Run
sudo service firewalld stop
- Run
sudo systemctl disable firewalld
- Reboot and login as
gradmin
- Copy the GreenRADIUS update package to the
/tmp/
directory - Run
sudo unzip /tmp/GreenRADIUS_xxxx_Update.zip -d /tmp/
(Note: For this step and subsequent steps with "GreenRADIUS_xxxx_Update.zip", replace "xxxx" with the appropriate version number of the GreenRADIUS update package.) - Run
sudo tar -xvzf /tmp/GreenRADIUS_xxxx_Update/images.tgz -C /tmp/
- Run
sudo tar -xvzf /tmp/GreenRADIUS_xxxx_Update/others.tgz -C /tmp/
- Run
sudo cp /tmp/others/docker-compose.yml /home/gradmin/grs-podman-compose/
- Run
sudo cp /tmp/others/podman-compose.override.yml /home/gradmin/grs-podman-compose/
- Run
sudo mkdir -p /opt/grs/scripts
- Run
sudo ls -lart /tmp/others/vm_incron_scripts_podman/
- Copy all the files listed using the previous instruction to
/opt/grs/scripts/
using the following command:sudo cp /tmp/others/vm_incron_scripts_podman/<filename> /opt/grs/scripts
- Run
cd /opt/grs/scripts && sudo chown root:root *.sh && sudo chmod 511 freeradius_restart.sh get_host_info.sh incron_script.sh openldap_cmd_template_3.sh openldap_restart.sh openldap_update_ca_certificates.sh rsyslog_restart.sh && cd -
- Run
sudo bash -c "echo 'gradmin ALL=(root) NOPASSWD:/opt/grs/scripts/get_host_info.sh , /opt/grs/scripts/incron_script.sh , /opt/grs/scripts/rsyslog_restart.sh , /opt/grs/scripts/freeradius_restart.sh , /opt/grs/scripts/openldap_restart.sh , /opt/grs/scripts/openldap_update_ca_certificates.sh , /opt/grs/scripts/openldap_cmd_template_3.sh' > /etc/sudoers.d/grs"
- Run
sudo mkdir -p /opt/grs/host-comm/request
- Run
sudo mkdir -p /opt/grs/host-comm/response
- Run
sudo chown -R gradmin:gradmin /opt/grs/host-comm
- Run
sudo bash -c "echo 'gradmin' > /etc/incron.allow"
- Run
sudo bash -c "echo '/opt/grs/host-comm/request IN_CLOSE_WRITE sudo /opt/grs/scripts/incron_script.sh \$#' > /var/spool/incron/gradmin"
- Run
sudo systemctl enable incrond
- Run
sudo service incrond restart
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_init_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_main_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_openldap_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_postgres_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_rsyslog_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_freeradius_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_grs_auth_app_image
- Run
sudo chmod -R 750 /home/gradmin
- Run
sudo chown -R gradmin:gradmin /home/gradmin
- Run
sudo timedatectl set-timezone UTC
- Run
sudo cp /tmp/others/scripts/get_system_timezone.sh /opt/grs/scripts/
- Run
sudo sh +x /opt/grs/scripts/get_system_timezone.sh
- Run
sudo sh +x /tmp/others/scripts/prerequisite_for_getting_system_timezone.sh
- Run
cd /home/gradmin/grs-podman-compose
- Run
sudo podman-compose -f docker-compose.yml -f podman-compose.override.yml up -d
- Run
sudo podman exec -it GRS-POSTGRES bash -c "chown -R root:postgres /opt/grs/greenradius/certificates/postgres/server"
- Run
sudo podman-compose stop
. Wait or run the command multiple times to ensure that all containers have actually stopped. - Run
sudo podman-compose start
- Verify that the GreenRADIUS instance is accessible via the web. You should be able to
visit
https://<IP_address_of_GreenRADIUS>/admin
in your browser to access the GreenRADIUS web admin interface.
Note: Whenever the timezone on the server will be changed, the server will have to be rebooted for the timezone to be reflected in the containers
Enabling auto-start of GreenRADIUS containers on boot
- Run
sudo touch /tmp/grs-podman-compose-app.service
- Edit the
/tmp/grs-podman-compose-app.service
file in your editor of choice. - Paste in the following:
# /etc/systemd/system/grs-podman-compose-app.service
[Unit]
Description=Podman Compose Application Service
Requires=podman.service
After=podman.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/gradmin/grs-podman-compose
ExecStart=/usr/bin/podman-compose up -d
ExecStop=/usr/bin/podman-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
- Run
sudo cp /tmp/grs-podman-compose-app.service /etc/systemd/system/
- Run
sudo systemctl enable grs-podman-compose-app
Applying Updates to Your GreenRADIUS Instance
- Run
cd /home/gradmin/grs-podman-compose
- Run
sudo podman-compose down
- Copy the latest update package for GreenRADIUS into the
/tmp/
directory - Run
sudo unzip /tmp/GreenRADIUS_xxxx_Update.zip -d /tmp/
(where "xxxx" is the version number of the GreenRADIUS update package) - Run
sudo tar -xvzf /tmp/GreenRADIUS_xxxx_Update/images.tgz -C /tmp/
- Run
sudo tar -xvzf /tmp/GreenRADIUS_xxxx_Update/others.tgz -C /tmp/
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_init_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_main_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_openldap_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_postgres_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_rsyslog_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_freeradius_image
- Run
sudo podman load -i /tmp/images/greenradius_xxxx_grs_auth_app_image
- Edit
/home/gradmin/grs-podman-compose/docker-compose.yml
and replace every occurrence of the current version number with the version for your latest version of GreenRADIUS (e.g.5122
for v5.1.2.2) - Run
cd /home/gradmin/grs-podman-compose
- Run
sudo podman-compose -f docker-compose.yml -f podman-compose.override.yml up -d
- Confirm that the latest GreenRADIUS version is accessible via your browser at the same URL as before. On future startups, you will need to run
sudo podman-compose -f docker-compose.yml -f podman-compose.override.yml up -d
from the grs-podman-compose directory, as shown above, to launch the containers.
Updated 2024-07-31
© 2024 Green Rocket Security Inc. All rights reserved.
© 2024 Green Rocket Security Inc. All rights reserved.