Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SEAPATH follows the applicable cybersecurity guidelines defined by the ANSSI in the ANSSI-BP-028028v2.0 document. Several mechanisms have been taken into account in order considered to guarantee system’s the system security:

  • System hardening
  • Disk encryption
  • Secrets storage and protection
  • Process isolation
  • Privileges management policy
  • Connection encryption
  • User authentication process

Yocto Project

The Yocto version of SEAPATH follows an earlier version of the ANSSI-BP-028 document: ANSSI-BP-028 v1.2.

The compatibility matrix can be found after the build in build/security/traceability-matrix_seapath-guest-efi-image_ANSSINT28.adoc.

TODO: Write an explanation on the current state of each requirements on Yocto. This should be automatically done when merging the cukinia test of Yocto and Debian.

Debian

The Debian version of SEAPATH follows the version 2 of the document : ANSSI-BP-028 v2 

Below are two detailed lists of all recommendations, their current state on SEAPATH Yocto and Debian and a small explanation of the work done or to be done.

  • Done: SEAPATH complies with this requirement. Tests are run with cukinia to ensure that future development don't break this compliance. (Some recommendations are done, but no tests exist for them. When it is so, it is explicitly written in the table below.)
  • Not Done: SEAPATH doesn't comply with this requirement. A small description of the work to do is given.
  • Not applicable: This requirement has no sense to be applied on SEAPATH.
  • User applicable: This requirement cannot be fulfilled by SEAPATH and must be ensured by the end user/SEAPATH integrator.
  • Partially done: This requirement is not done in SEAPATH. Either only specific parts of the requirement are done and tested, or the requirement is not properly tested for now.

Yocto Project

A compliance A compliance matrix listing all the tests done on SEAPATH and their relation to the requirements recommendations is available at the end of each test report on the CI. You can find weekly test reports here: https://github.com/seapath/ci/tree/reports-PRmain/docs/reports/PR-main

Below is a detailed list of all requirements, their current state on SEAPATH and a small explanation on the work done or to be done.

...


 SubjectLevelExplanationsState
R1Choosing and configuring the hardwareMIEThe hardware chosen to run SEAPATH must comply with https://cyber.gouv.fr/publications/recommandations-de-configuration-materielle-de-postes-clients-et-serveurs-x86
Note that all modern x86 machines are already compatible. The ANSSI has not released a similar Document for ARM machines.
Some tests exist for fallback, but many configurations must be done by the end user.
User applicable
R2Configuring the BIOS/UEFIMIThe BIOS must be configured according to the document https://cyber.gouv.fr/publications/recommandations-de-configuration-materielle-de-postes-clients-et-serveurs-x86User applicable
R3Activating the UEFI secure bootMISEAPATH is compatible with Secure Boot and support preload keys.User applicable
R4Replacing of preloaded keysMIEHYocto provides secure boot functions. It is up to the end user to enable them and provide their keys.
Proper documentation should be added to the wiki. TODO
User applicable
R5Configuring a password on the bootloaderMIGrub password can be configured at build time.
There is no test for that. TODO
Done
R6Protecting the kernel command line parameters and the initramfsMIEH We have made an implementation for the Dunfell version of Yocto. This implementation does not work on the Kirkstone version and should be updated.
Not Done
R7Activating the IOMMUMIETODO: add iommu=force in kernel parameter + add cukinia testNot Done
R8Configuring the memory optionsMISEAPATH does not implement every kernel parameters by default because it would degrade performance a lot. However, a test exists to check for any known vulnerability on the hardware that is running SEAPATH.
If a vulnerability is found, the end user must apply the related configuration manually.
This test is not launched on Yocto : TODO
Partially done
R9Configuring the kernel optionsMIThe kernel options are presentDone
R10Disabling kernel modules loadingMIEModule loading is disabled after bootDone
R11Configuration option of the Yama LSMMIThe kernel parameter security=yama is present.
The sysctl is configured to 2
Done
R12IPv4 configuration optionsMIIPV4 must comply to a certain list of sysctl configuration.
Some sysctl are natively enabled, but not all are tested correctly.
The rest of the sysctl must be activated by taking care of not breaking a SEAPATH feature. A reason must be explicitely given for the sysctl that cannot be activated.
TODO
Partially done
R13Disabling IPv6MIIPV6 can be disabled with one machine option in meta-seapath.
It is up to the user to choose if he needs it or not.
User applicable
R14File system configuration optionsMIThe recommended options are present on SEAPATH.Done
R15Compile options for memory managementMIEH

We have access to the kernel config.
These configs must be added and tested.

TODO

  • CONFIG_DEBUG_FS=y -> n
  • CONFIG_SCHED_STACK_END_CHECK=n -> y
  • CONFIG_SECURITY_DMESG_RESTRICT=n -> y
Not Done
R16Compile options for kernel data structureMIEH

We have access to the kernel config.
These configs must be added and tested.


TODO

  • CONFIG_DEBUG_CREDENTIALS=n -> y
  • CONFIG_DEBUG_NOTIFIERS=n -> y

  • CONFIG_DEBUG_LIST=n -> y

  • CONFIG_DEBUG_SG=n -> y

Not Done
R17Compile options for the memory allocatorMIEH

We have access to the kernel config.
These configs must be added and tested.
TODO

  • CONFIG_SLAB_MERGE_DEFAULT=y -> n


Not Done
R18Compile options for the management of kernel modulesMIEHWe have access to the kernel config.
These configs must be added and tested.
TODO
Not Done
R19Compile options for abnormal situationsMIEH

We have access to the kernel config.
These configs must be added and tested.
TODO

  • CONFIG_PANIC_ON_OOPS=n → y
  • CONFIG_PANIC_TIMEOUT =0 → -1
Not Done
R20Compile options for kernel security functionsMIEHThe recommended configs are present.
TODO : Add test
Done
R21Compile options for the compiler pluginsMIEHThe recommended configs are present.
TODO : Add test
Done
R22Compile options of the IP stackMIEHThe CONFIG_SYN_COOKIES option is set, but no test exists for it. TODO
The IPv6 can be disabled at build, but the kernel config is still present. This must be corrected TODO
Partially done
R23Compile options for various kernel behaviorsMIEHThe module disable kernel config is not present. We must verify that module loading is indeed mandatory. TODO
All other kernel configs are present, but no test exists for them. TODO
Partially done
R24Compile options for 32-bit architecturesMIEHThis recommendation targets 32-bit x86 machines. Currently, SEAPATH is not supported on such hardware.Not Applicable
R25Compile options for x86_64 bit architecturesMIEHWe have access to the kernel config.
These configs must be added and tested.
Only CONFIG_IA32_EMULATION is enabled. Check if we have to support 32-bit binaries.
TODO
Not Done
R26Compile options for ARM architecturesMIEHThis recommendation targets ARM based processor. Currently, SEAPATH is not supported on such hardware.Not Applicable
R27Compile options for ARM 64 bit architecturesMIEHThis recommendation targets ARM based processor. Currently, SEAPATH is not supported on such hardware.Not Applicable
R28Typical partitioningMI

Not all partitions are correctly separated.
The mount options must also be verified.

On SEAPATH Yocto the rootfs is mounted as read only, so there is some separation and mount which make no sense.

  • / should be mounted with nodev because we use a devtmpfs
  • /opt is empty, so no need to separate it
  • /srv is empty, so no need to separate it
  • /usr: due to the read-only, there is no need to separate /usr from /.
  • /home is an overlay
  • /var is not separate. As / root is mounted with ro option, it should be impossible to add executables or dev on it.

TODO

  • noexec to /tmp
  • hidepid=2 to /proc
  • noexec,nosuid to /dev (not explicit in R28 but coherent with it)
  • nodev,noexec,nosuid to /mnt/persistent, /var/lib/volatile, /home, /var/lib and /etc to respect /home and /var mount options
  • nodev to /

Add test to check there is no executable on /var.

Mount points tests must be added.

Partially done
R29Access restrictions on /bootMIE/boot is not mounted by default, but can be with Ansible for certain tasks.
TODO : Add test
TODO mount /boot when cukinia
Partially done
R30Removing the unused user accountsMThere are no unused accounts on SEAPATHDone
R31User password strengthM

The passwords used on SEAPATH must follow https://www.ssi.gouv.fr/mots-de-passe/
Additional passwords added by PAM software must also follow this recommendation.
Tests exist to ensure that the root password is randomized at each boot.

For local user, rules are defined in login.defs and tested inside common_security_tests.d/hardening.conf.

TODO

Use yescrypt instead of SHA512 for password hash

User applicable
R32Configuring a timeout on local user sessionsMIThe timeout for bash and ssh is set to 300sDone
R33Ensuring the imputability of administration actionsMI

Only sudo commands are logged.

TODO

Setup auditd as it is done on SEAPATH Debian

Not Done
R34Disabling the service accountsMINo additional accounts can be opened by a service on SEAPATH.Done
R35Uniqueness and exclusivity of service accountsMI

Some services are launched by the root user. We must create a user for these services.

Services which need to run as root:

  • agetty
  • dbus-daemon
  • systemd (init)
  • systemd-logind
  • dbus-daemon
  • systemd-journald
  • systemd-udevd

TODO

Root services to changed are:

  • ceph-crash
  • snmptrapd
  • libvirtd (difficult to run as a regular user)
  • syslog-ng
  • timemaster
  • chronyd
  • ptp4l
  • phc2sys
  • irqbalance
Not Done
R36Changing the default value of UMASKMIEUMASK is set to the desired value.Done
R37Using Mandatory Access Control featuresMIENo MAC feature is implemented on SEAPATH Yocto.Not Done
R38Creating a group dedicated to the use of sudoMIEThe group "privileged" is used for sudo usage.
If PAM authentication is implemented by the end user, privileged users must also use this group.
Done
R39Sudo configuration guidelinesMIAll desired options are implemented and tested.Done
R40Using unprivileged users as target for sudo commandsMIOld groups and users are still present in the sudoer files.
The related tests don’t work.
Not Done
R41Limiting the number of commands requiring the use of the EXEC directiveMIEOld groups and users are still present in the sudoer files.
The related tests don’t work.
Not Done
R42Banishing the negations in sudo policieMIOld groups and users are still present in the sudoer files.
The related tests don’t work.
Not Done
R43Defining the arguments in sudo specificationsMIOld groups and users are still present in the sudoer files.
The related tests don’t work.
Not Done
R44Editing files securely with sudoMINo text editor must be launched with sudo privileges.
To modify the sudoers rules, the visudo command is installed on SEAPATH.
Note that sudo rules should not be changed after the initial configuration of SEAPATH
User applicable
R45Activating AppArmor security profilesMIEAppArmor is not installed on SEAPATH YoctoNot Done
R46Activating SELinux with the targeted policyMIEHSELinux is not installed on SEAPATH YoctoNot Done
R47Containing the unprivileged interactive usersMIEHSELinux is not installed on SEAPATH YoctoNot Done
R48Setting up the SELinux variablesMIEHSELinux is not installed on SEAPATH YoctoNot Done
R49Uninstalling SELinux Policy Debugging ToolsMIEHSELinux is not installed on SEAPATH YoctoNot Done
R50Limiting the rights to access sensitive files and directoriesMIAll sensitive files have the proper permissions.
One test exists for all of those sensitive files
Done
R51Changing the secrets and access rights as soon as possibleMIESEAPATH is meant to be entirely functional once the installation and configuration are completed.
TODO : Is it possible to write a test for that?
Done
R52Securing access for named sockets and pipesMISome tests exist for the open-vswitch user.
The necessary packages for a complete test are not installed (sockstat).
We must implement a mechanism to get these packages only for the test (binary, docker, systemd-sysext ?)
Partially done
R53Avoiding files or directories without a known user or groupMAll files and directories have a known user and group except `/var/spool/mail`.
It must be corrected and a test must be added.
TODO
Not Done
R54Setting the sticky bit on the writable directoriesMThe sticky bit is set for all writable directoriesDone
R55Dedicating temporary directories to usersMIThe variable TMPDIR must be set and a test must be added for that.
TODO
Not Done
R56Avoiding using executables with setuid and setgid rightsMAll executables that have setuid/setgid enabled are owned by root (Refer to R57)
No test exists for that. TODO
Partially done
R57Avoiding using executables with setuid root and setgid root rightsMIEWe have access to all package builds and configurations. Except for the sudo command, we should replace every binary that uses setuid/setgid either by a capability or by a sudo call.Not Done
R58Installing only strictly necessary packagesMAll installed packages are listed when building the Yocto distribution. SEAPATH basic images comes with only the necessary packages, the end user can add some if he needs them.
We cannot write a test for that.
Done
R59Using only official package repositoriesMSEAPATH uses official meta recipes and thus official repositories.Done
R60Using hardened package repositoriesMIE

Yocto doesn’t have hardened package repositories, but we have compiled binaries with hardening options.

The hardening compiled flags are tested just after finishing the build if the SEAPATH option SEAPATH_SECCOMPILE_MANIFEST_SKIP is set to 0 (or not set) in seapath.conf.

Not Applicable
R61Updating regularly the systemMSEAPATH provides an A/B update mechanism with atomic changes and automatic rollback in case of failure. Refer to the Ansible repository for more information.
https://github.com/seapath/ansible?tab=readme-ov-file#update-a-machine
User applicable
R62Disabling the non-necessary servicesMAll installed services are listed when building the Yocto distribution. SEAPATH basic images comes with only the necessary services, the end user can add some if he needs them.
We cannot write a test for that.
Done
R63Disabling non-essential features of servicesMIAll installed services features are listed when building the Yocto distribution. SEAPATH basic images comes with only necessary services features, the end user can add some if he needs them.
We cannot write a test for that.
Done
R64Configuring the privileges of the servicesMIECurrently, only libvirtd and syslog-ng are configured.Partially done
R65Partitioning the servicesMIE

Many services are already hardened, but not all.
A complete list of the services and their hardening must be established in order to harden the services that can be and justify why others cannot.
No tests exist.
TODO : Backport tests from Debian

Not Done
R66Hardening the partitioning componentsMIEH

This means hardening KVM/QEMU and SystemD.
QEMU is already hardened by SystemD, but the recommendation does not give any limits or advice on its application.
Note : Deploying a VM on an isolated core drastically increases the hardening of KVM/QEMU.

Partially done
R67Secure remote authentication with PAMMIYocto provides multiple LDAP configurations and packages. It is up to the end user to implement its authentication solution on SEAPATHUser applicable
R68Protecting the stored passwordsM

The password storage must follow https://www.ssi.gouv.fr/mots-de-passe/.
Tests verify that the initial and generated passwords comply.

TODO

We use sha512, but we can change to use yescrypt (not required but recommended)

Done
R69Securing access to remote user databasesMISame as R67User applicable
R70Separating the system accounts and directory administratorMI

SEAPATH do not have any directory user, it is the responsibility of the end user to implement this point.

User applicable
R71Implementing a logging systemMIESEAPATH uses journald for local logs and syslog-ng for remote logs.
These systems don’t fully comply with the recommendation.
Partially done
R72Implementing dedicated service activity journalsMIESEAPATH uses systemd that complies with this requirement.Done
R73Logging the system activity with auditdMIEThe previous version of the BP-28 proposed to disabled auditd or configure it. The choice was made to disable it.
To fulfill this requirement, we must :
- Remove old auditd tests and command line parameters.
- install and configure auditd (backport Debian configuration)
- Test that it doesn’t affect RT capabilities
- Add new cukinia tests (backport from Debian)
Not Done
R74Hardening the local messaging serviceMISEAPATH doesn’t have any messaging servicesNot Applicable
R75Configuring aliases for service accountsMISEAPATH doesn’t have any messaging servicesNot Applicable
R76Sealing and checking files integrityMIEH

We must install intrusion monitoring tools

TODO

setup dm-verity

Not Done
R77Protecting the sealing databaseMIEH

The sealing database is generally protected by intrusion monitoring tools.

It is built in if we use dm-verity

It can also be monitored by an external TPM

Not Done
R78Partitioning the network servicesMIE

It is the goal of SEAPATH to isolate services on virtual machines (or containers).
However, some services remain not isolated and it will be very complicated to isolate some (eg : snmp, ceph, ssh ...)

Not Done
R79Hardening and monitoring the exposed servicesMINetwork services are already hardened by systemD. However, this recommendation doesn’t specify a limit to the hardening.
A list of the hardening measures of systemd must be done and made available to SEAPATH integrators
Partially done
R80Minimizing the attack surface of network servicesMLike in R52, some packages necessary for a complete test are not installed (sockstat/ss).
We must implement a mechanism to get these packages only for the test (binary, docker, systemd-sysext ?)
Not Done

Debian

...

A compliance matrix listing all the tests done on SEAPATH and their relation to the recommendations is available at the end of each test report on the CI. You can find weekly test reports here: https://github.com/seapath/ci/tree/reports-PRdebian-main/docs/reports/PR-debian-main



 SubjectLevelExplanationsState
R1Choosing and configuring the hardwareMIEThe hardware chosen to run SEAPATH must comply with https://cyber.gouv.fr/publications/recommandations-de-configuration-materielle-de-postes-clients-et-serveurs-x86
Note that all modern x86 machines are already compatible. The ANSSI has not released a similar Document for ARM machines.
User applicable
R2Configuring the BIOS/UEFIMIThe BIOS must be configured according to the document https://cyber.gouv.fr/publications/recommandations-de-configuration-materielle-de-postes-clients-et-serveurs-x86User applicable
R3Activating the UEFI secure bootMISEAPATH is compatible with Secure Boot and support preload keys.User applicable
R4Replacing of preloaded keysMIEHWe must replace the preload keys with ours. It implies :
- Generating a set of UEFI keys and storing them in a secure location, ideally a Hardware Security Module (HSM)
- Signing the kernel, Grub, all kernel modules and certain firmware files
- Integrate these newly signed files into build_debian_iso
- Sign all future kernel, Grub and kernel module updates
- Own APT repositories to store these new signed update files
Not Done
R5Configuring a password on the bootloaderMIGrub password can be configured in ansible inventory.Done
R6Protecting the kernel command line parameters and the initramfsMIEHCurrently, neither the kernel nor the initramfs are protected by secure boot.Not Done
R7Activating the IOMMUMIEIOMMU is currenctly activated in pass-through mode. It must be activated in force mode.
Non-regression tests must be performed to ensure that this is compatible with SEAPATH features
Not Done
R8Configuring the memory optionsMISEAPATH does not activate every kernel parameters by default because it would degrade performance a lot. However a test exists to check for any known vulnerability on the hardware that is running SEAPATH.
If a vulnerability is found, the end user must apply the related configuration manually.
Done
R9Configuring the kernel optionsMIThe kernel options are presentDone
R10Disabling kernel modules loadingMIEThe goal is to deactivate module loading once all desired modules are loaded.
The de-activation is simple to do, but we must think of a policy to detect that all desired modules are loaded.
Not Done
R11Configuration option of the Yama LSMMIThe kernel parameter security=yama is present.
The sysctl is configured to 2
Done
R12IPv4 configuration optionsMIIPV4 must comply to a certain list of sysctl configuration.
Some sysctl are natively enabled, but not all are tested correctly.
The rest of the sysctl must be activated by taking care of not breaking a SEAPATH feature. A reason must be explicitely given for the sysctl that cannot be activated.
Partially done
R13Disabling IPv6MIIPV6 is not used on SEAPATH. It is disabled in the kernel parameters.Done
R14File system configuration optionsMIThe recommended options are present on SEAPATH.Done
R15Compile options for memory managementMIEHWe have to recompile our own kernel. This implies:
- Following upstream corrections
- Managing our own UEFI keys
- Recompile and sign all Linux modules
- Manage our own APT repositories
This is a huge work to do, considering R4 already done.
Not Done
R16Compile options for kernel data structureMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R17Compile options for the memory allocatorMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R18Compile options for the management of kernel modulesMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R19Compile options for abnormal situationsMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R20Compile options for kernel security functionsMIEHThe Debian kernel used by SEAPATH is already compiled with these options.
TODO : Add a test for this
Done
R21Compile options for the compiler pluginsMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R22Compile options of the IP stackMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R23Compile options for various kernel behaviorsMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R24Compile options for 32 bit architecturesMIEHThis recommendation targets 32 bits x86 machines. Currently, SEAPATH is not supported on such hardware.Not Applicable
R25Compile options for x86_64 bit architecturesMIEHThis recommendation implies recompiling the kernel. The work is the same as R15.Not Done
R26Compile options for ARM architecturesMIEHThis recommendation targets ARM based processor. Currently, SEAPATH is not supported on such hardware.Not Applicable
R27Compile options for ARM 64 bit architecturesMIEHThis recommendation targets ARM based processor. Currently, SEAPATH is not supported on such hardware.Not Applicable
R28Typical partitioningMICurrently, only /boot and / are separated.Not Done
R29Access restrictions on /bootMIE/boot is restricted to root, but is always mounted.
To fulfill this requirement, we must develop a mechanism that mount /boot only when needed and unmount it after that.
Note that cukinia launch tests on /boot and will need it to be mounted.
Not Done
R30Removing the unused user accountsMThere are no unused accounts on SEAPATHDone
R31User password strengthMThe passwords used on SEAPATH must follow https://www.ssi.gouv.fr/mots-de-passe/
The only password used on SEAPATH is define during the build of the Debian ISO.
Additionnal passwords added by PAM software must also follow this recommendation.
User applicable
R32Configuring a timeout on local user sessionsMIThe bash timeout is set to 300s.Done
R33Ensuring the imputability of administration actionsMIOnly sudo commands are logged.Not Done
R34Disabling the service accountsMINo additionnal accounts can be opened by a service on SEAPATH.Done
R35Uniqueness and exclusivity of service accountsMISome services are lauched by the root user, we must create a user for these services.Not Done
R36Changing the default value of UMASKMIEUMASK is set to the desired value.Done
R37Using Mandatory Access Control featuresMIESEAPATH uses Apparmor, the MAC solution of Debian.Done
R38Creating a group dedicated to the use of sudoMIEThe group « privileged » is used for sudo usage.
If a PAM authentification is implemented by the end user, privileged users must also use this group.
Done
R39Sudo configuration guidelinesMIAll desired options are implemented and tested.Done
R40Using unprivileged users as target for sudo commandsMINo command targets root.Done
R41Limiting the number of commands requiring the use of the EXEC directiveMIE

Commands allowed to run with sudo should not used the EXEC directive.
The are two exceptions currently in SEAPATH:

  • Ansible user needs to spawn shells with root privilege.
  • Admin user can run all commands as root

There is currently no specific policy to handle the ansible user after the initial configuration, but the end user could think about removing or deactivating the user when it is not needed.
The admin user should probably be split in many users regarding what they are supposed to do (observation only, handle VM, handle updates ...) TODO

Done
R42Banishing the negations in sudo policieMINo negation is present in the sudoer filesDone
R43Defining the arguments in sudo specificationsMI

When possible, all commands allowed to run with sudo must define specific arguments.
There are two exceptions currently in SEAPATH:

  • Ansible user needs to access a shell with root privilege.
  • Admin user can run all commands as root

The remarks are the same for R41. TODO

Done
R44Editing files securely with sudoMINo text editor must be launched with sudo privileges.
To modify the sudoers rules, the visudo command is installed on SEAPATH.
Note that sudo rules should not be changed after the initial configuration of SEAPATH
User applicable
R45Activating AppArmor security profilesMIEAll AppArmor profiles are present, but no test exists for it.Done
R46Activating SELinux with the targeted policyMIEHDebian uses AppArmor instead of SELinuxNot Applicable
R47Containing the unprivileged interactive usersMIEHDebian uses AppArmor instead of SELinuxNot Applicable
R48Setting up the SELinux variablesMIEHDebian uses AppArmor instead of SELinuxNot Applicable
R49Uninstalling SELinux Policy Debugging ToolsMIEHDebian uses AppArmor instead of SELinuxNot Applicable
R50Limiting the rights to access sensitive files and directoriesMIThis principle is followed natively by Debian.
TODO : Write a list of sensitive directories and test that they have the correct access rights.
Done
R51Changing the secrets and access rights as soon as possibleMIESEAPATH is meant to be entirely functional once the installation and configuration is completed.
TODO : Is it possible to write a test for that ?
Done
R52Securing access for named sockets and pipesMISEAPATH comply with this recommendation, but the test is difficult to write.
TODO : write a test for that
Done
R53Avoiding files or directories without a known user or groupMAll files and directory have a known user and groupDone
R54Setting the sticky bit on the writable directoriesMThe sticky bit is set for all writable directoriesDone
R55Dedicating temporary directories to usersMIAll users and services have a dedicated temporary directory.Done
R56Avoiding using executables with setuid and setgid rightsMNo executables added by the SEAPATH project have the setuid or setgid rights. This recommendation is not applicable to Debian native executables.Done
R57Avoiding using executables with setuid root and setgid root rightsMIESome executables still have root setuid and setgid.Not Done
R58Installing only strictly necessary packagesMA list of necessary packages is described in the testing process. A test verifies that no additionnal packages are installed.Done
R59Using only official package repositoriesMOnly Debian repository are used by default.
The end user can add its own mirror during the Ansible configuration.
Done
R60Using hardened package repositoriesMIEDebian don't use hardened packages repositoriesNot Applicable
R61Updating regularly the systemMSEAPATH provides an update system. On Debian, apt updates are used.
Refer to this page for more information https://wiki.lfenergy.org/display/SEAP/IT+tooling
User applicable
R62Disabling the non-necessary servicesMA list of necessary services is described in the testing process. A test verify that no additionnal services are started.Done
R63Disabling non-essential features of servicesMIWe must take the list of services done in R62 and limit the functionnalities of all services to the minimum required.Not Done
R64Configuring the privileges of the servicesMIEA complete list of the services and their privileges must be established in order to restrict the services that can be and justify why others cannot.Partially done
R65Partitioning the servicesMIEMany services are already hardened, but not all.
A complete list of the services and their hardening must be established in order to harden the services that can be and justify why others cannot.
Partially done
R66Hardening the partitioning componentsMIEHThis means hardening docker, KVM/QEMU and SystemD.
QEMU is already hardened by SystemD, but the recommendation does not give any limits or advice on its application.
Docker is not hardened.
Not Done
R67Secure remote authentication with PAMMIThe Kerberos protocol can be installed on SEAPATH during the build of the Debian ISO.
The choice and configuration of the software used to handle remote login must be made by the end user.
User applicable
R68Protecting the stored passwordsMThe password storage must follow https://www.ssi.gouv.fr/mots-de-passe/.
Tests verify that the initial and generated passwords complies.
Done
R69Securing access to remote user databasesMISimilar to R67, this part must be configured by the end user after selecting the remote login software.User applicable
R70Separating the system accounts and directory administratorMIThe selection of the users and their rights is highly dependent of the final use case of SEAPATH.
Additionnal user can be created in ansible debian role. Their rights must be configured in the sudoers file.
User applicable
R71Implementing a logging systemMIESEAPATH uses journald for local logs and syslog-ng for remote logs.
These systems doesn’t fully comply with the recommendation.
Partially done
R72Implementing dedicated service activity journalsMIESEAPATH uses systemd that complies with this requirement.Done
R73Logging the system activity with auditdMIEAuditd is installed and configured.Done
R74Hardening the local messaging serviceMISEAPATH doesn’t have any messaging servicesNot Applicable
R75Configuring aliases for service accountsMISEAPATH doesn’t have any messaging servicesNot Applicable
R76Sealing and checking files integrityMIEHWe must install intrusion monitoring toolsNot Done
R77Protecting the sealing databaseMIEHThe sealing database is generally protected by intrusion monitoring tools.Not Done
R78Partitioning the network servicesMIEIt is the goal of SEAPATH to isolate services on virtual machines (or containers).
However, some services remain not isolated and it will be very complicated to isolate some (eg : snmp, ceph, ssh ...)
Not Done
R79Hardening and monitoring the exposed servicesMINetwork services are already hardened by systemD. However, this recommendation doesn’t precise specify a limit to the hardening.
A list of the hardening measure of systemd must be done and made available to SEAPATH integrators
Partially done
R80Minimizing the attack surface of network servicesMAll network sockets listen on a dedicated interface.
The only exception is conntrackd, that doesn't have such a feature and always listens on all interfaces.
Done