Practical Linux Security Cookbook - Sample Chapter
Practical Linux Security Cookbook - Sample Chapter
Practical Linux Security Cookbook - Sample Chapter
ee
With lots of step-by-step recipes, the book starts by introducing you to various threats to Linux systems.
You then get to walk through customizing the Linux kernel and securing local files. Next, you will move
on to managing user authentication locally and remotely and mitigating network attacks. Finally, you will
learn to patch bash vulnerability and monitor system logs for security.
With several screenshots in each example, the book will supply a great learning experience and help you
create more secure Linux systems.
and test it
Learn about file permissions and security
and problems
problems efficiently
real-world problems
Tajinder Kalsi
Practical Linux Security Cookbook will provide you with the necessary skills to make systems more
secure whether you are new to Linux administration or experienced.
$ 44.99 US
28.99 UK
P U B L I S H I N G
pl
e
P U B L I S H I N G
Sa
Tajinder Kalsi
Preface
When setting up a Linux system, security is supposed to be an important part of all stages.
A good knowledge of the fundamentals of Linux is essential to implementing a good security
policy on the machine.
Linux, as it ships, is not completely secure, and it is the responsibility of the administrator
to configure the machine in a way such that it becomes more secure.
Practical Linux Security Cookbook will work as a practical guide for administrators and help
them configure a more secure machine.
If you want to learn about Kernel configuration, filesystem security, secure authentication,
network security, and various security tools for Linux, this book is for you.
Linux security is a massive subject and not everything can be covered in just one book. Still,
Practical Linux Security Cookbook will give you a lot of recipes for securing your machine.
Preface
Chapter 4, Local Authentication in Linux, explores user authentication on a local system
while maintaining security. Topics covered in this chapter include user authentication logging,
limiting user login capabilities, monitoring user activity, authentication control definition,
and also how to use PAM.
Chapter 5, Remote Authentication, talks about authenticating users remotely on a Linux
system. The topics included in this chapter are remote server access using SSH, disabling
and enabling root login, restricting remote access when using SSH, copying files remotely
over SSH, and setting up Kerberos.
Chapter 6, Network Security, provides information about network attacks and security. It
covers managing the TCP/IP network, configuring a firewall using Iptables, blocking spoofed
addresses, and unwanted incoming traffic. The chapter also gives readers an introduction
to configuring and using TCP Wrapper.
Chapter 7, Security Tools, targets various security tools or software that can be used
for security on a Linux system. Tools covered in this chapter include sXID, PortSentry,
Squid proxy, OpenSSL server, Tripwire, and Shorewall.
Chapter 8, Linux Security Distros, introduces the readers to some of the famous distributions
of Linux/Unix that have been developed in relation to security and penetration testing. The
distros covered in this chapter include Kali Linux, pfSense, DEFT, NST, and Helix.
Chapter 9, Patching a Bash Vulnerability, explores the most famous vulnerability of Bash
shell, which is known as Shellshock. It gives readers an understanding of Shellshock
vulnerability and the security issues that can arise with its presence. The chapter also tells
the reader how to use the Linux Patch Management system to secure their machine and
also gives them an understanding of how patches are applied in a Linux system.
Chapter 10, Security Monitoring and Logging, provides information on monitoring logs
in Linux, on a local system as well as a network. Topics discussed in this chapter include
monitoring logs using Logcheck, using Nmap for network monitoring, system monitoring
using Glances, and using MultiTail to monitor logs. A few other tools are also discussed,
which include Whowatch, stat, lsof, strace, and Lynis.
Linux Security
Problems
In this chapter, we will discuss the following:
Introduction
A Linux machine is only as secure as an administrator configures it to be. Once we are done
with the installation of the Linux OS and we remove its unnecessary packages after the
installation has been completed, we can start working on the security aspect of the software
and the services provided by the Linux machine.
Data permission
When developing a security policy, a user should use only those services for which permission
has been granted. Anything that is not permitted should be restricted in the policy.
How to do it
Follow the given rules when selecting or securing your password.
For the creation policy, follow these rules:
A user should not use the same password for all the accounts in an organization
Any system-level account should have a password that's different from any other
account held by the same user
Chapter 1
For the protection policy, follow these rules:
Don't store passwords in written form anywhere in your office. If you store passwords
on a mobile device, always use encryption.
In there's any doubt of a password being compromised, report the incident and
change the password as soon as possible.
All users and administrators must change their password on a regular basis or at
least on a quarterly basis
The security audit team of an organization must conduct random checks to check
whether the passwords of any user can be guessed or cracked
How it works
With the help of the preceding points, ensure that a password, when created or changed,
is not easy enough to be guessed or cracked.
How to do it
General Policy:
When configuring internal servers, they must be registered in such a way that the
servers can be identified on the basis of the following information:
Configuration Policy:
The operating system on the server should be configured in accordance with the
guidelines approved for InfoSec.
Any service or application not being used should be disabled wherever possible.
All access to the services and applications on the server should be monitored and
logged. They should also be protected through access-control methods. An example
of this will be covered in Chapter 3, Local Filesystem Security.
The system should be kept updated, and any recent security patches, if available,
should be installed as soon as possible.
Avoid using a root account to the maximum extent. It's preferable to use security
principles that require the least amount of access to perform a function.
Any kind of privileged access must be performed over secure channel connection
(SSH) wherever possible.
Monitoring Policy:
All security-related actions on server systems must be logged, and audit reports
should be saved as follows:
Chapter 1
Any event related to security being compromised should be reported to the InfoSec
team. They shall then review the logs and report the incident to the IT department.
How it works
Following the preceding policy helps in the base configuration of the internal server that is
owned or operated by the organization. Implementing the policy effectively will minimize
any unauthorized access to sensitive and proprietary information.
There's more
There are some more things to discover when we talk about security in Linux.
Security controls
When we talk about securing a Linux machine, it should always start with following a checklist
in order to help in the hardening of the system. The checklist should be such that following it
will confirm the implementation of proper security controls.
Getting ready
The MD5 checksum is normally installed on most Linux distributions, so installation is
not required.
How to do it
1. First open the Linux terminal and then change the directory to the folder containing
the downloaded ISO file using the ubuntu@ubuntu-desktop:~$ cd Downloads
command.
Linux is case-sensitive, and type the correct spelling for the folder name.
Downloads is not the same as downloads in Linux.
3. The md5sum command will then print the calculated hash in a single line,
as shown here:
8044d756b7f00b695ab8dce07dce43e5 ubuntu-filename.iso
Now, we can compare the hash calculated by the preceding command with the hash on the
UbuntuHashes page (https://help.ubuntu.com/community/UbuntuHashes). After
opening the UbuntuHashes page, we just need to copy the preceding hash that has been
calculated in the Find box of the browser (by pressing Ctrl + F).
How it works
If the calculated hash and the hash on the UbuntuHashes page match, then the downloaded
file is not damaged. If the hashes don't match, then there might be a problem with either
the downloaded file or the server from where the download was made. Try downloading
the file again. If the issue still persists, it is recommended that you report the issue to the
administrator of the server.
See also
Here's something extra in case you want to go the extra mile: try out the GUI checksum
calculator that is available for Ubuntu
Sometimes, it's really inconvenient to use a terminal in order to perform checksums. You need
to know the right directory of the downloaded file and also the exact filename. This makes it
difficult to remember the exact commands.
6
Chapter 1
As a solution for this, there is a very small and simple software called GtkHash.
You can download the tool from http://gtkhash.sourceforge.net/, and install it
using this command:
sudo apt-get install gtkhash
An entire block device can be encrypted using LUKS. It's well suited to protecting data
on removable storage media or laptop disk drives.
Once encrypted, the contents of the encrypted block devices are random, thus
making it useful for the encryption of swap devices.
Getting ready
For the following process to work, it is necessary that /home is created on a separate partition
while installing Linux.
WARNING
Configuring LUKS using the given steps will remove all the data on the
partition that's being encrypted. So, before starting the process of using
LUKS, make sure to back up the data on an external source.
How to do it
For manually encrypting directories follow these steps:
1. Move to Run level 1. Type the following command in the shell prompt or terminal:
telinit 1
3. The previous command might fail if there is any process controlling /home. Find and
kill any such process using the fuser command:
fuser -mvk /home
6. The previous command might take some time to complete, so be patient. The time
taken depends on the write speed of your device.
7.
Chapter 1
14. Make changes in the /etc/fstab file to delete the entry for /home and add the
following line:
/dev/mapper/home /home ext3 defaults 1 2
15. Once completed, run this command to restore the default SELinux security settings:
/sbin/restorecon -v -R /home
17. After rebooting, the system will prompt us for the LUKS passphrase on boot. You can
log in as the root now and restore your backup.
Congratulations! You have successfully created an encrypted partition. Now you can keep all
your data safe even when your computer is off.
How it works
We first move into running level 1 and unmounting the /home partition. Once unmounted,
we fill some random data in the /home partition. Then, we initialize the partition, using the
cryptsetup command to encrypt it.
Once the encryption is done, we mount the filesystem back again, and then make an entry of
the partition in the /etc/crypttab file. Also, the /etc/fstab file is edited to add an entry
for the preceding encrypted partition.
After completing all the steps, we have restored the default settings of SELinux.
Doing this, the system will always ask for the LUKS passphrase on boot.
Getting ready
As the file for the configuration is predefined and the commands used are inbuilt, nothing
extra needs to be configured before starting these steps.
How to do it
1. We will first create a normal account and then give it sudo access. Once done, we
will be able to use the sudo command from the new account and then execute the
administrative commands. Follow the steps given to configure the sudo access.
Firstly, use the root account to login to the system. Then, create a user account
using the useradd command, as shown in the following figure:
Replace USERNAME with any name of your choice in the preceding command.
2. Now, using the passwd command, set a password for the new user account.
3. Edit the /etc/sudoers file by running visudo. The policies applied when using the
sudo command are defined by the /etc/sudoers file.
4. Once the file is open in the editor, search for the following lines, which allow sudo
access to the users in the test group:
10
Chapter 1
5. We can enable the given configuration by deleting the comment character (#) at the
beginning of the second line. Once the changes are made, save the file and exit from
the editor. Now, using the usermod command, add the previously created user to the
test group.
8. Now, use the groups command to confirm the presence of the user account in the
test group.
Finally, run the whoami command with sudo from the new account. As we have
executed a command that uses sudo for the first time, using this new user account,
the default banner message will be displayed for the sudo command. The screen will
also ask for the user account password to be entered.
9. The last line of the preceding output is the username returned by the whoami
command. If sudo is configured correctly, this value will be root.
You have successfully configured a user with sudo access. You can now log in to this user
account and use sudo to run commands the same way as you would from the root user.
11
How it works
When we create a new account, it does not have permission to run administrator commands.
However, after editing the /etc/sudoers file and making an appropriate entry to grant
sudo access to the new user account, we can start using the new user account to run all
the administrator commands.
There's more
Here is an extra measure that you can take to ensure total security.
Vulnerability assessment
A vulnerability assessment is the process of auditing our network and system security through
which we can know about the confidentiality, integrity, and availability of our network. The first
phase in the vulnerability assessment is reconnaissance, and this further leads to the phase
of system readiness in which we mainly check for all known vulnerabilities in the target. The
next phase is reporting, where we group all the vulnerabilities found into categories of low,
medium, and high risk.
Getting ready
Most Linux versions have Nmap installed. The first step is to check whether you already have
it using this command:
nmap version
If Nmap exists, you should see an output similar to what is shown here:
If Nmap is not already installed, you can download and install it from https://nmap.org/
download.html
12
Chapter 1
How to do it
Follow these steps to scan hosts using Nmap:
1. The most common use of Nmap is to find all online hosts within a given IP range.
The default command used to do this takes some time to scan the complete network,
depending on the number of hosts present in the network. However, we can optimize
the process in order to scan the range faster.
The following screenshot shows you an example of this:
2. In the preceding example, the time taken to complete the scan was 6.67 seconds
when scanning 100 hosts. If the whole IP range for a particular network is to be
scanned, it would take a lot more time.
13
This time, Nmap scanned the complete IP range in 1.97 seconds. Pretty good, right?
4. Port scanning using Nmap helps us discover services that are online, such as finding
FTP servers. To do this, use the following command:
The preceding command of Nmap shall list out all the IP addresses that have
port 21 open.
5. Not only FTP, other services can also be discovered by matching the port numbers on
which they run. For example, MySQL runs on port 3306. The command will now look
like this:
14
Chapter 1
How it works
Nmap checks for services that are listening by testing the most common network
communication ports. This information helps the network administrator to close down any
unwanted or unused services. The preceding examples show you how to use port scanning
and Nmap as powerful tools to study the network around us.
See also
Nmap also has scripting features using which we can write custom scripts. These scripts
can be used with Nmap to automate and extend its scanning capabilities. You can find more
information about Nmap on its official home page at https://nmap.org/
Getting ready
Backtrack 5R2 and the Metasploitable VMware system will be used in this section. The image
file of Metasploitable can be downloaded from http://sourceforge.net/projects/
metasploitable/files/Metasploitable2/.
How to do it
Follow these steps to gain root access to a vulnerable Linux system:
1. First, open the Metasploit console on the backtrack system by following this menu:
navigate to Main Menu | Backtrack | Exploitation Tools | Network Exploitation
Tools | Metasploit Framework | Msfconsole.
15
In the preceding command, the -Ss option allows us to perform a stealth scan, and
the -A option tries to discover the version information of the OS and service.
Also, in the preceding command, we can see that there are many services running on
different ports. Among them is Samba, which runs on ports 139 and 445.
Note that Samba is a service that provides the SMB file and prints
services for Windows systems.
3. Once we are able to locate the Samba service, we will just focus on it now. From
the preceding output, we can see that Samba is running version 3.x. Now, we shall
try to get more specific information about the service. To do this, we will use any of
the auxiliary modules of Metasploit, such as the scanner section, and look for the
SMB protocol.
16
Chapter 1
4. We can see that the scanner section has a SMB version detector. Now, we'll get the
exact version of Samba using the SMB detector program. If we search online for all
the vulnerabilities of the particular version of Samba, we will find the username
map script.
5. We can now search in the list of exploits available in Metasploit to check whether an
exploit exists for the map script username using the search samba command.
17
Now, use the map script username to gain a root level shell in the system.
Now, we shall gain root-level access to the system using the preceding exploit. Once we
choose the exploit and configure it with the target IP address (in this case, 192.168.0.1), we
will execute a command to run the exploit. Doing this will create and give us a remote session
on the target system and also open a command shell. Now, run the id command in the
remote shell. This will give a resultuid=0(root)gid=0(root). This confirms that we
have remote root access to the target system.
How it works
We first performed an Nmap scan to check for running services and open ports and found the
Samba service running. Then, we tried to find the version of the SMB service. Once we got
this information, we searched for any exploit available for Samba. Using the exploit, we tried
to attack the target system and got the root shell on it.
There's more
Let's learn about a few more exploits and attacks that are peculiar to Linux.
18
Chapter 1
In this section, we shall go through a few of the common exploits and attacks that Linux is
vulnerable to. However, in this section, will not cover any recipes to deal with the attacks.
This section is just to let you know about the common exploits used in Linux.
IP spoofing
An attacker can find vulnerabilities on our systems and servers, and using these, they can
install background programs or attack a network. This can be done if the attacker connects
his system to our network in a way that makes it appear as though there's a node in the local
network. There are various tools available to assist crackers while performing IP spoofing.
Eavesdropping
An attacker can collect data passing between two active nodes that communicate on a
network by eavesdropping. This type of attack works mostly with protocols such as Telnet, FTP,
and HTTP. Attacks of this kind can be done when the remote attacker already has access to
any system on the network. This can be made possible using other attacks such as the Man
in the Middle Attack.
Service vulnerabilities
If an attacker is able to find a flaw or vulnerability in any service running on the network
system, they can compromise the entire system and its data as well as other systems on
the network.
Administrators should stay updated about any patches or updates that are available for any
service or application running on the network system.
Denial of Service (DoS) attack
When an attacker sends unauthorized packets to the target system, which could be a server,
router, or a workstation, in large numbers, it forces the resource to become unavailable to
legitimate users.
The packets being sent by the attacker are usually forged, making the investigation
process difficult.
19
www.PacktPub.com
Stay Connected: