SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Copyright @ 2019 JFrog - All rights reserved.
Hardening Linux
Made Easy
Guy Barnhart-Magen, Melior Security
@barnhartguy
Who am I?
Father of two, hacker
BSidesTLV chairman and CTF Lead
(Lucky to speak at many conferences)
Today: Cyber Security Consultant
Before: Intel, Cisco and a couple of Startups
OS Hardening, Crypto, Embedded Security, Security of ML
@barnhartguy
@barnhartguy
Why Hardening?
Assumption - the attacker has a foothold in your server
At least shell access (or something that will give him access)
Can we limit what he can do?
@barnhartguy
Threat Model
Consider the following:
● Is the VM compromised?
● Do we need a scalable solution?
● Is it open to the internet?
● How do we do patch management?
● If an attacker gets a shell, what is compromised?
● If an attacker gets root access, what is compromised?
● Do we have someone to look at reports?
@barnhartguy
Threat Model
Attacker model
● Is this a targeted or opportunistic attack?
● Do I have vital business value on this VM?
● Is the system old? Any security concerns? Something signaling to attackers?
@barnhartguy
Where to focus?
@barnhartguy
Passive vs. Active
Passive - build defenses, but an attacker is not present in the system allowing for more
flexibility
Active - need to remove an attacker (or suspicion) from the system, before deploying
defenses
@barnhartguy
Shopping list?
CIS Benchmarks
Lynis
NIST - SP800-123
Other standards
@barnhartguy
Hardening the System
● Passive vs. Active
● Firewall
● Updates
○ Repo, security, patches/upgrades
○ Remove unneeded packages
● SSH
○ 2FA
○ fail2ban
● User Accounts
○ Credentials, ACL
● Remote Logging
● Sensitive Files/Directories
● Remove unneeded TTY
● Secure Shared Memory/tmp folder
● Remove uncommon filesystems
● Disable compilers
● Set UMASK
● Disable core dumps
@barnhartguy
● Wrapper for iptables
● Enable Firewall
Firewall
$ sudo ufw allow ssh
$ sudo ufw enable
@barnhartguy
We would like to keep all our repositories up to
date
● Also, we would like to automate this
● Be careful - updates can break stuff!
● Rebooting is also a concern
Updating the System
$ sudo apt-get update
$ sudo apt-get upgrade -y
@barnhartguy
We would like to keep all our repositories up to
date
● Also, we would like to automate this
● Be careful - updates can break stuff!
● Rebooting is also a concern
Updating the System
$ sudo apt-get install unattended-upgrades
apt-listchanges
$ sudo dpkg-reconfigure -plow
unattended-upgrades
$ sudo nano
/etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Mail "user@example.com";
Unattended-Upgrade::Automatic-Reboot "true";
$ sudo unattended-upgrades --dry-run
@barnhartguy
● Reduce attack surface
● We should remove old/unneeded packages
Examples:
Ipv6, irqbalance, Bluetooth, USB storage driver,
Anacron, Apport, Atd, Autofs, Avahi, CUPS,
Dovecot, Modemmanager, Nfs, Snmp, Telnet,
Whoopsie, Zeitgeist
Updating the System
$ dpkg --list
$ dpkg --list packageName
$ apt-get remove packageName
$ sudo apt-get --purge ntfs-3g
@barnhartguy
● We should limit the number of users that are
allowed to login (never root)
● We should better protect these account
● If you can, use PKI keys
○ If you cannot, use 2FA
SSH Hardening
$ ssh-keygen -t ed25519
$ nano /etc/ssh/sshd.conf
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
AuthenticationMethods publickey
PubkeyAuthentication yes
AllowUsers user1 user2
PermitEmptyPasswords no
ClientAliveInterval 300
ClientAliveCountMax 0
IgnoreRhosts yes
@barnhartguy
● Use TOTP
● Try to limit the number of users who have
access, or share TOTP values
SSH Hardening - 2FA
$ sudo apt-get install
libpam-google-authenticator
$ google-authenticator -td --rate-limit=3
--rate-time=120
$ nano /etc/pam.d/sshd
auth required pam_google_authenticator.so
nullok
sudo nano /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
$ sudo systemctl restart sshd.service
$ sudo service ssh restart
$ sudo apt-get install oathtool
$ oathtool -b --totp `head -n 1
~/.google_authenticator`
@barnhartguy
● Fail2Ban and Rate Limiting
● Future updates can overwrite files, make
copies
SSH Hardening - Brute Force Attacks
$ sudo ufw limit ssh comment “rate limit ssh”
$ sudo apt-get install fail2ban
$ sudo cp /etc/fail2ban/fail2ban.conf
/etc/fail2ban/fail2ban.local
$ sudo cp /etc/fail2ban/jail.conf
/etc/fail2ban/jail.local
$ sudo systemctl start fail2ban
$ sudo systemctl enable fail2ban
@barnhartguy
● Separate user and admin accounts
● Limit “root” access
○ Root account shouldn’t have a login
● Verifying/setting that all world writable directories have their sticky bit set
User Accounts, ACL and special files/directories
$ sudo passwd -l root
$ sudo chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
$ sudo chmod 644 /etc/passwd /etc/group
$ sudo chmod 500 /etc/shadow /etc/gshadow
$ sudo find / -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print | while read
directory; do
echo "$FUNCNAME: ${GREEN} Making sticky on ${directory}..."
chmod +t ${directory}
done
@barnhartguy
● Verifying/setting that there are no world-writable files on the system
● Verifying/setting that there are no unauthorized SETUID/SETGID files on the system
User Accounts, ACL and special files/directories
$ sudo find / -xdev -type f -perm -0002 -print | while read file; do
chmod o-w ${file}
done
$ sudo find / -xdev ( -perm -4000 -o -perm -2000 ) -type f -print| while read file; do
if grep -Fxq "$file" "allowed_suid_list.txt"
then
echo “${file} - This program is allowed; leave it alone.”
else
chmod -s ${file}
fi
done
@barnhartguy
● Use RSysLog
Remote Logging
$ sudo apt-get update && apt-get install rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl start rsyslog
$ sudo nano /etc/rsyslog.d/01-server.conf
*.* @@distant-server-ip:514
$ sudo systemctl restart rsyslog
$ journalctl -f -u rsyslog
@barnhartguy
● Several tools: CIS Benchmark, Lynis
Audit
$ git clone https://github.com/CISOfy/lynis
$ lynis/lynis audit system
@barnhartguy
● You mostly pay attention to a single TTY, an attacker can work in a different one
Allow Single TTY
$ cat <<EOF > /etc/securetty
Console
Tty1
EOF
$ sudo nano /etc/default/console-setup
ACTIVE_CONSOLES=”/dev/tty1”
Reboot
$ dmesg | grep tty
@barnhartguy
●
Secure Shared Memory
$ sudo nano /etc/fstab
tmpfs /run/shm tmpfs defaults,noexec,nosuid 0 0
@barnhartguy
● Backup the /tmp dir, replace with new one (which is secure)
Secure Temporary Directories
dd if=/dev/zero of=/usr/tmpDSK bs=1024 count=1024000
mkdir /tmpbackup && cp -Rpf /tmp /tmpbackup
mount -t tmpfs -o loop,noexec,nosuid,rw /usr/tmpDSK /tmp
chmod 1777 /tmp
cp -Rpf /tmpbackup/* /tmp/ && rm -rf /tmpbackup/*
echo "/usr/tmpDSK /tmp tmpfs loop,nosuid,noexec,rw 0 0" >> /etc/fstab
mount -o remount /tmp
mkdir /var/tmpold
mv /var/tmp /var/tmpold
ln -s /tmp /var/tmp
cp -prf /var/tmpold/* /tmp/
@barnhartguy
● Prevent attackers from mounting filesystems that you don’t need and might benefit them
Disable Uncommon File Systems
$ ls -1 /lib/modules/$(uname -r)/kernel/fs | sort | uniq > avail_fs
$ mount | column -t | cut -c 82-90 | sort | uniq > used_fs
$ for fs in $(comm -1 used_fs avail_fs); do echo "blacklist $fs"; done
>> /etc/modprobe.d/blacklist.conf
@barnhartguy
● Prevent attackers from compiling code to get
higher order abilities
Disable Compilers
>>
COMPILERS=(
"/usr/bin/byacc"
"/usr/bin/yacc"
"/usr/bin/bcc"
"/usr/bin/kgcc"
"/usr/bin/cc"
"/usr/bin/gcc"
"/usr/bin/c++"
"/usr/bin/g++"
)
for compiler in ${COMPILERS[@]}; do
if [ -f ${compiler} ]; then
echo "removing ${compiler}
chmod 000 ${compiler}
else
echo "missing ${compiler}
fi
done
Thank You!
@barnhartguy
I’ll be happy to answer more questions after
the talk (outside)

Mais conteúdo relacionado

Mais procurados

Managing server secrets at scale with SaltStack and a vaultless password manager
Managing server secrets at scale with SaltStack and a vaultless password managerManaging server secrets at scale with SaltStack and a vaultless password manager
Managing server secrets at scale with SaltStack and a vaultless password managerIgnat Korchagin
 
SSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoSSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoTiago Cruz
 
install mosquitto-auth-plug - cheat sheet -
install mosquitto-auth-plug - cheat sheet -install mosquitto-auth-plug - cheat sheet -
install mosquitto-auth-plug - cheat sheet -Naoto MATSUMOTO
 
How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS
 How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS
How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOSKentaro Hatori
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜Retrieva inc.
 
Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101jelrikvh
 
Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Francesco Prior
 
Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04PlanetOdoo
 
Creating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server HardeningCreating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server Hardeningarchwisp
 
10 Tips for AIX Security
10 Tips for AIX Security10 Tips for AIX Security
10 Tips for AIX SecurityHelpSystems
 
Single node hadoop cluster installation
Single node hadoop cluster installation Single node hadoop cluster installation
Single node hadoop cluster installation Mahantesh Angadi
 
Getting_Started_With_Docker
Getting_Started_With_DockerGetting_Started_With_Docker
Getting_Started_With_DockerJason Greathouse
 
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...Circling Cycle
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort webhostingguy
 
101 4.3 control mounting and unmounting of filesystems
101 4.3 control mounting and unmounting of filesystems101 4.3 control mounting and unmounting of filesystems
101 4.3 control mounting and unmounting of filesystemsAcácio Oliveira
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識維泰 蔡
 

Mais procurados (20)

Managing server secrets at scale with SaltStack and a vaultless password manager
Managing server secrets at scale with SaltStack and a vaultless password managerManaging server secrets at scale with SaltStack and a vaultless password manager
Managing server secrets at scale with SaltStack and a vaultless password manager
 
Hadoop Installation
Hadoop InstallationHadoop Installation
Hadoop Installation
 
SSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso RemotoSSH: Seguranca no Acesso Remoto
SSH: Seguranca no Acesso Remoto
 
install mosquitto-auth-plug - cheat sheet -
install mosquitto-auth-plug - cheat sheet -install mosquitto-auth-plug - cheat sheet -
install mosquitto-auth-plug - cheat sheet -
 
How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS
 How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS
How to make multi-boot USB drive for LiveCD iso images on EFI/UEFI and BIOS
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
 
Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101
 
Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"Astricon 2013: "Asterisk and Database"
Astricon 2013: "Asterisk and Database"
 
Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04
 
Creating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server HardeningCreating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server Hardening
 
Network
NetworkNetwork
Network
 
10 Tips for AIX Security
10 Tips for AIX Security10 Tips for AIX Security
10 Tips for AIX Security
 
Single node hadoop cluster installation
Single node hadoop cluster installation Single node hadoop cluster installation
Single node hadoop cluster installation
 
Getting_Started_With_Docker
Getting_Started_With_DockerGetting_Started_With_Docker
Getting_Started_With_Docker
 
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...
Brief summary-standard-password-hashes-Aix-FreeBSD-Linux-Solaris-HP-UX-May-20...
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort
 
Android in ubuntu
Android in ubuntuAndroid in ubuntu
Android in ubuntu
 
Sun raysetup
Sun raysetupSun raysetup
Sun raysetup
 
101 4.3 control mounting and unmounting of filesystems
101 4.3 control mounting and unmounting of filesystems101 4.3 control mounting and unmounting of filesystems
101 4.3 control mounting and unmounting of filesystems
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識
 

Semelhante a Linux Hardening - Made Easy

How to create a secured multi tenancy for clustered ML with JupyterHub
How to create a secured multi tenancy for clustered ML with JupyterHubHow to create a secured multi tenancy for clustered ML with JupyterHub
How to create a secured multi tenancy for clustered ML with JupyterHubTiago Simões
 
Linux advanced privilege escalation
Linux advanced privilege escalationLinux advanced privilege escalation
Linux advanced privilege escalationJameel Nabbo
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Puppet
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiEqunix Business Solutions
 
Containers with systemd-nspawn
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawnGábor Nyers
 
Ubuntu Practice and Configuration
Ubuntu Practice and ConfigurationUbuntu Practice and Configuration
Ubuntu Practice and ConfigurationManoj Sahu
 
Linux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactLinux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactAlessandro Selli
 
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...Vi Grey
 
Aide 2014 - Fundamentals of Linux Privilege Escalation
Aide 2014 - Fundamentals of Linux Privilege EscalationAide 2014 - Fundamentals of Linux Privilege Escalation
Aide 2014 - Fundamentals of Linux Privilege Escalationnullthreat
 
What you most likely did not know about sudo…
What you most likely did not know about sudo…What you most likely did not know about sudo…
What you most likely did not know about sudo…All Things Open
 
System administration
System administrationSystem administration
System administrationpuspa joshi
 
Linux security quick reference guide
Linux security quick reference guideLinux security quick reference guide
Linux security quick reference guideCraig Cannon
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with AnsibleRayed Alrashed
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developerssagarhere4u
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012Philip Polstra
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort webhostingguy
 

Semelhante a Linux Hardening - Made Easy (20)

Adhocr T-dose 2012
Adhocr T-dose 2012Adhocr T-dose 2012
Adhocr T-dose 2012
 
Essential security for linux servers
Essential security for linux serversEssential security for linux servers
Essential security for linux servers
 
How to create a secured multi tenancy for clustered ML with JupyterHub
How to create a secured multi tenancy for clustered ML with JupyterHubHow to create a secured multi tenancy for clustered ML with JupyterHub
How to create a secured multi tenancy for clustered ML with JupyterHub
 
Linux advanced privilege escalation
Linux advanced privilege escalationLinux advanced privilege escalation
Linux advanced privilege escalation
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
 
Containers with systemd-nspawn
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawn
 
Ubuntu Practice and Configuration
Ubuntu Practice and ConfigurationUbuntu Practice and Configuration
Ubuntu Practice and Configuration
 
Linux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactLinux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compact
 
Linux Hardening - nullhyd
Linux Hardening - nullhydLinux Hardening - nullhyd
Linux Hardening - nullhyd
 
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
 
Aide 2014 - Fundamentals of Linux Privilege Escalation
Aide 2014 - Fundamentals of Linux Privilege EscalationAide 2014 - Fundamentals of Linux Privilege Escalation
Aide 2014 - Fundamentals of Linux Privilege Escalation
 
What you most likely did not know about sudo…
What you most likely did not know about sudo…What you most likely did not know about sudo…
What you most likely did not know about sudo…
 
System administration
System administrationSystem administration
System administration
 
Linux security quick reference guide
Linux security quick reference guideLinux security quick reference guide
Linux security quick reference guide
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developers
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort
 

Último

Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...amilabibi1
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfSenaatti-kiinteistöt
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 

Último (15)

Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 

Linux Hardening - Made Easy

  • 1. Copyright @ 2019 JFrog - All rights reserved. Hardening Linux Made Easy Guy Barnhart-Magen, Melior Security @barnhartguy
  • 2. Who am I? Father of two, hacker BSidesTLV chairman and CTF Lead (Lucky to speak at many conferences) Today: Cyber Security Consultant Before: Intel, Cisco and a couple of Startups OS Hardening, Crypto, Embedded Security, Security of ML @barnhartguy
  • 3. @barnhartguy Why Hardening? Assumption - the attacker has a foothold in your server At least shell access (or something that will give him access) Can we limit what he can do?
  • 4. @barnhartguy Threat Model Consider the following: ● Is the VM compromised? ● Do we need a scalable solution? ● Is it open to the internet? ● How do we do patch management? ● If an attacker gets a shell, what is compromised? ● If an attacker gets root access, what is compromised? ● Do we have someone to look at reports?
  • 5. @barnhartguy Threat Model Attacker model ● Is this a targeted or opportunistic attack? ● Do I have vital business value on this VM? ● Is the system old? Any security concerns? Something signaling to attackers?
  • 7. @barnhartguy Passive vs. Active Passive - build defenses, but an attacker is not present in the system allowing for more flexibility Active - need to remove an attacker (or suspicion) from the system, before deploying defenses
  • 9. @barnhartguy Hardening the System ● Passive vs. Active ● Firewall ● Updates ○ Repo, security, patches/upgrades ○ Remove unneeded packages ● SSH ○ 2FA ○ fail2ban ● User Accounts ○ Credentials, ACL ● Remote Logging ● Sensitive Files/Directories ● Remove unneeded TTY ● Secure Shared Memory/tmp folder ● Remove uncommon filesystems ● Disable compilers ● Set UMASK ● Disable core dumps
  • 10. @barnhartguy ● Wrapper for iptables ● Enable Firewall Firewall $ sudo ufw allow ssh $ sudo ufw enable
  • 11. @barnhartguy We would like to keep all our repositories up to date ● Also, we would like to automate this ● Be careful - updates can break stuff! ● Rebooting is also a concern Updating the System $ sudo apt-get update $ sudo apt-get upgrade -y
  • 12. @barnhartguy We would like to keep all our repositories up to date ● Also, we would like to automate this ● Be careful - updates can break stuff! ● Rebooting is also a concern Updating the System $ sudo apt-get install unattended-upgrades apt-listchanges $ sudo dpkg-reconfigure -plow unattended-upgrades $ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades Unattended-Upgrade::Mail "user@example.com"; Unattended-Upgrade::Automatic-Reboot "true"; $ sudo unattended-upgrades --dry-run
  • 13. @barnhartguy ● Reduce attack surface ● We should remove old/unneeded packages Examples: Ipv6, irqbalance, Bluetooth, USB storage driver, Anacron, Apport, Atd, Autofs, Avahi, CUPS, Dovecot, Modemmanager, Nfs, Snmp, Telnet, Whoopsie, Zeitgeist Updating the System $ dpkg --list $ dpkg --list packageName $ apt-get remove packageName $ sudo apt-get --purge ntfs-3g
  • 14. @barnhartguy ● We should limit the number of users that are allowed to login (never root) ● We should better protect these account ● If you can, use PKI keys ○ If you cannot, use 2FA SSH Hardening $ ssh-keygen -t ed25519 $ nano /etc/ssh/sshd.conf PermitRootLogin no ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no AuthenticationMethods publickey PubkeyAuthentication yes AllowUsers user1 user2 PermitEmptyPasswords no ClientAliveInterval 300 ClientAliveCountMax 0 IgnoreRhosts yes
  • 15. @barnhartguy ● Use TOTP ● Try to limit the number of users who have access, or share TOTP values SSH Hardening - 2FA $ sudo apt-get install libpam-google-authenticator $ google-authenticator -td --rate-limit=3 --rate-time=120 $ nano /etc/pam.d/sshd auth required pam_google_authenticator.so nullok sudo nano /etc/ssh/sshd_config ChallengeResponseAuthentication yes $ sudo systemctl restart sshd.service $ sudo service ssh restart $ sudo apt-get install oathtool $ oathtool -b --totp `head -n 1 ~/.google_authenticator`
  • 16. @barnhartguy ● Fail2Ban and Rate Limiting ● Future updates can overwrite files, make copies SSH Hardening - Brute Force Attacks $ sudo ufw limit ssh comment “rate limit ssh” $ sudo apt-get install fail2ban $ sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local $ sudo systemctl start fail2ban $ sudo systemctl enable fail2ban
  • 17. @barnhartguy ● Separate user and admin accounts ● Limit “root” access ○ Root account shouldn’t have a login ● Verifying/setting that all world writable directories have their sticky bit set User Accounts, ACL and special files/directories $ sudo passwd -l root $ sudo chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow $ sudo chmod 644 /etc/passwd /etc/group $ sudo chmod 500 /etc/shadow /etc/gshadow $ sudo find / -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print | while read directory; do echo "$FUNCNAME: ${GREEN} Making sticky on ${directory}..." chmod +t ${directory} done
  • 18. @barnhartguy ● Verifying/setting that there are no world-writable files on the system ● Verifying/setting that there are no unauthorized SETUID/SETGID files on the system User Accounts, ACL and special files/directories $ sudo find / -xdev -type f -perm -0002 -print | while read file; do chmod o-w ${file} done $ sudo find / -xdev ( -perm -4000 -o -perm -2000 ) -type f -print| while read file; do if grep -Fxq "$file" "allowed_suid_list.txt" then echo “${file} - This program is allowed; leave it alone.” else chmod -s ${file} fi done
  • 19. @barnhartguy ● Use RSysLog Remote Logging $ sudo apt-get update && apt-get install rsyslog $ sudo systemctl enable rsyslog $ sudo systemctl start rsyslog $ sudo nano /etc/rsyslog.d/01-server.conf *.* @@distant-server-ip:514 $ sudo systemctl restart rsyslog $ journalctl -f -u rsyslog
  • 20. @barnhartguy ● Several tools: CIS Benchmark, Lynis Audit $ git clone https://github.com/CISOfy/lynis $ lynis/lynis audit system
  • 21. @barnhartguy ● You mostly pay attention to a single TTY, an attacker can work in a different one Allow Single TTY $ cat <<EOF > /etc/securetty Console Tty1 EOF $ sudo nano /etc/default/console-setup ACTIVE_CONSOLES=”/dev/tty1” Reboot $ dmesg | grep tty
  • 22. @barnhartguy ● Secure Shared Memory $ sudo nano /etc/fstab tmpfs /run/shm tmpfs defaults,noexec,nosuid 0 0
  • 23. @barnhartguy ● Backup the /tmp dir, replace with new one (which is secure) Secure Temporary Directories dd if=/dev/zero of=/usr/tmpDSK bs=1024 count=1024000 mkdir /tmpbackup && cp -Rpf /tmp /tmpbackup mount -t tmpfs -o loop,noexec,nosuid,rw /usr/tmpDSK /tmp chmod 1777 /tmp cp -Rpf /tmpbackup/* /tmp/ && rm -rf /tmpbackup/* echo "/usr/tmpDSK /tmp tmpfs loop,nosuid,noexec,rw 0 0" >> /etc/fstab mount -o remount /tmp mkdir /var/tmpold mv /var/tmp /var/tmpold ln -s /tmp /var/tmp cp -prf /var/tmpold/* /tmp/
  • 24. @barnhartguy ● Prevent attackers from mounting filesystems that you don’t need and might benefit them Disable Uncommon File Systems $ ls -1 /lib/modules/$(uname -r)/kernel/fs | sort | uniq > avail_fs $ mount | column -t | cut -c 82-90 | sort | uniq > used_fs $ for fs in $(comm -1 used_fs avail_fs); do echo "blacklist $fs"; done >> /etc/modprobe.d/blacklist.conf
  • 25. @barnhartguy ● Prevent attackers from compiling code to get higher order abilities Disable Compilers >> COMPILERS=( "/usr/bin/byacc" "/usr/bin/yacc" "/usr/bin/bcc" "/usr/bin/kgcc" "/usr/bin/cc" "/usr/bin/gcc" "/usr/bin/c++" "/usr/bin/g++" ) for compiler in ${COMPILERS[@]}; do if [ -f ${compiler} ]; then echo "removing ${compiler} chmod 000 ${compiler} else echo "missing ${compiler} fi done
  • 26. Thank You! @barnhartguy I’ll be happy to answer more questions after the talk (outside)