Mastering Linux Network Administration - Sample Chapter
Mastering Linux Network Administration - Sample Chapter
$ 49.99 US
31.99 UK
P U B L I S H I N G
Jay LaCroix
Mastering Linux
Network Administration
ee
pl
C o m m u n i t y
E x p e r i e n c e
D i s t i l l e d
Mastering Linux
Network Administration
Master the skills and techniques that are required to design,
deploy, and administer real Linux-based networks
Sa
m
Jay LaCroix
Preface
In this book, we will learn about the concepts that are required to manage real
Linux-based networks. The goal is to help the reader grow from a beginner or
an intermediate-level Linux user, to someone who can manage and support real
Linux-based networks. The book starts with a couple of introductory chapters, in
which the reader will set up their environment and then refresh some basics that will
serve as the foundation for the rest of the book. From there, more advanced topics
will be covered with useful examples, which the reader will be able to follow along
with gaining valuable hands on practice.
During this journey, we will cover the tasks that a network administrator will
typically perform on the job such as installing Linux, setting up DHCP, sharing
files, IP addressing, monitoring resources, and so on. These examples are covered
for not one but two popular distributions, Debian and CentOS. Since these two are
very popular distributions in the enterprise, the reader will be well prepared to
manage networks based on one distribution or the other (and also the countless
other distributions based on them).
Finally, the last few chapters will cover the best practices to prevent intrusions
and attacks and also troubleshooting to assist you when things go wrong.
Preface
Chapter 3, Communicating Between Nodes via SSH, covers all things SSH. In this
chapter, we take a look at how to use SSH and how to set up an OpenSSH server
to allow other nodes to connect. The scp command is also covered, allowing us to
transfer files from one machine to another.
Chapter 4, Setting up a File Server, covers both Samba and NFS. Here, we'll discuss
when it's appropriate to use one over the other, as well as the configuring and
mounting these shares.
Chapter 5, Monitoring System Resources, deals with the monitoring of resources on
our Linux systems such as inspecting free disk space, checking available memory,
rotating logs, and viewing journal logs.
Chapter 6, Configuring Network Services, is all about the services that make our
network come together. Topics such as DHCP and DNS servers are covered
here. NTP is also thrown in for good measure.
Chapter 7, Hosting HTTP Content via Apache, covers Apache, which is currently the
most used web server software in the world. Here, we'll not only install Apache,
but we'll configure it and manage the modules as well. The virtual hosts are
also covered.
Chapter 8, Understanding Advanced Networking Concepts, takes the reader to the next
level by discussing more advanced topics such as subnetting, Quality of Service,
redundancy in DHCP and DNS, and many more.
Chapter 9, Securing Your Network, deals with hardening our systems in order to
prevent unauthorized access. Here, we'll cover iptables, fail2ban, SELinux, and
much more.
Chapter 10, Troubleshooting Network Issues, rounds up our journey with some
troubleshooting tips you can use if you run into problems.
Getting started
Distributions to consider
Getting started
Network management in Linux is a fun, diverse field that is always changing.
While the core components typically remain the same throughout the years
(such as the TCP/IP protocol), how these services are managed have evolved
in each generation, such as the rise of systemd. Linux is definitely exciting.
[1]
In this chapter, we'll see how to set up your environment. Depending on your
experience level, you can skip directly to Chapter 2, Revisiting Linux Networking Basics.
If you're already comfortable setting up a distribution or two on a physical or virtual
machine, you already have the knowledge needed to get started. Here, we'll discuss
how to install a few distributions of interest for the exercises in this book and some
general pointers.
In a nutshell, the more Linux installations you have to work with, the better. While
practicing networking concepts, it's a good idea to have as many nodes as possible,
so you can test how your configuration changes, will affect your environment. If you
are already comfortable installing Linux, feel free to set up some nodes and then I'll
meet you in the next chapter.
Distributions to consider
There are over a hundred distributions of Linux in existence today. These include
distributions geared specifically toward workstations or servers (or even both) and
specialist distributions, which solve a specific task, such as Kali, Mythbuntu, and
Clonezilla. Naturally, the first question one might have when studying a concept
such as network administration is which distributions to start with.
Let's not focus on any one distribution. In the enterprise, no two data centers
are same. Some organizations that utilize Linux might standardize on a specific
distribution set (for example, Ubuntu and Ubuntu Server) though it's far more
common to see a mix of one or more distributions in use. Distributions such as
SUSE Enterprise Linux, Red Hat Enterprise Linux, Ubuntu Server, CentOS, and
Debian are extremely common among servers within Linux-based networks. In
my experience, I've seen Debian (as well as its derivatives) and Red Hat-based
distributions in use most often.
You are encouraged to experiment and mix up whichever distributions you might
favor. There are many candidates, and websites such as www.distrowatch.com
would give you a list of possibilities. Specifically for the sake of the examples in
this book, CentOS and Debian are recommended for your use. In fact, these two
distributions are wonderful places to start. You'll get a taste for two different forms
of package management (rpm and deb packages) and familiarize yourself with two
of the most popular distributions. Regarding Debian, quite a few distributions are
based on it (Ubuntu, Linux Mint, and others). By learning how to manage a Debian
installation, much of that knowledge would be transferable to other distributions
should you consider switching. The same can be said about CentOS, which is based
on Red Hat. Red Hat is a very popular distribution and since CentOS is created from
its source, you're essentially learning it as well. While Fedora is more bleeding-edge
than Red Hat or CentOS, much of the knowledge will be useful there as well; Fedora
is popular as a workstation distribution.
[2]
Chapter 1
The examples within this book were tested in both CentOS and Debian. Whenever an
instruction is specific to a particular distribution, I will let you know. Having a CentOS
and Debian installation will suit you for the purposes of this book, but feel free to
experiment. As far as individual versions of these distributions are concerned, both
CentOS 7 and Debian 8 were used. Install these in your environment or home lab.
In this book, VirtualBox is discussed. However, it's by no means the only solution
for creating virtual machines. There are other solutions as well, such as KVM, Xen,
VMware and others. VirtualBox has the benefit of being free, open source, and crossplatform (it's available for Linux, Mac OS X, and Windows), so there's a good chance
it will work in your environment. In most cases, it's even easier to set up than KVM
or Xen (but perhaps not nearly as cool). You don't have to use VirtualBox (or even
VMs at all, for that matter) in order to follow along with this book. Use whatever
solution you prefer. In this book, I try not to limit the instructions to any one specific
solution, so the content works for as many people as possible.
Acquiring VirtualBox
Downloading and installing VirtualBox is actually fairly straightforward, but each
platform has its unique quirks. In Windows, the initial installation is simply a matter
of navigating to the following site and downloading the setup file and running
through the installation wizard:
https://www.virtualbox.org/wiki/Downloads
After installation, all you would need to do is skip to the Downloading and
installing the Extension Pack section of this chapter. Installing on Mac OS X
is also straightforward.
For Linux, there are several methods to install VirtualBox. One way is to use your
package manager, if your distribution already has it available in its repositories.
Unfortunately, depending on the version of your distribution, the version of
VirtualBox that may be included is very likely to be out of date. For example,
Debian typically contains older packages in its repositories, but bleeding-edge
distributions such as Arch are more likely to contain the latest and best.
Perhaps a better way of acquiring VirtualBox is to import the repositories that
VirtualBox itself provides into your system. The following URL has a list of Debian
repositories and even a method of adding a repository for RPM-based distributions
(Fedora, Red Hat, and so on):
https://www.virtualbox.org/wiki/Linux_Downloads
[4]
Chapter 1
For example, using the instructions on the page as a guide, we can run through the
following procedure on a Debian-based system. However, Oracle may change their
instructions and repository listing at any time; always consult the previous URL
before installation to see if the procedure has changed.
To verify that we will add the correct version, we need to determine which
repository to use. This differs based on which distribution you're running, so
definitely consult the documentation on the VirtualBox site to ensure you're
importing the correct repository.
For Debian 8 "Jessie", we would use the following:
deb http://download.virtualbox.org/virtualbox/debian jessie contrib
To add this repository to our Debian system, we would use the following command:
# echo "deb http://download.virtualbox.org/virtualbox/debian jessie
contrib" > /etc/apt/sources.list.d/virtualbox.list
Then, we can add the public key for the repository with the following command:
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | aptkey add -
From now on, we can find Oracle's VirtualBox package in our repositories and
install it. To do so, let's first update our package listing with the following
command (as root):
# apt-get update
This same procedure for installation will work for Ubuntu as well,
as long as you choose the appropriate matching repository.
For distributions such as Fedora, Red Hat Enterprise Linux (RHEL) and openSUSE,
Oracle provides similar instructions.
The public key can be downloaded via the following command:
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | rpm
--import -
[5]
In order to add the repository to a Fedora system, execute the following command:
# wget -P /etc/yum/repos.d/ http://download.virtualbox.org/virtualbox/
rpm/fedora/virtualbox.repo
After adding the repository, VirtualBox can be installed with the following command:
# yum install VirtualBox-4.3
The installation procedure for the extension pack is mostly the same, regardless of
whether your host computer is running Linux, Windows, or Mac OS X. However,
there is one added step if your host is running Linux, which is to add your user
account to the vboxusers group.
1. When you first install VirtualBox, it should have created this group.
To verify, execute the following command:
cat /etc/group |grep vboxusers
3. If you don't see the output, create the group with the following command:
# groupadd vboxusers
[6]
Chapter 1
You'll need to log out and then log in before adding yourself to
the vboxusers group takes effect.
Now, you're ready to install the extension pack. Again, this procedure should be the
same regardless of your underlying operating system. First, download the Extension
Pack from the following URL and save it locally:
https://www.virtualbox.org/wiki/Downloads
[7]
2. Next, click on Extensions and then click on the green triangle icon on the
right-hand side.
VirtualBox settings
3. Select the extension pack that you downloaded earlier and click on Open.
[8]
Chapter 1
5. The VirtualBox license agreement will be displayed. Feel free to check it.
Then, scroll to the bottom and click on I Agree to confirm it.
[9]
6. If you're running Linux, you may be asked for the root or sudo password.
If you do, enter it and continue. After authenticating, you should see
confirmation that you've successfully installed the extension pack.
Then, try installing the extension pack again. Once finished, close
VirtualBox and then reopen it as a normal user before continuing.
There will be several options for download, but the netinst ISO will be our target.
For most computers, the 64-bit (amd64) version should sufficeunless you know
for sure that your computer doesn't support 64-bit. The main difference between the
netinst and the complete installation image is that the netinst version will download
what it needs from Debian's servers over the Internet. As long as you're not within a
bandwidth-constrained area, this should not be an issue.
[ 10 ]
Chapter 1
Of course, the ISO file by itself is not useful unless you're attaching it to a virtual
machine. If you are, then you're ready to go. If you're setting up a physical machine,
you'll need to either create a bootable CD with a disc mastering utility of your choice,
or create a bootable flash drive.
Because there is a multitude of different disc mastering utilities
available, a complete walkthrough of how to create a bootable CD in
your environment is not possible. In most cases, your utility should
have an option to burn an ISO image in its menu. The disc will not
function as Debian installation media if you simply create a data disc.
3. Within the output, you should see the node designation of your flash drive.
The output of that command will look like this:
Device
Boot Start
/dev/sdb1
End
Sectors
Size Id Type
4. Then, /dev/sdb would be the device to use to create the flash drive. Putting
it all together, we would create the flash drive with the following command:
# cp name-of-debian.iso /dev/sdb && sync
[ 11 ]
5. Once you have created bootable media, insert it into your computer and
follow your computer's specific directives to access the boot menu and select
your Debian media. After it finishes loading, the first screen will ask you to
select your language. Choose your language, then click on Continue.
[ 12 ]
Chapter 1
6. After selecting your language, the next screen will have you choose your
location. Select it and then click on Continue.
[ 13 ]
7. Similarly, choose a keymap that fits your keyboard and click on Continue.
[ 14 ]
Chapter 1
8. At this point, the Debian installer will detect your hardware, and then
allow you to configure your host name. For this option, choose a unique
host name that will identify your device on the network. When finished,
click on Continue.
[ 15 ]
9. The installer will then ask for your domain name. Enter your domain name
here if you have one; otherwise, just leave it blank. Click on Continue.
[ 16 ]
Chapter 1
10. Next, you'll be asked to set a password for the root account. For this, you
should create a unique (and preferably randomly generated) password.
As you probably know, the root account has full access to the system.
After setting the password, click on Continue.
[ 17 ]
11. In the next three screens, you'll set up your user account. First, you'll enter
your first and last name, and then click on Continue.
[ 18 ]
Chapter 1
Creating a username
[ 19 ]
13. The final portion of the user setup section will ask you to create a password.
When done, click on Continue again.
[ 20 ]
Chapter 1
14. Next, Debian will try to use Network Time Protocol (NTP), if available, to
configure your clock. Then, you'll be presented with a screen to select your
time zone. Make sure your time zone is highlighted, and click on Continue.
[ 21 ]
15. Now, we'll partition our disk. Feel free to partition your disk any way
you want, as there are no partitioning requirements as far as this book is
concerned. For the sake of this instruction, Guided - use entire disk, the
default for Debian, is chosen. If you have a preferred partitioning scheme,
feel free to use it. When finished, click on Continue.
[ 22 ]
Chapter 1
16. Next, you'll have to select the hard disk on which to install Debian. In this
example, there is only one hard disk available in the VM that was used to
capture the procedure. If you have more than one disk, select the appropriate
disk for installation and click on Continue.
[ 23 ]
17. In the next section, the Debian installer will ask if you would like to have a
separate /home partition (recommended if you wish to retain files between
installations), separate /home, /var, and /tmp partitions, or all files in one
partition. This book has no partitioning requirements, so choose the one
that best fits your preference. When you've made your selection, click
on Continue.
[ 24 ]
Chapter 1
18. Next, Debian will display a summary of the changes it's about to make.
If these changes look good to you, ensure Finish partitioning and write
changes to disk is highlighted and click on Continue.
Partitioning overview
[ 25 ]
19. Then, you'll have to confirm the details again. Select Yes and then click
on Continue.
[ 26 ]
Chapter 1
20. The base system will be installed next; this might take a little while
depending on the speed of your computer and hard disk. Afterwards,
you'll be presented with a screen where you'll select the country nearest
you in order to set up Debian's package manager.
[ 27 ]
21. Next, you'll select a mirror for Debian's package archives. In most cases,
the default selection is usually accurate. So unless it guessed incorrectly,
leave the default selection as-is and click on Continue.
[ 28 ]
Chapter 1
22. In the next screen, Debian will give you a chance to configure an HTTP
proxy, if you have one. If not, leave it blank.
[ 29 ]
23. Next, Debian will configure your package manager and update your
sources. After a few progress bars scroll by, you'll see a new screen asking
you whether or not you'd like to submit usage statistics to Debian. This
information is helpful to Debian's developers, but it's not required. Make
your choice and click on Continue.
[ 30 ]
Chapter 1
The next screen will offer us additional packages that we can add to our
system, but these aren't required (it's a good idea to leave standard system
utilities enabled, though). Most of the options presented allow us to choose
a desktop environment, but you are not required to install one. Typically,
servers are not installed with a desktop environment. However, if you are
setting up a workstation PC, it may be of benefit.
[ 31 ]
Other than the desktop environment choice, it's recommended to select SSH
server from this list. Web server can also be chosen, but you may as well wait
until we come to the part of the book in which Apache is discussed, as we'll
walk through the installation.
[ 32 ]
Chapter 1
24. Make your selections and then wait for the rest of the installation procedure
to finish, as Debian installs the software you selected in the previous step.
Then, it's time to configure GRUB. GRUB is an acronym for Grand Unified
Bootloader and is necessary in order for us to boot our system. You'll be
asked whether you'd like to install GRUB into the master boot record (which
you more than likely will want to do), so ensure the Yes radio box is checked
and click on Continue.
GRUB configuration
[ 33 ]
25. Next, select a target on which GRUB should be installed. In most cases,
this will be /dev/sda.
[ 34 ]
Chapter 1
26. Whew! We are finally ready to reboot into our new Debian environment.
Click on Continue one last time and we're off to the races!
[ 35 ]
After you boot from your installation media perform the following steps:
1. You'll first see a screen asking you to select the language to be used during
installation. Choose your language and click on Continue.
[ 36 ]
Chapter 1
2. The next screen that appears is one of two main sections of the installation.
The items shown here (DATE & TIME, KEYBOARD, LANGUAGE
SUPPORT, INSTALLATION SOURCE, SOFTWARE SELECTION,
INSTALLATION DESTINATION, and NETWORK & HOSTNAME) can
be completed in any order. As you can see in the screenshot, only one section
(INSTALLATION DESTINATION) is actually required. Basically, you can
go through each section listed and complete its task and then click on Begin
Installation when you're finished. If you choose not to complete a section,
its defaults will be used.
[ 37 ]
Language selection
[ 38 ]
Chapter 1
[ 39 ]
5. In the DATE & TIME section, you can set up your clock and location. Keep
in mind that if you didn't enable your network interface in the NETWORK &
HOSTNAME section, you'll be unable to utilize NTP.
[ 40 ]
Chapter 1
[ 41 ]
7. By default, CentOS will be a Minimal Install. This means that there will be
no graphical user interface, just the default packages. If you prefer, you can
opt for a desktop environment such as GNOME or KDE by selecting the
corresponding option.
8. After you click on Begin Installation, you'll be brought to the second main
section of the installation procedure while CentOS installs itself onto your
system in the background. This section is much smaller and has just two
steps. We'll set our root password and create a standard user account.
[ 42 ]
Chapter 1
9. For the root password, choose something secure. A password meter will
show the presumed strength of the password. Click on Done when finished.
[ 43 ]
10. Finally, we'll create a standard user. On this screen, we'll enter the values in
the Full name and Username fields, and choose a strong value for Password.
You can also tick the box labeled Make this user administrator, if necessary.
11. Finally, when installation is complete, click on Reboot and we're all set.
With that out of the way, feel free to set up as many Linux installations as you may
need. In future chapters, we'll use these installations to configure networking and
advance our knowledge.
Summary
In this chapter, we worked through setting up our environment. We discussed
virtual machines and physical machines as network nodes, and we even set up a
Debian and CentOS installation or two.
Now that we've set up our environment, it's time to dive in and get started. In
Chapter 2, Revisiting Linux Networking Basics, we'll cover all the commands we'll need
for our journey, for example, configuring network interfaces, manually connecting to
networks, and setting up Network Manager. Stay tuned!
[ 44 ]
www.PacktPub.com
Stay Connected: