It hardly matters whether you are into SoC role or Network Security or AppSec or Cloud Security and so on, there are some common skill sets you should learn and be good at those. You may skip one or two common skills, if you are aspiring for Risk & Compliance profile (I am not covering anything for them in this repo as of now).
These skills are:
- Linux Commands
- Shell Scripting
- Python or Go
- Computer Networks basics
- Git Basics
- Cloud Computing Fundamentals
Check my video on YouTube: Top Tech Skills you should learn
You don't need to be Linux nerd as a security professional but good hands-on over all linux commands would make you a better security person. Below are the three things which I think you should be good at.
I am not mentioning any Security based Linux OS here, because if you are using those means you already know the important linux commands for your security job. Also, will not mention anything related to System or OS Security Architecture and it's design
What I understand so far is that in whichever cybersecurity role you are, you would need to work with Linux machine directly or indirectly. So, why not to learn Linux basics as the first skill towards getting closer to cybersecurity world.
- Understand how file structure and different permissions work.
- What are the commands related to permission changes, access controls etc.
- Where you can upload something malicious, what's this /tmp, /opt, /bin, /etc ...
- What's the deal with hidden files
- Understand /etc/shadow, /etc/passwd
- Where all the logs are stored
- Not so important, but good to know the difference between debian and rpm based OS
It's not that you should me master at but should be aware all the necessary commands.
Ask yourself for the answers to questions like below:
- How to list files and folders recursively
- How to edit a file
- How to search a file or contents through a file
- How sudo command works
- How do I create a subdirectory for which directory doesn't exist yet.
- How do I combine few linux commands together
- How do I connect to remote machine
- How do I see all the running processes
- How do I compress a file
- How to check file integrity
- How to install, uninstall, update and upgrade any application
Some common commands I can think of are: ls, cd, cp, scp, cat, uname, less, more, sort, ssh, mv, du, df, mount, mkdir, who, locate, chmod, chown, sudo, top, kill, grep, find, sed, awk, ps, zip, tar, service
What else you can think of as common linux commands for everyone?
These are the commands which are really helpful for security folks. I use these commands a lot for my projects and security activities. Think these commands are for basic information gathering phase active or passive
Some of those Linux Commands are:
- ping: Common command that you use when internet is not working ;) Use ping to check if ip or website is reachable.
- host: for DNS lookup. mostly we use host domain-name or host ip
- dig: I consider dig as a big B of host ;)
- nslookup:
- traceroute:
- nmap:
- whois:
- wget:
- curl:
- ifconfig:
I will add more details in Network Security Skills page
Basic understanding of shell scripting can be common for security engineers. There will be a time where you would need to automate something quickly and if you know linux commands, writing shell script for those tasks would be the quickest part for you. Many exploits, PoC and useful security scripts are written in shell script as well.
- Understand shell prompt in Linux
- Think in this way, how to write few commands in one place to finish some tasks like installing LAMP, updating some application and restart the server in one go
- How to execute shell script
- Understand various shell commands output and how to work with them.
- Learn if else and loop syntax
You might find something of your interest on github
You should be able to understand and execute python scripts or application. Common Python concepts that you need to know better are:
- Data primitives
- Function
- Control and loop statements
- Understand list and dictionary very well
- List Comprehension
- zip and map function
- use of argparse
- Some useful libraries for security pentest or automation purposes like:
- requests
- os
- regex
- python-nmap
- scapy
- cryptography (hazmat also referred as Hazardous Material)
- BeautifulSoup4
- faker
This skill is always underestimated from a security point of view unless you are a network security engineer. But one must understand the minimal concept listed below:
- What is this OSI model
- Understand TCP/IP model
- IPv4 concept and various address formats, CIDR being one example. Understand CIDR range very well. cidr.xyz If a website or IP address is given, you should be able to gather minimal information using various linux commands or through online resource.
- How HTTPs works howhttps.works
- How DNS works howdns.works
For other useful networking commands, check Internet and Networking Commands section above. Think on any of such scenario or concept by keeping security in mind.
These days you would find not just exploits but lots of learning resources, labs etc in github. KNowing basics of git always gives you upper hand. Below are some common commands that you must learn and do hands-on.
- git clone
- git add
- git commit
- git pull
- git push
- git config
- .gitignore
Learn more about git commands essentials through my course on Udemy
Can we avoid cloud computing at present. I guess, No. So, let's try to learn as much as possible.
Ask yourself question like below as much as possible:
- How Cloud Computing is different from Traditional Computing.
- What are the various service models and deployment models.
- Learn any famous Cloud service provider fundamentals like AWS, Azure, GCP
- How you store data in Cloud
- How Data security is covered in Cloud
- What is Cloud Native solutions
- How Logging and Monitoring works here
- How you would analyse what's going in Cloud at a central place
- How Cloud Security works and what problem it solves
- How to secure your Cloud environment better
- How IAM (Identity and Access Management) helps to aid Cloud Security in general