Available Courses

Linux and Systems Basics Linux Systems Administration Networking Virtualization Programming Database and Directory Services Security

About our Courses

The courses offered here are for all levels, regardless of if you are new to Systems Administration, Telecom, looking to just get your feet wet or to jump right in. Please reach out if you would like more information about the information on offer. Courses are revised over time based on best practices and changes in the industry.

If you have specific requirements please let us know as we can custom tailor courses based on existing experience or any current educational or work-related requirements you have.

Classes are offered in a one-on-one format. Our goal is to ensure you understand the material, so regardless of how fast you learn courses and timings are adjusted to match your capabilities. If there is specific portions of a class that you are more interested in we can focus in on those. Otherwise, the goal is to provide a broad understanding of the available topics.

Having your own laptop to bring is a bonus but do not worry if that is not an option for you. We have a dedicated learning workstation for all students to use. Also, all active students are given access to their own learning environment if they do not have the ability to set up their own lab at home. This is remotely accessible via a VPN so Systems and Network learning can take place outside of the class environment.

Linux and Systems Basics

Using the Linux Terminal

This course builds on the Introduction To Linux course and focuses on just what can be done from a standard Linux terminal. It covers various commands and how to create Shell Scripts in BASH (Bourne Again SHell).

- Introduction to Bash scripting, seeing how it can enhance your productivity.
- Handling repetitive tasks by building your own scripts, examine various loops and conditional statements.
- Automating execution of your scripts based on specific chronological intervals or the time of day or other triggers.
- Introduction to Regular Expressions used for searching/matching text.
- Process management tools to keep track of what is using your system resources (memory, CPU, swap etc.).
- Output redirection and logging output to disk.
- Powerful text manipulation tools to help you manage and manipulate basic text data with ease.
- Output redirection functions inherent to the Linux shell, stringing output together to get the information you need in a concise and logical manner.
- Capturing user input to create interactive scripts and how to interact with CLI software prompts from an automated capacity.
- Script debugging and troubleshooting.
- Customizing your Linux console environments to meet your requirements.

Computer Systems Introduction with Linux

This is an entry level course to go over system hardware and how to build and maintain a computer. You would learn the following from this course:

- Base computer design, understanding how different components interact such as the CPU, Memory, expansion slots and Input/Output interfaces.
- Verifying hardware compatibility of the various parts that make up a modern PC.
- Learn about which components affect what aspects of a computer's performance and how to spec out a PC to do a specific task well.
- How to build a functional PC from individual components.
- How to control components and hardware settings from the System BIOS.
- Finding and using specialized software to diagnose and troubleshoot hardware faults.
- Using bench marking software to verify system performance.
- Identifying and replacing defective components.

The course will be taught using both Windows and Linux to provide a comparison between the two environments and show how system hardware can be interfaced with and inspected from either operating system.

Introduction To Linux

This course is a well-rounded introduction to the Linux operating system. It will expose you to a variety of OS's and go over the fundamentals so you can navigate the operating system with ease.

- Review of Linux Distributions, see what's out there and what to start with.
- Understanding the Linux file system structure, learn about directory and file permissions.
- Hardware overview, how Linux sees devices attached (USB, PCI, etc) and how you can troubleshoot them if you encounter issues.
- Installation process, creating bootable media and successfully installing your OS of choice (single or dual boot configurations).
- Securing your new installation (basic security policies, drive encryption, system firewall configuration).
- System and Software Customization, how to use package management systems.
- Understanding and getting familiar with using the system console.
- Customizing your XWindows (the Linux GUI) to suit your preferences.
- Partition and file system management, backing up and restoring entire partitions using free disk imaging software that ships with Linux.

Linux Systems Administration

Linux System Management

This course covers skills and knowledge necessary for management of a Linux desktop or server environment and builds on the information presented in the Linux Basics courses.

- Permissions policies and managing user access rights.
- Managing startup services using older and newer startup script processing.
- Working with aptitude, yum and other package managers. Installing non-standard packages.
- Compiling software from source, dealing with recursive dependency issues that can arise from this and packaged software installation from 3rd party repositories.
- System and Data recovery techniques to ensure you are never stuck without a working computer and have the knowledge necessary to recover your information should something bad happen. See how these skills can be applied to non-Linux environments to effect data recovery on other operating systems.
- Setting up custom hardware and external resources (printers, network file shares, etc.).
- Running processes in the background or inside a virtual console that you can connect/disconnect to/from without losing your work.
- Introduction to remote console access with SSH.
- Understanding the Linux logging system and seeing how to manage logging from different services. Get an idea of what standard log messages look like and how to spot issues.
- Introduction to Vim/Vi for all your text manipulation needs, how to customize it to improve your experience.

Advanced Linux Services and Techniques

This course exposes you to more advanced Linux Administration techniques and integration with networking with some virtualization techniques and routing protocol interaction. Gain insight into what it actually takes to set up and manage your own domain with a robust DNS server.

- Secure Shell tunnel forwarding and Secure FTP protocol service, how to keep your data safe as it travels over any network, how to use and manage SSH keys.
- Managing Samba and NFS file shares.
- Basic network services, how to build your own LAMP/LEMP stack.
- Linux High Availability setups using Virtual IP addressing and proxying to ensure continued service delivery and minimal downtime in the event of a failure.
- Connecting Linux with a routing infrastructure using BGP or OSPF for enhanced fault tolerance. Introduction to bonded interfaces.
- An introduction to the Domain Name System used by the Internet, how to register your own domain(s) and direct lookup requests to your own nameservers.
- Redundant DNS Server configuration using Bind9 with DNSSEC deployment for managing your own domains.
- Email service configurations to allow your hosts to send alarms to you in the event of a problem.
- Managing your own public facing email service associated to your public domain.
- Learn what you can do to set up In-band and Out-of-band paging solutions for critical system events and alarms.
- Private internal communications between your colleagues using custom-build encrypted chat services.
- Data replication between Linux hosts to ensure continued service delivery and ease deployments of changes to your host stack.

Centralized Linux Services

- Learn about powerful and free open source tools that help monitor and maintain large deployments of Linux hosts
- Systems Monitoring configuration using open source software to monitor the health and performance metrics from your servers
- Centralized authentication configuration using LDAP
- Creating your own Network Files server using multiple protocols to provide access to your files from any machine on your network
- Building your own replacement for Microsoft ActiveDirectory to handle Windows system authentication
- See how you can build your own log processing server to have a central storage for system logs from all of your servers and network devices, including the configuration of alerts should certain conditions or alarms/warnings arise
- Learn how to manage and automate Linux system activation and deployment within your network using powerful tools such as Ansible and Salt


Networking Basics

An introduction to Networking! Build your knowledge from the ground up and develop a solid understanding of the base layers used in IP network communications, specific to Ethernet switching.

- Layer1/Layer2 networking concepts (physical and data link), understanding how information moves over the wire and getting comfortable with Layer2 Ethernet frames.
- The MAC address, how it's used and how it can be abused!
- How computers map physical network addresses to IP addresses
- Ethernet types and selecting good switching hardware
- Experiment with a variety of switches to learn about the various implementations of the Spanning Tree Protocol, if you typically just disable Spanning Tree in your network at work or elsewhere this is for you!
- Basic wireless network concepts
- Network Service Ports, understanding TCP and UDP ports
- Basic diagnostic tools to troubleshoot connectivity, throughput, loss and other performance metrics on you or your companies' network (basic understanding of Linux highly recommended)
- Network segmentation using VLAN's, basic networking design principals for
building a scalable and fault tolerant network

Advanced Networking Level 1

Building on the fundamentals learned in the Networking Basics course, Advanced Newtorking Level 1 introduces you in full to how to handle managing IP networks. This will give you a solid understanding of the principles of routing traffic, Network Address Translation, autonomous routing protocols and network design in general. Take advantage of our extensive lab hardware to build and test different configurations and technologies.

- Learn how your systems translate an IP address into a MAC address.
- Overview of IP packet and Ethernet frame communications.
- See how to set up redundant hardware routing solutions taking advantage of technologies such as VRRP, HRSP and GLBP.
- Learn about basic routing protocols including RIP/RIPv2, EIGRP and OSPF/OSPFv3.
- Configuration and employment of Access Control Lists.
- NAT and Port Forwarding Configurations.
- Introduction to firewalls, configuring security policies.
- Advanced network design concepts, see how to build a network that can scale up with organizational growth using Core/Distribution/Access layers.
- Understand performance metrics of equipment so as to avoid recommending hardware that won't keep up with expected load and projected growth in your organization's network.
- Introduction to PPP and DSL service, building your own LNS router and LAC for lab testing. Useful for anyone employed by a DSL Internet Service Provider.
- Heavily Cisco oriented, can provide instruction on JUNOS as well. Standardized technologies taught also transfer over to other popular vendors.

Advanced Networking Level 2

Continuing on from the Advanced Networking Level 1 course, Level 2 introduces more advanced autonomous routing protocols, such as BGP, OSPF and MPLS. Get an understanding of how to manage private MPLS networks that integrate with VPN tunnels to offer clients secure WAN deployments for their sites. Gain knowledge around different routing techniques to see what it takes to build a redundant interconnected ISP. Practice interacting with a test network that simulates production Internet Service Provider deployments.

- BGP Configurations, iBGP and eBGP deployments for fault tolerant routing.
- Route-map policy configuration and application to different types of routing protocols and firewall policy.
- Employment of Linux-based Open Source BGP and OSPF implementation, seamless routing.
- Minimizing routing protocol failure detection and network convergence times.
- Interconnecting with other Network Service Providers.
- MPLS/VPN implementation, configuration of Provider and Provider Edge routers.
- IPSEC tunnel configuration.
- VRF (Virtual Routing and Forwarding) in Cisco and routing-instances in JUNOS.
- Anycast routing configuration for connectionless services (such as DNS).
- Learn about ARIN and managing IP requests/resources.

Network Management and Support Systems

This course builds on either of the Advanced Networking courses to help you learn how to set up different software packages that can manage and extract information from network equipment. See what is needed to build an informative picture of the health of a network and use this information to watch for problems and predict future capacity needs. Develop techniques to support centralized authentication of network equipment. Ensure if disaster strikes you can easily revert changes to equipment or perform a quick replacement of critical network infrastructure from configuration backups. Build an audit log of who is making what changes to network configuration.

- Configuring and employing SNMP-based monitoring of network devices from a Linux platform.
- Enabling and using Vendor SNMP MIB's to customize monitoring options.
- Maintaining control over Network Device configuration using TACACS to authorize commands based on user level access and track command execution on network equipment.
- Configuring authentication services for PPP with RADIUS and a basic FreeRADIUS server on Linux.
- Integration with centralized authentication systems using LDAP, 2-Factor authentication support.
- Open source monitoring platforms to maintain eyes on the health of your network.
- Equipment provisioning primer, learn how to generate device configurations using templating software.


Introduction to Virtualized Computing

Introduction to the world of Virtual Machines, learn the concepts and see the benefit of this technology as it can be applied to both hosts and network equipment alike. Learn how to run you own virtual environments using Virtual Box as a primer.

- Concepts of virtualized computing and what you should look out for.
- Repurposing older computer systems into virtualization platforms that you can use as a VM Hypervisor.
- Deployment of a VMWare ESXi or a Proxmox virtalization platform, what's involved.
- Network Attached Storage (NAS) configuration, how separate your storage from the VM host machine.
- Using VirtualBox to emulate a Windows, a virtual network appliance or a smaller Linux environment inside desktop Linux.

Introduction to Virtual Machine Clusters

Begin to learn about the ProxMox HyperVisor and how to use QEMU containers. You will learn how to build and manage a set of ProxMox hosts to form a cluster.

- Build and configure ProxMox cluster.
- Create VM's from ISO images or use pre-built images.
- Configure a backend NAS to store virtual disks.
- Migration of VM gueset OS's between VM Host machines in the cluster.
- Access Control to specific hosts for certain users.
- Recovery from failures in the cluster.

Virtualized Network Appliances

Get some experience building a virtualized network environment that you can interconnect with physical routers and switches.

- Learn to configure your own virtual routing lab.
- Integrate your virtual lab with physical hardware.
- Learn how to build a Cisco Cloud Service Router lab or a JUNOS vSRX lab.
- Create your own virtual Firewalls to maintain control of traffic between defined zones.
- Enable secure remote access to your network with OpenVPN.
- See how to set up LDAP authentication on your VPN that you can tie into other parts of your home lab (or production environment).
- Create tools to monitor your lab host and network health.

Advanced Redundancy Techniques

As hardware and software can always fail it is good to be able to provide solutions that are redundant. In this lesson you'll learn techniques that can help you achieve high availability goals in your virtualized environments.

- Learn advanced routing protocol configurations with BGP and about software that can offer high availability access.
- Understand how to build hosting environments that can be serve an application from more than one system simultaneously.
- Gain experience with open source tools that allow for continued service delivery in the event of VM guest or host outages.


Introduction to PHP

Learn PHP! A popular and well-established scripting language that is commonly used on Web applications. Get an introduction into how you can write your own Web or System level programs with PHP. Introductory course with no prior programming knowledege required.

- Learn about basic PHP Syntax and operators, how to define variables and
- Handling data captured from a web session or from a file upload, handling form data.
- Loops, conditions and creating/calling functions.
- Learn about different variable types and how to work with the data associated to them such as strings, arrays, booleans, integers and floats.
- String matching and manipulation using built in PHP functions and regular expressions.
- Basic database connectivity and interactions.

Advanced PHP

After the Introductory Course there is a more advanced option for those that need more. This is good for anyone who has some basic understanding of how to work with PHP but wants to take their development skills up a notch and incporate other PHP features.

- See how to work with cookies and session data for web applications.
- Learn about classes and how to incorporate them in your programs.
- Introduction to object oriented programming with PHP.
- How to integrate a multi-file program effectively.
- Public, private and protected properties/methods.
- Understanding how to use Exception and Error handling techniques.
- Creating your own unit tests.
- Introduction to PHP Composer.
- Linting and automated Code Styling.

Python Introduction

Introductory course suitable to anyone who is new to programming. Prior experience not required. Learn how Python functions, how to manipulate information, gather and work with user input, process output, manipulate data and store it, work with files, handle errors and much more.

- Learn good practices for writing Python code in Python V3.
- Understand math operations, strings, conditions and loops that python can use.
- Efficient programming (not doing the same thing more than once) with functions.
- Learn about various variable types and processing data within them.
- Understanding Python List (arrays) types and how to work with them.
- See how to work with JSON data and to take advantage of Regex.
- Exception handling with Try and Except blocks.
- Adding feature support with Python's package manager.
- Creating python development environments.
- Creating your own modules to contain separate functions and splitting a project across multiple files.
- Working with files and SQL databases.

Using Python with a Raspberry PI

Take your Python knowlege and add in some physical circuits! Ever wanted to build your own home automation systems or create your own sensors? Learn how to take advantage of the Raspberry PI General Purpose Input Output header to create cool interactive projects.

- Basic introduction to electronics and circuit prototyping with breadboards.
- Introduction to the Raspberry PI and configuring your own from scratch.
- Building and testing projects to interact with Sensors and gather data for statistics collection/graphing.
- Introduction to Python programming with the Raspberry PI, writing the software to interact with Raspberry PI hardware.
- Use our supplied hardware or bring your own Raspberry PI so you can keep learning at home.

BASH Scripting and Expect Scripting

Learn about scripting with BASH and Expect scripts. See how to build interactive scripts or automated system functions to achieve simplified Systems Administration goals and reduce repetitive workloads.

- Bash logic and passing data between scripts.
- Standard features such as variables, functions, loops, if and case statements.
- Building scripts that can handle different sets of arguments.
- Error handling and verification of input.
- Techniques to parse and interact with data, pipe information between applications.
- Integration of Expect scripting to interact with local and remote CLI's of Systems or Network devices via SSH, etc.
- Incorporate Regular Expressions for matching and augmenting data.

Web Development Introduction

A starter course to introduce students to modern Web Development. Students will learn how to build a web page using HTML5 and CSS and deploy it to a server or hosting provider. Learn to build your own website without relying on a template.

- Introduction to HTML5 (HyperText Markup Language 5) formatting and best practices.
- Introduction to CSS3 (Cascading Style Sheeds 3) implementation for styling web sites.
- Manipulating and formatting images for optimal web service with mobile platforms in mind.
- Basic install and configuration of NGINX web server to show how to serve pages.
- Using a managed hosting provider to serve a web page, uploading and managing files.
- Domain Registration and DNS primer.
- Using Google tools to analyze and optimize web site performance and SEO results.
- Introduction to developer console in common browsers such as Chrome and Firefox to aide in web development process.

Advanced Web Development Course

This is a follow-up to the Web Development Introduction course and covers back-end database interaction and using common frameworks to build templated websites. An understanding of Javascript is highly recommended prior to taking this course.

- Look at creating a REST API to with JSON to pass information from web front-end to back end support systems.
- Interaction with data from MySQL and REDIS DB's via API to populate web site contents.
- Introduction to Django and React frameworks (Python and Javascript respectively).
- Implementing reactive web pages and animations with CSS using triggers from Javascript.
- Document Object Module manipulation with Javascript.
- Building SSL encryption with an Certificate Authority.
- Advanced configuration options for NGINX web server.
- Introduction to Node Package Manager.

Javascript Introduction

Entry level course to get users started with Javascript and build fundamental programming skills.

- Learn Javascript ES6 basics and programming techniques.
- See how to quickly build you own test environment using just a browser and a simple local web server.
- Learn different Variable types and Conditionals available within Javascript.
- Learn about Functions and Scope.
- Gain knowledge of Loops and Iterators.
- Introduction to Objects and Classes.
- Learn about browser compatibility and good compatibility testing practices.

Database and Directory Services

Introduction to Databases with MySQL

Get some first hand experience creating your own MySQL Database, see how to set and maintain user permission access so more than one individual can maintain it.

- Database software installation and configuration.
- User and permissions assignments.
- Regaining access to a DB without the password.
- Creating a simple master/slave cluster.
- Examples of useful open source DB Navigation tools to make interaction with your DB easier.

In-Memory Database Technologies

Many database technologies rely on accessing data on disk when serving queries. Memory-driven databases work a little differently and provide faster access to information. Learn about how these work and how you can take advantage of them for advanced application development.

- Learn how to use a REDIS Database to interact with your own software applications
- Create a REDIS cluster with master and slaves.
- Learn to use specialized open-source software to ensure continuous functionality and access to data for your front-end systems.
- See how to configure and maintain a time-series databases such as InfluxDB.
- Create a high availability proxy to ensure continuous access in the event of a failure.
- Create your own write operations to gather custom statistics for your applications.

Directory Services with LDAP

LDAP is a powerful tool that can be used to manage access rights of users on shared system environments. Capable of handling a variety of authentication platforms it is often used by ISP's and other large enterprises to manage shared access to a wide range of devices. Freely available as OpenLDAP.

- Discover how to use an LDAP server (Lightweight Directory Access Protocol).
- Options for Open Source LDAP client software.
- Interacting with OpenLDAP from CLI.
- Learn how to build a redudant OpenLDAP cluster of servers that can withstand system failures and recover automatically.
- See how to maintain the health of your LDAP cluster and verify replication is working as expected.
- Integrate OpenLDAP with your Linux hosts for universal authentication across all Linux systems within your network.
- Using POSIX user and group policy to apply specific permissions (such as sudo access) based on server types and user group to allow certain users administrative rights.


Linux System Hardening

This course is for the more advanced Linux user, for anyone looking to prepare servers for direct connection to the public internet from being a NAT firewall or with direct public IP assignment. This course will show you considerations to make and how to build well-defended Linux host.

- Firewall configuration concepts and implementation, how to trigger automatic protection from remote port scanners on your external systems.
- Using OpenSource security tools to augment your server ACL's.
- Basic vulnerability avoidance techniques, how to verify critical software is up to date and not vulnerable to attack.
- Best practices with various Linux servers (HTTP, NFS, FTP, SSH, etc.).
- Minimizing exposure to internal and external network threats.
- Scanning for and preventing vulnerabilities from affecting your Linux hosts.
- Introduction to vulnerability assessment techniques and tools using Penetration Testing software.
- Cryptography layers, securing data and password policies.
- How to implement a highly secure password database.
- Use of OpenVPN to tunnel your traffic.
- Introduction to encryption with GPG/PGP.
- Limiting and customizing sudo/root access for users to allow privilege escalation only where required.

Introduction to Penetration Testing

This course is for individuals interested to get started with Penetration Testing, which is the art of discovering ways to gain access to a secured system. Students should have a basic understanding of Linux and Python to begin with.

- Building and configuring a Pentesting environment with Kali Linux.
- Effective note taking (very important for the entire process).
- Introduction to System and Nework investigation tools.
- Scanning techniques and best practices.
- Enumeration of services and Vulnerability discovery.
- Introduction to exploit frameworks.
- Maintaining access to an exploited host/network.
- Pivoting attack internally.
- Building attackable practice environments.
- Legality and establishing rules of engagement with a client.
- Generating useful customer reports.