
- •Acknowledgments
- •About the Author
- •Contents at a Glance
- •Contents
- •Table of Exercises
- •Introduction
- •Assessment Test
- •Answers to Assessment Test
- •Defining Ethical Hacking
- •How to Be Ethical
- •Keeping It Legal
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Reconnaissance
- •Information-Gathering Methodology
- •Social Engineering
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Scanning
- •Enumeration
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •The Simplest Way to Get a Password
- •Types of Passwords
- •Cracking a Password
- •Understanding Keyloggers and Other Spyware Technologies
- •Escalating Privileges
- •Understanding Rootkits
- •Hiding Files
- •Understanding Steganography Technologies
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Trojans and Backdoors
- •Viruses and Worms
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •How a Sniffer Works
- •Sniffing Countermeasures
- •Bypassing the Limitations of Switches
- •Wireshark Filters
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Denial of Service
- •Session Hijacking
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •How Web Servers Work
- •Types of Web Server Vulnerabilities
- •Web Application Vulnerabilities
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •SQL Injection
- •Buffer Overflows
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Wi-Fi and Ethernet
- •Authentication and Cracking Techniques
- •Using Wireless Sniffers to Locate SSIDs
- •MAC Filters and MAC Spoofing
- •Rogue Access Points
- •Wireless Hacking Techniques
- •Securing Wireless Networks
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Components of Physical Security
- •Understanding Physical Security
- •Physical Site Security Countermeasures
- •What to Do After a Security Breach Occurs
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Linux Basics
- •Compiling a Linux Kernel
- •GCC Compilation Commands
- •Installing Linux Kernel Modules
- •Linux Hardening Methods
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Types of IDSs and Evasion Techniques
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Generating Public and Private Keys
- •Cryptography Algorithms
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Defining Security Assessments
- •Penetration Testing
- •Pen Test Deliverables
- •Summary
- •Exam Essentials
- •Review Questions
- •Answers to Review Questions
- •Glossary
- •Index

Linux Hardening Methods |
289 |
Installing Linux Kernel Modules
Linux Kernel Modules (LKMs) let you add functionality to your operating system without having to recompile the OS.
A danger of using LKMs is that a rootkit can easily be created as an LKM, and if loaded, it infects the kernel. For this reason, you should download LKMs only from a verified good source.
Examples of LKM rootkits are Knark, Adore, and Rtkit. Because they infect the kernel, these rootkits are more difficult to detect than those that do not manifest themselves as LKMs. Once a system has been compromised, the hacker can put the LKM in the /tmp or the /var/tmp directory, which can’t be monitored by the system administrator, thereby hiding processes, files, and network connections. System calls can also be replaced with those of the hacker’s choosing on a system infected by an LKM rootkit.
The command to load a LKM is modprobe LKM.
Linux Hardening Methods
Hardening is the process of improving security on a system by making modifications to the system. Linux can be made more secure by employing some of these hardening methods.
The first step in securing any server, Linux or Windows, is to ensure that it’s in a secure location such as a network operations center, which prevents a hacker from gaining physical access to the system.
The next and most obvious security measure is to use strong passwords and not give out usernames or passwords. Administrators should make sure the system doesn’t have null passwords by verifying that all user accounts have passwords in the Linux /etc/shadow file.
The default security stance of deny all is a good one for hardening a system from a network attack. After applying deny all, the administrator can open certain access for specific users. By using the deny all command first, the administrator ensures that users aren’t being given access to files that they shouldn’t have access to. The command to deny all users access from the network looks like this:
Cat “All:All”>> /etc/hosts.deny
Another good way to harden a Linux server is to remove unused services and ensure that the system is patched with the latest bug fixes. Administrators should also check system logs frequently for anything unusual that could indicate an attack.
The following are other overall recommended steps to improve the security of a Linux server:
Operating System Selection and Installation
NN |
Use a widely recognized and known good Linux distribution. |
NNSet up disk partitioning (or logical volumes), taking into account any security considerations.

290 Chapter 12 n Hacking Linux Systems
NNAfter the initial operating system installation, apply any operating system patches that have been released since the installation media was created.
NN |
Set up and enable IP tables. |
|
|
NN |
Install a host-based intrusion detection system (HIDS). |
NN |
Don’t install unnecessary applications or services. |
NN |
Enable the high security/trusted operating system version if appropriate. |
|
|
NN |
Secure the boot loader program (such as lilo or GRUB) with a password. |
NN |
Enable the single-user mode password if necessary. |
Securing Local File Systems
NNLook for inappropriate file and directory permissions, and correct any problems you find. The most important of these are:
|
NN |
Group and/or world writable system executables and directories |
|
|
|
|
NN |
Group and/or world writable user home directories |
|
|
|
NN |
Select mount options (such as nosuid) for local file systems that take advantage of |
|
|
||
|
security features provided by the operating system. |
|
NN |
Encrypt sensitive data present on the system. |
|
|
Configuring and Disabling Services
NNRemove or disable all unneeded services. Services are started in several different ways: within /etc/inittab, from system boot scripts, or by inetd. When possible, the software for an unneeded service should be removed from the system completely.
NN |
Use secure versions of daemons when they are available. |
NNIf at all possible, run server processes as a special user created for that purpose and not as root.
NN |
When appropriate, run servers in an isolated directory tree via the chroot facility. |
NN |
Set a maximum number of instances for services if possible. |
NNSpecify access control and logging for all services. Install TCP Wrappers if necessary. Allow only the minimum access necessary. Include an entry in /etc/hosts.deny that denies access to everyone (so only access allowed in /etc/hosts.allow will be permitted).
NNUse any per-service user-level access control that is provided. For example the cron and at subsystems allow you to restrict which users can use them at all. Some people recommend limiting at and cron to administrators.
NN |
Secure all services, whether they seem security related or not (such as the printing service). |

Linux Hardening Methods |
291 |
Securing the Root Account
NN |
Select a secure root password, and plan a schedule for changing it regularly. |
NN |
If possible, restrict the use of the su command to a single group. |
NNUse sudo or system roles to grant other ordinary users limited root privilege when needed.
NN |
Prevent direct root logins except on the system console. |
Defining User Account Password Selection and Aging Settings
NN |
Set up default user account restrictions as appropriate. |
NNSet up default user initialization files in /etc/skel, as well as the system-wide initialization files.
NNEnsure that administrative and other system accounts to which no one should ever log in have a disabled password and /bin/false or another non-login shell.
NN |
Remove unneeded predefined default accounts. |
Securing Remote Authentication
NN |
Disable /etc/hosts.equiv and .rhosts password-less authentication. |
NNUse ssh and its related commands for all remote user access. Disable rlogin, rsh, telnet, ftp, rcp, and so on.
Performing Ongoing System Monitoring
NNConfigure the syslog facility. Send or copy syslog messages to a central syslog server for redundancy.
NN |
Enable process accounting. |
NNInstall Tripwire, configure it, and record system baseline data. Write the data to removable media and then remove it from the system. Finally, configure Tripwire to run on a daily basis.
NNDesign and implement a plan for monitoring log information for security-related events.
Performing Miscellaneous Activities
NNRemove any remaining source code for the kernel or additional software packages from the system.
NNAdd the new host to the security configuration on other systems, in router access control lists, and so forth.
NN |
Check for vendor security updates for any installed software. |

292 Chapter 12 n Hacking Linux Systems
Exercise 12.3 shows how to detect listening ports on a Linux system.
E x e r c i s e 12 . 3
Detecting Listening Network Ports
One of the most important tasks in securing Linux is to detect and close network ports that are not needed. This exercise will show you how to get a list of listening network ports (TCP and UDP sockets).
1.Boot the BackTrack Linux USB drive you created in an earlier exercise. Note that BackTrack is not necessary for this exercise. These commands will work with any Linux installation.
2.Open a command window and type netstat -tulp. This command will display a list of open ports on your system.
Another method for listing all the TCP and UDP sockets to which programs are listening is lsof. The syntax to run this command is:
# lsof -i -n | egrep ‘COMMAND|LISTEN|UDP’
3.The next step to harden the Linux installation is to disable unused services. The start/stop scripts of all runlevel services can be found in the /etc/init.d directory. For example, if you don’t know what the atd service does, go to /etc/init.d and open the file atd. In the script look for lines that start programs. In the atd script, the daemon /usr/sbin/atd line starts the binary atd. Then, having the name of the program that is started by this service, you can check the online pages of atd by running man atd. This will help you to find out more about a system service.
To permanently disable a service—in this example, the runlevel service nfs—type the following command:
chkconfig nfs off