Danno Projects
  • Home
  • About
  • Skills
  • Experiences
  • Education
  • More
    Recent Posts Accomplishments
  • Posts
  • Dark Theme
    Light Theme Dark Theme System Theme
  • Posts
  • Microsoft 365
    • Google Workspace to EXO
  • DevOps
    • Docker
      • Setting up Docker and Jenkins on a Raspberry Pi
    • Python
      • Replacing Excel with a SharePoint List for Inventory Management
  • Security
    • Hardening Linux Web Stacks
  • Networking
    • ASA Logs to CloudWatch
    • Cisco Firepower SAML/MFA
  • Power Platform
    • SMS Notification
    • Delegation
  • Projects
    • Sena 20S Evo Battery Replacement
  • PowerShell
    • M365 Offboarding Script
Hero Image
Hardening Legacy Linux Web Stacks Against PHP RCE

Overview When recent unauthenticated PHP RCE advisories dropped (targeting PHP_SESSION_UPLOAD_PROGRESS and oversized request bodies), I was in the middle of auditing several inherited Linux web servers I took over following a team retirement. While we work through a broader migration to move legacy workloads onto fresh, Terraform-managed infrastructure, I wanted to immediately reduce our PHP attack surface and add defense-in-depth controls across the existing hosts—without causing production downtime. Because I was working across live systems that lacked a 1:1 staging twin, I leaned heavily on Claude Code and AWS Systems Manager (SSM) to orchestrate the discovery, build hash-checked apply/rollback scripts, and run an automated curl verification suite after every change. Here is how we locked the environment down.

  • Security
  • Linux
  • AWS
  • ModSecurity
  • PHP
  • Claude
Tuesday, October 27, 2026 Read
Hero Image
A Repeatable Microsoft 365 Offboarding Script with Graph PowerShell

Overview Offboarding is one of those tasks that’s simple on paper and easy to get subtly wrong in practice. Miss a step and you end up with a departed user who still has an active session token, a mailbox nobody can read, or a license you’re paying for months later. Between employees and a steady rotation of contractors, I was offboarding people often enough that a checklist in my head wasn’t good enough. This post walks through the script I use now. It takes a UPN and runs the whole sequence the same way every time.

  • PowerShell
  • Microsoft Graph
  • Microsoft Entra ID
  • PIM
  • Exchange Online
  • Automation
  • Offboarding
Thursday, July 9, 2026 Read
Hero Image
Sending Cisco Firewall Logs to CloudWatch Without Drowning in Noise

Overview In an earlier post I set up SAML and MFA for VPN on a Cisco Firepower 1120 running ASA. Once that was in place, the next question was obvious: how do I know when something is wrong with the firewall without logging into ASDM every morning? We already ran most of our infrastructure in AWS, so Amazon CloudWatch was the natural place to land firewall logs. The first attempt worked, and it also sent everything. The log volume was noisy, expensive to keep, and useless for alerting. This post covers the version I ended up with: a small Linux syslog relay, a trimmed log stream, and a handful of metric filters that drive alarms and a dashboard.

  • Cisco
  • Firepower
  • ASA
  • Syslog
  • AWS
  • CloudWatch
  • Monitoring
  • rsyslog
Tuesday, April 14, 2026 Read
Hero Image
Moving 70 Mailboxes from Google Workspace to Exchange Online Without Losing a Message

Overview Email is the one system nobody notices until it stops working. When we moved a 70-person company from Google Workspace to Exchange Online, the goal wasn’t just “move the mail.” It was to move the mail without anyone missing a message, a calendar invite, or an automated workflow that quietly depended on a Gmail inbox. This post is the checklist I wish I’d had at the start. It’s written for small IT teams (often a team of one) doing a cutover without a migration partner.

  • Microsoft 365
  • Exchange Online
  • Google Workspace
  • Migration
  • DMARC
  • DKIM
  • SPF
  • Power Automate
Friday, October 24, 2025 Read
Hero Image
Configuring SAML and MFA on Cisco Firepower 1120

Overview Setting up SAML authentication with MFA on a Cisco Firepower 1120 for VPN access is essential for modern security requirements. Microsoft’s documentation provides a good starting point, but it’s missing critical CLI configuration commands for the Firepower side. This guide fills in those gaps and documents the lessons learned during implementation. Prerequisites Cisco Firepower 1120 with appropriate licensing and AnyConnect Microsoft Entra ID tenant with administrative access Access to Firepower via ASDM or CLI Your Firepower VPN’s public FQDN and SSL certificate configured Configuration Steps Step 1: Create the Enterprise Application in Azure Follow Microsoft’s guide to create the Cisco Secure Firewall app in Microsoft Entra ID:

  • Cisco
  • Firepower
  • SAML
  • MFA
  • VPN
  • ASDM
  • Microsoft Entra ID
Tuesday, August 12, 2025 Read
Hero Image
Replacing Excel with a SharePoint List for Inventory Management

Introduction Managing a small inventory in Excel can be convenient at first—but as the inventory grows, Excel often becomes more of a bottleneck than a solution. I recently decided to shift from an Excel-based approach to a SharePoint List for better flexibility, multi-user access, and integration potential with APIs (like Dell’s warranty service). In this post, I’ll walk you through: Why I moved from Excel to SharePoint How I set up the SharePoint List Automating warranty checks with the Dell API Lessons learned and future ideas 1. Why Move Away from Excel? Excel is great for quick data entry, but it shows its limitations when:

  • SharePoint
  • Inventory
  • Dell API
  • Automation
Monday, April 7, 2025 Read
Hero Image
Repairing my Sena 20S Evo: Battery Replacement & Right to Repair

Repairing my Sena 20S Evo: Battery Replacement & Right to Repair When my Sena 20S Evo finally refused to power on, I realized I had to replace its battery. Sena didn’t make the job easy. 5 small screws, a knob, and a glued-in battery made it a challenge. I ordered a replacement battery from Amazon: 802540-Motorcycles Bluetooth Replacement Intercom Battery This video really helped me out: How to Replace Sena 20S Evo Battery

  • Sena
  • Battery
  • Repair
  • Right-to-Repair
  • DIY
  • Tools
Wednesday, March 12, 2025 Read
Hero Image
Setting Up Docker and Jenkins on Raspberry Pi

Step-by-step guide to set up a Raspberry Pi to run Docker and Jenkins. Install and Configure Docker Configure Jenkins to Run in a Docker image Create a file named “Dockerfile.jenkins” with the following content and change the group ID to the Docker group Add the following to the Jenkins file Build and run the Docker image

  • Docker
  • Containers
  • DevOps
Thursday, February 20, 2025 Read
Hero Image
Delegation

I’ve been working on a canvas app to track and manage major IT projects. The app uses a SharePoint list as a datasource. Our executives also use the app and the PowerBI dashboard to review projects that require executive approval in the form of what we call our Change Advisory Board (CAB). I received feedback from a member of our CAB. “It would be nice to separate out the completed projects from all the other projects.”

  • Power Platform
Sunday, March 13, 2022 Read
Hero Image
SMS Notification PowerApp with Twilio Integration

SMS Notification PowerApp with Twilio Integration Problem Obayashi has a subscription to an SMS Emergency Notification platform. Access to the platform costs Obayashi approximately $5000 per year even if no messages are ever sent. That’s five thousand to reserve the right to use the platform. I was asked to take a look at different platforms to reduce cost. Solution I built a PowerApp that uses a Twilio connector. We pay for the messages that we use at a rate of $0.0075 per message and $1.00 per month to reserve a local number. This solution saved Obayashi about $4990 in cost.

  • Power Platform
Monday, June 1, 2020 Read
Navigation
  • About
  • Skills
  • Experiences
  • Education
  • Recent Posts
  • Accomplishments
Contact me:
  • dannoprojects 'at' gmail.com
  • dannoprojects
  • Dan Rowe

Toha Theme Logo Toha
© 2026 Copyright.
Powered by Hugo Logo