+ All Categories
Home > Documents > Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin Order deny ,...

Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin Order deny ,...

Date post: 16-Mar-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
27
Linux Security Ideas and Tips Hugh Brown Sr. Systems Administrator ITS Enterprise Infrastructure University of Iowa October 8, 2014 Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 1 / 27
Transcript
Page 1: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Linux Security Ideas and Tips

Hugh BrownSr. Systems Administrator

ITS Enterprise Infrastructure

University of Iowa

October 8, 2014

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 1 / 27

Page 2: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Introduction

Who am I?

Linux User and Sysadmin for 15+ years

Worked in big business, small business and university environments

Taught Linux courses for the UI

My assumptions:

You are running Linux in a server capacity

You are only running a handful of systems

You aren’t managing 100s of Linux systems

The command line isn’t scary

Specifics may be Redhat–centric

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 2 / 27

Page 3: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Overview

� Where to get Linux � Remote access and ssh hardening

� Minimalism � Packet Filtering

� Baseline � Logging

� Patching � AV protection

� Least privilege � Secure applications

� User management � Further reading

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 3 / 27

Page 4: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Where to get Linux

Redhat: https://helpdesk.its.uiowa.edu/software/signin.htm

CentOS: http://www.centos.org/

Fedora: http://fedoraproject.org

SuSE: $$ https://www.suse.com

openSuSE: http://www.opensuse.org

Ubuntu: http://www.ubuntu.com

Debian: http://www.debian.org

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 4 / 27

Page 5: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Minimalism

Install the minimum you need, add software/packages as necessary

Use package manager to remove any extras that you don’t need

Fewer packages/applications means less to patch later

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 5 / 27

Page 6: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Minimalism: Disabling unneeded services

Disable unnecessary services - Don’t install them in the first placeHow to determine what’s listening:

n e t s t a t −vanp | gr ep LISTEN

Proto Recv−Q Send−Q Loca l Address Fo r e i gn Address S ta t e PID/Program nametcp 0 0 1 2 7 . 0 . 0 . 1 : 5 0 3 7 0 . 0 . 0 . 0 : * LISTEN 5464/ adbtcp 0 0 0 . 0 . 0 . 0 : 1 1 1 0 . 0 . 0 . 0 : * LISTEN 2017/ rp cb i ndtcp 0 0 0 . 0 . 0 . 0 : 2 2 0 . 0 . 0 . 0 : * LISTEN 10260/ sshdtcp 0 0 0 . 0 . 0 . 0 : 4 9 2 1 8 0 . 0 . 0 . 0 : * LISTEN 9997/ rpc . s t a t dtcp 0 0 0 . 0 . 0 . 0 : 2 4 8 0 0 0 . 0 . 0 . 0 : * LISTEN 11677/ s yn e r g y stcp 0 0 0 . 0 . 0 . 0 : 4 0 0 . 0 . 0 . 0 : * LISTEN 10260/ sshdtcp 0 0 1 2 7 . 0 . 0 . 1 : 6 3 1 0 . 0 . 0 . 0 : * LISTEN 10073/ cupsdtcp 0 0 1 2 7 . 0 . 0 . 1 : 2 5 0 . 0 . 0 . 0 : * LISTEN 10349/ mastertcp 0 0 : : : 1 1 1 : : : * LISTEN 2017/ rp cb i ndtcp 0 0 : : : 5 0 1 6 2 : : : * LISTEN 9997/ rpc . s t a t dtcp 0 0 : : : 2 2 : : : * LISTEN 10260/ sshdtcp 0 0 : : : 4 4 : : : * LISTEN 10260/ sshdtcp 0 0 : : 1 : 6 3 1 : : : * LISTEN 10073/ cupsdtcp 0 0 : : 1 : 2 5 : : : * LISTEN 10349/ master

What/where is that program:man -k <program> ls -l /proc/<pid>/exe

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 6 / 27

Page 7: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Baseline

After install, and initial configuration: determine what “normal” is

Which processes are running as which users (ps)?

Which ports are they listening on (netstat/fuser/lsof)?

Scheduled tasks (cron/at)

Disk utilization (df)

Log entries (logwatch, checking logs manually)

Memory usage (top, vmstat)

CPU usage (top, mpstat)

Accounts on the system (/etc/passwd)

Account access (who is “normally” logged in: w, last)

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 7 / 27

Page 8: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Patching

One of the foremost ways to keep your system secure is to patch regularly.

Schedule a time to do patching (monthly or better)

Allow for emergency patching for critical vulnerabilities

Evaluate patches: local exploit vs. remote exploit

Software inventory on a system (what to patch)

Subscribe to appropriate information sources to find out when patchesare available

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 8 / 27

Page 9: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Patching: Post Patching

Linux won’t (usually) prompt you to reboot

If you updated glibc or the kernel, you’ll need to reboot

Otherwise, restart services as needed.

How do you find out which services need to be restarted:

needs−r e s t a r t i n g # pa r t o f yum−u t i l s package

l s o f | gr ep i n o d e | gr ep l i b # RHEL5l s o f | gr ep DEL | gr ep l i b # RHEL6

will output a list of all processes which have deleted files with thename lib in them.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsudo 664 r oo t DEL REG 253 ,0 1742367 / u s r / l i b 6 4 / l i b n s s u t i l 3 . sosudo 664 r oo t DEL REG 253 ,0 1742397 / u s r / l i b 6 4 / l i b n s s 3 . sof i r e f o x 3528 hbrown DEL REG 253 ,0 1742367 / u s r / l i b 6 4 / l i b n s s u t i l 3 . sof i r e f o x 3528 hbrown DEL REG 253 ,0 1742397 / u s r / l i b 6 4 / l i b n s s 3 . socupsd 10073 r oo t DEL REG 253 ,0 1742367 / u s r / l i b 6 4 / l i b n s s u t i l 3 . socupsd 10073 r oo t DEL REG 253 ,0 1742397 / u s r / l i b 6 4 / l i b n s s 3 . sos shd 10260 r oo t DEL REG 253 ,0 1742367 / u s r / l i b 6 4 / l i b n s s u t i l 3 . sos shd 10260 r oo t DEL REG 253 ,0 1742397 / u s r / l i b 6 4 / l i b n s s 3 . soqmgr 10357 p o s t f i x DEL REG 253 ,0 1742367 / u s r / l i b 6 4 / l i b n s s u t i l 3 . soqmgr 10357 p o s t f i x DEL REG 253 ,0 1742397 / u s r / l i b 6 4 / l i b n s s 3 . so

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 9 / 27

Page 10: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Patching: Campus Resources

Satellite server: Redhat productshttps://rhnsat.uiowa.eduDetails:http://its.uiowa.edu/campus-software-program/red-hat-linux-campus

Spacewalk server: Fedora and CentOShttp://spacewalk.its.uiowa.edu

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 10 / 27

Page 11: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Least Privilege

Only give an application/user the minimally needed permissions to get thejob done

Most processes don’t need to run as root, don’t let them (whenpossible)

Binding to a port between 1 and 1024 is root only

Don’t give out the root password

Don’t ever do chmod 777 (unless you really mean it)

Evaluate Setuid programs and determine if any user will need to runthem

Limit sudo privileges to just the needed commands

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 11 / 27

Page 12: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Least Privilege: Setuid

The setuid permission coupled with root ownership allows any user to runthat command with root privileges.

Finding setuid programs:/usr/bin/find / -user root -perm -4000 -print

Remove:chmod u-s /path/to/binary

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 12 / 27

Page 13: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Least Privilege: Setuid Valid Uses

Potentially valid uses for setuid programs

Reading files that would otherwise be protected/bin/sudo needs to read /etc/sudoers to validate commands

Writing files to locations that are protected/usr/bin/crontab stores a user’s crontab in /var/spool/cron

Creating a raw socket (ping/traceroute)

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 13 / 27

Page 14: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Least Privilege: Sudo

Sudo can be used to give selective permission for performing a limitednumber of tasks as root

Using hbrown ALL=(ALL) ALL in sudoers is full root access, beselective.

Allowing vi /my/config via sudo is full root access. Allowsudoedit /my/config instead.

Using sudo for select functions is a good thing.

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 14 / 27

Page 15: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Permissions

Tips for troubleshooting permissions:

Check to see if SELinux is enabled: getenforce

cat /proc/<pid>/status and look for Uid/Gid to see which user aprocess is running as

Check from / down to wherever it is the app is trying to write insteadof the other way round

Use strace to do a system trace

strace -fvvvto output.strace -s 2048 -u <username> <cmd>

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 15 / 27

Page 16: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

User Management

Avoid shared/service accounts with passwords that everyone logs inwith

- Use sudo access to a service account when needed

Use directory based user accounts (for builtin accountexpiration/password rules)

Collect logs of user account activity on a different system (wtmp,/var/log/secure)

Remove .ssh/authorized_keys for users that are gone/disabled.

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 16 / 27

Page 17: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

User Management: Kerberos Authentication against AD

Authorization against AD is an on–going project.For now, you’ll need to populate the /etc/passwd file with an entryfor each user

Authentication is possible now

http://its.uiowa.edu/support/article/100409

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 17 / 27

Page 18: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Remote access

ssh is a wonderful tool, hackers think so too. Ideas for securing it:

Edit your /etc/ssh/sshd_config- Disable root login (PermitRootLogin no)- Disable Password authentication and only use keys

(PasswordAuthentication no)- Leave X11Forwarding turned off (X11Forwarding no)

Edit your /etc/ssh/ssh_config- Enable hashed known_hosts files (HashKnownHosts yes)- Disable X11Trusted (ForwardX11Trusted no)

Run it on a different port than 22

Use iptables to rate limit access and only allow trusted IPs/nets.

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 18 / 27

Page 19: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Packet Filtering

An easy way to keep the bad actors out is to refuse to respond

- Use host based firewalls - iptables/ip6tables

- Use TCP Wrappers

Scan your system regularly to make sure those filters are working.

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 19 / 27

Page 20: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Packet Filtering: Host based firewalls

Use a local host based firewall

Make sure you have ip6tables configured if you are using IPv6

Remember that iptables uses a first match paradigm

Make sure you have a line that rejects/drops traffic at the end

Test your rules with nmap from both on and off campus

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 20 / 27

Page 21: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Packet Filtering: TCP Wrappers

TCP Wrappers is a classic lightweight application firewall. Rules are in/etc/hosts.allow and /etc/hosts.deny

Make use of it to fine tune what you protect

It’s a second layer of defense behind your host based firewall(ip*tables)

Use ldd <path/to/binary> | grep libwrap to see if yourapplication supports it

The daemon name for the hosts.allow file is usually the name ofthe binary. Check documentation to be sure.

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 21 / 27

Page 22: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Packet Filtering: Scanning

Scan your systems regularly to make sure the view from the outside is“normal”

Request a scan from the Security Officehttp://itsecurity.uiowa.edu/scan/networkscan-form.shtml

Use nmap judiciously against your own systems

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 22 / 27

Page 23: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Logging

There’s lots of useful information to be had in /var/log. Attackers knowthat and clean it out to hide what they’ve done

Use a central logging host to gather that information

Use some sort of log analysis suite (or logwatch) to help you wadethrough it

Use logging to help you determine “normal”

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 23 / 27

Page 24: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

AV Protection

AV? We don’t need no AV on Linux!

Sometimes your Linux server is serving up files to MS Windows hosts.

Running AV on those Linux systems is a must

ClamAV http://www.clamav.net

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 24 / 27

Page 25: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Secure Your Applications

Look for best practice guides for any application you deploy

An Example: Apache Host Access to protect phpMyAdmin

<D i r e c t o r y ”/ u s r / s h a r e /phpMyAdmin”>Order deny , a l l o wDeny from a l lA l low from uiowa . eduAl low from 1 2 8 . 2 5 5 .

</ D i r e c t o r y >

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 25 / 27

Page 26: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Secure Your Applications: Apache Allow/Deny Ordering

http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order

Match Allow,Deny resultMatch Allow only Request allowedMatch Deny only Request deniedNo match Default to second directive: DeniedMatch both Allow & Deny Final match controls: Denied

Match Deny,Allow resultMatch Allow only Request allowedMatch Deny only Request deniedNo match Default to second directive: AllowedMatch both Allow & Deny Final match controls: Allowed

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 26 / 27

Page 27: Linux Security Ideas and Tips · An Example: Apache Host Access to protect phpMyAdmin  Order deny , allow Deny from a l l Allow from uiowa

Further reading

UNIX and Linux System Administration Handbookhttp://www.admin.com

The Linux Command Linehttp://linuxcommand.org/tlcl.php

Hugh Brown (University of Iowa) Linux Security Ideas and Tips October 8, 2014 27 / 27


Recommended