KEMBAR78
Hardening Linux and introducing Securix Linux | PDF
Hardening Linux
and introducing Securix GNU/Linux
Hardening basics

From lowest to highest level
Tune every part of system and applications
Follow standards and security policies
Regularly check system health
Install security patches when possible
Log and audit every action


                                         secured linux by default | www.securix.org
Physical security
 Locked rack
 BIOS setup password

 Console in different rack

 // How it helps?
 Avoid unauthorized access where
 somebody can:
 - shutdown server
 - reboot server into single-user
 mode and change password
 - boot live CD and access data
 - sniff data on ethernet cable
 - steal hard disks
Encrypting partitions
 its essential to have encrypted all partitions except /boot and
 swap ( / , usr, home, var, opt, tmp)

 no impact on resources where is HW acceleration possible

 my recommendation is LUKS
 cryptsetup -c aes-xts-plain -y -s 512 -h whirlpool luksFormat /dev/xyz


 // How it helps?

 data stored are unreadable for attacker

 passwords can’t be changed during boot from live CD


                                                        secured linux by default | www.securix.org
Securing Grub
protect grub using password
password --md5 $1$Ul0TR0$fK/7jE2gCbkBAnzBQWWYf/


generate hash using grub-md5-crypt

protect single-user boot via password as well

setup fallback option

// How it helps?

avoid unauthorized single-user mode boot

fallback in case of problems with new kernel


                                                  secured linux by default | www.securix.org
Kernel configuration

 enabled only options which are really needed
 - smaller/faster kernel
 - secure - big piece of code isn't really needed
 enabled PaX and Grsecurity
 - no LSM
 - robust multi-level security system
 Securix have minimalistic predefined kernel setup which
 should boot on many systems by default


                                           secured linux by default | www.securix.org
/etc/securetty

 limit root access to console and serial port only
 # file: /etc/securetty
 # limit root access
 console
 vc/1
 tty1
 tty2
 # serial console access
 ttyS0
 ttyS1
 ...




                                            secured linux by default | www.securix.org
Use phrases, not passwords
Use phrases, not passwords
/etc/sysctl.conf
 build with focus on security and network stack tuning
 some examples:
 # Kernel EXEC shield
 kernel.exec-shield = 1

 # Make the addresses of mmap base, stack, heap and VDSO page randomized
 kernel.randomize_va_space = 2

 # Reboot system when kernel panic occur, oops will wait 30 seconds untill call panic()
 kernel.panic = 30
 kernel.panic_on_oops = 30

 # Disable magic-sysrq key
 kernel.sysrq = 0




                                                                       secured linux by default | www.securix.org
/etc/sysctl.conf
 # Prevent SYN attack
 net.ipv4.tcp_syncookies = 1
 net.ipv4.tcp_max_syn_backlog = 4096
 net.ipv4.tcp_syn_retries = 5
 net.ipv4.tcp_synack_retries = 2

 # Enable IP spoofing protection, turn on source route verification
 net.ipv4.conf.all.rp_filter = 1
 net.ipv4.conf.default.rp_filter = 1

 # Increase allowed local port range
 net.ipv4.ip_local_port_range = 1024 64000

 # Enable tcp_window_scaling
 net.ipv4.tcp_window_scaling = 1


 ...and much more


                                                                    secured linux by default | www.securix.org
iptables configuration

 script for pushing/editing/saving firewall rules
 port scan detection
 access logging
 traffic divided into chains
 strict default policy



                                            secured linux by default | www.securix.org
/etc/security/limits.conf
 # default limits
 *         soft core        0
 *         hard core        0
 *         hard nproc       200
 *         hard nofile       2000
 *         hard fsize       1024000
 *         -     maxlogins 3
 # operator group limits
 @operators hard nproc            2000
 @operators hard nofile            4000
 @operators hard fsize           10240000
 @operators -        maxlogins    10
 # service group limits
 @services      hard nproc       40000
 @services      hard nofile      45000
 @services      hard fsize      1024000000
 @services      -   maxlogins    100




                                             secured linux by default | www.securix.org
/etc/ssh/sshd_config
Port 55522
Protocol 2
ServerKeyBits 2048
Ciphers aes256-cbc,aes256-ctr,blowfish-cbc
Compression yes
ClientAliveInterval 15
ClientAliveCountMax 3
TCPKeepAlive no

PermitRootLogin no
PermitEmptyPasswords no
UsePrivilegeSeparation yes
StrictModes yes

AllowTcpForwarding no
X11Forwarding no
GatewayPorts no
...




                                            secured linux by default | www.securix.org
PaX - NOEXEC
The goal of NOEXEC is to prevent the injection and
execution of code into a task's address space and render
this exploit technique unusable under PaX.

- segmentation based non-executable page protection [IA-32 only]
(SEGMEXEC)

- paging based non-executable page protection (PAGEEXEC)

- mmap() and mprotect() restrictions (MPROTECT)



                                             secured linux by default | www.securix.org
Pax - ASLR
decrease success rate of attacks that require advanced
knowledge of memory addresses via Address Space Layout
Randomization (ASLR)

- Main executable code/data/bss segment base address
randomization (RANDEXEC) - ET_EXEC ELF

- mmap() and brk() managed memory [libraries, heap, thread
stacks, shared memory, etc] address randomization (RANDMMAP)
ET_DYN ELF

- User stack base address randomization (RANDUSTACK)
- Kernel stack base address randomization (RANDKSTACK)
                                          secured linux by default | www.securix.org
Grsecurity

 “Unlike other expensive security "solutions" that pretend to achieve
 security through known-vulnerability patching, signature-based
 detection, or other reactive methods, grsecurity provides real
 proactive security. The only solution that hardens both your
 applications and operating system, grsecurity is essential for
 public-facing servers and shared-hosting environments.

 Grsecurity increased authentication for administrators, audit
 important system events, and confine your system with no manual
 configuration through advanced Role-Based Access Control.”



                                                secured linux by default | www.securix.org
Grsecurity - features
 high scalable Role-Based Access Control
 learning mode for RBAC policies
 restrict access to /dev/kmem, /proc/<pid>/maps, /proc,
 kernel processes, linking, FIFO, dmesg, IO, ptrace, ...
 trusted path execution
 hardened chroot environment
 fork bomb protection & randomized PIDs


                                          secured linux by default | www.securix.org
Grsecurity - features 2
 network protections - randomized IP IDs, larger entropy
 pools, random TCP sequence numbers, randomized TCP
 source ports, tcp/udp blackhole, altered ping payload,
 socket restrictions, ...
 auditing - exec & chroot exec, ptrace, chdir, un/mount,
 signal sent, fork failure, time change, append client IP
 address where possible, denied RWX mmap/mprotect
 (PaX)
 ...and much more


                                           secured linux by default | www.securix.org
Grsecurity benchmark
Apache Benchmark:
This test profile measures
how many requests per
second a given system can
sustain when carrying out
700,000 requests with 100
requests being carried out
concurrently.
Source: http://grsecurity.net/~spender/benchmarks.txt

     Vanilla
     All grsecurity/PaX features enabled
     All but RBAC
     All but UDEREF
     All but KERNEXEC/UDEREF
     All but KERNEXEC/UDEREF/SANITIZE
     All but KERNEXEC/UDEREF/SANITIZE/STACKLEAK
Grsecurity benchmark
Apache Benchmark:
This test profile measures                                             11000
how many requests per
second a given system can
sustain when carrying out                                           8250
700,000 requests with 100
requests being carried out
concurrently.                                                       5500
Source: http://grsecurity.net/~spender/benchmarks.txt

     Vanilla                                                    2750
     All grsecurity/PaX features enabled
     All but RBAC
                                                        Score
     All but UDEREF                                             0
     All but KERNEXEC/UDEREF
     All but KERNEXEC/UDEREF/SANITIZE
     All but KERNEXEC/UDEREF/SANITIZE/STACKLEAK
Why not SELinux?

build as Linux Security Module (LSM)
doesn't contain features as Grsecurity (NX, ASLR, DoS
and fingerprint mitigation, entropy pools, auditing, ...)
complicated policy & no learning mode
worse performance in benchmark tests
developed and maintained by NSA (“Big Brother”)



                                          secured linux by default | www.securix.org
Securix GNU/Linux




                    secured linux by default | www.securix.org
Securix GNU/Linux
follow “best practices” and standards with high focus on security and
performance

all services and system configuration secured by default

own monitoring system which can fix or inform administrator about
problems by email or motd (rkhunter, checksec.sh, secxmon.sh,
secxwatch.sh, XCCDF, OVAL, ...)

update tool which can align system with current Securix configuration

actively implement protection against new attack vectors (via update
tool) where applicable


                                                  secured linux by default | www.securix.org
Securix GNU/Linux




                    secured linux by default | www.securix.org
Securix GNU/Linux
anyone can contribute or suggest improvement!

build good pre-defined RBAC policies

binaries build with SSP and PIE protection

proactive security against buffer/heap/stack overflow and exploits

every new settings must be tested on production environment

basically “it is still Hardened Gentoo” with great support on
forums, IRCs and mailing lists

...stay tuned


                                                secured linux by default | www.securix.org
Securix Installer




                    secured linux by default | www.securix.org
Securix Installer
 written in bash under GPLv3 license

 system environment check and setup

 advanced auto-partitioning with LVM and LUKS support
 (noatime, nodev, nosuid, noexec)

 auto-detection/setup of architecture, bonding, serial console, http
 proxy, profile, ...

 all you need is setup some essential variables like root passphrase,
 hostname, root mail, etc.

 following methods KISS (Keep It Simple Stupid) and DASQ (Don't Ask
 Stupid Questions)

                                                    secured linux by default | www.securix.org
Q&A?



       secured linux by default | www.securix.org
Thank you!
         Martin Čmelík
             [ cm3l1k1 ]

martin.cmelik [ at ] security-portal.cz
       www.security-portal.cz
         www.securix.org




                                          secured linux by default | www.securix.org
Links
 www.securix.org

 www.grsecurity.net

 http://pax.grsecurity.net/docs/

 http://www.gentoo.org/proj/en/hardened/

 http://en.wikibooks.org/wiki/Grsecurity

 http://www.pjvenda.net/linux/doc/pax-performance/

 www.cs.virginia.edu/~jcg8f/SELinux%20grsecurity%20paper.pdf

 www.ece.cmu.edu/~dbrumley/courses/18739c-s11/docs/aslr.pdf

 http://www.cyberciti.biz/

 ...



                                                               secured linux by default | www.securix.org
Top security stories of 2011
(by Kaspersky)




                       secured linux by default | www.securix.org
Top security stories of 2011
(by Kaspersky)


  Rise of “Hactivism” -     Sony Playstation Network
  Anonymous, LulzSec, ...   hack
  HBGary Federal Hack       Rise of Android / Mobile
                            malware
  RSA, Comodo and
  DigiNotar incident        CarrierIQ - spy and
                            monitoring tool
  Duqu (Stuxnet) -
  undetectable for years    ...we need Securix




                                     secured linux by default | www.securix.org

Hardening Linux and introducing Securix Linux

  • 1.
  • 2.
    Hardening basics From lowestto highest level Tune every part of system and applications Follow standards and security policies Regularly check system health Install security patches when possible Log and audit every action secured linux by default | www.securix.org
  • 3.
    Physical security Lockedrack BIOS setup password Console in different rack // How it helps? Avoid unauthorized access where somebody can: - shutdown server - reboot server into single-user mode and change password - boot live CD and access data - sniff data on ethernet cable - steal hard disks
  • 4.
    Encrypting partitions itsessential to have encrypted all partitions except /boot and swap ( / , usr, home, var, opt, tmp) no impact on resources where is HW acceleration possible my recommendation is LUKS cryptsetup -c aes-xts-plain -y -s 512 -h whirlpool luksFormat /dev/xyz // How it helps? data stored are unreadable for attacker passwords can’t be changed during boot from live CD secured linux by default | www.securix.org
  • 5.
    Securing Grub protect grubusing password password --md5 $1$Ul0TR0$fK/7jE2gCbkBAnzBQWWYf/ generate hash using grub-md5-crypt protect single-user boot via password as well setup fallback option // How it helps? avoid unauthorized single-user mode boot fallback in case of problems with new kernel secured linux by default | www.securix.org
  • 6.
    Kernel configuration enabledonly options which are really needed - smaller/faster kernel - secure - big piece of code isn't really needed enabled PaX and Grsecurity - no LSM - robust multi-level security system Securix have minimalistic predefined kernel setup which should boot on many systems by default secured linux by default | www.securix.org
  • 7.
    /etc/securetty limit rootaccess to console and serial port only # file: /etc/securetty # limit root access console vc/1 tty1 tty2 # serial console access ttyS0 ttyS1 ... secured linux by default | www.securix.org
  • 8.
  • 9.
  • 10.
    /etc/sysctl.conf build withfocus on security and network stack tuning some examples: # Kernel EXEC shield kernel.exec-shield = 1 # Make the addresses of mmap base, stack, heap and VDSO page randomized kernel.randomize_va_space = 2 # Reboot system when kernel panic occur, oops will wait 30 seconds untill call panic() kernel.panic = 30 kernel.panic_on_oops = 30 # Disable magic-sysrq key kernel.sysrq = 0 secured linux by default | www.securix.org
  • 11.
    /etc/sysctl.conf # PreventSYN attack net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_syn_retries = 5 net.ipv4.tcp_synack_retries = 2 # Enable IP spoofing protection, turn on source route verification net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Increase allowed local port range net.ipv4.ip_local_port_range = 1024 64000 # Enable tcp_window_scaling net.ipv4.tcp_window_scaling = 1 ...and much more secured linux by default | www.securix.org
  • 12.
    iptables configuration scriptfor pushing/editing/saving firewall rules port scan detection access logging traffic divided into chains strict default policy secured linux by default | www.securix.org
  • 13.
    /etc/security/limits.conf # defaultlimits * soft core 0 * hard core 0 * hard nproc 200 * hard nofile 2000 * hard fsize 1024000 * - maxlogins 3 # operator group limits @operators hard nproc 2000 @operators hard nofile 4000 @operators hard fsize 10240000 @operators - maxlogins 10 # service group limits @services hard nproc 40000 @services hard nofile 45000 @services hard fsize 1024000000 @services - maxlogins 100 secured linux by default | www.securix.org
  • 14.
    /etc/ssh/sshd_config Port 55522 Protocol 2 ServerKeyBits2048 Ciphers aes256-cbc,aes256-ctr,blowfish-cbc Compression yes ClientAliveInterval 15 ClientAliveCountMax 3 TCPKeepAlive no PermitRootLogin no PermitEmptyPasswords no UsePrivilegeSeparation yes StrictModes yes AllowTcpForwarding no X11Forwarding no GatewayPorts no ... secured linux by default | www.securix.org
  • 15.
    PaX - NOEXEC Thegoal of NOEXEC is to prevent the injection and execution of code into a task's address space and render this exploit technique unusable under PaX. - segmentation based non-executable page protection [IA-32 only] (SEGMEXEC) - paging based non-executable page protection (PAGEEXEC) - mmap() and mprotect() restrictions (MPROTECT) secured linux by default | www.securix.org
  • 16.
    Pax - ASLR decreasesuccess rate of attacks that require advanced knowledge of memory addresses via Address Space Layout Randomization (ASLR) - Main executable code/data/bss segment base address randomization (RANDEXEC) - ET_EXEC ELF - mmap() and brk() managed memory [libraries, heap, thread stacks, shared memory, etc] address randomization (RANDMMAP) ET_DYN ELF - User stack base address randomization (RANDUSTACK) - Kernel stack base address randomization (RANDKSTACK) secured linux by default | www.securix.org
  • 17.
    Grsecurity “Unlike otherexpensive security "solutions" that pretend to achieve security through known-vulnerability patching, signature-based detection, or other reactive methods, grsecurity provides real proactive security. The only solution that hardens both your applications and operating system, grsecurity is essential for public-facing servers and shared-hosting environments. Grsecurity increased authentication for administrators, audit important system events, and confine your system with no manual configuration through advanced Role-Based Access Control.” secured linux by default | www.securix.org
  • 18.
    Grsecurity - features high scalable Role-Based Access Control learning mode for RBAC policies restrict access to /dev/kmem, /proc/<pid>/maps, /proc, kernel processes, linking, FIFO, dmesg, IO, ptrace, ... trusted path execution hardened chroot environment fork bomb protection & randomized PIDs secured linux by default | www.securix.org
  • 19.
    Grsecurity - features2 network protections - randomized IP IDs, larger entropy pools, random TCP sequence numbers, randomized TCP source ports, tcp/udp blackhole, altered ping payload, socket restrictions, ... auditing - exec & chroot exec, ptrace, chdir, un/mount, signal sent, fork failure, time change, append client IP address where possible, denied RWX mmap/mprotect (PaX) ...and much more secured linux by default | www.securix.org
  • 20.
    Grsecurity benchmark Apache Benchmark: Thistest profile measures how many requests per second a given system can sustain when carrying out 700,000 requests with 100 requests being carried out concurrently. Source: http://grsecurity.net/~spender/benchmarks.txt Vanilla All grsecurity/PaX features enabled All but RBAC All but UDEREF All but KERNEXEC/UDEREF All but KERNEXEC/UDEREF/SANITIZE All but KERNEXEC/UDEREF/SANITIZE/STACKLEAK
  • 21.
    Grsecurity benchmark Apache Benchmark: Thistest profile measures 11000 how many requests per second a given system can sustain when carrying out 8250 700,000 requests with 100 requests being carried out concurrently. 5500 Source: http://grsecurity.net/~spender/benchmarks.txt Vanilla 2750 All grsecurity/PaX features enabled All but RBAC Score All but UDEREF 0 All but KERNEXEC/UDEREF All but KERNEXEC/UDEREF/SANITIZE All but KERNEXEC/UDEREF/SANITIZE/STACKLEAK
  • 22.
    Why not SELinux? buildas Linux Security Module (LSM) doesn't contain features as Grsecurity (NX, ASLR, DoS and fingerprint mitigation, entropy pools, auditing, ...) complicated policy & no learning mode worse performance in benchmark tests developed and maintained by NSA (“Big Brother”) secured linux by default | www.securix.org
  • 23.
    Securix GNU/Linux secured linux by default | www.securix.org
  • 24.
    Securix GNU/Linux follow “bestpractices” and standards with high focus on security and performance all services and system configuration secured by default own monitoring system which can fix or inform administrator about problems by email or motd (rkhunter, checksec.sh, secxmon.sh, secxwatch.sh, XCCDF, OVAL, ...) update tool which can align system with current Securix configuration actively implement protection against new attack vectors (via update tool) where applicable secured linux by default | www.securix.org
  • 25.
    Securix GNU/Linux secured linux by default | www.securix.org
  • 26.
    Securix GNU/Linux anyone cancontribute or suggest improvement! build good pre-defined RBAC policies binaries build with SSP and PIE protection proactive security against buffer/heap/stack overflow and exploits every new settings must be tested on production environment basically “it is still Hardened Gentoo” with great support on forums, IRCs and mailing lists ...stay tuned secured linux by default | www.securix.org
  • 27.
    Securix Installer secured linux by default | www.securix.org
  • 28.
    Securix Installer writtenin bash under GPLv3 license system environment check and setup advanced auto-partitioning with LVM and LUKS support (noatime, nodev, nosuid, noexec) auto-detection/setup of architecture, bonding, serial console, http proxy, profile, ... all you need is setup some essential variables like root passphrase, hostname, root mail, etc. following methods KISS (Keep It Simple Stupid) and DASQ (Don't Ask Stupid Questions) secured linux by default | www.securix.org
  • 29.
    Q&A? secured linux by default | www.securix.org
  • 30.
    Thank you! Martin Čmelík [ cm3l1k1 ] martin.cmelik [ at ] security-portal.cz www.security-portal.cz www.securix.org secured linux by default | www.securix.org
  • 31.
    Links www.securix.org www.grsecurity.net http://pax.grsecurity.net/docs/ http://www.gentoo.org/proj/en/hardened/ http://en.wikibooks.org/wiki/Grsecurity http://www.pjvenda.net/linux/doc/pax-performance/ www.cs.virginia.edu/~jcg8f/SELinux%20grsecurity%20paper.pdf www.ece.cmu.edu/~dbrumley/courses/18739c-s11/docs/aslr.pdf http://www.cyberciti.biz/ ... secured linux by default | www.securix.org
  • 32.
    Top security storiesof 2011 (by Kaspersky) secured linux by default | www.securix.org
  • 33.
    Top security storiesof 2011 (by Kaspersky) Rise of “Hactivism” - Sony Playstation Network Anonymous, LulzSec, ... hack HBGary Federal Hack Rise of Android / Mobile malware RSA, Comodo and DigiNotar incident CarrierIQ - spy and monitoring tool Duqu (Stuxnet) - undetectable for years ...we need Securix secured linux by default | www.securix.org