1. The Debian Project
What Is Debian?
A Multi-Platform Operating System
The Quality of Free Software
The Legal Framework: A Non-Profit Organization
The Foundation Documents
The Commitment towards Users
The Debian Free Software Guidelines
The Inner Workings of the Debian Project
The Debian Developers
The Active Role of Users
Teams and Sub-Projects
Existing Debian Sub-Projects
Administrative Teams
Development Teams, Transversal Teams
Follow Debian News
The Role of Distributions
The Installer: debian-installer
The Software Library
Lifecycle of a Release
The Experimental Status
The Unstable Status
Migration to Testing
The Promotion from Testing to Stable
The Oldstable and Oldoldstable Status
2. Presenting the Case Study
Fast Growing IT Needs
Master Plan
Why a GNU/Linux Distribution?
Why the Debian Distribution?
Commercial and Community Driven Distributions
Why Debian Jessie?
3. Analyzing the Existing Setup and Migrating
Coexistence in Heterogeneous Environments
Integration with Windows Machines
Integration with OS€X machines
Integration with Other Linux/Unix Machines
How To Migrate
Survey and Identify Services
Network and Processes
Backing up the Configuration
Taking Over an Existing Debian Server
Installing Debian
Installing and Configuring the Selected Services
4. Installation
Installation Methods
Installing from a CD-ROM/DVD-ROM
Booting from a USB Key
Installing through Network Booting
Other Installation Methods
Installing, Step by Step
Booting and Starting the Installer
Selecting the language
Selecting the country
Selecting the keyboard layout
Detecting Hardware
Loading Components
Detecting Network Hardware
Configuring the Network
Administrator Password
Creating the First User
Configuring the Clock
Detecting Disks and Other Devices
Starting the Partitioning Tool
Guided partitioning
Manual Partitioning
Configuring Multidisk Devices (Software RAID)
Configuring the Logical Volume Manager (LVM)
Setting Up Encrypted Partitions
Installing the Base System
Configuring the Package Manager (apt)
Debian Package Popularity Contest
Selecting Packages for Installation
Installing the GRUB Bootloader
Finishing the Installation and Rebooting
After the First Boot
Installing Additional Software
Upgrading the System
5. Packaging System: Tools and Fundamental Principles
Structure of a Binary Package
Package Meta-Information
Description: the control File
Dependencies: the Depends Field
Conflicts: the Conflicts field
Incompatibilities: the Breaks Field
Provided Items: the Provides Field
Replacing Files: The Replaces Field
Configuration Scripts
Installation and Upgrade
Package Removal
Checksums, List of Configuration Files
Structure of a Source Package
Format
Usage within Debian
Manipulating Packages with dpkg
Installing Packages
Package Removal
Querying dpkg's Database and Inspecting .deb Files
dpkg's Log File
Multi-Arch Support
Enabling Multi-Arch
Multi-Arch Related Changes
Coexistence with Other Packaging Systems
6. Maintenance and Updates: The APT Tools
Filling in the sources.list File
Syntax
Repositories for Stable Users
Security Updates
Stable Updates
Proposed Updates
Stable Backports
Repositories for Testing/Unstable Users
The Experimental Repository
Non-Official Resources: mentors.debian.net
Caching Proxy for Debian Packages
aptitude, apt-get, and apt Commands
Initialization
Installing and Removing
System Upgrade
Configuration Options
Managing Package Priorities
Working with Several Distributions
Tracking Automatically Installed Packages
The apt-cache Command
Frontends: aptitude, synaptic
aptitude
Managing Recommendations, Suggestions and Tasks
Better Solver Algorithms
synaptic
Checking Package Authenticity
Upgrading from One Stable Distribution to the Next
Recommended Procedure
Handling Problems after an Upgrade
Keeping a System Up to Date
Automatic Upgrades
Configuring dpkg
Configuring APT
Configuring debconf
Handling Command Line Interactions
The Miracle Combination
Searching for Packages
7. Solving Problems and Finding Relevant Information
Documentation Sources
Manual Pages
info Documents
Specific Documentation
Websites
Tutorials (HOWTO)
Common Procedures
Configuring a Program
Monitoring What Daemons Are Doing
Asking for Help on a Mailing List
Reporting a Bug When a Problem Is Too Difficult
8. Basic Configuration: Network, Accounts, Printing...
Configuring the System for Another Language
Setting the Default Language
Configuring the Keyboard
Migrating to UTF-8
Configuring the Network
Ethernet Interface
Connecting with PPP through a PSTN Modem
Connecting through an ADSL Modem
Modems Supporting PPPOE
Modems Supporting PPTP
Modems Supporting DHCP
Automatic Network Configuration for Roaming Users
Setting the Hostname and Configuring the Name Service
Name Resolution
Configuring DNS Servers
The /etc/hosts file
User and Group Databases
User List: /etc/passwd
The Hidden and Encrypted Password File: /etc/shadow
Modifying an Existing Account or Password
Disabling an Account
Group List: /etc/group
Creating Accounts
Shell Environment
Printer Configuration
Configuring the Bootloader
Identifying the Disks
Configuring LILO
GRUB€2 Configuration
For Macintosh Computers (PowerPC): Configuring Yaboot
Other Configurations: Time Synchronization, Logs, Sharing Access…
Timezone
Time Synchronization
For Workstations
For Servers
Rotating Log Files
Sharing Administrator Rights
List of Mount Points
locate and updatedb
Compiling a Kernel
Introduction and Prerequisites
Getting the Sources
Configuring the Kernel
Compiling and Building the Package
Compiling External Modules
Applying a Kernel Patch
Installing a Kernel
Features of a Debian Kernel Package
Installing with dpkg
9. Unix Services
System Boot
The systemd init system
The System€V init system
Remote Login
Secure Remote Login: SSH
Key-Based Authentication
Using Remote X11 Applications
Creating Encrypted Tunnels with Port Forwarding
Using Remote Graphical Desktops
Managing Rights
Administration Interfaces
Administrating on a Web Interface: webmin
Configuring Packages: debconf
syslog System Events
Principle and Mechanism
The Configuration File
Syntax of the Selector
Syntax of Actions
The inetd Super-Server
Scheduling Tasks with cron and atd
Format of a crontab File
Using the at Command
Scheduling Asynchronous Tasks: anacron
Quotas
Backup
Backing Up with rsync
Restoring Machines without Backups
Hot Plugging: hotplug
Introduction
The Naming Problem
How udev Works
A concrete example
Power Management: Advanced Configuration and Power Interface (ACPI)
10. Network Infrastructure
Gateway
Virtual Private Network
OpenVPN
Public Key Infrastructure: easy-rsa
Configuring the OpenVPN Server
Configuring the OpenVPN Client
Virtual Private Network with SSH
IPsec
PPTP
Configuring the Client
Configuring the Server
Quality of Service
Principle and Mechanism
Configuring and Implementing
Reducing Latencies: wondershaper
Standard Configuration
Dynamic Routing
IPv6
Tunneling
Domain Name Servers (DNS)
Principle and Mechanism
Configuring
DHCP
Configuring
DHCP and DNS
Network Diagnosis Tools
Local Diagnosis: netstat
Remote Diagnosis: nmap
Sniffers: tcpdump and wireshark
11. Network Services: Postfix, Apache, NFS, Samba, Squid, LDAP, SIP, XMPP, TURN
Mail Server
Installing Postfix
Configuring Virtual Domains
Virtual Alias Domains
Virtual Mailbox Domains
Restrictions for Receiving and Sending
IP-Based Access Restrictions
Checking the Validity of the EHLO or HELO Commands
Accepting or Refusing Based on the Announced Sender
Accepting or Refusing Based on the Recipient
Restrictions Associated with the DATA Command
Applying Restrictions
Filtering Based on the Message Contents
Setting Up greylisting
Customizing Filters Based On the Recipient
Integrating an Antivirus
Authenticated SMTP
Web Server (HTTP)
Installing Apache
Configuring Virtual Hosts
Common Directives
Requiring Authentication
Restricting Access
Log Analyzers
FTP File Server
NFS File Server
Securing NFS
NFS Server
NFS Client
Setting Up Windows Shares with Samba
Samba Server
Configuring with debconf
Configuring Manually
Samba Client
The smbclient Program
Mounting Windows Shares
Printing on a Shared Printer
HTTP/FTP Proxy
Installing
Configuring a Cache
Configuring a Filter
LDAP Directory
Installing
Filling in the Directory
Managing Accounts with LDAP
Configuring NSS
Configuring PAM
Securing LDAP Data Exchanges
Real-Time Communication Services
DNS settings for RTC services
TURN Server
Install the TURN server
Managing the TURN users
SIP Proxy Server
Install the SIP proxy
Managing the SIP proxy
XMPP Server
Install the XMPP server
Managing the XMPP server
Running services on port 443
Adding WebRTC
12. Advanced Administration
RAID and LVM
Software RAID
Different RAID Levels
Setting up RAID
Backing up the Configuration
LVM
LVM Concepts
Setting up LVM
LVM Over Time
RAID or LVM?
Virtualization
Xen
LXC
Preliminary Steps
Network Configuration
Setting Up the System
Starting the Container
Virtualization with KVM
Preliminary Steps
Network Configuration
Installation with virt-install
Managing Machines with virsh
Installing an RPM based system in Debian with yum
Automated Installation
Fully Automatic Installer (FAI)
Preseeding Debian-Installer
Using a Preseed File
Creating a Preseed File
Creating a Customized Boot Media
Simple-CDD: The All-In-One Solution
Creating Profiles
Configuring and Using build-simple-cdd
Generating an ISO Image
Monitoring
Setting Up Munin
Configuring Hosts To Monitor
Configuring the Grapher
Setting Up Nagios
Installing
Configuring
13. Workstation
Configuring the X11 Server
Customizing the Graphical Interface
Choosing a Display Manager
Choosing a Window Manager
Menu Management
Graphical Desktops
GNOME
KDE
Xfce and Others
Email
Evolution
KMail
Thunderbird and Icedove
Web Browsers
Development
Tools for GTK+ on GNOME
Tools for Qt on KDE
Collaborative Work
Working in Groups: groupware
Collaborative Work With FusionForge
Office Suites
Emulating Windows: Wine
Real-Time Communications software
14. Security
Defining a Security Policy
Firewall or Packet Filtering
Netfilter Behavior
Syntax of iptables and ip6tables
Commands
Rules
Creating Rules
Installing the Rules at Each Boot
Supervision: Prevention, Detection, Deterrence
Monitoring Logs with logcheck
Monitoring Activity
In Real Time
History
Detecting Changes
Auditing Packages with dpkg --verify
Auditing Packages: debsums and its Limits
Monitoring Files: AIDE
Detecting Intrusion (IDS/NIDS)
Introduction to AppArmor
Principles
Enabling AppArmor and managing AppArmor profiles
Creating a new profile
Introduction to SELinux
Principles
Setting Up SELinux
Managing an SELinux System
Managing SELinux Modules
Managing Identities
Managing File Contexts, Ports and Booleans
Adapting the Rules
Writing a .fc file
Writing a .if File
Writing a .te File
Compiling the Files
Other Security-Related Considerations
Inherent Risks of Web Applications
Knowing What To Expect
Choosing the Software Wisely
Managing a Machine as a Whole
Users Are Players
Physical Security
Legal Liability
Dealing with a Compromised Machine
Detecting and Seeing the Cracker's Intrusion
Putting the Server Off-Line
Keeping Everything that Could Be Used as Evidence
Re-installing
Forensic Analysis
Reconstituting the Attack Scenario
15. Creating a Debian Package
Rebuilding a Package from its Sources
Getting the Sources
Making Changes
Starting the Rebuild
Building your First Package
Meta-Packages or Fake Packages
Simple File Archive
Creating a Package Repository for APT
Becoming a Package Maintainer
Learning to Make Packages
Rules
Procedures
Tools
Acceptance Process
Prerequisites
Registration
Accepting the Principles
Checking Skills
Final Approval
16. Conclusion: Debian's Future
Upcoming Developments
Debian's Future
Future of this Book
A. Derivative Distributions
Census and Cooperation
Ubuntu
Linux Mint
Knoppix
Aptosid and Siduction
Grml
Tails
Kali Linux
Devuan
Tanglu
DoudouLinux
Raspbian
And Many More
B. Short Remedial Course
Shell and Basic Commands
Browsing the Directory Tree and Managing Files
Displaying and Modifying Text Files
Searching for Files and within Files
Managing Processes
System Information: Memory, Disk Space, Identity
Organization of the Filesystem Hierarchy
The Root Directory
The User's Home Directory
Inner Workings of a Computer: the Different Layers Involved
The Deepest Layer: the Hardware
The Starter: the BIOS or UEFI
The Kernel
The User Space
Some Tasks Handled by the Kernel
Driving the Hardware
Filesystems
Shared Functions
Managing Processes
Rights Management
The User Space
Process
Daemons
Inter-Process Communications
Libraries
Index