This configuration helps you to install the socks server with SYNwall (SYNgate). Packer is configured to create a virtual machine based on the CentOS/RedHat distribution. The VM will have the Dante socks server and SYNgate module installed and running on it.
The provided configuration is a template you can work on, please read the Packer documentation
Here we explain some of the main configuration options.
This is the main configuration of Packer. This is in JSON format.
This configuration is a template, some values are taken from the variables file, anything in double braces {{}}
is interpreted by the Packer templating engine. The {{ user '' }}
values are taken from the variables file.
We use a VirtualBox builder, you need VB to be installed on your local system.
type
: here you can we we use a VirtualBox builder to create an ISOname
: name of the builderboot_command
: commands to type when the virtual machine is first booted, here we tell the system where to find the kickstart configuration file for the OS installation/configurationboot_wait
: time to wait after booting the initial virtual machine before typing the boot_commanddisk_size
: the size, in megabytes, of the hard disk to create for the VMguest_os_type
: to view all available values for this run VBoxManage list ostypesheadless
: change this to true if you don't want the VM window to openhttp_directory
: the files in this directory will be available over HTTP that will be requestable from the virtual machineiso_urls
: the ISO to downloadiso_checksum_type
: algorithm to be used when computing the checksumiso_checksum
: the checksum for the ISO filessh_username
: the username to connect to SSH withssh_timeout
: the time to wait for SSH to become availableshutdown_command
: command to use to gracefully shut down the machine once all the provisioning is donevirtualbox_version_file
: path within the virtual machine to upload a file that contains the VirtualBox version that was used to create the machineformat
: ovf or ovahard_drive_interface
: type of controller that the primary hard drive is attached tovm_name
: this is the name of the OVF file for the new virtual machinevboxmanage
: custom VBoxManage commands to execute in order to further customize the virtual machine being created, here we set the value for the memory and the number of CPUs
We use Ansible to configure the machine image after booting.
For the Ansible configuration, please look at ./ansible/README.md
.
You should configure this file according to your needs. The meaning of each value is already explained above.
This is the method we use to automate the installation of the RedHat/CentOS system.
In the http
folder you can find the kickstart file.
This file is not a template and can'0t be modified by Packer, you have to configure it directly.
Here you should configure all you need for your system. The installation won't be graphical.
For doubts, please read the docs.
We pass through the main points:
-
Layout of the keyboard
keyboard --vckeymap=us --xlayouts='us'
-
Language of the system
lang en_US.UTF-8
-
Perform the installation in text mode
text
-
Network insformation
network --bootproto=dhcp --device=enp0s3 --ipv6=auto --activate network --hostname=localhost.localdomain
-
Root password.
You can remove the
--iscrypted
flag and write it in plaintextTo create an encrypted password run
openssl passwd -1 “mypassword”
. Here we usesynwall
as passwordrootpw --iscrypted $1$2/zeliDs$8qd0tLsBBJtPWQITtpXhx0
-
We enable the NTP
services --enabled="chronyd"
-
Timezone information
timezone America/New_York --isUtc
-
Bootloader configuration. Specifies how the boot loader should be installed
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
-
Partition clearing information
clearpart --none --initlabel
-
Disk partitioning information. We use LVM to create the partitioning and an ext4 FS. Here we create a
/synwall
encrypted partition. Here we set a passphrase for this encrypted partition. If you prefer to not have the password in a file, remove the--passphrase
option and the installation will prompt you to insert a password-
The size of the partition shouldn't exceed the disk size you set with Packer
-
In
part
andlogvol
the--size
is in MiB -
In
volgroup
the--pesize
is in KiB -
We do not mount the encrypted filesystem at boot. This is because Packer needs to run an Ansible provisioner after reboot, and we can't unlock the partition. We do mount it and unlock it in the Ansible provisioner.
part /boot --fstype="ext4" --ondisk=sda --size=1024 part pv.01 --fstype="lvmpv" --ondisk=sda --size=1020 part pv.02 --fstype="lvmpv" --ondisk=sda --size=8195 volgroup centos --pesize=4096 pv.02 volgroup modprobe --pesize=4096 pv.01 logvol / --fstype="ext4" --size=7168 --name=root --vgname=centos logvol swap --fstype="swap" --size=1023 --name=swap --vgname=centos logvol /etc/modprobe --fstype="ext4" --size=1016 --encrypted --name=modprobe --vgname=modprobe --passphrase=synwall --fsoptions="noauto"
-
-
Package section. Here we describe the software packages to be installed.
%packages @^minimal @core chrony kexec-tools %end
-
Configure the kdump kernel crash dumping mechanism
%addon com_redhat_kdump --enable --reserve-mb='auto' %end
-
Additional Anaconda installation options. Here we set the default password policy for the users
%anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
-
Post installation script.
Here we install Ansible & Git (needed by Packer for the local provisioner) and update the system. In
/root/ks-post.log
you can find a log of the operation performed, use it to debug eventual errors.Then we add the
noauto
option in the/etc/crypttab
file, so the encrypted partition won't be automatically unlocked at boot (which prompts the user for a password). This will be changed in the Ansible provisioner.%post --log=/root/ks-post.log yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y sudo yum install ansible -y yum install git -y yum update -y yum clean all sed -e $LINE's/$/ noauto/' -i /etc/crypttab %end
-
Reboot the VM after the installation is successfully completed
reboot
To run Packer use this command packer build -var-file=variables.json packer_config.json
Run packer build -h
to see all the possible options.
To debug errors you can use the -on-error=ask
.
You'll have an ISO with Dante socks and SYNwall installed on it.
Some values are configured in more than one file and should match, here we go through them:
-
Network interface
The name of the network interface should match in the kickstart file and in the Ansible provisioner configuration, it will be later used to configure Dante socks.
-
root
passwordIt should match in the kickstart file and in the Packer variables file, we use
root
user to ssh into the VM. -
Disk size
The disk size in the partition configuration in the kickstart file should not exceed the size assigned to the machine in the Packer variables file.
-
LUKS partition
The values of the volume group name, the logical volume name, the encryption password and the mount point, should match between the kickstart file and the Ansible provisioner configuration.
GPL-3.0