CYSE 270

Lab 1 – Create a Virtual Machine

This lab introduced me to setting up a virtual machine using Kali Linux in VirtualBox. It was my first time installing an operating system inside a virtual environment, which made the experience both interesting and slightly challenging. After setting up the VM, I practiced basic terminal commands like echodatels, and pwd.

One challenge I faced was making sure the VM had the correct settings, like enough memory and CPU allocation, so it would run smoothly. It took a little trial and error to get everything working properly.

From this lab, I learned the importance of virtual machines in cybersecurity and how they allow you to safely run different operating systems. I also gained a basic understanding of essential Linux commands, which are foundational skills for working in a Linux environment.

Lab 2 – Working with Command Line

In this lab, I practiced navigating and managing files using the Linux command line. I used commands to move between directories, list files, copy files, create directories, and delete files. This lab helped me become more comfortable working without a graphical interface.

One of the biggest challenges was remembering the difference between absolute and relative paths. At first, it was confusing to know when to use each one, but with practice, it started to make more sense. I also had to pay attention to command syntax because small mistakes would cause errors.

Overall, this lab strengthened my command-line skills and showed me how powerful the terminal can be. These skills are essential in cybersecurity because many systems are managed through the command line rather than a graphical interface.

Lab 3 – VI Editor

This lab focused on using the VI editor to create and edit files in Linux. I learned how to switch between command mode and insert mode, navigate through a file, and perform editing actions like inserting text, deleting lines, copying and pasting, and searching for words.

The most challenging part of this lab was remembering all the different commands and modes. Unlike typical text editors, VI requires you to use specific key commands, which can be confusing at first. I often had to press the Escape key to return to command mode and restart when I made mistakes.

Despite the difficulty, this lab helped me understand how system administrators edit files directly in the terminal. My overall takeaway is that mastering VI is an important skill in cybersecurity, especially when working on remote systems where graphical editors are not available.

Lab 4 – User and Group Account Management

This lab focused on managing user and group accounts in Linux. I practiced using commands to view user information, create new users, set passwords, and assign permissions. I also worked with groups by creating, modifying, and deleting them, as well as adding users to different groups.

One of the main challenges I faced was remembering the exact commands and options, especially when using grep to filter specific information from system files like /etc/passwd and /etc/shadow. It was also a bit confusing to understand how user groups work, particularly when adding a user to a group without overriding existing memberships.

Through this lab, I learned how important user and group management is for system security. Controlling who has access to certain files and permissions is a key part of cybersecurity. I also gained a better understanding of how Linux stores user and group information, and how administrators manage accounts using the command line.

Overall, this lab helped me build practical skills that are directly used in real-world system administration. It showed me how user permissions and group settings play a major role in protecting systems and maintaining proper access control.

Lab 5 – Password Cracking

This lab focused on testing password strength by creating different types of passwords and attempting to crack them using a tool called John the Ripper. I created six users, each with a password that followed specific complexity rules, ranging from very simple (like a lowercase dictionary word or just numbers) to more complex combinations of uppercase letters, digits, and symbols.

One challenge I faced was understanding how password complexity affects security. It was interesting to see how quickly simple passwords could be cracked compared to more complex ones. Setting up the password hashes and exporting them correctly into a file also required careful attention, since even a small mistake could prevent the cracking tool from working properly.

During the cracking process, I used a wordlist (rockyou.txt) and let the tool run for about 10 minutes. I noticed that weaker passwords were cracked almost immediately, while stronger ones either took much longer or were not cracked within the time limit. This clearly showed how important it is to create strong, unpredictable passwords.

Overall, this lab taught me a valuable cybersecurity lesson: weak passwords are extremely vulnerable to attacks. It reinforced the importance of using a mix of uppercase and lowercase letters, numbers, and symbols to create secure passwords. This lab also gave me hands-on experience with password auditing tools, which are commonly used by cybersecurity professionals to test system security.

Lab 6 – File Permissions and Group Collaboration

This lab focused on managing users, groups, and file permissions in a shared Linux environment. I created multiple user accounts (Sophia, Olivia, and Emma) and assigned them to different primary groups, then added them to a shared group for collaboration. I also created a shared directory and configured its permissions so only group members could access it.

One of the biggest challenges in this lab was understanding how permissions actually affect access. Setting the correct octal permissions (like rwxrwx---) and using the umask command required careful attention, because even a small mistake would prevent users from accessing files correctly. I also had to think through how switching between users affected what actions were allowed, especially when testing file access.

A key part of this lab was learning about special permissions like SGID and the sticky bit. When I set the SGID on the shared directory, it ensured that files created inside inherited the group ownership, which made collaboration easier. Without it, group members sometimes couldn’t access shared files. The sticky bit was also interesting because it restricted file deletion so that only the file owner could remove their files, even in a shared directory.

Overall, this lab helped me understand how Linux handles file sharing and access control in a multi-user environment. I learned that permissions, groups, and special settings like SGID and sticky bit are essential for maintaining both collaboration and security. This is especially important in cybersecurity, where controlling access to files and preventing unauthorized actions is critical.

Lab 7 – Disk Management and File Systems

This lab focused on understanding how Linux manages disks, partitions, and file systems. In the first part, I used commands like ls /dev/sd*fdisk -l, and parted -l to examine the current disk devices and partitions on the system. This gave me a better understanding of how storage devices are represented and organized in Linux.

One challenge I faced was interpreting the output of these commands. The information displayed was very detailed, and at first it was difficult to distinguish between different disks, partitions, and their sizes. However, after reviewing it carefully, I was able to understand how the system identifies each device.

In the second part, I created and attached a new virtual disk to the VM. After adding it, I repeated the disk-checking commands and noticed the new disk appearing in the system. This helped me clearly see how hardware changes are reflected in the operating system.

The final part involved creating a partition using fdisk, formatting it with an ext4 file system, and mounting it to a directory. One of the trickiest parts was making sure the partition was correctly created and mounted. When I unmounted the directory at the end, I noticed that the file I created was no longer visible in the mount point, which showed me how mounting works—files exist on the partition, not the directory itself.

Overall, this lab helped me understand how disks and file systems work in Linux. I learned how to create partitions, format them, and mount them, which are essential skills for system administration and cybersecurity. This lab showed me how important it is to properly manage storage devices and understand how data is accessed in a Linux system.

Lab 8 – Shell Scripting

This lab introduced me to writing and executing shell scripts in Linux. I used editors like vi or nano to create scripts, added the shebang (#!/bin/bash), and made the scripts executable using chmod +x. Then I ran the scripts directly in the terminal, which helped me understand how automation works in Linux.

One challenge I faced was writing the correct syntax for conditional statements. In Task A, I had to use an if statement to compare numbers, and even small mistakes—like missing spaces or incorrect brackets—caused errors. It took some practice to get the structure right. In Task B, checking whether an input was a directory or a file was also a bit confusing at first, especially using the correct flags and conditions.

Through this lab, I learned how shell scripts can automate tasks like checking files, creating new files, and displaying content. I also learned how to use user input with the read command and how to apply logic using conditional statements.

The extra credit task helped me understand how scripts can validate directories and display their contents, which is useful for system management.

Overall, this lab showed me how powerful scripting can be in Linux. Instead of manually repeating tasks, I can write scripts to do them automatically. This is an important skill in cybersecurity, where automation is often used to manage systems, analyze data, and improve efficiency.

Lab 9 – System Backup and Crontab Automation

This lab focused on automating system backups using shell scripting and scheduling tasks with crontab. I created a new user named Alice and wrote a script that backed up her home directory by creating a compressed tar archive. The script included variables for my MIDAS ID and the current date, which helped generate unique filenames for each backup.

One challenge I faced was correctly formatting the date and combining it with the filename. It took some trial and error to make sure the output matched the required format. I also had to carefully use the tar command with the right options to both archive and compress the files. Moving the backup to the /var/backups directory required proper permissions, which meant I had to understand when to use elevated privileges.

Another important part of the lab was setting up a crontab job to automate the backup process. Scheduling the script to run every few minutes helped me see how automation works in real time. At first, writing the cron schedule syntax was confusing, but after testing it, I understood how timing and repetition are controlled.

For the extra credit task, I created a cleanup script that checks the number of backup files and deletes older ones if they exceed a certain limit. This showed me how important it is to manage storage and avoid filling up disk space with unnecessary files.

Overall, this lab taught me how to automate important system tasks like backups and maintenance. I learned how scripting and scheduling work together to improve efficiency and reliability, which is very important in cybersecurity and system administration.

Lab 10 – Networking Basics: Subnetting

This lab focused on learning how to calculate subnetting values such as network address, broadcast address, first and last usable IPs, and the maximum number of hosts. I worked with different IP addresses and subnet masks, including /28 and /26, and practiced converting between binary and decimal formats.

One of the biggest challenges I faced was understanding how subnet masks affect the number of available hosts and how to correctly calculate the network and broadcast addresses. Converting IP addresses into binary and identifying the network and host portions was confusing at first, especially when dealing with different subnet sizes. It took practice to recognize patterns and apply the formulas correctly.

Through this lab, I learned how subnetting helps organize networks efficiently and improves security by dividing larger networks into smaller segments. I also learned how to calculate the number of hosts using the formula 2n−22n−2, where nn is the number of host bits.

Max Hosts=2n−2Max Hosts=2n−2

The extra credit scripting task helped reinforce my shell scripting skills by using both for and while loops to print numbers from 0 to 10. This showed how scripting concepts connect with networking tasks in automation.

Overall, this lab helped me build a strong foundation in subnetting, which is an essential skill in networking and cybersecurity. Understanding how IP addressing works is important for configuring networks, troubleshooting issues, and securing systems.

Lab 11 – Network Configuration and Connectivity

This lab focused on exploring network configurations in a Linux virtual machine using NAT and bridged network modes. In Task A, I used NAT mode and ran commands like ifconfigroute, and netstat to view network details such as IP address, MAC address, subnet mask, routing table, and active connections. I also used ping to test connectivity and confirmed that my VM could access external systems. Additionally, I used the host command to perform DNS lookups and viewed system files to check the hostname and DNS server configuration.

One challenge I faced was interpreting the command outputs, especially identifying the correct IP address and understanding how each command relates to network functionality. Editing system files to change the hostname also required careful attention.

For Task B, I was unable to complete the bridged network portion due to a limitation with my system. My computer runs a newer version of macOS, which does not fully support bridged adapter mode in VirtualBox. Because of this, I could not switch from NAT to bridged networking or observe the differences as required.

Even though I could not complete Task B, I still understand the concept: NAT mode allows the VM to share the host’s network connection using a private IP, while bridged mode makes the VM act like a separate device on the network with its own IP address.

Overall, this lab helped me understand how network configurations work in virtual environments and how to use important networking commands. It also showed me that system limitations and compatibility issues can affect lab work, which is something professionals need to adapt to in real-world situations.