diff --git a/build/build-image.sh b/build/build-image.sh index ce297f8..64ec6f2 100755 --- a/build/build-image.sh +++ b/build/build-image.sh @@ -78,11 +78,6 @@ mkdir -p "$DISTPATH"/usr/share/halogenos mkdir -p "$DISTPATH"/usr/share/halogenos/keys mkdir -p "$DISTPATH"/usr/share/halogenos/bin -# Fix directory locations -for dir in bin sbin etc lib; do - mv "$DISTPATH"/"$dir" "$DISTPATH"/usr/"$dir" -done - cp -r /build/include-image/* "$DISTPATH"/ echo "IMAGE_VERSION=$VERSION" >> "$DISTPATH"/usr/lib/os-release @@ -126,19 +121,12 @@ rm "$DISTPATH"/usr/etc/gentoo-release rm -rf "$DISTPATH"/usr/lib/gentoo # Create images dir and img files -mkdir -p /build/images -cp "$DISTPATH"/usr/share/halogenos/release.meta /build/images/ -dd if=/dev/zero of=/build/images/usr.img bs=1 count=0 seek=2G -mkfs.btrfs /build/images/usr.img -dd if=/dev/zero of=/build/images/verity.img bs=1 count=0 seek=2000M +mkdir -p /build/images/"$VERSION" +cp "$DISTPATH"/usr/share/halogenos/release.meta /build/images/"$VERSION" +mksquashfs "$DISTPATH" /build/images/"$VERSION"/sys.sfs +SYSHASH=$(sha512sum /build/images/"$VERSION"/sys.sfs) +echo "$SYSHASH" > /build/images/"$VERSION"/sys.sfs.sha512 -# Install squashfs filesystem onto usr img -mkdir -p /mnt/usr -mount /build/images/usr.img /mnt/usr -mksquashfs "$DISTPATH" /mnt/usr/usr.sfs -sync /mnt/usr/usr.sfs -umount /mnt/usr +# Build kernel UKI with syshash embedded -# Build verity - -tar -czf "$VERSION".tar.gz /build/images/ \ No newline at end of file +tar -czf "$VERSION".tar.gz /build/images/"$VERSION" \ No newline at end of file diff --git a/build/include-host/etc/portage/sets/halogenos-host b/build/include-host/etc/portage/sets/halogenos-host index 69ed93e..87f92c5 100644 --- a/build/include-host/etc/portage/sets/halogenos-host +++ b/build/include-host/etc/portage/sets/halogenos-host @@ -1,5 +1,4 @@ =dev-build/cmake-3.31.7-r1::gentoo app-portage/gentoolkit sys-apps/busybox -sys-fs/btrfs-progs sys-fs/squashfs-tools \ No newline at end of file diff --git a/build/include-image/usr/etc/login.defs b/build/include-image/usr/etc/login.defs new file mode 100644 index 0000000..5551bba --- /dev/null +++ b/build/include-image/usr/etc/login.defs @@ -0,0 +1,499 @@ +# +# /etc/login.defs - Configuration control definitions for the shadow package. +# +# $Id$ +# + +# +# Delay in seconds before being allowed another attempt after a login failure +# Note: When PAM is used, some modules may enforce a minimum delay (e.g. +# pam_unix(8) enforces a 2s delay) +# +FAIL_DELAY 3 + +# +# Enable logging and display of /var/log/faillog login(1) failure info. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login(1) failures are recorded. +# +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable logging and display of /var/log/lastlog login(1) time info. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#LASTLOG_ENAB yes + +# +# Limit the highest user ID number for which the lastlog entries should +# be updated. +# +# No LASTLOG_UID_MAX means that there is no user ID limit for writing +# lastlog entries. +# +#LASTLOG_UID_MAX + +# +# Enable checking and display of mailbox status upon login. +# +# Disable if the shell startup files already check for mail +# ("mailx -e" or equivalent). +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#MAIL_CHECK_ENAB yes + +# +# Enable additional checks upon password changes. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#OBSCURE_CHECKS_ENAB yes + +# +# Enable checking of time restrictions specified in /etc/porttime. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#PORTTIME_CHECKS_ENAB yes + +# +# Enable setting of ulimit, umask, and niceness from passwd(5) gecos field. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#QUOTAS_ENAB yes + +# +# Enable "syslog" logging of su(1) activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp(1) and sg(1). +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# from these devices. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#CONSOLE /etc/securetty +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# If defined, all su(1) activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, ":" delimited list of "message of the day" files to +# be displayed upon login. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#MOTD_FILE /etc/motd +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#MOTD_FILE /etc/motd:/usr/lib/news/news-motd + +# +# If defined, this file will be output before each login(1) prompt. +# +#ISSUE_FILE /etc/issue + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format similar to "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login(1) failures will be logged here in a utmp format. +# last(1), when invoked as lastb(1), will read /var/log/btmp, so... +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#FTMP_FILE /var/log/btmp + +# +# If defined, name of file whose presence will inhibit non-root +# logins. The content of this file should be a message indicating +# why logins are inhibited. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#NOLOGINS_FILE /etc/nologin + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then ps(1) will display the +# command as "-su". If not defined, then ps(1) will display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# *REQUIRED* +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define both, MAIL_DIR takes precedence. +# +MAIL_DIR /var/spool/mail +#MAIL_FILE .mail + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# If defined, either a TZ environment parameter spec or the +# fully-rooted pathname of a file containing such a spec. +# +#ENV_TZ TZ=CST6CDT +#ENV_TZ /etc/tzname + +# +# If defined, an HZ environment parameter spec. +# +# for Linux/x86 +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#ENV_HZ HZ=100 +# For Linux/Alpha... +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#ENV_HZ HZ=1024 + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin +ENV_PATH PATH=/bin:/usr/bin + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a write(1) program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP as the number of such group +# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and +# set TTYPERM to either 622 or 600. +# +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# ULIMIT Default "ulimit" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# The ULIMIT is used only if the system supports it. +# (now it works with setrlimit too; ulimit is in 512-byte units) +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +#ULIMIT 2097152 + +# Default initial "umask" value used by login(1) on non-PAM enabled systems. +# Default "umask" value for pam_umask(8) on PAM enabled systems. +# UMASK is also used by useradd(8) and newusers(8) to set the mode for new +# home directories if HOME_MODE is not set. +# 022 is the default value, but 027, or even 077, could be considered +# for increased privacy. There is no One True Answer here: each sysadmin +# must make up their mind. +UMASK 027 + +# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new +# home directories. +# If HOME_MODE is not set, the value of UMASK is used to create the mode. +#HOME_MODE 0700 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_MIN_LEN Minimum acceptable password length. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#PASS_MIN_LEN 5 +PASS_WARN_AGE 7 + +# +# If "yes", the user must be listed as a member of the first gid 0 group +# in /etc/group (called "root" on most Linux systems) to be able to "su" +# to uid 0 accounts. If the group doesn't exist or is empty, no one +# will be able to "su" to uid 0. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#SU_WHEEL_ONLY no + +# +# If compiled with cracklib support, sets the path to the dictionaries +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict + +# +# Min/max values for automatic uid selection in useradd(8) +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +SYS_UID_MIN 101 +SYS_UID_MAX 999 +# Extra per user uids +SUB_UID_MIN 100000 +SUB_UID_MAX 600100000 +SUB_UID_COUNT 65536 + +# +# Min/max values for automatic gid selection in groupadd(8) +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +SYS_GID_MIN 101 +SYS_GID_MAX 999 +# Extra per user group ids +SUB_GID_MIN 100000 +SUB_GID_MAX 600100000 +SUB_GID_COUNT 65536 + +# +# Max number of login(1) retries if password is bad +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login(1) +# +LOGIN_TIMEOUT 60 + +# +# Maximum number of attempts to change password if rejected (too easy) +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#PASS_CHANGE_TRIES 5 + +# +# Warn about weak passwords (but still allow them) if you are root. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#PASS_ALWAYS_WARN yes + +# +# Number of significant characters in the password for crypt(). +# Default is 8, don't change unless your crypt() is better. +# Ignored if MD5_CRYPT_ENAB set to "yes". +# +#PASS_MAX_LEN 8 + +# +# Require password before chfn(1)/chsh(1) can make any changes. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#CHFN_AUTH yes + +# +# Which fields may be changed by regular users using chfn(1) - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Password prompt (%s will be replaced by user name). +# +# XXX - it doesn't work correctly yet, for now leave it commented out +# to use the default which is just "Password: ". +#LOGIN_STRING "%s's Password: " + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# Note: If you use PAM, it is recommended to use a value consistent with +# the PAM modules configuration. +# +# This variable is deprecated. You should use ENCRYPT_METHOD instead. +# +#MD5_CRYPT_ENAB no + +# +# Only works if compiled with ENCRYPTMETHOD_SELECT defined: +# If set to MD5, MD5-based algorithm will be used for encrypting password +# If set to SHA256, SHA256-based algorithm will be used for encrypting password +# If set to SHA512, SHA512-based algorithm will be used for encrypting password +# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password +# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password +# If set to DES, DES-based algorithm will be used for encrypting password (default) +# MD5 and DES should not be used for new hashes, see crypt(5) for recommendations. +# Overrides the MD5_CRYPT_ENAB option +# +# Note: If you use PAM, it is recommended to use a value consistent with +# the PAM modules configuration. +# +ENCRYPT_METHOD SHA512 + +# +# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute-force the password. +# However, more CPU resources will be needed to authenticate users if +# this value is increased. +# +# If not specified, the libc will choose the default number of rounds (5000), +# which is orders of magnitude too low for modern hardware. +# The values must be within the 1000-999999999 range. +# If only one of the MIN or MAX values is set, then this value will be used. +# If MIN > MAX, the highest value will be used. +# +#SHA_CRYPT_MIN_ROUNDS 5000 +#SHA_CRYPT_MAX_ROUNDS 5000 + +# +# Only works if ENCRYPT_METHOD is set to BCRYPT. +# +# Define the number of BCRYPT rounds. +# With a lot of rounds, it is more difficult to brute-force the password. +# However, more CPU resources will be needed to authenticate users if +# this value is increased. +# +# If not specified, 13 rounds will be attempted. +# If only one of the MIN or MAX values is set, then this value will be used. +# If MIN > MAX, the highest value will be used. +# +#BCRYPT_MIN_ROUNDS 13 +#BCRYPT_MAX_ROUNDS 13 + +# +# Only works if ENCRYPT_METHOD is set to YESCRYPT. +# +# Define the YESCRYPT cost factor. +# With a higher cost factor, it is more difficult to brute-force the password. +# However, more CPU time and more memory will be needed to authenticate users +# if this value is increased. +# +# If not specified, a cost factor of 5 will be used. +# The value must be within the 1-11 range. +# +#YESCRYPT_COST_FACTOR 5 + +# +# List of groups to add to the user's supplementary group set +# when logging in from the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in from the console. +# How to do it is left as an exercise for the reader... +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# The pwck(8) utility emits a warning for any system account with a home +# directory that does not exist. Some system accounts intentionally do +# not have a home directory. Such accounts may have this string as +# their home directory in /etc/passwd to avoid a spurious warning. +# +NONEXISTENT /nonexistent + +# +# If this file exists and is readable, login environment will be +# read from it. Every line should be in the form name=value. +# +# NOTE: This setting should be configured via /etc/pam.d/ and not in this file. +#ENVIRON_FILE /etc/environment + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# Enable setting of the umask group bits to be the same as owner bits +# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is +# the same as gid, and username is the same as the primary group name. +# +# This also enables userdel(8) to remove user groups if no members exist. +# +USERGROUPS_ENAB yes + +# +# If set to a non-zero number, the shadow utilities will make sure that +# groups never have more than this number of users on one line. +# This permits to support split groups (groups split into multiple lines, +# with the same group ID, to avoid limitation of the line length in the +# group file). +# +# 0 is the default value and disables this feature. +# +#MAX_MEMBERS_PER_GROUP 0 + +# +# If useradd(8) should create home directories for users by default (non +# system users only). +# This option is overridden with the -M or -m flags on the useradd(8) +# command-line. +# +CREATE_HOME yes + +# +# Force use shadow, even if shadow passwd & shadow group files are +# missing. +# +#FORCE_SHADOW yes + +# +# Allow newuidmap and newgidmap when running under an alternative +# primary group. +# +#GRANT_AUX_GROUP_SUBIDS yes + +# +# Prevents an empty password field to be interpreted as "no authentication +# required". +# Set to "yes" to prevent for all accounts +# Set to "superuser" to prevent for UID 0 / root (default) +# Set to "no" to not prevent for any account (dangerous, historical default) +PREVENT_NO_AUTH superuser + +# +# Select the HMAC cryptography algorithm. +# Used in pam_timestamp module to calculate the keyed-hash message +# authentication code. +# +# Note: It is recommended to check hmac(3) to see the possible algorithms +# that are available in your system. +# +#HMAC_CRYPTO_ALGO SHA512 diff --git a/build/include-image/usr/etc/modprobe.d/filesystem_blacklist.conf b/build/include-image/usr/etc/modprobe.d/filesystem_blacklist.conf new file mode 100644 index 0000000..be6f480 --- /dev/null +++ b/build/include-image/usr/etc/modprobe.d/filesystem_blacklist.conf @@ -0,0 +1,41 @@ + +# This file is derived from recommendations made by the Center for Internet +# Security (CIS) Debian Linux 12 benchmark, v1.1.0. + +# 1.1.1 Configure Filesystem Kernel Modules + +# 1.1.1.1 Ensure cramfs kernel module is not available +install cramfs /bin/false +blacklist cramfs + +# 1.1.1.2 Ensure freexvs kernel module is not available +install freevxfs /bin/false +blacklist freevxfs + +# 1.1.1.3 Ensure hfs kernel module is not available +install hfs /bin/false +blacklist hfs + +# 1.1.1.4 Ensure hfsplus kernel module is not available +install hfsplus /bin/false +blacklist hfsplus + +# 1.1.1.5 Ensure jffs2 kernel module is not available +install jffs2 /bin/false +blacklist jffs2 + +# 1.1.1.8 Ensure udf kernel module is not available +install udf /bin/false +blacklist udf + +# 1.1.1.10 Ensure unused filesystems kernel modules are not available +install afs /bin/false +blacklist afs +install ceph /bin/false +blacklist ceph +install cifs /bin/false +blacklist cifs +install fscache /bin/false +blacklist fscache +install gfs2 /bin/false +blacklist gfs2 \ No newline at end of file diff --git a/build/include-image/usr/etc/modprobe.d/network_blacklist.conf b/build/include-image/usr/etc/modprobe.d/network_blacklist.conf new file mode 100644 index 0000000..853f60d --- /dev/null +++ b/build/include-image/usr/etc/modprobe.d/network_blacklist.conf @@ -0,0 +1,21 @@ + +# This file is derived from recommendations made by the Center for Internet +# Security (CIS) Debian Linux 12 benchmark, v1.1.0. + +# 3.2 Configure Network Kernel Modules + +# 3.2.1 Ensure dccp kernel module is not available +install dccp /bin/false +blacklist dccp + +# 3.2.2 Ensure tipc kernel module is not available +install ticp /bin/false +blacklist ticp + +# 3.2.3 Ensure rds kernel module is not available +install rds /bin/false +blacklist rds + +# 3.2.4 Ensure sctp kernel module is not available +install sctp /bin/false +blacklist sctp \ No newline at end of file diff --git a/build/include-image/usr/etc/security/faillock.conf b/build/include-image/usr/etc/security/faillock.conf new file mode 100644 index 0000000..336314c --- /dev/null +++ b/build/include-image/usr/etc/security/faillock.conf @@ -0,0 +1,62 @@ +# Configuration for locking the user after multiple failed +# authentication attempts. +# +# The directory where the user files with the failure records are kept. +# The default is /var/run/faillock. +# dir = /var/run/faillock +# +# Will log the user name into the system log if the user is not found. +# Enabled if option is present. +# audit +# +# Don't print informative messages. +# Enabled if option is present. +# silent +# +# Don't log informative messages via syslog. +# Enabled if option is present. +# no_log_info +# +# Only track failed user authentications attempts for local users +# in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users. +# The `faillock` command will also no longer track user failed +# authentication attempts. Enabling this option will prevent a +# double-lockout scenario where a user is locked out locally and +# in the centralized mechanism. +# Enabled if option is present. +# local_users_only +# +# Deny access if the number of consecutive authentication failures +# for this user during the recent interval exceeds n tries. +# The default is 3. +# deny = 3 +# +# The length of the interval during which the consecutive +# authentication failures must happen for the user account +# lock out is n seconds. +# The default is 900 (15 minutes). +# fail_interval = 900 +# +# The access will be re-enabled after n seconds after the lock out. +# The value 0 has the same meaning as value `never` - the access +# will not be re-enabled without resetting the faillock +# entries by the `faillock` command. +# The default is 600 (10 minutes). +unlock_time = 900 +# +# Root account can become locked as well as regular accounts. +# Enabled if option is present. +even_deny_root +# +# This option implies the `even_deny_root` option. +# Allow access after n seconds to root account after the +# account is locked. In case the option is not specified +# the value is the same as of the `unlock_time` option. +root_unlock_time = 0 +# +# If a group name is specified with this option, members +# of the group will be handled by this module the same as +# the root account (the options `even_deny_root>` and +# `root_unlock_time` will apply to them. +# By default, the option is not set. +# admin_group = diff --git a/build/include-image/usr/etc/sysctl.d/network.conf b/build/include-image/usr/etc/sysctl.d/network.conf new file mode 100644 index 0000000..f66d8ff --- /dev/null +++ b/build/include-image/usr/etc/sysctl.d/network.conf @@ -0,0 +1,50 @@ + +# This file is derived from recommendations made by the Center for Internet +# Security (CIS) Debian Linux 12 benchmark, v1.1.0. + +# 3.3 Configure Network Kernel Parameters + +# 3.3.1 Ensure ip forwarding is disabled +net.ipv4.ip_forward = 0 +net.ipv6.conf.all.forward = 0 + +# 3.3.3 Ensure packet redirect sending is disabled +net.ipv4.conf.all.send_redirects = 0 +net.ipv4.conf.default.send_redirects = 0 + +# 3.3.3 Ensure bogus icmp responses are ignored +net.ipv4.icmp_ignore_bogus_error_responses = 1 + +# 3.3.4 Ensure broadcast icmp requests are ignored +net.ipv4.icmp_echo_ignore_broadcasts = 1 + +# 3.3.5 Ensure icmp redirects are not accepted +net.ipv4.conf.all.accept_redirects = 0 +net.ipv4.conf.default.accept_redirects = 0 +net.ipv6.conf.all.accept_redirects = 0 +net.ipv6.conf.default.accept_redirects = 0 + +# 3.3.6 Ensure secure icmp redirects are not accepted +net.ipv4.conf.all.secure_redirects = 0 +net.ipv4.conf.default.secure_redirects = 0 + +# 3.3.7 Ensure reverse path filtering is enabled +net.ipv4.conf.all.rp_filter = 1 +net.ipv4.conf.default.rp_filter = 1 + +# 3.3.8 Ensure source routed packets are not accepted +net.ipv4.conf.all.accept_source_route = 0 +net.ipv4.conf.default.accept_source_route = 0 +net.ipv6.conf.all.accept_source_route = 0 +net.ipv6.conf.default.accept_source_route = 0 + +# 3.3.9 Ensure suspicious packets are logged +net.ipv4.conf.all.log_martians = 1 +net.ipv4.conf.default.log_martians = 1 + +# 3.3.10 Ensure tcp syn cookies is enabled +net.ipv4.tcp_syncookies = 1 + +# 3.3.11 Ensure ipv6 router advertisements are not accepted +net.ipv6.conf.all.accept_ra = 0 +net.ipv6.conf.default.accept_ra = 0 \ No newline at end of file