Sysadmin Cheatsheet

Networking Fundamentals

OSI · IPv4 · TCP/UDP · DNS

OSI Model
#LayerProtocol / TechKey Role
7ApplicationHTTP, FTP, DNS, SMTP, SNMPUser-facing data exchange
6PresentationSSL/TLS, JPEG, ASCIIEncoding, encryption, compression
5SessionNetBIOS, RPC, PPTPOpen/maintain/close sessions
4TransportTCP, UDPSegmentation, ports, reliability
3NetworkIP, ICMP, OSPF, BGPLogical addressing, routing
2Data LinkEthernet, MAC, ARP, VLANsPhysical addressing, framing
1PhysicalCables, hubs, bits, NICsRaw bit transmission
IPv4 Address Ranges
RangeTypeNotes
10.0.0.0/8PrivateClass A, large networks
172.16.0.0/12PrivateClass B (172.16-31.x)
192.168.0.0/16PrivateClass C, home/SOHO
127.0.0.0/8Loopback127.0.0.1 = localhost
169.254.0.0/16APIPAAuto-assigned when DHCP fails
224.0.0.0/4MulticastOne-to-many delivery
0.0.0.0UnspecifiedTwo distinct uses: binding (0.0.0.0:80 = listen on all interfaces) vs routing (0.0.0.0/0 = default route / gateway of last resort)
DNS Record Types
RecordPurposeExample
AIPv4 addressexample.com → 93.184.216.34
AAAAIPv6 addressexample.com → 2606:…
CNAMECanonical aliaswww → example.com
MXMail serverPriority + mail host
NSNameserversDelegates zone authority
TXTText dataSPF, DKIM, site verification
SOAZone authorityPrimary NS, serial, TTLs
PTRReverse DNSIP → hostname lookup
SRVService location_sip._tcp.example.com
TCP vs UDP
PropertyTCPUDP
ConnectionConnection-oriented (3-way handshake)Connectionless, no handshake
ReliabilityGuaranteed delivery, retransmits lost packetsBest-effort, packets may be lost
OrderingSequenced delivery guaranteedOut-of-order delivery possible
SpeedSlower (overhead from acks, windowing)Faster, minimal overhead
Use casesHTTP/S, SSH, FTP, SMTP, RDP, databasesDNS, DHCP, VoIP, video streams, NTP
Network Troubleshooting Workflow

Work through these steps in order - each layer rules out the one above it.

StepCommandWhat You're Checking
1. Is the host up?ping -c 4 <target>Basic ICMP reachability - rules out total network failure
2. What path does traffic take?traceroute <target> / tracertHop-by-hop path - find where packets drop or latency spikes
3. Does DNS resolve?dig <hostname> / nslookupName resolution - wrong IP or NXDOMAIN means DNS problem
4. Is the port open?nc -zv <host> <port> / Test-NetConnectionTCP connectivity to specific port - rules out firewall or service down
5. Is the service listening?ss -tlnp / netstat -anoWhat's bound to which port locally - service may not be started
6. What does the traffic look like?tcpdump -i eth0 host <target>Actual packet capture - see resets, retransmits, TLS failures
7. What do the logs say?journalctl -u nginx -n 50 / tail -f /var/log/syslogApplication and system errors - often the exact answer
8. Is a firewall blocking it?iptables -L -n / ufw status / Get-NetFirewallRuleLocal firewall rules - check both source and destination
9. Is MTU causing fragmentation?ping -M do -s 1472 <target>Test for MTU/fragmentation issues on VPN or tunnel paths
10. Is the cert valid?openssl s_client -connect <host>:443TLS handshake, cert expiry, chain validity - for HTTPS issues
HTTP Status Codes
CodeMeaningCommon Cause
200OKRequest succeeded
201CreatedPOST succeeded, new resource created
204No ContentSuccess, no body returned (DELETE, PUT)
301Moved PermanentlyURL changed forever - clients should update bookmarks
302Found (Temporary Redirect)Temporary redirect - client keeps using original URL
304Not ModifiedCached version is still valid - no body sent
400Bad RequestMalformed request syntax, invalid parameters
401UnauthorizedAuthentication required or failed
403ForbiddenAuthenticated but no permission - check ACLs, file permissions
404Not FoundResource doesn't exist at this URL
405Method Not AllowedWrong HTTP verb (GET vs POST) for this endpoint
408Request TimeoutClient too slow - network issue or overloaded server
429Too Many RequestsRate limit hit - back off and retry
500Internal Server ErrorUnhandled exception - check app logs
502Bad GatewayUpstream server returned invalid response - check backend/proxy
503Service UnavailableServer overloaded or down for maintenance
504Gateway TimeoutUpstream server too slow - check backend latency and timeouts

CIDR & Subnets

Subnet masks · Host counts · Block sizes

CIDRSubnet MaskHostsBlock SizeExample / Use
/8255.0.0.016,777,21416M10.0.0.0/8 - large org
/16255.255.0.065,53464K172.16.0.0/16 - campus
/20255.255.240.04,0944KAWS default VPC subnets
/24255.255.255.0254256192.168.1.0/24 - typical LAN
/25255.255.255.128126128192.168.1.0/25 - split /24 in half
/26255.255.255.1926264192.168.1.0/26 - quarter of a /24
/27255.255.255.2243032192.168.1.0/27 - small dept segment
/28255.255.255.2401416192.168.1.0/28 - server cluster
/29255.255.255.24868Point-to-point link
/30255.255.255.25224Router-to-router link
/31255.255.255.25422RFC 3021 p2p (no broadcast)
/32255.255.255.25511Single host route / loopback

Tip: Usable hosts = 2n - 2 (subtract network + broadcast). /31 is the exception (RFC 3021).

Ports & VPN Technologies

Well-known ports · VPN protocols

Well-Known Ports
Port(s)ProtocolServiceNotes
20 / 21TCPFTP20=data, 21=control. Use SFTP/FTPS instead
22TCPSSH / SFTP / SCPSecure remote shell and file transfer
23TCPTelnetPlaintext - disable, use SSH
25TCPSMTPMail relay between servers
53TCP/UDPDNSUDP for queries, TCP for zone transfers/large
67 / 68UDPDHCP67=server, 68=client
80TCPHTTPUnencrypted web - redirect to 443
88TCP/UDPKerberosAuthentication in AD environments
110TCPPOP3Email retrieval - use POP3S (995)
123UDPNTPTime sync - critical for Kerberos/logs
143TCPIMAPEmail access - use IMAPS (993)
161 / 162UDPSNMP161=poll, 162=trap. Use v3 with auth
389TCP/UDPLDAPDirectory services - use LDAPS (636)
443TCPHTTPSHTTP over TLS. Also used by some VPNs
445TCPSMBWindows file shares - block at perimeter
465 / 587TCPSMTPS / SMTP-TLSEncrypted mail submission
514UDPSyslogLog forwarding - use TLS syslog (6514)
636TCPLDAPSLDAP over TLS
993TCPIMAPSIMAP over TLS
995TCPPOP3SPOP3 over TLS
1433TCPMS SQL ServerDefault SQL Server port
1521TCPOracle DBOracle database listener
3306TCPMySQL / MariaDBCommon web app database port
3389TCPRDPRemote Desktop - never expose to internet
5432TCPPostgreSQLDefault Postgres port
5900TCPVNCRemote desktop - use only over VPN/tunnel
6379TCPRedisHistorically no auth by default - always bind to localhost and set requirepass before any exposure
8080 / 8443TCPHTTP/S AltDev servers, proxies, alt web services
27017TCPMongoDBHistorically no auth by default - modern versions enforce localhost binding; always enable auth and restrict access before exposing
VPN Technologies
TypeProtocolPort(s)Notes
IPSec / IKEv2ESP / IKEUDP 500 / 4500Fast, native on most OS, preferred for site-to-site
OpenVPNTLSUDP/TCP 1194Flexible, open-source, common for remote access
WireGuardUDP51820Modern, minimal code, fastest throughput. Key-based auth (Curve25519) - no certificates or CA needed, unlike IPSec/OpenVPN
SSL VPNHTTPSTCP 443Works through firewalls, browser or client-based
L2TP/IPSecL2TP + ESPUDP 1701 / 500 / 4500Common legacy, double-encapsulation overhead; 4500 for NAT-T
PPTPGRE + TCPTCP 1723Obsolete - broken crypto, avoid

Security, Threats & Hardening

Attacks · Hardening · Crypto · Auth

Threat / Attack Reference
CategoryAttackDescription
PhishingPhishing / Spear / WhalingFraudulent emails targeting all users / specific individuals / executives
PhishingVishing / SmishingVoice call or SMS-based social engineering
Web AppSQL InjectionMalicious SQL inserted into input fields to query or corrupt the DB
Web AppXSS (Cross-Site Scripting)Injected scripts execute in victim's browser via a trusted site
Web AppCSRFForged request tricks authenticated user into unwanted action
Web AppIDORAccessing objects by changing an ID in the URL/request
MalwareRansomwareEncrypts files, demands payment for key
MalwareRootkitHides malware presence at OS/kernel level
MalwareKeyloggerRecords keystrokes to capture credentials
NetworkMITMAttacker intercepts communication between two parties
NetworkARP SpoofingLinks attacker MAC to legitimate IP to intercept LAN traffic
NetworkDDoS / SYN FloodOverwhelm target with traffic / half-open TCP connections
Social Eng.Pretexting / TailgatingFabricated scenario to obtain info / following into secure area
InsiderPrivilege EscalationExploiting vuln or misconfiguration to gain higher access
Hardening Checklist
Action
DODisable unused ports and services
DOEnable MFA / 2FA on all accounts
DOApply least privilege (PoLP) everywhere
DOPatch OS promptly - critical/zero-day: hours to days; standard patches: within 30 days
DOEnable host-based firewall (UFW/iptables)
DOUse key-based SSH auth, disable password auth
DODisable root SSH login (PermitRootLogin no)
DOEncrypt data at rest and in transit
DOLog and monitor all auth events
DON'TUse default credentials on any device
DON'TRun services as root unnecessarily
DON'TExpose RDP / management ports to internet
DON'TDisable SELinux/AppArmor without a plan
DON'TStore plaintext credentials in scripts/repos
Cryptography Algorithms
AlgorithmTypeKey Size / Notes
AES-256Symmetric256-bit. NIST standard, fastest for bulk data
ChaCha20SymmetricStream cipher, faster than AES on mobile
RSAAsymmetric2048+ min (4096 recommended for long-term)
ECDSA / ECDHAsymmetricECC - same security as RSA with shorter keys
Ed25519AsymmetricPreferred for SSH keys, fast and secure
SHA-256 / SHA-3HashUse for integrity checks, digital signatures
bcrypt / Argon2Password hashArgon2 is winner of Password Hashing Competition
TLS 1.3 / 1.2ProtocolTLS 1.3 preferred (faster, mandatory forward secrecy); TLS 1.2 still acceptable with modern ciphers. 1.0/1.1 deprecated - disable immediately
Authentication Methods
MethodUse Case
Password + MFA/TOTPBaseline for all user accounts
SSH Key Pairs (Ed25519)Server access, CI/CD pipelines
PKI / X.509 CertificatesTLS, client auth, code signing
OAuth 2.0 / OIDCWeb app delegation, "Sign in with Google"
SAML 2.0Enterprise SSO, IdP federation
KerberosActive Directory authentication (tickets)
RADIUSNetwork access (WiFi 802.1X, VPN auth)
LDAP / Active DirectoryCentralized user/group directory

OS & Commands

Linux · Windows/PS · Storage · RAID · Backup · AD

Linux - Process & Performance - Reference: ss64.com/bash
CommandDescription
top / htopReal-time process monitor. htop is interactive
ps auxAll processes with user and CPU/mem usage
ps aux | grep nginxFind process by name
kill -9 <PID>Force-kill process by PID (SIGKILL)
pkill -f nginxKill all processes matching name pattern
systemctl status sshdCheck service status (systemd)
systemctl restart nginxRestart a systemd service
systemctl enable nginxEnable service to start on boot
journalctl -u nginx -fFollow systemd logs for a service
free -hMemory usage in human-readable format
vmstat 1CPU/IO/memory stats every 1 second
uptimeSystem uptime and load averages (1/5/15 min)
systemd Deep Dive
CommandDescription
systemctl list-units --type=service --state=failedShow all failed services - first thing to check after a reboot
systemctl list-units --type=service --state=runningAll currently running services
systemctl disable --now nginxStop a service and prevent it starting on boot in one command
systemctl mask nginxCompletely prevent a service from starting - stronger than disable, blocks manual start too
systemctl cat nginxShow the full unit file for a service - see ExecStart, dependencies, restart policy
systemctl daemon-reloadReload unit files after editing - required before restarting a modified service
journalctl -u nginx -n 100 --no-pagerLast 100 log lines for a service without paging
journalctl -u nginx --since "1 hour ago"Service logs from the last hour - accepts natural language time
journalctl -p err -bOnly error-level (and above) messages from current boot
journalctl -b -1Logs from the previous boot - useful after a crash or unexpected reboot
journalctl --disk-usageHow much disk space journal logs are consuming
journalctl --vacuum-time=7dDelete journal entries older than 7 days to free disk space
Linux - Networking & Firewall
CommandDescription
ip addr showShow all network interfaces and IP addresses
ip route showDisplay routing table
ss -tulnpTCP/UDP listening ports with process names
netstat -tulnpListening ports (legacy, use ss on modern systems)
ping -c 4 8.8.8.8Test connectivity (4 packets)
traceroute 8.8.8.8Trace route hops to destination
nmap -sV -p 1-1000 <IP>Scan top 1000 ports with service version
dig example.com ADNS lookup for A record
curl -I https://example.comFetch HTTP response headers only
Linux - Files, Permissions & Users
CommandDescription
chmod 755 filerwxr-xr-x - owner full, group/other read+exec
chmod u+x script.shAdd execute permission for owner
chown user:group fileChange file owner and group
find / -perm -4000Find all SUID binaries (privilege escalation risk)
useradd -m -s /bin/bash uCreate user with home dir and bash shell
usermod -aG sudo usernameAdd user to sudo group
passwd usernameSet or change user password
grep -r "error" /var/log/Recursively search logs for "error"
tail -f /var/log/syslogFollow log file in real-time
df -hDisk usage by filesystem in human-readable
du -sh /var/log/*Size of each item in /var/log
tar -czf out.tar.gz /dirCreate gzipped tarball of directory
rsync -avz src/ dest/Sync files with verbose output and compression
Common Linux Config Files
FileWhat it Controls
/etc/hostsStatic hostname-to-IP mappings - checked before DNS, useful for local overrides
/etc/resolv.confDNS server addresses and search domains - often managed by NetworkManager or systemd-resolved
/etc/fstabFilesystems mounted at boot - device, mount point, type, options, dump, fsck order
/etc/hostnameSystem hostname - change here then run hostnamectl set-hostname to apply
/etc/sudoersSudo access rules - always edit with visudo to prevent syntax errors locking you out
/etc/passwdUser accounts: username, UID, GID, home dir, shell - no passwords stored here
/etc/shadowHashed passwords and password policy per user - root-readable only
/etc/groupGroup definitions and membership lists
/etc/ssh/sshd_configSSH server config - PermitRootLogin, PasswordAuthentication, Port, AllowUsers
/etc/crontabSystem-wide cron schedule - user crons live in /var/spool/cron/crontabs/
/etc/cron.d/Drop-in cron files for packages and services - same format as /etc/crontab
/etc/environmentSystem-wide environment variables set at login - plain KEY=value format, no export needed
/etc/profile.d/Shell scripts sourced at login for all users - drop custom env vars and aliases here
/etc/logrotate.confLog rotation policy - frequency, retention count, compression settings
/etc/nsswitch.confName service switch - controls lookup order for hosts, users, groups (files vs DNS vs LDAP)
SSH Key Management
Command / FileDescription
ssh-keygen -t ed25519 -C "user@host"Generate Ed25519 key pair - preferred over RSA for new keys
ssh-keygen -t rsa -b 4096 -C "user@host"Generate 4096-bit RSA key pair - use when Ed25519 not supported
ssh-copy-id user@hostCopy public key to remote host's authorized_keys in one step
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keysManually append public key to authorized_keys (manual alternative)
eval $(ssh-agent -s) && ssh-add ~/.ssh/id_ed25519Start ssh-agent and load a key - avoids repeated passphrase prompts
ssh-add -lList keys currently loaded in ssh-agent
ssh -J bastion user@targetProxyJump - SSH through a bastion/jump host to reach internal servers
ssh -L 8080:internal:80 user@bastionLocal port forward - tunnel local 8080 through bastion to internal:80
~/.ssh/configPer-user SSH config - define Host aliases, IdentityFile, ProxyJump, Port per host
~/.ssh/authorized_keysPublic keys allowed to authenticate to this account - must be chmod 600
~/.ssh/known_hostsFingerprints of hosts you've connected to - mismatch = MITM warning
/etc/ssh/sshd_configServer-side SSH config - PermitRootLogin, PasswordAuthentication, AllowUsers
Package Management
Taskapt (Debian/Ubuntu)dnf/yum (RHEL/CentOS)zypper (SUSE)
Install packageapt install nginxdnf install nginxzypper install nginx
Remove packageapt remove nginxdnf remove nginxzypper remove nginx
Remove + configapt purge nginxdnf remove nginxzypper remove --clean-deps nginx
Update allapt update && apt upgradednf upgradezypper update
Search packageapt search nginxdnf search nginxzypper search nginx
Package infoapt show nginxdnf info nginxzypper info nginx
List installedapt list --installeddnf list installedzypper packages --installed
Which pkg owns filedpkg -S /usr/bin/nginxrpm -qf /usr/sbin/nginxrpm -qf /usr/sbin/nginx
List pkg filesdpkg -L nginxrpm -ql nginxrpm -ql nginx
Add repoadd-apt-repository ppa:xdnf config-manager --add-repo URLzypper addrepo URL alias
Clean cacheapt cleandnf clean allzypper clean
Linux Filesystem Hierarchy
PathWhat Lives Here
/Root of the entire filesystem tree - everything hangs off here
/binEssential user binaries (ls, cp, mv, bash) needed before /usr is mounted
/sbinEssential system binaries for root (fdisk, ifconfig, init, fsck)
/usrRead-only user data: most installed apps, libraries, and docs go here
/usr/binNon-essential user commands (gcc, python3, git, curl, vim)
/usr/localLocally compiled or admin-installed software - not managed by the package manager
/etcSystem-wide configuration files (/etc/ssh/sshd_config, /etc/hosts, /etc/cron.d)
/varVariable data that grows: logs (/var/log), mail, spool, databases, package cache
/var/logSystem and service logs (syslog, auth.log, dmesg, journald writes here)
/tmpTemporary files - cleared on reboot, world-writable, no exec in hardened configs
/homeUser home directories (/home/alice). Root's home is /root, not here
/rootHome directory for the root account
/devDevice files: disks (/dev/sda), terminals (/dev/tty), null (/dev/null)
/procVirtual FS exposing kernel and process info (/proc/cpuinfo, /proc/meminfo)
/sysVirtual FS for kernel devices and drivers - used by udev and hardware management
/bootKernel images, initramfs, and GRUB config - keep separate partition for safety
/libShared libraries needed by /bin and /sbin at boot
/optOptional third-party software installed as self-contained packages (e.g. /opt/splunk)
/mntTemporary mount point for manually mounted filesystems
/mediaAuto-mount point for removable media (USB drives, DVDs)
/srvService data served to the network (web root, FTP files)
/runRuntime data since last boot: PID files, sockets, lock files (tmpfs)
Windows Filesystem Hierarchy

Drive-letter based (C:, D:). NTFS is standard - supports permissions, ACLs, compression, and encryption.

PathWhat Lives Here
C:\Root of the drive - each volume has its own root under a drive letter
C:\WindowsOS root containing system binaries, configuration files, and critical subdirectories
C:\Windows\System3264-bit system executables, DLLs, and management tools (cmd.exe, notepad.exe, etc.)
C:\Windows\SysWOW6432-bit system binaries for backward compatibility on 64-bit Windows
C:\Windows\System32\driversKernel-mode drivers (.sys files) loaded at boot
C:\Windows\TempSystem-wide temporary files - safe to clear periodically
C:\Program FilesDefault install directory for 64-bit applications
C:\Program Files (x86)Default install directory for 32-bit applications on 64-bit Windows
C:\ProgramDataSystem-wide app data and config shared across all users (hidden by default)
C:\Users\PublicShared folder accessible to all local users
C:\Users\%USERNAME%Per-user profile root - contains all personal folders and app data
...\AppData\RoamingPer-user config that follows domain profiles (Outlook, VS Code settings, etc.)
...\AppData\LocalLocal-only app data: cache, application state, Temp subfolder
...\AppData\Local\TempUser-specific temp files - a common target for malware drops
...\Desktop / DownloadsStandard personal folders inside each user profile
PowerShell Essentials - Reference: ss64.com/ps
CommandDescription
Get-Help Get-Process -FullFull documentation for any cmdlet - add -Examples for just examples, -Online to open browser docs
Get-Help *network*Wildcard search across all help topics - how you discover cmdlets you don't know yet
Update-HelpDownload latest help files - run once after a fresh install, requires internet
Get-Command -Verb Get -Noun *DNS*Find cmdlets by verb, noun, or wildcard - the right way to discover what's available
Get-Command -Module ActiveDirectoryList every cmdlet in a specific module
Get-Module -ListAvailableAll modules installed on the system, whether loaded or not
Import-Module ActiveDirectoryLoad a module into the current session
Get-Process | Get-MemberInspect every property and method on an object - essential for building pipelines
Get-Service | Select-Object -Property *Reveal all properties on an object, not just the default display columns
Get-HistoryCommand history for the current session with execution IDs
Invoke-History 42Re-run a command by its history ID
Get-PSReadLineOptionView persistent history path - PSReadLine saves history across sessions by default
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserAllow local scripts to run; remote scripts must be signed. Safest policy for daily use
Get-ExecutionPolicy -ListShow policy at every scope (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine)
Windows / PowerShell & CMD - Reference: ss64.com/ps · ss64.com/nt
CommandDescription
Get-ProcessList all running processes (PS)
Stop-Process -Name notepadKill process by name (PS)
Get-Service | Where Status -eq RunningList only running services (PS)
systeminfoOS version, RAM, hotfixes, uptime
net user /domainList domain users
net localgroup administratorsList local admins
Get-HotFix | Sort-Object InstalledOn -DescendingInstalled Windows Updates and KBs, newest first
Get-ExecutionPolicyCheck current PowerShell script execution policy
Get-CimInstance Win32_OperatingSystem | select LastBootUpTimeWhen the system last rebooted
Get-WinEvent -LogName Security -MaxEvents 50Recent Security event log entries (PS)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20Failed logon events only - faster and more precise than Where-Object filtering
Test-NetConnection -ComputerName dc01 -Port 443Test TCP connectivity to a host/port - modern replacement for telnet port tests
Invoke-Command -ComputerName srv01,srv02 -ScriptBlock { Get-Service spooler }Run commands on one or many remote machines simultaneously over WinRM
Enter-PSSession -ComputerName srv01Interactive remote PowerShell session - like SSH for Windows
Get-Printer -ComputerName printserverList all printers on a print server
Add-Printer -Name "HP-Floor2" -DriverName "HP Universal" -PortName "IP_10.0.1.50"Add a network printer from CLI - no GUI needed
Install-Module PSWindowsUpdate -Force; Get-WindowsUpdateCheck pending Windows Updates from PowerShell - requires PSWindowsUpdate module
Install-WindowsUpdate -AcceptAll -AutoRebootInstall all available updates and reboot if required (PSWindowsUpdate module)
Windows Networking
CommandDescription
ipconfig /allFull adapter info including MAC address, DNS servers, DHCP lease, and gateway
netstat -anoAll active TCP/UDP connections with associated PIDs (legacy but universal)
Get-NetTCPConnectionModern netstat equivalent - active TCP connections with state and owning process ID
Get-DnsClientCacheView locally cached DNS records - useful for diagnosing stale or poisoned entries
Get-NetRouteDisplay the full routing table - equivalent to route print
Get-NetAdapterList physical and virtual network adapters with link speed and status
(Invoke-RestMethod ipinfo.io/json).ipRetrieve public egress IP address from PowerShell - no browser needed
Restart-Computer -ComputerName "PC01" -ForceRemotely restart a machine by name - requires WinRM or admin share access
Windows Storage & Services
CommandDescription
Get-DiskList all physical disks with size, partition style (MBR/GPT), and health status
Get-VolumeShow all volumes with drive letter, filesystem, total size, and free space
Get-PhysicalDisk | select FriendlyName, HealthStatus, OperationalStatusSMART-based health status per physical disk - spot failing drives early
Get-ChildItem C:\Path -Recurse | Measure-Object -Sum LengthCalculate total disk usage of a directory tree in bytes
Get-Service | Where Status -eq RunningList only services currently in a Running state
Get-Service | where Status -eq 'StartPending'Find services stuck in Starting - indicates a hung or deadlocked service
Restart-Service -Name sshdRestart a named service by its service name (not display name)
Get-CimInstance Win32_Service | select Name, PathName, StartModeService binary path and start mode - useful for spotting malicious service installs
RAID Types
RAIDMethodMin DisksFault Tolerance
RAID 0Striping2None — any disk failure = total loss
RAID 1Mirroring21 disk failure tolerated
RAID 5Stripe + parity31 disk failure tolerated
RAID 6Stripe + dual parity42 disk failures tolerated
RAID 10Stripe of mirrors41 per mirror pair
Backup Strategy Types
TypeWhat It Backs UpSpeedRestore
FullAll data every timeSlowestSingle set — fastest restore
IncrementalChanges since last backup (any)FastestNeed all incrementals + last full
DifferentialChanges since last full onlyMediumLast full + latest differential
SnapshotPoint-in-time copy (CoW)InstantInstant rollback, storage overhead
Active Directory
CommandDescription
Get-ADUser -Identity jsmith -Properties *Full user details: last logon, locked status, group membership
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate | Where {$_.LastLogonDate -lt (Get-Date).AddDays(-90)}Active accounts with no logon in 90+ days — stale account audit
Set-ADUser -Identity jsmith -Enabled $falseDisable a user account
Unlock-ADAccount -Identity jsmithUnlock a locked-out account
Set-ADAccountPassword -Identity jsmith -Reset -NewPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force)Reset a user password from PowerShell
Get-ADGroupMember -Identity "Domain Admins" -RecursiveList group members including nested members
Add-ADGroupMember -Identity "VPN Users" -Members jsmithAdd a user to a group
Get-ADComputer -Filter * -Properties LastLogonDate | Sort LastLogonDateAll computers sorted by last logon — spot stale machine accounts
Test-ComputerSecureChannel -RepairFix broken domain trust without removing from domain
Reset-ComputerMachinePasswordFixes "trust relationship failed" — no domain rejoin needed
gpupdate /forceForce immediate Group Policy refresh
gpresult /rShow applied GPOs for current user and computer (RSoP)
dcdiag /test:replicationsTest AD replication health across domain controllers
repadmin /replsummaryReplication summary — spot failing DC partners quickly

Logs & Monitoring

Linux logs · Windows Event IDs · Cron

Linux Log Paths
Path / CommandContents
/var/log/auth.logSSH logins, sudo, auth failures (Debian/Ubuntu)
/var/log/secureSame as auth.log on RHEL/CentOS
/var/log/syslogGeneral system messages and daemon output
/var/log/messagesKernel + system messages (RHEL/CentOS)
/var/log/kern.logKernel ring buffer messages
/var/log/nginx/access.logHTTP requests to Nginx web server
/var/log/nginx/error.logNginx errors and connection issues
/var/log/apache2/error.logApache web server errors
/var/log/cronCron job execution history
journalctl -u nginxSystemd journal for a specific service
journalctl -b -p errAll errors since last boot (systemd)
Windows Event IDs
Event IDLogMeaning
4624SecuritySuccessful logon
4625SecurityFailed logon attempt
4648SecurityLogon with explicit credentials (runas)
4672SecuritySpecial privileges assigned to new logon
4688SecurityNew process created (process tracking)
4720SecurityUser account created
4740SecurityAccount locked out
4776SecurityDC validated credentials (NTLM)
7045SystemNew service installed on the system
1102SecurityAudit log cleared - investigate immediately
Log Query Tools
Tool / CommandUse
Event Viewer (eventvwr.msc)Windows GUI for all event logs
Get-WinEvent -LogName SecurityPowerShell security log access
grep "Failed" /var/log/auth.logFilter failed SSH attempts
last -n 20Last 20 logins from /var/log/wtmp
lastbFailed login attempts (/var/log/btmp)
Cron Job Syntax
FieldRangeExampleMeaning
Minute0-5930At minute 30
Hour0-2314At 14:00 (2pm)
Day/Month1-311On the 1st of month
Month1-12*/3Every 3 months
Day/Week0-71-5Mon-Fri (0=7=Sunday)
*any*Every value in field
*/nstep*/15Every n units
,list1,15,30At specific values
Cron ExpressionSchedule
0 2 * * *Every day at 02:00
*/5 * * * *Every 5 minutes
0 0 1 * *First day of every month, midnight
30 8 * * 1-5Weekdays at 08:30
0 */4 * * *Every 4 hours on the hour
@reboot /path/scriptRun once at system startup
0 3 * * 0Weekly Sunday at 03:00
0 12 1 1 *Yearly - January 1st at noon
Monitoring Platforms
ToolTypeBest For
ZabbixOpen source, agent-basedFull infrastructure monitoring - servers, network, VMs, SNMP. Self-hosted, no license cost
PRTGCommercial, agentlessWindows-centric environments, easy setup, strong network/SNMP monitoring. Licensed by sensor count
Nagios / IcingaOpen source, plugin-basedHighly customisable, large plugin ecosystem. Icinga2 is the modern fork with better config and clustering
Grafana + PrometheusOpen source, metrics stackModern cloud-native monitoring - Prometheus scrapes metrics, Grafana visualises. Standard in Kubernetes environments
DatadogSaaSFull-stack observability - infrastructure, APM, logs, synthetics. Expensive but minimal setup overhead
Elastic Stack (ELK)Open source / SaaSLog aggregation and search at scale - Elasticsearch + Logstash + Kibana. Strong for SIEM use cases
GraylogOpen source / commercialCentralised log management - easier to operate than ELK for log-focused use cases
Uptime KumaOpen source, self-hostedLightweight uptime/status monitoring with a clean UI - good for small teams or personal use

Certificates & Firewall

OpenSSL · UFW · iptables

OpenSSL Certificate Commands
CommandPurpose
openssl x509 -in cert.pem -text -nooutInspect cert: expiry, SAN, issuer, subject
openssl req -new -key key.pem -out csr.pemGenerate CSR from existing private key
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365Self-signed cert with new 4096-bit RSA key
openssl verify -CAfile ca.pem cert.pemVerify cert chain against a CA bundle
openssl s_client -connect host:443Test TLS handshake, view cert chain live
openssl pkcs12 -export -out bundle.pfxExport cert + key to PFX/PKCS12 format
openssl dhparam -out dh.pem 2048Generate Diffie-Hellman params for TLS
certbot renew --dry-runTest Let's Encrypt auto-renewal (Certbot)
certbot certonly --nginx -d example.comIssue/renew cert for nginx domain
UFW / iptables Rules
CommandAction
ufw enableActivate UFW firewall
ufw status verboseShow all rules with details
ufw allow 22/tcpAllow SSH (TCP port 22)
ufw allow from 10.0.0.0/8Allow all traffic from subnet
ufw deny 23Block Telnet port
ufw delete allow 80/tcpRemove a specific allow rule
iptables -L -n -vList all iptables rules with packet counts
iptables -A INPUT -p tcp --dport 443 -j ACCEPTAccept HTTPS inbound traffic
iptables -A INPUT -j DROPDrop all other inbound (default deny)
iptables-save > /etc/iptables.rulesPersist iptables rules across reboots

DevOps Tools

Git · Docker · kubectl · IaC

Git
Core Workflow
CommandDescription
git initInitialize new local repository
git remote add origin <url>Link local repo to remote
git statusShow working tree and staging area status
git add .Stage all changes in current directory
git commit -m "message"Commit staged changes with message
git log --onelineCompact one-line commit history
git push origin mainPush local commits to remote
Sync
CommandDescription
git fetchDownload remote changes without merging
git pullFetch and merge remote changes
git pull --rebaseFetch and rebase onto remote (cleaner history)
Branching
CommandDescription
git branchList local branches
git branch -avList all branches with last commit
git switch -c new-branchCreate and switch to new branch
git switch mainSwitch back to main branch
git merge feature-branchMerge feature branch into current branch
git branch -d branch-nameDelete merged branch
Undo
CommandDescription
git restore <file>Discard working directory changes to file
git restore --staged <file>Unstage a file (keep working copy)
git revert <commit>Create new commit that undoes a past commit
git switch --detach <commit>Inspect repo at a past commit (read-only)
git switch mainReturn from detached HEAD to main
Docker
Core Workflow
CommandDescription
docker run -d -p 8080:80 --name web nginxRun detached container, map host:container port
docker psList running containers
docker ps -aList all containers (running + stopped)
docker stop webGracefully stop container (SIGTERM)
docker rm webRemove stopped container
docker exec -it web /bin/bashOpen interactive shell in running container
docker logs -f webStream live log output from container
Volumes & Ports
CommandDescription
docker run -p 8080:80 nginxMap host port 8080 → container port 80
docker run -v /host:/container nginxBind-mount host directory into container
docker volume lsList all named volumes
docker volume create dataCreate a named volume
docker volume pruneRemove all unused volumes
Docker Compose
CommandDescription
docker compose up -dStart all services in docker-compose.yml (detached)
docker compose downStop and remove containers, networks
docker compose psList status of compose services
docker compose logs -fStream logs from all compose services
Images
CommandDescription
docker imagesList locally stored images
docker pull nginxPull image from Docker Hub
docker build -t myapp:1 .Build image from Dockerfile in current dir
docker tag myapp:1 myrepo/myapp:latestTag image for registry push
docker push myrepo/myapp:latestPush image to registry
docker rmi myapp:1Delete local image
docker image pruneRemove dangling (untagged) images
Troubleshooting
CommandDescription
docker logs -f containerStream live logs
docker exec -it container shShell into running container (sh fallback)
docker inspect containerFull JSON metadata: network, mounts, env
docker statsLive CPU/memory/net/disk usage per container
docker system dfShow disk usage by images, containers, volumes
docker system pruneRemove all stopped containers, unused images/networks
Core
CommandDescription
kubectl get podsList pods in current namespace
kubectl get nodesList all nodes and their status
kubectl get allList all common resources in namespace
kubectl describe pod <pod>Detailed info: events, limits, conditions
kubectl logs <pod>Print logs from a pod
kubectl logs -f <pod>Stream live logs from a pod
kubectl exec -it <pod> -- /bin/shOpen interactive shell inside pod
Deployments
CommandDescription
kubectl apply -f app.yamlCreate or update resources from YAML
kubectl delete -f app.yamlDelete resources defined in YAML
kubectl get deploymentsList deployments in current namespace
kubectl rollout status deployment/appWatch rollout progress
kubectl rollout restart deployment/appTrigger rolling restart (picks up new config/image)
Scaling
CommandDescription
kubectl scale deployment app --replicas=3Scale deployment to N replicas
Debugging
CommandDescription
kubectl get eventsRecent cluster events (failures, pulls, restarts)
kubectl describe pod <pod>Events + resource limits + container states
kubectl top podsLive CPU/memory usage per pod
Context
CommandDescription
kubectl config get-contextsList all kubeconfig contexts (clusters)
kubectl config use-context <context>Switch active cluster/context
DevOps Tool Landscape
CategoryTools
ContainersDocker, Podman, containerd
OrchestrationKubernetes, Docker Swarm, Nomad
CI/CDGitHub Actions, GitLab CI, Jenkins, CircleCI
IaCTerraform, Pulumi, CloudFormation, Bicep
Config MgmtAnsible, Chef, Puppet, SaltStack
MonitoringPrometheus, Grafana, Datadog, New Relic
LoggingELK Stack, Loki, Splunk, CloudWatch
SecretsHashiCorp Vault, AWS Secrets Manager, SOPS

Networking Deep Dive

DNS resolution · Cables · WiFi 802.11

DNS Resolution - 8-Step Process
StepWho ActsWhat Happens
1Browser / OSCheck local DNS cache (TTL-based). If hit, done.
2OSCheck /etc/hosts (Linux) or C:\Windows\System32\drivers\etc\hosts
3OS to ResolverQuery sent to configured recursive resolver (ISP or 8.8.8.8)
4Resolver to RootResolver queries a root server (.) - 13 root server clusters
5Resolver to TLDRoot refers resolver to .com / .org / .io TLD server
6Resolver to Auth NSTLD refers resolver to the authoritative nameserver for the domain
7Auth NS respondsReturns A/AAAA record (the actual IP address)
8Resolver cachesStores result per TTL, returns to client. Client caches too.
Cable Types
CableMax SpeedMax LengthNotes
Cat5100 Mbps100mObsolete, avoid for new installs
Cat5e1 Gbps100mMinimum current standard
Cat610 Gbps55mCommon for new installs
Cat6A10 Gbps100m10G at full 100m distance
Cat710 Gbps100mShielded, proprietary connectors
Fiber MM10+ Gbps2kmMultimode, shorter runs, cheaper
Fiber SM100+ Gbps100kmSingle-mode, long distance, datacenter
T568BStd-Orange-wh, Orange, Green-wh, Blue… (standard)
T568AStd-Crossover: swap pairs 2 and 3 from T568B
WiFi 802.11 Standards
StandardBandMax SpeedNotes
802.11b2.4 GHz11 MbpsLegacy, long range, slow
802.11g2.4 GHz54 MbpsBackward compat with b
802.11n2.4/5 GHz600 MbpsMIMO, dual band - WiFi 4
802.11ac5 GHz3.5 GbpsWave 2, MU-MIMO - WiFi 5
802.11ax2.4/5/6 GHz9.6 GbpsOFDMA, BSS coloring - WiFi 6/6E
802.11be2.4/5/6 GHz46 GbpsMulti-link operation - WiFi 7
Cloud Service Models
ModelYou ManageExamples
IaaSOS, runtime, apps, dataAWS EC2, Azure VMs, GCP Compute
PaaSApp and data onlyHeroku, Azure App Service, App Engine
SaaSNothing (just use it)Office 365, Salesforce, Gmail
FaaSCode onlyAWS Lambda, Azure Functions, Cloud Run

Cloud Platforms - AWS & Azure

Core services · IAM · VNet/VPC · Shared responsibility

AWS Core Services
ServiceCategoryWhat it Does
EC2ComputeVirtual machines - pay-as-you-go, reserved, or spot pricing
LambdaComputeServerless functions - event-driven, pay-per-execution
ECS / EKSContainersECS = managed containers; EKS = managed Kubernetes
S3StorageObject storage - 11-nines durability, unlimited scale
EBSStorageBlock storage volumes attached to EC2 instances
EFSStorageManaged NFS for Linux - shared across multiple EC2s
RDSDatabaseManaged SQL DB - MySQL, Postgres, SQL Server, Oracle, Aurora
DynamoDBDatabaseFully managed NoSQL - key-value and document model
VPCNetworkingIsolated virtual network with subnets, route tables, NACLs, SGs
Route 53NetworkingDNS + health checks + routing policies (failover, latency, geo)
CloudFrontNetworkingCDN with 400+ PoPs, caches S3/EC2 content globally
IAMSecurityUsers, groups, roles, and policies for access control
CloudWatchMonitoringMetrics, logs, alarms, dashboards for all AWS services
CloudFormationIaCInfrastructure as Code using JSON/YAML templates
Azure Core Services
ServiceCategoryWhat it Does
Virtual MachinesComputeIaaS VMs - VM Scale Sets for autoscaling, Availability Zones for HA
App ServiceComputePaaS web hosting - no OS management, built-in autoscale, deployment slots
Azure FunctionsComputeServerless event-driven code - pay-per-execution
ACI / AKSContainersACI = serverless containers; AKS = managed Kubernetes cluster
Blob StorageStorageObject store - Hot/Cool/Archive tiers, lifecycle management
Azure DiskStorageManaged disks: Standard HDD, Standard SSD, Premium SSD
Azure FilesStorageManaged SMB/NFS file shares - cloud and hybrid use
Azure SQL / Cosmos DBDatabaseManaged SQL; Cosmos = multi-model NoSQL (DynamoDB equivalent)
VNetNetworkingIsolated virtual network with subnets, NSGs, route tables, peering
Azure DNSNetworkingHost DNS zones, manage records, private DNS zones for VNets
Azure CDN / Front DoorNetworkingCDN delivery + global load balancing with WAF
Azure AD (Entra ID)IdentityCloud identity: users, groups, MFA, SSO, Conditional Access
Azure MonitorMonitoringMetrics, Log Analytics workspace, alerts, Application Insights
ARM Templates / BicepIaCJSON/Bicep Infrastructure as Code for Azure resources
AWS vs Azure Service Mapping
AWSAzureCategory
EC2Virtual MachinesCompute
LambdaAzure FunctionsServerless
ECS / EKSACI / AKSContainers
S3Blob StorageObject Store
EBSAzure DiskBlock Storage
EFSAzure FilesFile Share
RDSAzure SQL DatabaseManaged SQL
DynamoDBCosmos DBNoSQL DB
VPCVNetNetworking
Security GroupsNSG (Network Security Group)Firewall
Route 53Azure DNSDNS
CloudFrontAzure CDN / Front DoorCDN
IAMAzure AD + RBACIdentity
CloudWatchAzure MonitorMonitoring
CloudFormationARM Templates / BicepIaC
Direct ConnectExpressRoutePrivate Link
AWS VPN GatewayAzure VPN GatewayVPN
AWS ConfigAzure PolicyCompliance
Azure RBAC Built-in Roles
RoleReadGrantCreate/DelScope
OwnerFull control of all resources
ContributorAll actions except access grants
ReaderView only, no changes
User Access AdminManage user access only
Global Admin (AAD)---All Azure AD resources
User Admin (AAD)---Users, groups, passwords
AWS vs Azure Pricing
ModelAWSAzure
Pay-as-you-goOn-DemandPay-as-you-go
Reserved (1-3yr)Reserved InstancesReserved Instances
Spot / PreemptibleSpot InstancesSpot VMs (up to 90% off)
Savings PlansCompute Savings PlansAzure Savings Plan
IngressFreeFree
EgressCharged (per GB)Charged (per GB out)
Shared Responsibility Model
LayerOn-PremisesIaaSPaaSSaaS
Physical DC / HardwareYOUProviderProviderProvider
Hypervisor / Host OSYOUProviderProviderProvider
Guest OS / RuntimeYOUYOUProviderProvider
Middleware / ApplicationYOUYOUYOU (app)Provider
Data / ContentYOUYOUYOUYOU
Network ConfigurationYOUSharedSharedProvider
Identities / AccountsYOUYOUYOUYOU
VNet / VPC Key Concepts
ConceptAWS (VPC)Azure (VNet)
Address SpaceCIDR block (e.g. 10.0.0.0/16)CIDR block, can add multiple prefixes
SubnetsPublic (IGW route) / PrivateAny subnet - NSG controls inbound/outbound
Firewall (stateful)Security Groups (instance level)Network Security Groups (NSG)
Firewall (stateless)NACLs (subnet level)NSG has stateful rules, no separate NACL
PeeringVPC Peering (same/cross-region)VNet Peering / Global VNet Peering
Private WANDirect ConnectExpressRoute
VPNAWS VPN GatewayAzure VPN Gateway
NATNAT Gateway (managed, per-AZ)NAT Gateway (managed)
DNSRoute 53 / VPC DNS (169.254.169.253)Azure DNS / Private DNS Zones
Flow LogsVPC Flow Logs to S3/CloudWatchNSG Flow Logs to Storage/Log Analytics
HA vs Fault Tolerance vs Disaster Recovery
ConceptGoalDowntimeAWS ExampleAzure Example
High AvailabilityKeep running despite single failuresMinutes (auto-heal)Multi-AZ RDS, ALB across AZsAvailability Zones, Azure Load Balancer
Fault ToleranceZero downtime, no errors, continuousNear zeroS3 (11-nines), DynamoDB, Global TablesCosmos DB, Storage LRS/ZRS/GRS
Disaster RecoveryRestore after regional catastropheHours (RTO goal)Pilot light, warm standby, multi-regionAzure Site Recovery, geo-replication

RPO (Recovery Point Objective) = max acceptable data loss in time. RTO (Recovery Time Objective) = max acceptable downtime after disaster.

M365 & Entra ID

Identity · Graph PowerShell · Exchange Online · Intune

Entra ID Core Concepts
ConceptWhat it IsKey Notes
TenantYour organisation's dedicated Entra ID instanceIdentified by a tenant ID (GUID) and domain (contoso.onmicrosoft.com)
UserPerson or shared account in the directoryCan be cloud-only or synced from on-prem AD via Entra Connect
Service PrincipalIdentity for an application or automated processLike a service account, but for apps - has its own permissions
App RegistrationHow you register an app to use Entra ID authCreates a service principal in your tenant - defines API permissions
Managed IdentityAuto-managed service principal for Azure resourcesNo credentials to manage - Azure handles rotation. Use this over service accounts for Azure workloads
Entra ID Roles vs Azure RBACTwo separate role systemsEntra roles control directory objects (users, groups, apps). Azure RBAC controls Azure resources (VMs, storage). Global Admin != Owner
Conditional AccessPolicy engine for access decisionsIf user + location + device + app + risk = conditions then grant/block/MFA
PIM (Privileged Identity Management)Just-in-time privileged accessRoles are assigned but not active - user must "activate" with justification and optional approval
Microsoft Graph PowerShell

Replaces the deprecated AzureAD and MSOnline modules. Install: Install-Module Microsoft.Graph -Scope CurrentUser

CommandDescription
Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"Authenticate to Microsoft Graph - specify only the scopes you need
Get-MgUser -UserId jsmith@contoso.com -Property *Full user object including last sign-in, assigned licenses, account status
Get-MgUser -Filter "accountEnabled eq false"All disabled accounts in the tenant
Update-MgUser -UserId jsmith@contoso.com -AccountEnabled $falseDisable a user account
Get-MgGroup -Filter "displayName eq 'VPN Users'"Find a group by display name
Get-MgGroupMember -GroupId <GroupId>List all members of a group
New-MgGroupMember -GroupId <GroupId> -DirectoryObjectId <UserId>Add a user to a group
Get-MgUserAuthenticationMethod -UserId jsmith@contoso.comList registered MFA methods for a user
Get-MgAuditLogSignIn -Filter "userPrincipalName eq 'jsmith@contoso.com'" -Top 20Recent sign-in activity for a user including location, device, and result
Get-MgSubscribedSkuAll M365 license SKUs in the tenant with consumed vs available counts
Entra Connect (AD Sync)

Run on the Entra Connect server. Requires the ADSync module (installed automatically with Entra Connect).

CommandDescription
Start-ADSyncSyncCycle -PolicyType DeltaSync only changes since the last cycle - fast, use this for most manual syncs
Start-ADSyncSyncCycle -PolicyType InitialFull sync of all objects - slower, use after major AD changes or connector reconfiguration
Get-ADSyncSchedulerShow sync schedule, next run time, and whether sync is enabled
Set-ADSyncScheduler -SyncCycleEnabled $falsePause automatic sync cycles - useful during maintenance or bulk AD changes
Get-ADSyncConnectorRunStatusCheck if a sync cycle is currently running before triggering a manual one
Export-ADSyncToolsHybridAadJoinReportReport on Hybrid Azure AD Join status for domain-joined devices
Exchange Online Essentials

Install: Install-Module ExchangeOnlineManagement then Connect-ExchangeOnline

CommandDescription
Get-Mailbox -Identity jsmithMailbox details - type, quota, forwarding, aliases
Get-Mailbox -RecipientTypeDetails SharedMailboxList all shared mailboxes in the org
Add-MailboxPermission -Identity shared@ -User jsmith -AccessRights FullAccessGrant full access to a shared mailbox
Get-MessageTrace -SenderAddress user@contoso.com -StartDate (Get-Date).AddDays(-2)Trace sent mail - check delivery status, routing, spam filtering decisions
Set-Mailbox -Identity jsmith -ForwardingSmtpAddress "" -DeliverToMailboxAndForward $falseRemove email forwarding - check all mailboxes for unauthorised forwarding
Get-Mailbox -ResultSize Unlimited | Where {$_.ForwardingSmtpAddress -ne $null}Audit all mailboxes with forwarding configured - security check
Intune / Endpoint Manager
ConceptDescription
EnrollmentHow devices join Intune - Autopilot (new devices), MDM enrollment (existing), or BYOD via Company Portal
Compliance PolicyRules a device must meet (encrypted, PIN, OS version) - non-compliant devices can be blocked by Conditional Access
Configuration ProfilePush settings to devices - WiFi, VPN, certificates, restrictions, BitLocker enforcement
App Protection PolicyMAM - protect org data in apps without full device enrolment (BYOD scenario)
AutopilotZero-touch Windows provisioning - device ships to user, they sign in, Intune does the rest
Device ActionsRemote wipe, sync, restart, BitLocker key rotation - available per device in Intune portal
Scope TagsRBAC for Intune - limit what admins can see and manage to their region or team

Resources & Tools

Communities · Core tools · Diagnostics

Communities & Learning
ResourceURL / LocationWhat it Covers
r/sysadmin · r/linux · r/linuxadmin · r/netsecreddit.comCommunity Q&A, incident threads, war stories, tooling discussions
Brutalist Reportbrutalist.reportDaily tech & security headlines, aggregated and unformatted
Microsoft Learnlearn.microsoft.comFree official docs, learning paths, and certifications for Azure, Windows, and M365
O'Reilly Topicsoreilly.com/topicsBroad technical learning - books, videos, courses
Ask Ubuntuaskubuntu.comUbuntu-focused Q&A, highly indexed by search engines
DigitalOcean Tutorialsdigitalocean.comClear, practical guides for Linux, OSS, and infra topics
ServerFaultserverfault.comStack Exchange for professional sysadmins and network engineers
Core Tools
ToolURL / SourceWhat it Does
MX Toolboxmxtoolbox.comDNS, mail, SPF / DMARC / DKIM checks in one place
Sysinternals Suitelearn.microsoft.comWindows diagnostics & troubleshooting (Process Monitor, Autoruns, TCPView…)
PuTTYchiark.greenend.org.ukSSH, Telnet, serial - still essential for Cisco and console work
WinSCPwinscp.netFast file transfer over FTP / SFTP / SSH with GUI
Angry IP Scannerangryip.orgQuick network sweeps - host discovery and port scan
WinDbglearn.microsoft.comWindows kernel and crash dump debugging
Wiresharkwireshark.orgPacket capture and deep protocol analysis
Rufusrufus.ieWrite bootable USB images (ISO to USB) on Windows
Nmapnmap.orgNetwork scanning, host discovery, OS fingerprinting, port enumeration
OpenSSLopenssl.orgTLS, certificate generation, cert inspection, and crypto utilities
Gitgit-scm.comVersion control for scripts, configs, and infrastructure-as-code
M365 Mapsm365maps.comVisual map of M365 service dependencies and license feature inclusions
cmd.mscmd.msShortcut directory for Microsoft admin portals - cmd.ms/intune, cmd.ms/aad, etc.
Crontab Gurucrontab.guruCron expression editor and validator - instant visual feedback
cheat.shcheat.shInstant CLI cheatsheets from the terminal: curl cheat.sh/tar
End-of-Life Infoendoflife.dateSupport and EoL timelines for OS, runtimes, databases, and tools
Diagnostics & Security
ToolURLWhat it Does
WhatIsMyIPAddresswhatismyipaddress.comIP lookup with strong GeoIP resolution - useful for egress verification
Cloudflare Speed Testspeed.cloudflare.comClean download / upload / latency test - no ads, no Flash
VirusTotalvirustotal.comMalware and URL scanning across 60+ antivirus engines simultaneously
ANY.RUNapp.any.runInteractive sandbox for malware and phishing analysis - watch execution live
No results found. Try a different search term.