CYSE 270 – Linux Systems for Cybersecurity

Course Description:  Introduces the basic operations in major Linux distros for cybersecurity using both graphical interface and command line interface. Students will learn about the basic installation and configuration, file systems management, shell scripts, and user authentication in Linux systems. This course is the technical base for students to take cybersecurity major courses.

Instructor/Institution: Dr. Mohammed Al kinoon (Old Dominion University)

Lab 1 – Installing Linux VM

This lab introduced me to the process of installing and configuring a Kali Linux virtual machine using Oracle VirtualBox, which is a foundational skill in cybersecurity. Setting up the VM helped me understand how virtualization creates a controlled environment for testing tools, practicing commands, and performing security tasks without affecting the host system. I also practiced essential Linux commands such as echo, date, ls, and pwd, reinforcing how the terminal is used to interact with and navigate the operating system.

One challenge I encountered was ensuring the VM settings (memory and CPU allocation) were optimized so the system would run smoothly. Once configured correctly, the installation process and command‑line practice became more intuitive. Overall, this lab strengthened my understanding of virtualization and gave me a reliable Linux environment that I will use throughout the course, laying the groundwork for more advanced cybersecurity tasks.

Lab 2 – Working with Command Line

This lab strengthened my foundational skills in navigating and managing a Linux system through the command line. I practiced essential operations such as moving between directories using absolute and relative paths, listing files in different formats, and examining system files like /etc/group and /etc/passwd. These tasks helped reinforce how Linux organizes its file system and how administrators interact with system‑level information. I also worked with file and directory manipulation commands, including creating directories, copying files, renaming folders, and removing items, which are core skills for system administration and cybersecurity workflows.

One challenge I encountered was keeping track of directory locations while switching between absolute and relative paths, but repeating the commands helped build confidence and accuracy. Managing permissions and understanding why certain directories return “Permission denied” messages also gave me a clearer sense of how Linux enforces security at the file‑system level. Overall, this lab improved my command‑line fluency and deepened my understanding of how Linux systems are structured, which is essential for performing security tasks efficiently and effectively.

Lab 3 – Working with VI Editor

This lab focused on developing proficiency with the vi editor, one of the most essential tools for Linux system administration. Working through tasks such as navigating lines, inserting text, searching for patterns, and performing edits helped me understand how vi operates through its distinct modes. I also practiced commands for deleting words and lines, copying and pasting content, and performing global substitutions, which reinforced how powerful and efficient vi can be once the commands become familiar.

A challenge I encountered was maintaining awareness of which mode I was in, especially when switching between insert and command mode. However, repeating the tasks and using the Escape key to reset my position helped build confidence. Overall, this lab strengthened my ability to edit configuration files directly in the terminal which is an essential skill for cybersecurity professionals who often work on remote systems or servers without graphical interfaces.

Lab 4 – Group & User Management

This lab introduced practical experience in managing user and group accounts in Linux, which is a core responsibility in system administration and cybersecurity. I worked with commands to create users, set passwords, modify login shells, and manage group memberships. These tasks helped me understand how Linux stores account information in system files such as /etc/passwd and /etc/group, and how administrators use tools like grep, useradd, passwd, and usermod to maintain secure and organized environments.

One challenge was ensuring that changes to user and group configurations did not override existing settings, especially when adding secondary group memberships. Completing the group‑management tasks reinforced how permissions and ownership shape system security. Overall, this lab strengthened my understanding of identity and access management in Linux, which is fundamental for enforcing least privilege and maintaining secure systems.

Lab 5 – Password Cracking

This lab provided hands‑on experience with password security by creating user accounts with varying password complexities and testing their strength using John the Ripper. Generating passwords that ranged from simple dictionary words to combinations of uppercase letters, digits, and symbols helped illustrate how password structure directly affects crackability. Exporting password hashes and running John in wordlist mode demonstrated how attackers leverage automated tools and common wordlists like rockyou.txt to break weak credentials.

A challenge I encountered was interpreting the cracking results and understanding why certain passwords were recovered quickly while others remained secure after the 10‑minute cracking window. This reinforced the importance of strong password policies and the risks associated with predictable patterns. Overall, this lab highlighted how password‑cracking tools operate and why cybersecurity professionals must enforce complexity requirements, monitor authentication systems, and educate users about secure password practices.

Lab 6 – File Permissions

This lab deepened my understanding of Linux file permissions, group ownership, and access control; core concepts for maintaining secure multi‑user environments. I worked through creating users, assigning primary and secondary groups, configuring shared directories, and applying permission settings using both symbolic and octal notation. The lab also introduced the use of umask, SGID, and the sticky bit, which helped me see how administrators enforce consistent permission behavior across shared workspaces.

One challenge was ensuring that each permission change produced the expected results, especially when switching between user accounts to test access. Troubleshooting these scenarios helped reinforce how Linux evaluates ownership, group membership, and special permissions. Overall, this lab strengthened my ability to manage secure collaboration environments and highlighted how misconfigured permissions can lead to unintended data exposure.

Lab 7 – Storage Management

This lab provided hands‑on experience with Linux storage management, including identifying disk devices, examining partition tables, and working with virtual disks. I practiced using tools such as ls /dev/sd*, fdisk, and parted to inspect existing storage configurations. Adding a new virtual hard disk and observing how it appeared in the system helped me understand how Linux detects and organizes storage devices.

Creating partitions, formatting them with an ext4 filesystem, and mounting them to a directory gave me practical insight into how filesystems are prepared and integrated into the operating system. One challenge was ensuring that each step was executed in the correct order. Overall, this lab strengthened my understanding of storage architecture and the administrative tasks required to manage disks in a Linux environment.

Lab 8 – Shell Script

This lab focused on building practical shell‑scripting skills by writing scripts that used conditional statements, file checks, and user input. I created scripts that evaluated numeric conditions, identified whether a given input was a file or directory, and generated new files when needed. These tasks helped me understand how automation can streamline repetitive processes and improve system efficiency.

A challenge I encountered was ensuring that each script handled all possible input cases correctly, especially when checking for file types or nonexistent paths. Testing the scripts multiple times helped reinforce the importance of validation and error handling. Overall, this lab strengthened my ability to write functional, reliable shell scripts.

Lab 9 – Task Automation

This lab introduced automated system maintenance using cron jobs and shell scripting. I created a backup script that generated timestamped archive files of a user’s home directory, compressed them, and stored them in /var/backups. Scheduling the script with crontab demonstrated how administrators automate recurring tasks to ensure consistent system backups without manual intervention.

One challenge was ensuring that the script produced correctly formatted filenames and handled permissions when writing to system directories. Configuring cron to run at the correct interval also required careful attention to syntax. Overall, this lab highlighted the importance of automation in system reliability and taught me how scheduled tasks can reduce human error and improve operational efficiency.

Lab 10 – Network Basics

This lab strengthened my understanding of subnetting by requiring me to calculate network addresses, broadcast addresses, usable host ranges, and maximum host counts for different IP and mask combinations. Converting between decimal and binary formats helped reinforce how subnet masks divide networks and how administrators determine address boundaries.

A challenge I encountered was ensuring accuracy when converting between binary and decimal, especially for non‑standard subnet masks. Working through the calculations step‑by‑step helped solidify the logic behind subnetting. Overall, this lab improved my confidence in analyzing network structures which is an essential skill for designing secure networks and understanding how devices communicate.

Lab 11 – Basic Network Configuration

This lab provided hands‑on experience with Linux network configuration tools, including ifconfig, route, netstat, ping, and DNS utilities. I examined IP addresses, MAC addresses, routing tables, and hostname configuration files to understand how Linux systems manage network connectivity. Editing the hostname file and rebooting the system demonstrated how persistent network settings are applied.

Switching the VM from NAT mode to bridged mode and repeating the tests helped me compare how different network configurations affect connectivity and addressing. Observing changes in IP assignment and routing behavior clarified how virtualization platforms interact with physical networks. Overall, this lab strengthened my understanding of network fundamentals and how Linux systems operate within different network environments.