Pages
About
Hi đ I'm Eduardo Robles
Linux nerd interested in Information Security, Cyber Security, Open Source, tacos, and coffee. I've been using #linux for 12+ yrs, learned emacs and never looked back.
Founder of the South Texas Linux Users Group.
Currently readingâŚ
- DNS and BIND by Cricket Liu and Paul Albitz
- Children of Dune by Frank Hebert
- Thinking, Fast and Slow by Daniel Kahneman
Videos
The following videos are Livestreams I recorded for the South Texas Linux User Group. I edited and produced all the Livestreams. If you get any use out of any of them, please consider helping me out on my journey!
Thank You
Tip with some Sats
Getting Started with Gitlab - Livestream 6-16-18
Beaker Browser - Livestream 7-21-18
Launching a Decentralized Website- Livestream 8-18-18
Installing Arch Linux - Livestream 9-15-18
Ubuntu Server How To - Livestream 10-20-18
Samba Installation Guide - Livestream 12-15-18
Bash Scripts and Cron Jobs
RazDC a Linux Active Directory Replacement - Livestream 1-19-19
Block Ads On Your Network - Livestream 2-16-19
Introduction to Encryption - Livestream 3-16-19
Encrypt Data and Communications - Livestream 4-20-19
Build a Virtualization Server - Livestream 5-18-19
Kali Linux Introduction - Livestream 7-20-19
Build a VPN Server - Livestream 8-17-19
Video: https://archive.org/details/stxlug_08-17-19 Meeting Notes: https://www.stxlug.com/meetup-8-17-19/
Online Security with Tails and Tor Browser - Livestream 10-19-19
Video: https://archive.org/details/stxlug_10-19-19 Meeting Notes: https://www.stxlug.com/meetup-10-19-19/
CentOS Server How To - Livestream 11-24-19
Video: https://archive.org/details/stxlug_11-24-19 Meeting Notes:
Kali Linux vs. ParrotOS - Livestream 12-21-19
Links
I can be found atâŚ
𦣠mastodon â @tacosandlinux_@infosec.exchange
đ¤ linkedin â https://www.linkedin.com/in/hello-im-eduardo/
đ github - https://github.com/eduardo-robles
Contribute
Thanks
I enjoy sharing my knowledge with the public for free, and I hope you can see my enthusiasm as I bring to light my content.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Support:
Thank You
Tip with some Sats
Certifications
Posts
DONE Cyberchef for Forensic Investigation and Incident Response
What is Cyberchef?
Cyberchef is a tool I learned about toward the end of 2024. Since then I began using it more and more.
CyberChef was developed by GCHQ and is the Cyber Swiss Army Knife web app for encryption, encoding, compression and data analysis.
In the end it proved to extremely useful for Forensic Analysis and Incident Response investigations. You can use the free version online but if you want to run it in your environment you can. You can leverage containers to do so and I've been using it with Podman. Let's run it in a container!
podman run \
-d \
--name cyberchef \
-p 8000:8000 \
mpepping/cyberchef
Foresic Analysis with Cyberchef
OCR Images
Cyberchef has the ability to do Optical Character Recoginition (OCR). This is useful if you need to get text from a screenshot or picture. Say you get a piece of evidence in a jpg
you can drag and drop the image into Cyberchef and use the "Optical Character Recognition" operation. Your mileage may vary but in a pinch this can be a great tool.

QR Codes - Decoding Quishing Attacks
Did you or a coworker get a possible phishing email that contains a suspicious QR Code? You can avoid using your phone to scan the QR Code to find out if it's contents are malicious simply use "Parse QR Code" operation in Cyberchef! This prevents accidental Quishing attacks and you can now block the IP/URL embedded in the QR Code.

Bonus: You can also use the "Defang URL" operation in Cyberchef to safely share the URL!
Decode Malicious Scripts
Deobfuscate Powershell scripts
A common tactic advesaries use is to Obsfuscate their Powershell scripts to avoid detection. Cyberchef has a the capability to decode scripts that have been heavily obfuscated. This require some knowledge of Regex and various encoding formats. So it's helpful if you learn that first so you can leverage the tools inside of Cyberchef. Nonetheless, Cyberchef has all the tools you would need to do so. I'll link to a few resources that can give you insights on how to accomplish this.
Github - mattnotmax/cyberchef-recipes
Tevora - 5 Minute Forensics: Decoding Powershell Payloads
Conclusion
Leveraging Cyberchef with all it's operations is essential for day to day operations. This is something you should definitely consider using in your tool bag.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Computer: Framework 13 (Fedora Linux)
DONE Quick, Easy, Malware Investigations and Threat Hunting
Bsides Austin 2024
This is my talk for BSIDES Austin 2024
Malware Investigations
Why do internal malware analysis?
- Existing tools Virustotal, JoeSandbox, etc.
- Protect sensitive information from 3rd parties.
- Freedom from reliance on one tool or platform.
Malware is scary and dangerous, put in a box (container).
Malware is scary. Malware is dangerous. So it's best to analyze in a "contained" environment.
- Virtual Machines
- Containers (Docker, Podman, etc)
Working with Malware Samples
Safely moving malware around to later analyze can be daunting. Here are some pointers.
Defang
Take a normal hyperlink or file extention and defang it so it's not active.
- Normal
https://eduardorobles.com or superbadmalware.exe
- Defanged
hxxps://eduardorobles[.]com or superbadmalware.malz
Encrypted Archive with a Password (7zip)
Use 7zip to password encrypt an archive. This add an extra layer of protection by not allowing someone to accidently open the archive.
Disable network access
- You can disable network access to your malware analysis station.
- This stops malware from communicating to a C2 infrastruture.
- Or you can also simulate network traffic if you want to analyze what the malware might be trying to communicate with.
REMnux
If you want easy button for malware analysis use REMnux as a VM or a container! https://remnux.org
"REMnux: A Linux Toolkit for Malware Analysis"
Setup REMnux in a Container
REMnux offers several container images as well the full REMnux distro in a container.
- They chose Docker in their documentation but I have chosen to use Podman.
- Podman was easier to install and use in Windows as well as Linux.
- So I can have Podman running in both the Malware Analysis station and on my Windows machine. This gives me the flexibility to test on either machine or platform.
Install REMnux container
podman pull docker.io/remnux/remnux-distro:focal
Run REMnux as a Transient container
podman run \
--rm \
-it \
--name malContainer \
-v /var/home/core/SAMPLES:/home/remnux/files \
--privileged \
--network none \
remnux/remnux-distro:focal bash
What the previous command did
--rm
Remove the container after it exists (not the image)-it
Connect the container to the terminal--name
Name the container-u remnux
Logged in user (optional)--privileged
Runs container with Root privileges (optional)--network none
Disables any network from the container (optional)remnux/remnux-distro:focal
Container image to use, in this case use the local imagebash
Login shell
Digital Forensics
Phishing Email Analysis
ClamAV
ClamAV is great to scan for malware but also can scan eml
files including email attachments. Use the --debug
flag for more info on the scan.
clamscan sample.eml
Continued
You can also use ClamAV to scan any suspicious file.
clamscan sample.zip
Investigating a malicious link
To investigate a link REMnux offers so many awesome tools. I will cover THUG and Automater.
THUG
THUG is a âhoneyclientâ. A honeyclient is a tool that mimicks the behavior of a web browser. Useful for analyzing what a link does when a user clicks on it.
thug -u win7chrome49 "https://eduardorobles.com"
ContinuedâŚ
Once it begins to âloadâ the suspicious site it executes any code that may be on the site. Once it is done running/loading the page it dumps a report. The report contains a summary of what occured plus you get any malicious artifacts that the page may have downloaded.
In one exercise a suspicous page downloaded an executable and I was able to analyze the executable from the container and it was indeed a malicous executable. Yikes!
Automater
"Automater is a URL/Domain, IP Address, and Md5 Hash OSINT tool aimed at making the analysis process easier for intrusion Analysts. Given a target (URL, IP, or HASH) or a file full of targets Automater will return relevant results from sources like the following: IPvoid.com, Robtex.com, Fortiguard.com, unshorten.me, Urlvoid.com, Labs.alienvault.com, ThreatExpert, VxVault, and VirusTotal."
ContinuedâŚ
Automater is a python tool found in /usr/local/automater
./Automater.py https://eduardorobles.com
Investigating a suspicious PDF
Malicious content will be embedded. It's best to extract the content in order to inspect it.
Strings
You can use the command strings
to view all the different system call a file contains.
strings sus_invoice.pdf | grep http
You can also pipe grep to single out things like http
links or hashes.
Magika
pip install magika
Threat Hunting
Velociraptor
"Velociraptor is an advanced digital forensic and incident response tool that enhances your visibility into your endpoints." https://docs.velociraptor.app/
Velociraptor.exe gui
Setup REMnux container for Analysis
This container will run in priviledged mode and will have no network attached to it
podman run --rm -it \
--name malContainer \
--privileged \
--network none \
remnux/remnux-distro:focal bash
Yara
https://github.com/airbnb/binaryalert/blob/master/rules/public/eicar.yara
rule eicar_av_test {
/*
Per standard, match only if entire file is EICAR string plus optional trailing whitespace.
The raw EICAR string to be matched is:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
*/
meta:
description = "This is a standard AV test, intended to verify that BinaryAlert is working correctly."
author = "Austin Byers | Airbnb CSIRT"
reference = "http://www.eicar.org/86-0-Intended-use.html"
strings:
$eicar_regex = /^X5O!P%@AP\[4\\PZX54\(P\^\)7CC\)7\}\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\$H\+H\*\s*$/
condition:
all of them
}
rule eicar_substring_test {
/*
More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)
*/
meta:
description = "Standard AV test, checking for an EICAR substring"
author = "Austin Byers | Airbnb CSIRT"
strings:
$eicar_substring = "$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!"
condition:
all of them
}
Tools
Cyberchef
A great tool!
GCHQ CyberChef in a container. CyberChef is the Cyber Swiss Army Knife web app for encryption, encoding, compression and data analysis.
Let's run it in a container!
podman run \
-d \
--name cyberchef \
-p 8000:8000 \
mpepping/cyberchef
Conclusion
- Hope you learned some quick tools to add to your daily workflow.
- Automation?? A.I?? ÂŻ\_(ă)_/ÂŻ
- Analyzing malware can be tricky but it shouldn't be intimidating.
DONE Easy DFIR Tools and Methods
Phishing Email Analysis
ClamAV
ClamAV is great to scan for malware but also can scan eml
files including email attachments. Use the --debug
flag for more info on the scan.
clamscan sample.eml
Continued
You can also use ClamAV to scan any suspicious file.
clamscan sample.zip
Investigating a malicious link
To investigate a link I use a REMnux container which offers so many awesome tools. I will cover THUG and Automater.
THUG
THUG is a âhoneyclientâ. A honeyclient is a tool that mimicks the behavior of a web browser. Useful for analyzing what a link does when a user clicks on it.
thug -u win7chrome49 "https://eduardorobles.com"
ContinuedâŚ
Once it begins to âloadâ the suspicious site it executes any code that may be on the site. Once it is done running/loading the page it dumps a report. The report contains a summary of what occured plus you get any malicious artifacts that the page may have downloaded.
In one exercise a suspicous page downloaded an executable and I was able to analyze the executable from the container and it was indeed a malicous executable. Yikes!
Automater
Automater is a URL/Domain, IP Address, and Md5 Hash OSINT tool aimed at making the analysis process easier for intrusion Analysts. Given a target (URL, IP, or HASH) or a file full of targets Automater will return relevant results from sources like the following: IPvoid.com, Robtex.com, Fortiguard.com, unshorten.me, Urlvoid.com, Labs.alienvault.com, ThreatExpert, VxVault, and VirusTotal.
ContinuedâŚ
Automater is a python tool found in /usr/local/automater
./Automater.py https://eduardorobles.com
Investigating a suspicious PDF
Malicous content will be embedded in a PDF. This is not immediately visible to an end user. It's best to extract the content in order to inspect it.
Strings
You can use the command strings
to view all the different system call a file contains.
strings sus_invoice.pdf | grep http
You can also pipe grep to single out things like http
links or hashes.
Magika
Magika is a tool release by Google. It's intended purpose is to accurately clasify a file. Sometime you stumble onto something and you can't figure out what this filetype is. Magika can help with this type of analysis.
pip install magika
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Launch Keyboard with JWICK Utlimate Black Linear switches
- Mouse: MX Master (Original)
- Computer: Framework 13 (Fedora Linux)
DONE On the Practice of Multifactor Authentication
The basics
MFA is basically putting an extra step, an extra barrier to login into an app or website. This extra step is what creates security. It does not prevent attacks or stop attacks. But what it does do is simple: it makes it harder for someone to hack you.
The struggle
Doing extra work is never fun. No one likes to do the extra work. I don't like doing extra work. So the struggle becomes, convincing people to do the extra work. It's a struggle to convince oneself.
The solution
Accept the fact that the risk is not acceptable. Convince others that the risk is not acceptable. Once you internalize this you become aware of the benefits of securing yourself with MFA.
Ansible for Cybersecurity Work - Part 1
Is it DevSecOp, SecDevOps, OpsSecDev?
The infosec field is full of buzzword now more so with the explosion of automation and AI. Luckily, I am not easily fooled by the buzzword and look for the real meat and bones. So when I was tasked with automating some tasks at work I jumped into an interesting technology called Ansible. Ansible is a tool for automation that is cross platform. It relies on setting up a secure connection to an endpoint and then Ansible handle executing tasks on the system.
In a Software/Hardware diverse environment a tool like Ansible is refreshing. But why would someone who work in Cybersecurity care about Ansible. Well technologies and environments change and having a tool that is cross-platform helps reduce complexity. I can use Ansible to manage Windows workstation and patch Linux servers. Deploy software to MacOS and manage Firewall settings. I'd like to take you along my journey of learning and implementing concepts like: Infrastructure as Code, DevSecOps, and Orchestration as a Cybersecurity Analyst.
Learning to Communicate
This series will be a quick and dirty view into how Ansible works. Let's start with how Ansible communicates with endpoints. If you're on a Unix based system that's easy you will be using SSH. Simply setup SSH key based authentication and you are good to go. If you are on Windows based systems this gets a bit more interesting (or complicated). Yes, OpenSSH exists on Windows Servers and Workstations but it is not as robust as it is on Unix. Plus Microsoft has other tools for this type of automation. WinRM is the go tool technology on Windows system when using Ansible.
WinRM is not easy to configure or too understand. Most people get WinRM configurations wrong because Microsoft is not very good at explaining this tool. It took me about 3 months to fully understand the basics of WinRM. So I'd like to save you some time and explain the basics of WinRM. Let's start with setting up a "Listener".
WinRM Communication
WinRM communicates via an HTTP SOAP api. This means we can send WinRM communications via HTTP or HTTPS. Setting this is done with the winrm
listener commands in Windows. The method of achieving HTTPS communication is multifaceted. You can employ a reverse proxy, use Active Directory Certificate Services to deploy certificates, or use OpenSSL to create certificates. The use of self-signed certificates is also possible.
Ansbile Variable
Setting the following variable will let Ansible know which communication method to use.
ansible_winrm_scheme:
ex. ansible_winrm_scheme: https
Setting Up HTTPS Certificate Validation with OpenSSL
Generate Certificates with OpenSSL
openssl genpkey -algorithm RSA -out ca-key.pem
openssl req -x509 -new -nodes -key ca-key.pem -sha256 3650 -out ca-cert.pem -subj "/C=US/ST=DC/L=Washington/O=ORG/OU=MyORG/CN=CA"
openssl genpkey -algorithm RSA -out windows-host-key.pem
openssl req -new -key windows-host-key.pem -out windows-host.csr -subj "/C=US/ST=DC/L=Washington/O=ORG/OU=MyORG/CN=hostname.domain.com"
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, noRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = hostname.domain.com
openssl x509 -req -in windows-host.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out windows-host-cert.pem -days 365 -sha256 -extfile windows-host-ext.cnf
openssl pkcs12 -export -out windows-host-cert.pfx -inkey windows-host-key.pem -in windows-host-cert.pem -certfile ca-cert.pem -password pass:password
Import Certificates into the Windows Machine
Use Powershell as an Administrator
$password = ConvertTo-SecureString -String "password" -Force -AsPlainText
Import-PfxCertificate -FilePath "C:\path\to\windows-cert.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $password
Import-Certificate -FilePath "C:\path\to\ca-cert.pem" -CertStoreLocation Cert:\LocalMachine\Root
Configure WinRM on the Windows Machine
winrm quickconfig -force
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=hostname.domain.com"}
$thumbprint = $cert.Thumbprint
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="hostname.domain.com"; CertificateThumbprint="$thumbprint"}
winrm set winrm/config/service/auth @{Certificate="true"}
This adds extra security by only allowing one control machine(node) to communicate with the endpoints. This is a winrm configuration. The value ansible-controlnode
is the hostname for whatever you are using as the Ansible control node.
Set-Item wsman:\localhost\Client\TrustedHosts -Value "ansible-controlnode"
Configure Ansible to Use the Certificates
openssl pkcs12 -in windows-host-cert.pfx -clcerts -nokeys -out client-cert.pem -password pass:password
openssl pkcs12 -in windows-host-cert.pfx -nocerts -nodes -out client-key.pem -password pass:password
Setting Up HTTPS with Self-Signed Certificate with Powershell
Generate the Self-signed certificate
In this example -DnsName
is set the Hostname of the machine (FQDN).
New-SelfSignedCertificate -DnsName "MyMachine01.local" -CertStoreLocation Cert:\LocalMachine\My
Configure WinRM Listener
In this example Hostname
is the the hostname of the machine, and CertificateThumbprint
is get the Thumbprint from the Self-signed certificate.
winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="MyMachine01.local"; CertificateThumbprint="thumbprintondevice"}'
Configure Firewall to Allow TCP 5986 aka WinRM over HTTPS
New-NetFirewallRule -DisplayName "WinRM over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow -Profile Domain
Configure TrustedHosts for WinRM
In this example I am setting the Trusted Hosts value to MyNode00.local
. Ideally this will be the ansible control node.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "MyNode00.local"
If needed you can remove the trusted host value.
Remove-Item WSMan:\localhost\Client\Trustedhosts
Get-Item WSMan:\localhost\Client\Trustedhosts
Powershell Script to Enable WinRM Listener and Configure Firewall for HTTPS with Self-signed Certificate communication for WinRM
# Get Variables
# Hostname
$fqdn = $env:computername +'.'+ $env:userdnsdomain
# Create Variables
# Trusted Host
$trusthost = "MyNode00.local"
# Certificate Store "My"
$mystore = "Cert:\LocalMachine\My"
# Certificate Store "Root"
$rootstore = "Cert:\LocalMachine\root"
# Create new Self-signed certificate
Write-Verbose "Creating Self-Signed Certificate"
New-SelfSignedCertificate -DnsName "$fqdn" -CertStoreLocation Cert:\LocalMachine\My
# Create new Self-signed certificate and expire in 6 months
#New-SelfSignedCertificate -DnsName "$fqdn" -CertStoreLocation Cert:\LocalMachine\My -NotAfter (Get-Date).AddMonths(6)
# Get thumbrprint from Self-signed certificate
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=$fqdn"}
$thumbprint = $cert.Thumbprint
# Find and start the WinRM service.
Write-Verbose "Verifying WinRM service."
If (!(Get-Service "WinRM")) {
Write-ProgressLog "Unable to find the WinRM service."
Throw "Unable to find the WinRM service."
}
ElseIf ((Get-Service "WinRM").Status -ne "Running") {
Write-Verbose "Setting WinRM service to start automatically on boot."
Set-Service -Name "WinRM" -StartupType Automatic
Write-ProgressLog "Set WinRM service to start automatically on boot."
Write-Verbose "Starting WinRM service."
Start-Service -Name "WinRM" -ErrorAction Stop
Write-ProgressLog "Started WinRM service."
}
# Configure WinRM Listener
Write-Verbose "Configure HTTPS Listener"
winrm create winrm/config/Listener?Address*+Transport=HTTPS '@{Hostname="$fqdn";CertificateThumbprint="$thumbprint"}'
#Configure Kerberos authentication for WinRM
Write-Verbose "Configure Kerberos Auth for WinRM"
winrm set WinRM/Config/Client/Auth '@{Basic="false";Digest="false";Kerberos="true";Negotiate="false";Certificate="true";CredSSP="false"}'
# Delete HTTP Listener
Write-Verbose "Deleting HTTP Listner"
winrm delete WinRM/Config/Listener?Address=*+Transport=HTTP
# Configure Firewall Rule
Write-Verbose "Configure Firewall Rule"
New-NetFirewallRule -DisplayName "WinRM over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow -Profile Domain
# Configure TrustedHosts
# This is how you prevent lateral movement!
Write-Verbose "Set WinRM Trusted Hosts"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "$trusthost"
WinRM is NOT Powershell Remoting
This trips people up, don't make the same mistake.
Conclusion
This is months of research and hacking together scripts. I haven't gotten this work to a point were I feel it is production ready. Though I feel confident that is is a great starting point. I learned a lot about Certificate management, Windows Automation, Ansible Configurations, and Powershell. This is a fun project because it really pushed the boundaries of my knowledge of Linux and Windows systems. I am so grateful I have the opportunity to work in this field because I get to work on cool stuff like this.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Keyboardio Atreus (JWICk Ultimate Black Linear)
- Mouse: MX Master (Original)
- Emacs (WSL term)
Ansible for Cybersecurity Work - Part 2
Learning to Authenticate
WinRM has 2 componets: Communication and Authentication. Like with SSH, you establish a connection then you authenticate on the endpoint. In the previous post I wrote about setting up WinRM Listener over HTTPS. Now we have to setup Authentication luckily Windows offers serveral options for Authentication. But keep in mind not all are secure nor are supported with the type of account you would like to use. In other words if you want to authenticate with Kerberos forget about using a Local Account.
WinRM Authentication
WinRM authentication is the method used when authenticating against a Windows endpoint. Bascially, how you will logging into the computer remotely? WinRM offers several methods here is a break down from the Ansible documentation.
https://docs.ansible.com/ansible/latest/os_guide/windows_winrm.html#id3
Option | Local Account | AD Account | Credential Delegation | HTTP Encryption |
---|---|---|---|---|
Basic | Y | N | N | N |
Certificate | Y | N | N | N |
Kerberos | N | Y | Y | Y |
NTLM | Y | Y | N | Y |
CredSSP | Y | Y | Y | Y |
Using Certificate Authentication
Setting the following variable will let Ansible know which authentication method to use.
ansibible_winrm_transport:
ex. ansible_winrm_transport: certificate
Generating a certificate with ADCS
This is just for a quick demonstration on how on a local machine you can request a certificate from ADCS and the use it with Ansible.
Personal > Certificates > Request New Certificate - Chose a certifcate
Mapping Cert to User
New-Item -Path WSMan:\localhost\ClientCertificate `
-Subject "$username@localhost" `
-URI * `
-Issuer $thumbprint `
-Credential $credential `
-Force
Exporting the Certificate for the Ansible Control Node
openssl pkcs12 -in windows-host-cert.pfx -clcerts -nokeys -out client-cert.pem
openssl pkcs12 -in windows-host-cert.pfx -nocerts -nodes -out client-key.pem
Using Kerberos Authentication
Setting the following variable will let Ansible know which authentication method to use.
ansible_winrm_transport:
ex. ansible_wirm_transport: kerberos
Install Kerberos on Ubuntu
sudo apt-get install python3-dev libkrb5-dev krb5-user
You will need a few configurations for the local Kerberos install. Luckily they are not too crazy, but highly important.
sudo emacs -nw /etc/krb5.conf
or sudo nano /etc/krb5.conf
Kerberos Default Configuration
Below is an example configuration for Kerberos. It's super complicated but essentially you need to set your realms to match the AD environment. Pro tip: be sure DNS is configured and working correctly in your environment or else Kerberos becomes a nightmare.
[libdefaults] default_realm = myorg.LOCAL # The following krb5.conf variables are only for MIT Kerberos. kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true # The following encryption type specification will be used by MIT Kerberos # if uncommented. In general, the defaults in the MIT Kerberos code are # correct and overriding these specifications only serves to disable new # encryption types as they are added, creating interoperability problems. # # The only time when you might need to uncomment these lines and change # the enctypes is if you have local software that will break on ticket # caches containing ticket encryption types it doesn't know about (such as # old versions of Sun Java). # default_tgs_enctypes = des3-hmac-sha1 # default_tkt_enctypes = des3-hmac-sha1 # permitted_enctypes = des3-hmac-sha1 # The following libdefaults parameters are only for Heimdal Kerberos. fcc-mit-ticketflags = true [realms] ATHENA.MIT.EDU = { kdc = kerberos.mit.edu kdc = kerberos-1.mit.edu kdc = kerberos-2.mit.edu:88 admin_server = kerberos.mit.edu default_domain = mit.edu } ZONE.MIT.EDU = { kdc = casio.mit.edu kdc = seiko.mit.edu admin_server = casio.mit.edu } CSAIL.MIT.EDU = { admin_server = kerberos.csail.mit.edu default_domain = csail.mit.edu } IHTFP.ORG = { kdc = kerberos.ihtfp.org admin_server = kerberos.ihtfp.org } 1TS.ORG = { kdc = kerberos.1ts.org admin_server = kerberos.1ts.org } ANDREW.CMU.EDU = { admin_server = kerberos.andrew.cmu.edu default_domain = andrew.cmu.edu } CS.CMU.EDU = { kdc = kerberos-1.srv.cs.cmu.edu kdc = kerberos-2.srv.cs.cmu.edu kdc = kerberos-3.srv.cs.cmu.edu admin_server = kerberos.cs.cmu.edu } DEMENTIA.ORG = { kdc = kerberos.dementix.org kdc = kerberos2.dementix.org admin_server = kerberos.dementix.org } stanford.edu = { kdc = krb5auth1.stanford.edu kdc = krb5auth2.stanford.edu kdc = krb5auth3.stanford.edu master_kdc = krb5auth1.stanford.edu admin_server = krb5-admin.stanford.edu default_domain = stanford.edu } UTORONTO.CA = { kdc = kerberos1.utoronto.ca kdc = kerberos2.utoronto.ca kdc = kerberos3.utoronto.ca admin_server = kerberos1.utoronto.ca default_domain = utoronto.ca } [domain_realm] .mit.edu = ATHENA.MIT.EDU mit.edu = ATHENA.MIT.EDU .media.mit.edu = MEDIA-LAB.MIT.EDU media.mit.edu = MEDIA-LAB.MIT.EDU .csail.mit.edu = CSAIL.MIT.EDU csail.mit.edu = CSAIL.MIT.EDU .whoi.edu = ATHENA.MIT.EDU whoi.edu = ATHENA.MIT.EDU .stanford.edu = stanford.edu .slac.stanford.edu = SLAC.STANFORD.EDU .toronto.edu = UTORONTO.CA .utoronto.ca = UTORONTO.CA
You can get a Kerberos ticket by running to following command.
kinit myuseraccnt.local
You can view a list of the current tickets issued by kerberos with this command.
klist
Conclusion
When chosing an Authentication method for WinRM I would recommend Kerberos. Kerberos is by far a better and more secure option than Basic
or NTLM
authentication. Luckily, you can use CredSSP or Certificates if you are hestitant to use Kerberos. Overall the Authentication part of WinRM is much easier even if you chose Kerberos. But if you do not configure it correctly, you will never be able to login into a workstation remotely with Ansible. Moreover if you chose a less secure method do not use it in production.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Keyboardio Atreus (JWICk Ultimate Black Linear)
- Mouse: MX Master (Original)
- Emacs (WSL term)
DONE Wins and Fails in Streaming Music with Emacs
CLOSED: [2024-06-29 Sat 09:30]
Emacs Multimedia System (EMMS)
My preferred media player in Emacs is EMMS. Think of EMMS as a stackable playlist media player. EMMS out of the box does not actually play music. It relies on a "external" player like MPV, VLC, or MPLAYER. This is where this journey takes an interesting turn. Under Linux my EMMS setup is pretty straightforward. Below is my config:
(emms-all) (emms-standard) (emms-default-players) (setq emms-player-list '(emms-player-vlc) emms-info-functions '(emms-info-native) emms-show-format "Playing: %s")
I call EMMS, state I want to use EMMS standard list of players and include VLC in the list of players installed on my system. And setup some basic information for the EMMS player. After this I have to setup a method of streaming some music. This is also easy on Linux, it looks like so:
(defun play-defcon-radio () "Play defcon Radio" (interactive) (emms-play-streamlist "https://somafm.com/defcon.pls")) (defun play-freecodecamp-radio () "Play freecodecamp radio - Low" (interactive) (emms-play-url "https://coderadio-admin-v2.freecodecamp.org/listen/coderadio/low.mp3")) (defun play-tilde-radio() "Play Tilde Radio" (interactive) (emms-play-url "https://azuracast.tilderadio.org/radio/8000/radio.ogg")) (defun play-kmfa-radio() "Play KMFA Radio" (interactive) (emms-play-url "https://kmfa.streamguys1.com/KMFA-mp3"))
With a simple Elisp function I wrap the emms-play-url
function to the online radio station I want to listen. Here is a clip of how it all works

Again under Linux this works out of the box. But what about other operating systems like Windows?
EMMS in a Windows World
My day to day workstation at work is a Windows 11 destkop. Obviously, I use Emacs because Emacs is my go to tool for my work in Cybersecurity. But Windows is not Linux and Emacs works very differently under Windows. I always find weird little quirks and hacks that I never need to do under Linux. So how did I achieve streaming music glory with EMMS in Windows?
This took forever to simply play correctly. I ran into issues where Emacs was prepending the HOME path to url variables in emms-play-url
. It was super weird and frustrating issue that I kept running into. I looked at forums, blogs, and even asked multiple LLMs for help but I still came up short. Ultimately, I knew a few things:
- This configuration worked on Linux.
- VLC acts differently on Windows.
I went down a wild goose chase trying to get an Elisp function to strip down the passed variable to the url alone. You see on Windows my configuration has be setup from the appdata
folder. In there I set my HOME environment variable. It makes using emacs so much easier.
But for some weird reason (probably because I didn't RTFM), EMMS kept prepending my HOME path to any url. This meant that every time I played a URL it would appear like so
C:/myhome/https://musicsite.com/song.mp3
It did not matter if the url was hard-coded or not, it would always be prepended with my HOME path. So a quick hack was to set emms-source-file-default-directory nil
. This solved the prepend issue but EMMS would throw an error that I still did not know how to play the "track". I had seen this error before but ignored it because I thought it was related to the prepend issue.
I did more searching and found a stackoverflow post titled with the error I was getting. I took a look and they basically concluded that EMMS did not know where the player was located. I verified the value via the "Customize Emacs" option for EMMS. It simply showed vlc
which I knew immediately was wrong. Windows is weird and it needs the full path and file extension. I simply added emms-player-vlc-command-name "C:/Program Files/VideoLAN/VLC/vlc.exe"
the default command line options passed are --intf=rc
. The command line options open a VLC window which shows some basic information. This does not happen in my Linux machine so it seems that this is a Windows quirk. I had to tweak the options that get passed in command line on my Windows Machine. After some tweaking and searching I found the solution to running VLC in the background with no GUI.
emms-player-vlc-parameters '("-I dummy" "--dummy-quiet")
This can allow EMMS to control VLC and it runs in the background with no GUI. I also had a hard time getting a url with PLS extension to work. For example the Defcon Radio on SomaFM is https://somafm.com/defcon.pls
but adding that to emms-play-streamlist
would not work. I kept getting an error that the track information could not be found. Super weird.
In the end I was lucky that SomaFM provides an icecast server which I could tap into. So I simply added that to my Elisp function and it worked. In the end I learned a few things. It's rare and special when configurations work equally between operating systems.
As you can see my Windows config is finickier. It's not necessarily a bad thing that Windows requires more configuration. I just have to be more disciplined about my config.
(emms-all) (emms-standard) (emms-default-players) (setq emms-player-list '(emms-player-vlc) emms-player-vlc-command-name "C:/Program Files/VideoLAN/VLC/vlc.exe" emms-player-vlc-parameters '("-I dummy" "--dummy-quiet") emms-player-vlc-playlist-command-name "C:/Program Files/VideoLAN/VLC/vlc.exe" emms-player-vlc-playlist-parameters '("-I dummy" "--dummy-quiet") emms-info-functions '(emms-info-native) emms-show-format "Jamming: %s" )
And finally, steaming joy!
(defun play-freecodecamp-radio () "Play Freecodecamp Radio" (interactive) (emms-play-url "https://coderadio-admin-v2.freecodecamp.org/listen/coderadio/low.mp3")) (defun play-defcon-radio () "Play Defcon Radio" (interactive) (emms-play-url "https://ice4.somafm.com/defcon-256-mp3"))
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: ANNE Pro 2 with Kailh Box White switches
- Mouse: MX Master (Original)
- Computer: Framework 13 (Fedora Linux)
DONE TAGITM Regional Summit 2024
CLOSED: [2024-02-15 Thu 21:35]
2024 TAGITM South Texas Regional Summit
The Digital Force Awakens: Mastering Threat Hunting in the Cyber Galaxy
I had the pleasure of attending the TAGITM Regional Summit on Threat Hunting and Digital Forensics. The Summit focused on enhancing the skills of Texas cybersecurity workforce. The last few years have been rough for many Texas companies and governmental agencies. The rise in ransomware and cyberattacks has increased the need for these type of events.
Luckily there are great organizations such as TAGITM, TEEX, and CISA who can bring the knowledge and experience to eager learners. The event was sponsored by many great vendors who are doing great work in the cybersecurity landscape.
The first part of the day was a Threat Hunting workshop by TEEX. The later part of the day consisted of a hands-on exercise in Digital Forensics. The entire day was filled with great insight and meaningful practice. In the Digital Forensics workshop we got first hand experience with using FTK Imager
. This is a great tool for running a digital forensic analysis. I was exicted to learn FTK Imager
since my previous experience was with Autopsy
.
I had a great time at the event and I learned so much. I am so glad TAGITM was able to put on this event with great speakers and sponsors.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Keyboardio Atreus (JWICk Ultimate Black Linear)
- Mouse: MX Master (Original)
DONE Containers for Malware Analysis
CLOSED: [2024-01-07 Sun 23:09]
Tools make the job
Having the right tools at hand can make any job a breeze. It is also helpful to have a good working knowledge of the tools you use. In this case running containers like Docker or Podman are easily deployable in my work environment. So I decided to leverage the fact that REMnux offers Docker containers.
This makes running powerful tools for small jobs extremely easy. I have been using this approach recently with much success for analyzing malicious links. Let's take a look at how I set up my containers for this task.
Setup REMnux in a Container
REMnux offers several container images as well the full REMnux distro in a container. The container technology they chose is Docker but I have chosen to use Podamn. Podman seems to have better support in Windows as well as Linux. So I can have Podman running in both the Malware Analysis station and on my Windows machine. This gives me the flexibility to test on either machine or platform.
Install REMnux container
podman pull docker.io/remnux/remnux-distro:focal
Run REMnux as a Transient container
podman run --rm -it -u remnux remnux/remnux-distro:focal bash
--rm
Remove the container after it exists (not the image)
-it
Connect the container to the terminal
-u remnux
Logged in user
remnux/remnux-distro:focal
Container image to use, in this case use the local image
bash
Login shell
Investigating a malicious link
To investigate a link REMnux offers so many awesome tools. I will cover THUG, which is a "honeyclient". A honeyclient is a tool that mimicks the behavior of a web browser. Useful for analyzing what a link does when a user clicks on it.
Running THUG
thug -u winchrome49 "[LINKGOESHERE]"
Once it begins to "load" the suspicious site it executes any code that may be on the site. Once it is done running/loading the page it dumps a report. The report contains a summary of what occured plus you get any malicious artifacts that the page may have downloaded.
In one exercise I did a suspicous page downloaded an executable and I was able to run the file
command from the container to find it was indeed a malicous executable.
Take time to learn and experiment
Working in cybersecurity can be overwhelming. Especially, when you are staring at a new issue and get stuck on where to start. Just remember that there is a great number of tools that can help when you get stuck. Sometimes it just helps to start with the basics. Like seeing what a suspicious link does. Then you can move on to finding solutions to fix the issue.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Keyboardio Atreus (JWICk Ultimate Black Linear)
- Mouse: MX Master (Original)
DONE Conducting Cybersecurity Investigations in Emacs
CLOSED: [2023-11-05 Sun 20:24]
Emacs + Orgmode + Cybersecurity = Winning
I work as a Cybersecurity Analyst and I use Emacs as my primary note taking application. Naturally I have developed some techniques and writing practices around my work and the use of Emacs aids in the process. I think the power of Emacs and Orgmode are a winning combination for the type of work I do. So let me share with you a some of the templates I created that help me in getting work done!
The Investigation Template
Recently, I published my templates on Github. Let's take a look at my Investigations template.
Creating notes on investigations
#+TITLE: #+AUTHOR: #+EMAIL: * Investigations * * IN-PROGRESS Investigation#: Suspicious Powershell Command Date Created: 20230101 :properties: :export_file_name: 20230101_investigation_suspciouspowershell :end:
Here I am laying out the main information about this document. I set a title, author, and email address. I also include information about the date it was created and what the status of the to-do item is. In the properties
drawer, I include an export_file_name
section, so I can carefully curate my export to HTML or whatever I want.
The meat and bones
* * * Vendor Super Duper Cybers Corps. *** Title Suspicious Powershell Command Executed by Finance Department *** Assigned: Eduardo Robles *** Contacts - Cyber Team - Eduardo Robles *** Description Our IDR logged an a suspicious Powershell command executed from the Finance department. *** Questions 1. Was this an intentional execution? 2. What is the purpose of the Powershell command? 3. Did anyone verify with I.T department regarding the Powershell command in question? *** Solutions [%] - [ ] Investigate the origin of the Powershell command - [ ] Speak with employee who's work station is in question and their supervisor - [ ] Flag the Powershell command as suspicious *** Notes :LOGBOOK: :END: *** Debug/Troubleshooting Logs :LOGBOOK: :END: *** Email/Chat Logs :LOGBOOK: :END:
In this portion, I include as many details as I can about the ongoing investigation. These notes usually end up as a report that I hand into upper management. So I have to be as descriptive as I can be.
I tend to use org-contacts
in my Contacts section to make it easier to show email address when I export my content to HTML. In the Solutions section I include org-checkboxes
so I can keep track of work. In my Notes, Debug+Troubleshooting Logs, and Email+Chat Logs sections I take advantage of LOGBOOK
to create timestamped notes of events.
It's all about writing it down
Alerts are constant in my line of work. So it's easy to get distracted and disorganized with all the noise. Developing a practice of consistently writing out notes is key to finding calm in all the noise. I developed this template after a lot of trial and error. And I am still working on them but for now they work for me. The best part is that they modular. Use what works and add or remove what doesn't.
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
Setup
- Keyboard: Anne Pro 2 (Kalih Box White)
- Mouse: MX Master (Original)
DONE Cyber Work Templates by Me!
CLOSED: [2023-10-22 Sun 09:08]
The obvious approach
I use Emacs + Org-mode for my note-taking workflow as a Cybersecurity Analyst. Emacs is my geeky cred at my job, plus it is genuinely useful. So one day when working on taking some repetitive notes on an incident I had a bright idea. Why don't I just create a few templates that speed up my workflow?
A demonstration of my workflow for capturing notes on an incident
Incident --> Get Data --> Investigation --> Capture Templates --> Notes
Expanding the approach
Once I became comfortable with the approach of my capture templates, I expanded them to use the full power of Emacs and Org-mode! I began integrating Org-babel into my workflow. I use a Window 10 PC for my day job and I have WSL2 for all my Linux needs. Furthermore, I can call WSL from a regular shell (by default it calls the Windows Command Prompt) in Emacs. Org-babel does the work of putting the results in my notes. If this sounds familiar to you #Emacs
nerds, well it's the concept of Literate Devops by Howard Abrams. I as many others was inspired by the work of Howard Abrams and decided to incorporate their ideas into my workflow. It's a little weird to use these tools in a Windows environment, but hey it works ÂŻ\_(ă)_/ÂŻ.
Here I am explaining one of my weird workflows.
https://emacs.ch/@tacosandlinux/111108755456994431
The templates and beyond
So I put up my templates on Github and licensed them under CC BY-SA 4.0
. I will continue working on them and updating them as needed. At the time of writing this blog post, I move my note-taking workflow to Org Roam and I will be tweaking the templates to better fit that workflow. But I plan on creating a different set of templates, I do change them.
I mentioned Literate Devops earlier and while my workflow isn't "Devops" but it is "Literate". It's more like Literate Pentesting which is very useful for me. I am not the first one to try this idea for Pentesting. Michael Taggart and @HuskyHacks have the really cool project Blue Jupyter. They take the Jupyter Notebooks and apply them to Blue Team work.
So check out and fork my templates on github! Happy Hacking!
https://github.com/eduardo-robles/cyber-work-templates
Thank You
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee or send some bitcoin ⥠so I can continue to bring you amazing content for free!
Tip with some Sats
DONE BSIDES RGV 2023
CLOSED: [2023-05-23 Tue 22:23]
This years BSIDES RGV was great! I had a lot of fun was able to meetup with a lot of old colleagues and meet some new interesting people. The talks were great and I had a real hard time deciding which talks to attend. I'm glad it was another great successful year for BSIDES and I hope for more BSIDES in the future!
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Certs for Homelab
CLOSED: [2023-04-27 Thu 18:00]
I recently had the opportunity to add an ssl
certificate in my homelab environment. It was really easy and only took one command in Linux. Once I created my ssl
certificate all I had to do was upload it to NGINX Proxy Manager and have it serve it to my proxied sites.
You can use any other proxy manager such as Caddy but I had NGINX Proxy Manager in my homelab environment. Be sure to upload both the .crt
and .key
files.
Let's examine what the following commands does.
openssl req -newkey rsa:4096 -x509 -sha256 365 -nodes -out homessl.crt -keyout homessl.key
First openssl req -newkey rsa:4096 -x509 -sha256 365
stating that we want openssl to create a new certificate using rsa 4096
with type of x509
a hash of sha 256
for 365
days.
Then -nodes -out homessl.crt -keyout homessl.key
is telling openssl that we want the cert file and a key file.
Once you run this command you should have 2 files on your system. In this example they would be homessl.crt
and homessl.key
. Those 2 files you simply upload to your proxy manager or cert authority of choice and you will have valid self-signed openssl certificates. If you are curious to learn more about OpenSSL you can always check out the manpages online at https://www.openssl.org/docs/man3.0/man7/crypto.html.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Atreus Keyboard - First Impressions
CLOSED: [2022-12-03 Sat 21:53]
Atreus Keyboard

Ergonomics
This keyboard is small and light. I found it to be an amazing size and shape. I don't think it is too small or too close together I actually found it very comfortable. I did experience some fatigue in the beginning but that was from poor typing technique. I am a bit of a finger and touch typist. I tend to finger type with my left hand which made hitting keys like the C key really annoying because I'm used to lifting my left hand and pressing the C key with my left index finger. Super weird way to type, I know but that is what I grew accustomed to and never really fixed. Well the Atreus forces you to fix that. My left hand had a lot of bad habits to break, luckily I am patient.
Customizing
Atreus is a fully Open Source keyboard which is awesome. I used the Chrysalis software to configure the keyboard to my liking. I felt the default keybindings were confusing and too opinionated. I did some research online and found blogs about other users configurations. I found this great post on https://alexschroeder.ch/wiki/Atreus and I followed most of his keybindings. I still managed to create my own keybindings which is the point of a fully customizable keyboard.


Conclusion
In closing this is awesome keyboard. It has so much potential and I am excited to keep using it. I will post updates on my progress with this keyboard.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Using a Reverse Proxy and Pi-Hole
CLOSED: [2022-10-20 Thu 06:37]
I recently setup NGINX Proxy Manager to help manage all of my self-hosted services. How did I do this? I installed NGINX Proxy Manager in a LXC container in my Proxmox server. I then configured several of my services to route to their respective IP addresses and ports. In NGINX Proxy Manager you can assign local domain name to your services. I chose to go with something simple like example.home
. Once I finished configuring NGINX Proxy Manager I moved over to configure my Pi-Hole server. I run the latest version of Pi-Hole on a Raspberry Pi 4 B+ which works fantastic. In my Pi-Hole I simply added some new DNS record to match my NGINX configurations.
Example of my Pi-Hole DNSMASQ Settings
A Record: proxy.homeserver.home
â> 10.0.11.1000
CNAME Record: proxmox.home
â> proxy.homeserver.home
CNAME Record: plex.home
â> proxy.homeserver.home
Since I am using Pi-Hole as my DNS server I need to have the custom domains I setup in NPM (NGINX Proxy Manager) to route traffic correctly. I start by setting up an A Record
of my NPM custom domain to point to the IP of NPM. Doing so will ensure that all traffic that goes to that IP gets routed only to NPM. Any traffic that NPM then reads it can then route to the proper service. Next, I make CNAME records of all the services I have running with custom domains. Now here I state that any request to my custom domains be routed to the A record of my NPM. The reason I need to do this is because traffic needs to route NPM so NPM can decide how to serve up the service. That after all is the job of a reverse proxy.
And that's it! Once I have all settings in place I can start using my custom domains on my local LAN. This make so much easier to reach my local services instead of memorizing IP addresses. In the future I look forward to setting up some local SSL certificates to secure my local custom domains with SSL.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Moved my site to Github!
CLOSED: [2022-08-20 Sat 11:09]
I recently decided to move away from Gitlab. There was a bit of news around Gitlab closing free accounts which I think is a fair business move by Gitlab. Businesses need to make money after all. Most of the internet decided that Gitlab as evil for doing this. But I didn't in fact I think it's for the best. Since I was barely even using my Gitlab account and most importantly I wasn't paying for any services I felt that I was cheating Gitlab. So to help them I decided to move to Github. This is shaky reasoning at best but I want Gitlab to succeed and me draining resources and not paying won't help.
Now there are a lot of FOSS project hosted on Gitlab which still leaves the possibility of interacting with Gitlab. I think this is for the best for now. Github doesn't really care if you use up a free account. Now I know Github has it's privacy and freedom respecting issues. But this where each individual person has to asses for themselves. For now I moved to Githb and will do what I can to promote Gitlab.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE BSIDES RGV 2022
CLOSED: [2022-05-23 Mon 21:05]
Here's the presentation for my talk at BSIDESRGV 2022 https://github.com/eduardo-robles/talks/blob/main/talks-2022/bsides_2022/bsides_presentation.org
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Create SSH Key
CLOSED: [2022-03-08 Tue 18:38]
Creating an SSH key is very easy. Below is an example of how to generate an SSH key with the ssh-keygen
command.
Create SSH Key
ssh-keygen -t ed25519 -f ~/.ssh/nameofkey -N '' -C "comment goes here"
ssh-keygen -t rsa -f ~/.ssh/nameofkey -N '' -C "comment goes here"
-t option is for the type of keys to be created (ex. ed25519)
-f option is the filename and location of the keys (ex. /path/to/file
)
-N is the passphrase to be given, leave blank for no passphrase
-C enter a comment to best find keys later (ex. "github key")
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE 256 Color In SSH Sessions
CLOSED: [2022-01-07 Fri 23:00]
I found myself going a bit crazy over theme rendering in my SSH sessions. Especially when I wanted to use emacs -nw
in an SSH session. Recently I've been using GNU Screen as my terminal multiplexer and it comes with 256 color support. But you need to set it up and thanks to the Arch Wiki it's rather easy. All you have to do is put term xterm-256color
somewhere in your .screenrc
file. This tells your GNU Screen session to pull the correct colors based on what your $TERM
supports.
An easy way to find out if you terminal emulator has 256 color support is by running tput colors
, if 256
is your output then you have support! The main idea of ensuring that you get 256 colors working correctly is to make sure that you explicitly set it up. In other words if you use TMUX, be sure to let TMUX know to use 256 colors.

If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Using GNU Screen
The Problem
So it all started with a simple problem. How to I connect to the console port on my Extreme Summit X440 switch? Luckily in the past I remembered that I could use minicom
. It a great application to connect to console sessions. I used it way back in the day to connect to Cisco switches. If it wasn't for the fact that I had use an actual Cisco switch for a class I would have totally forgotten about it. But what does this have to do with GNU Screen
?
A Surprising Solution
One afternoon I was surfing the web and came across a blerb of information that blew my mind. Screen can be used to connect to console sessions! I had recently been trying to redo my workflow to incorporate a terminal multiplexer. Most folks use TMUX and TMUX is a great choice. But at first glance the keybinding just seem weird and not very intituive for me. So went down the rabbit hole of Youtube videos on Screen vs. TMUX. In the end I decided to give Screen a try and see if it was really true that you can connect to serial console sessions.
Screen and ttyUSB
In Linux console cables interface with /dev/ttyUSB
(My console cable), this allows me to connect programs like minicom or screen to the serial connection. I did run into one small permissions issue when trying to run screen /dev/ttyUSB0 9600
. Which led me to find out that I needed to add my user to the dialout
group (Arduino post). So I added my user like so sudo usermod -a -G dialout myuser
and a quick reboot (a logout will work too) just to get things sorted. Once you log back in all you have to do is execute screen /dev/ttyUSB0 9600
and you will get connected to your console session.
Old tools to the job
Sometimes old, tried, and true tools are the best. I'm glad I found out that GNU Screen can connect to console sessions. This allows me the flexibility of having a terminal multiplexer that is well rounded.
Some useful links
- GNU Screen Manual: https://www.gnu.org/software/screen/manual/screen.html
- Screen Baud Rate: https://www.cyberciti.biz/faq/unix-linux-apple-osx-bsd-screen-set-baud-rate/
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Accessing my homelab with Cloudflare
Cloudflare Access for my Homelab
I decided to use Cloudflare to setup a Secure Web Gateway and establish some Zero Trust access for my homelab services. Cloudflare offers a great service called âCloudflare Accessâ. Basically it leverages Cloudflareâs edge network to create secure web routing. Setting up this service is just a matter of running a simple daemon. Once configured you setup Cloudflare DNS to route traffic. Letâs discuss how I setup Cloudflare Access. Create an SSH Bastion with Cloudflared Setup a Raspberry Pi with Raspberry Pi OS or Ubuntu
Install Cloudflared Ubuntu/Debian install
wget -q https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb
dpkg -i cloudflared-stable-linux-amd64.deb
Raspberry Pi
wget -q https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
tar -xyzf cloudflared-stable-linux-arm.tgz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
Create a tunnel with Cloudflared
cloudflared tunnel login A browser window will open asking for authentication from Cloudflare. Setup a âSelf-hosted Appâ on Cloudflare Teams.
See this https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps Configure tunnel on Raspberry Pi (or jump host) Find tunnel Id
cloudflared tunnel list
Create/Edit Cloudflared Configurations
location: /home/pi/.cloudflared/config.yml
tunnel: TUNNEL_ID_GOES_HERE
credentials-file: /home/pi/.cloudflared/TUNNEL_ID.json
ingress: - hostname: rterm.eduardorobles.com service: ssh://localhost:22 - service: http_status:404
Execute the tunnel
cloudflared tunnel run TUNNEL_NAME
Route DNS for tunnel
cloudflared tunnel route dns TUNNEL_ID rterm.eduardorobles.com Access Raspberry Pi (or jump host) In browser go to https://rterm.eduardorobles.com Go through the login steps and you should be able to login to your jump host Connect from a client machine Install Cloudflared Configure SSH Config
Host rterm.eduardorobles.com
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
Adding another service Add settings to config.yml file Delete old config file /etc/cloudflared/config.yml Install service again
Accessing All of my Services
If you followed along you can see that in the last step we can add multiple ingress rules. For each service you want to router traffic to simply add it your configurations. In the example above I setup SSH access to my Raspberry Pi. Cloudflare can even render the SSH session in the browser for you.
rendering an SSH session in the browser
You can setup another machine with SSH to proxy your connection. But adding multiple ingress points allows you to access any and all of your services. Since you are using a Secure Web Gateway, your services are not automatically open on the internet.
I also a Zero Trust Policy was setup which allows for very locked down sites. I setup 2 Factor Authentication for my Web Gateway. In the end I feel happy with the results and recommend anyone try Cloudflare Access.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Starting a Homelab with Proxmox
The Beginning
So if you hadnât heard of the idea of a âhomelabâ, let me give you the quick run down of what is a âhomelabâ. Basically, a homelab is a collection of technologies (hardware and software) that you install, maintain, and configure in your home. Imagine a datacenter in your home or an electronics lab can also be a homelab. At the heart of the homelab movement is the idea of tinkering and learning.
Inspired by the idea of tinkering and learning I went down the path of building my own homelab. Luckily you donât need a lot to started, older hardware can be a great start for beginners. Thatâs were my trusty old Dell Xeon workstation comes in. I was gifted this Dell Xeon workstation from a former client and I used it as a Ubuntu workstation for many years. It is a great machine and despite its age work like a champ. Unfortunately, itâs loud and does not meet the âWife Approval Factorâ. To keep my wife and to start a new journey for this Dell, I decided to turn into my Proxmox machine! The Homelab
Now what is Proxmox?
Proxmox is Type 1 Hypervisor that you can install on your own hardware. It allows you to run multiple Virtual Machines and Linux Containers (LXC). This is how Iâm going be able to run various technologies in my home. Proxmox is a great hypervisor, itâs user friendly and built on a stable Debian base. Iâm quite comfortable on Debian based distros, so going with Proxmox was a no-brainer. The Services
In order to stay a bit organized I made a list of services/technologies I wanted to run on my homelab. Below are the services I currently have installed.
File server Plex server Syncthing Git server Home Assistant GNS3 VM
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Installation of Fog Project 1.5.8
Hi there!
Follow along with me in this video as I install Fog Server. To learn more about Fog Project check out there website https://fogproject.org/. The installation is done with a simple script that you download from the project website.
For this example I used Cent OS which you can get at the website here https://centos.org. You can use a Debian based OS as well but I chose Cent OS.
Somethings to keep in mind:
- Never run as root. Create a user and elevate privileges.
- Be sure to have a password ready, during the installation you will be prompted to create a MySQL account for the database.
- The Fog Project login page is located at http://localhost.lan/fog/management
- The installation can take a while so be patient.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
SSH Port Forward a VNC Connection
Recently I wanted to access a Virtual Machine I had created on my desktop from my laptop. I had access to the desktop via SSH but I wanted access to the virtual machine. To make things more interesting I wanted to access the VM(virtual machine) via a graphical interface.
So I figured out that I could use SSH to âport forwardâ the VNC connection from the desktop to my laptop. Itâs actually very easy and only requires a few basic SSH commands. All you have to know before hand is the IP addresses and ports of the application and what port you want to connect to locally.
Definitions:
pc-1: Is the computer you are connecting from, in this case the laptop.
pc-2: Is the computer you are connecting to, in this case the desktop with the VM.
So I use KVM to run the VM, so to get the VNC port from the running VM do the following.
sudo virsh dumpxml NameOfVM | grep vnc
You should see an output like this one.
<graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>
This tells you that KVM is running vnc on port 5901 on address 127.0.0.1 (localhost) for this virtual machine. Now itâs time to connect to the virtual machine from pc-1.
In pc-1 run the following command to create an SSH tunnel that port forward the VNC connection.
ssh user@pc-2 -L 5901:127.0.0.1:5901
What is is command doing?
ssh user@pc-2 is establishing the SSH connection to pc-2 with the user âuserâ. In your case, the user and IP address might be different e.g batman@10.10.0.1. -L 5901:127.0.0.1:5901 is telling SSH agent to create a tunnel using local port 5901 and bind it to the remote machine address 127.0.0.1 on port 5901. The address on the remote machine might be different so thatâs why we ran the virsh command to find it.
Now that the SSH tunnel is established connect to the VM via VNC. You can use any remote viewer software like Remmina, TightVNC, or even Remote Viewer (part of Virtual Machine Viewer). Simply connect with the following parameters.
vnc://localhost:5901
And the VNC connection should open up and start working. You can do everything you could locally via a remote VNC connection. Once you are done simply close the VNC connection and exit the SSH session.
In this tutorial I showed how to this in KVM but VirtualBox and VMware have their own methods of doing this. Simply search for âheadlessâ virtual machine for each to find out how to accomplish the same procedure.
Congrats, you are now running a headless VM with a secure connection. SSH is cool tool that can do alot and if you combine it with other tools you can accomplish even more.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
My 2020 Ubuntu Laptop Setup
New Year, New Setup
Ubuntu 19.10 Desktop
I began the new year by buying a new 500GB SSD. My laptop had 2 drives: a 32GB SSD was my /root drive and a 120GB SSD was /home partition. This served me just well but obviously I would run out of space quickly if I was working with virtual machines. With a new drive I had to make the decision to start from scratch or use backups. I decided to start from scratch mainly because I wanted a clean and fast experience. Operating System
Though I have used Pop!OS in the past this time around I decided to install Ubuntu 19.10. I have Ubuntu 19.10 installed on my desktop and I really enjoyed itâs speed and perfomance. Plus it helps to know that both my laptop and desktop are running the same OS and version. Other distroâs I considered were: Fedora, and Manjaro. Theme
I recently came acros the Dracula theme for Emacs and I decided I needed this theme everywhere. Luckily you can go to https://draculatheme.com/ and see all the theme options for a lot of apps. Apps
This is a list of my go to apps.
Emacs Spotify Evolution (Email client) Audacity Tizonia (Spotify terminal client) VLC Keybase
Other apps I install depending on the use case:
VPN Audacity Open Broadcaster GNOME Tweaks Syncthing Chromium
Configurations
Ok, so letâs talk how I setup my laptop the quickest way possible. Sign into my Google account in GNOME online accounts.
This is to have Evolution setup as soon as itâs installed and launched. Run my setup scripts
I came across this great post by software dev Victoria Drake. She wrote a great bash script that she uses to setup her Ubuntu laptop (or even a VM). So I cloned it and modified it for my use. Here are some key take aways.
# Snap packages
sudo snap install spotify
sudo snap install chromium
sudo snap install tizonia
# GNOME
install gnome-tweaks
# File Backup
install deja-dup
install git
install curl
# add more apps as needed
This is the script that is called to install my apps. This is only an example, in the real world I edited the script to add or remove apps that I wanted installed or removed. Another part of my setup scripts is the desktop.sh script.
# Set GNOME Settings
gsettings set org.gnome.desktop.wm.preferences titlebar-font 'IBM Plex Sans Bold 11'
gsettings set org.gnome.desktop.interface monospace-font-name 'IBM Plex Mono 13'
gsettings set org.gnome.desktop.interface document-font-name 'IBM Plex Sans Medium 11'
gsettings set org.gnome.desktop.interface font-name 'IBM Plex Sans 11'
Ubuntu 19.10 Terminal Dracula Theme
I use this script to setup my fonts. It downloads IBM Plex font and installs it on my system. I love this font and thus I use it everywhere. My setup scripts do other things depending on what I want to do, like setup some PPAâs or change other GNOME settings.
One thing that I found after I setup my laptop was this great script to change the terminal theme. Itâs called Gogh and you can find it here https://github.com/Mayccoll/Gogh. GPG, Git, and Emacs setup
I do the basic GPG configurations, like download my GPG keys and setup my SSH keys. I also setup Git by adding SSH login, user name and email. Then I setup Emacs by downloading my configuration from my private repo. I set Emacs to run in daemon mode cause itâs faster than lighting this way :smile:. To run Emacs in daemon mode I simply run systemctl âuser enable emacs.service and systemctl start emacs.service.
Emacs 26.3 And thatâs it
The setup scripts do most of the grunt work. So I simply run them and a few minutes later all my apps and laptop is setup. After I do some post installation tweaks Iâm ready to get to work in about 15 minutes. So I hope you all found this post insightful and useful. Some things that I didnât discuss here but I did do were: I encrypted my drive on initial installation and I downloaded updates while I installed Ubuntu.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Fixing Grub on a Dual Boot
I recently decided to move my Ubuntu installation from my laptop to my desktop without having to reinstall. So basically all I wanted to do is move the SSD (which had Ubuntu 19.10 installed) in my laptop to my desktop. This process is not hard at all but in my case it was a little more complicated. I wanted to do a dual boot on my desktop computer with 2 different hard drives. One spinning disk hard drive will have a Windows 10 installation while the SSD from my laptop will have Ubuntu 19.10. Again I did not want to do any reinstall of Windows 10 or Ubuntu. So how can you accomplish this? Simple with the command update-grub.
First I removed the SSD in the laptop and installed it in my desktop. I ensured that it was on the first SATA port so it can be the first hard drive the system recognizes. Once installed I booted up the computer and Ubuntu booted up correctly. Ok, so now I knew Ubuntu worked fine on the desktop.
Next, I had to update grub inside of Ubuntu in order to add the Windows 10 disk to my boot order. Grub is actually pretty good at adding additional operating systems to the boot order. So turned off the computer ensured that my drives were in the correct SATA ports. After this step I ran into a small problem, Grub was not updating inside my Ubuntu installation. So I decided to boot into a Linux LiveUSB to help troubleshoot the errors.
Inside the LiveUSB Linux environment I used a chroot environment to reach my Ubuntu 19.10 installation. To do so simply follow these steps.
sudo mount /dev/sdaX /mnt
for i in /dev/ /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
Once in the chroot environment I ran update-grub and I still got an error. So I decided it would be best to simply reinstall grub. To do so simply run reinstall grub-pc (if youâre on a efi system please use grub-efi-amd64). This command worked and prompted me to chose where I wanted to install grub. I chose on the main disk since this is where I wanted to have grub installed. Once that process was done, I rebooted the system and was prompted with a working grub boot screen with both operating systems showing up correctly.
Tip: If you want to customize your Grub boot screen you can do with the app Grub Customizer. Simply install it with sudo apt install grub-customizer. This allows you to add a background to Grub bootscreen, change the boot order, and much more.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DuckDuckGo Mobile Browser
I blogged before about switching from Firefox Focus to DuckDuckGo mobile. Now itâs been 3 weeks since I made the switch and I wanted to do a quick post about my experience.
First, itâs going great. I really like the fact that a search widget is included. I replaced the Google search with DuckDuckGo and I find myself using it a lot more. Which is great because I really like using DuckDuckGo as my default search engine.
Another great feature is the snappy-ness of the browser. DuckDuckGo mobile âfeelsâ faster that Firefox Focus. I donât know if thatâs because it was built with Chromium but it just feels faster. I was never really bothered by FFâs slowness but pages to render faster in DuckDuckGo.
Also itâs been nice to have the option to have multiple tabs open. This was possible in FF but it was not as intuitive as it is DuckDuckGo. Though the ability to delete all tabs with one click is rock solid on both browsers.
The one down side that I really experienced was the fact that not all apps were able to send URL links to DuckDuckGo mobile. For example, when I click on a link in a Youtube video description I do not get the option to open it in DuckDuckGo. I only get regular Firefox or Chrome. When I had Firefox Focus installed I could open that same link easily.
Overall I am really happy with DuckDuckGo mobile and I would recommend it for anyone wanting a âprivacyâ browser. I still using Firefox Focus and may download it again in the future. But for now Iâm sticking with DuckDuckGo mobile.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Region One Cybersecurity Summit 2019
Region One hosted a Cybersecurity Summit for 2019 in Edinburg, TX. The event was free and I signed up to attend. It was a great event that had many great presenters. The theme of the summit was Cybersecurity on a regional level. Here are some of the talks I attended and the takeaways I got from them.
Reduce Your Cybersecurity Risk and Get Complaint with SB 820
â Develop Policy: use already established policies as blueprints â Items to invest in: Malware protection/Endpoint protection, Firewalls, IDS/IPS, Spam Filtering, Log Monitoring
Sharpen your Cybersecurity Skills in 1 Hour
â Leverage free courses
â Practice as much as possible (1 hour a day)
â Find and compete in Cybersecurity competitions
Ransomware: How to Detect, Prevent, and Respond
â âNot a matter of If but Whenâ
â Leverage immutable storage
â Develop strategies and policies.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Escape Rooms Challenge at STC
To help celebrate National CyberSecurity Awareness month the Information Security office at South Texas College created an âEscape Roomâ challenge. I got to participate in this years festivities. I like the challenge of doing escape rooms so one that had a cybersecurity theme seemed even more fun. The activity was quite fun despite not being able to âescapeâ in time.
The challenge consisted of finding the decryption key to decrypt a computer that was attacked with Ransomware. The whole exercise was intended to show the damaging effects ransomware can have on a business or institution. After the challenge the moderators gave a brief talk on tips and tricks to securing your online identities and business.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Firefox Focus
I have been using Firefox Focus for about half a year now. I came to use because I was using Chrome and simply got paranoid of what stuff Google was collecting via Chrome. So I made the switch to Firefox on my PC and started using Firefox for Android. Now before I started using Firefox Focus I was using Brave Browser for Android.
Brave Browser is a Chromium based browser that tauts privacy for the end user. Since I became paranoid of Google I naturally was paranoid of Google based technologies. Chromium though open source is a Google project. Itâs development is steered by Google. So Google has a vested interest in Chromium. While making the switch to Firefox I came to learn about Firefox Focus via a Mozilla Newsletter. So I downloaded it and gave it a try.
It was a bit weird getting used to it but after a while it was my default mobile browser. What made it great was the fact that my history was deleted after each use. I never had to worry about cookies or deleting search history. It kept my browsing experience as pure and fast as possible.
This is why I was a bit disappointed at the latest update. The app started to have memory leak issues. Causing some battery drain on my phone. The issue wasnât all that bad but it was annoying enough that I just unistalled the app.
But I loved having a mobile browser that deleted search and use history after each use. When I looked in the Google Play store for other mobile browsers, DuckDuckGo, was recommnended. DuckDuckGo is my favorite search engine, so I was excited to see they offered a mobile browser. And it was highly rated (4.7 out 5) with a lot of positive reviews. I decided to give it a try.
On first impressions I really like it and it feels faster than Firefox Focus. Plus if I want I can get DuckDuckGo browser via F-Droid store too. Itâs only been a few days since I downloaded it but so far Iâm really impressed with it. Iâll continue to test it out and see if I stick to it or go back to Firefox Focus.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
My thoughts on âThe Alchemistâ by Paulo Coelho
The Alchemist by Paulo Coelho
Since I have been reading âself-helpâ books my wife suggested I check out The Alchemist. Luckily she owned a copy, so I grabbed it from our bookshelf and stuffed it in my backpack. I gotta say that I really enjoyed this book. I can now see why so many people consider it a âself-helpâ, book. Here are a two of my favorite passages:
My heart is afraid that it will have to sufferâ, the boy told the alchemist one night as they looked up at the moonless sky.
âTell your heart that the fear of suffering is worse that the suffering itself. And that no heart has ever suffered when it goes in search of its dreams, because every second of the search is a secondâs encounter with God and with eternityâ.
I loved this part because it closely aligns with my own personal beliefs on suffering. You cannot hope to succeed without a bit of hard work.
âEvery second of the search is an encounter with Godâ, the boy told his heart. âWhen I have been truly searching for my treasure, every day has been luminous, because Iâve know that every hour was a part of the dream that I find it. When I have been truly searching for my treasure, Iâve discovered things along the way that I never would have seen had I not had the courage to try things that seemed impossible for a shepherd to achieveâ.
I got teary eyed when reading this part. Itâs funny how sometimes you read something and it spurs such a deep emotion. Thatâs how I felt reading this part in the book. Iâve always characterized myself as an optimist and I believe that it takes a bit of courage to remain an optimist in this day and age.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
My thoughts on âSmarter Faster Better: The Transformative Powe r of Real Productivityâ by Charles Duhigg
Smarter Faster Better: The Transformative Power of Real Productivity by Charles Duhigg
I had heard so much of Charles Duhigg from many âentrepreneurial youtubersâ, so naturally I became curious of his work. Most people recommend his book The Power of Habit, I even remember a colleague reading it. But I didnât find a copy of it at my local library but I did find a copy of Smarter Faster Better instead. Oh boy was I happy with this book. I highly recommend this book for anyone, especially if you are looking for ways to be more âproductiveâ. The book is full of stories of how people, organizations, or businesses overcame serious obstacles to come out on top. Hereâs my favorite part from the book.
This, ultimately, is one of the most important lessons of places such as NUMMI and the lean and agile philosophies: Employees work smarter and better when they believed they have more decision-making authority and when they believe their colleagues are committed to their success. A sense of control can fuel motivations, people need to know their suggestions wonât be ignored, that their mistakes wonât be held against them. And they need to know that everyone else has their back.
There has been very few work environments where I felt trust between myself and management. This always left me alienated and demotivated. But Iâve had other jobs where I truly felt like I was part of the team. Those were great jobs and enjoyed my time at them. Not just because it was a fun working environment but because at the end of the day I felt that my work meant something.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Why I got a Library Card in 2019
I was having a conversation with my wife and I said to her âYou know, I feel like Iâm getting dumberâ. We both laughed out loud at my ridiculous statement, she then asked why I felt that. The reason I was l feeling like that was because I was simply spending too much time on other silly distractions. And no it wasnât just âsocial mediaâ, I tend to go down YouTube rabbit holes too. So I decided to try a small experiment. Reading.
In high school I read quite a bit, I was a lector at my church which required me to read the Bible. Though I never read the Bible for fun, just for my role as lector. Then in college my degree required a lot of reading. Every semester I must have read at least 10 books plus academic journal articles. So I did plenty of reading during that time in my life and I guess I got burned out on reading. I know this happens to many people but many get back to reading soon after. For me it was years since I had read a book from cover to cover.
So in the end I decided I wanted to read more. But starting something is always the hardest part of any project. I wanted to read more but I didnât want to spend money on books that I wasnât sure Iâd like reading. My solution, the local library! I went down one Sunday afternoon and asked for a library card. I got a card in 15 minutes I got card and checked out my first book.
Lucky for me my local library has a great selection of books. Plus they are part of a regional system which allows me to find more book across libraries in the county. In the end I checked out a book title Why Buddhism is True by Robert Wright. I read it in the 2 weeks checkout period and I really enjoyed the book.
in the end Iâve been reading more and taking full advantage of free books at my local library. So if you want to get into reading go get a library card and checkout a few books.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Reset Windows Password with Linux
Ever needed to reset your Windows password but forgot to make a Windows Reset Password disk? If so, you can easily reset a Windows Users password with a Live Linux USB. Letâs see just how easy it is to so.
If you donât a Live Linux USB go ahead an create one. This tutorial is Ubuntu based so any Ubuntu flavor will work. And you will need a working internet connection to download software. Start the computer and boot into the Live Linux environment. Once in the Live Linux environment make sure you connect to the internet and open a terminal. You will need to install tool called chntpw. So ahead and run the following command to install chntpw apt-get install chntpw Once installed you will have to mount the hard drive that has Windows installed. There are many ways of doing this but you can use the File Manager (Nautilus in Ubuntu) to make things easy. Once you have the Windows Harddrive mounted go to the following directory windowsHarddrive/Windows/System32/config Now that you are at the correct directory, right click and chose Open With Terminal Here. In the terminal simply type the following command to interact with chntpwsudo chntpw SAM Now you are editing the Administrator user if you would like to edit another user use this command.sudo chntpw -u USERYOUWANTTOEDIT SAM After youâve chosen your user itâs time to reset their password. Simply type 1 in ther User Edit Menu. And then chose y when prompted to Write hive files Then to quit type q and this will exit chntpw Close the terminal and restart your computer making sure to remove the Live Linux USB. You should boot into Windows desktop directly without any login. Be sure to add a new password!
Congratulations you have successfully reset your Windows with Linux! And thatâs it!
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
Relaunching my personal website
Leaving social media
So this week I found myself falling down a crazy rabbit hole. It all happened when I watched this video on the indieweb concept. I was hooked on the idea and philosophy of the indeweb! Just recently I had been putting a lot of thought on leaving social media behind. But of course in this day and age doing that is much easier said than done. Still I had this gut feeling telling me that I just didnât want to be on platforms like facebook any more. Indieweb FTW
One of the core concepts of the indieweb is to âownâ, your content. This is the by far the thing that drew me into the movement. Over the past 2 month I had relaunched my business website and stepped up my video creation. I was happy that I was writing more original content and creating at my own pace. But after watching that video I knew I had to do more with ALL of my content. Oh boy we sometime forget just how much content we create on a daily basis. Indieweb movement tries to get you to understand your content and most importantly allows you to put out onto the world the way you want it. So here we are
This site was relaunched with wordpress and with indieweb principles in mind. Iâm happy I took the plunge even though it drove me a bit crazy at times. I think Iâll do more of a deep dive on all the moving parts in a later post. But it feels good to be taking control of my content, soon Iâll be saying goodbye to social media!
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE Adding SSH Key To Agent
CLOSED: [2022-03-22 Tue 08:11]
Check if SSH Agent is running
This is to add the keys to the SSH Agent
eval "$(ssh-agent -s)"
Add the Keys to SSH Agent
ssh-add ~/.ssh/nameofkey
Verify Keys Added to SSH Agent
ssh-add -l
Copy Key to Remote Server
ssh-copy-id user@remote.server.location
DONE SSH on Extreme and Cisco Devices
CLOSED: [2022-04-18 Mon 06:58]
Enable SSH on Extreme Devices
A key will be generated. To upload a public key simply use sftp
or scp
to upload key. But be sure to change the extension to .ssh
for example id_rsa.pub
will be id_rsa.ssh
on the switch. Also you can assign a key to a user by simply appending the username to the key file for example admin.id_rsa.pub
.
Extreme switches have a limitation of only being able to use RSA or DSA keys. Recommend to use RSA 2048
Enabling SSH on an Extreme Switch
enable ssh2
Chaning SSH port
enable ssh2 port tcp 766
Enable SSH on VR-Mgmt Only
enable ssh2 vr VR-Mgmt
Enable SSH On Cisco Devices
Add hostname to the device
ip domain-name ex.cisco.com
Generate SSH Key for device
crypto key generate rsa
Chose SSH Key size
Default is 512
but 1024
is better
Change SSH version
ssh version 2
Add a username and password for SSH access
username admin secret admin123
Configure the lines which will have SSH access
line vty 0 15
or line vty 0 2
Enable SSH on enable lines
transport input ssh
Keep SSH to local logins
login local
Save config
copy run start
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!
DONE SSH Config File - Make SSH Easier
CLOSED: [2022-04-27 Wed 07:30]
How do you stay organized with SSH connections? Most of us simply search our terminals history to find SSH connections. You may do history | grep "ssh"
or even Ctrl+R
and search SSH. While that may work for a few connections, there is a better way: SSH Config file. An SSH Config file simply tells OpenSSH how to open up connections. The benefit is that you can keep all your connections all in one place. Plus you can use things like Jumphosts and Public Keys to make connections easier. Let's look at a typical SSH command.
ssh erobles@10.0.3.11 -p 2300 -i ~/.ssh/mykeys
erobles@10.0.3.11
this states our username on the server and the IP/Hostname of the server
-p 2300
the port we are connecting to on the server
-i ~/.ssh/mykeys
the Public/Private keys used in the SSH connection
While this is fine, it can be time consuming and easily forgotten. So let's see how this commands translates to an SSH Config file.
HOST myserver
HostName 10.0.3.11
User erobles
Port 2300
IdentityFile ~/.ssh/mykeys
The example above achieves the same as the long SSH command in the previous example. You can save this file in ~/.ssh./
directory with the filename ssh_config
. Once the file is saved you can type ssh myserver
, OpenSSH will check the SSH config file for an entry myserver
and execute an SSH connections with the options you specify. As you have more servers/machines you have to SSH into you simply add those the SSH config file. You can have 20, 40, or 100 connections all in one file! Working with an SSH Config file makes your SSH workflow much easier. It can also be helpful to keep track of SSH connectitons.
If you enjoyed or found any of the content on my site helpful, you can buy me a cup of coffee so I can continue to bring you amazing content for free!