<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SysAdmin on Luke Hebert</title><link>https://lukehebert.com/category/sysadmin/</link><description>Recent content in SysAdmin on Luke Hebert</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 21 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://lukehebert.com/category/sysadmin/index.xml" rel="self" type="application/rss+xml"/><item><title>Basic Iptables Insert</title><link>https://lukehebert.com/post/basic-iptables-insert/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/basic-iptables-insert/</guid><description>Learn how to insert iptables rules at a specific position using the -I flag, with syntax breakdown and a practical SSH example.</description></item><item><title>Add Hard and Soft Limits for Apache Stack</title><link>https://lukehebert.com/post/add-hard-and-soft-limits-for-apache-stack/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/add-hard-and-soft-limits-for-apache-stack/</guid><description>Configure the soft and hard stack limits for the Apache user in /etc/security/limits.conf to prevent segmentation faults caused by insufficient stack space.</description></item><item><title>Awk Scan for wp-login</title><link>https://lukehebert.com/post/awk-scan-for-wp-login/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/awk-scan-for-wp-login/</guid><description>A quick awk pipeline to pull wp-login.php access attempts from web server logs and flag IPs that exceed a threshold. Useful for spotting brute-force or scanning activity against WordPress sites.</description></item><item><title>Check Apache Stack Limit</title><link>https://lukehebert.com/post/check-apache-stack-limit/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-apache-stack-limit/</guid><description>A quick one-liner to inspect the stack size limit applied to a running Apache httpd process on Linux. Useful when debugging segfaults or tuning worker memory.</description></item><item><title>Check Database and Optimize Everything (-A = all databases)</title><link>https://lukehebert.com/post/check-database-and-optimize-everything-all-databases/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-database-and-optimize-everything-all-databases/</guid><description>A quick reference for running mysqlcheck to verify and optimize MySQL databases, including the -A flag to target every database on the server in one pass.</description></item><item><title>Check for IP Block</title><link>https://lukehebert.com/post/check-for-ip-block/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-for-ip-block/</guid><description>A quick way to verify whether a specific IP address is blocked by iptables rules on a Linux host. Covers the exact command and how to read the output.</description></item><item><title>Check Inode Counts with Formatting</title><link>https://lukehebert.com/post/check-inode-counts-with-formating/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-inode-counts-with-formating/</guid><description>Practical bash one-liners for counting inodes per directory and reporting disk usage with formatted output. Handy when you need a quick snapshot of filesystem pressure without pulling in a full monitoring tool.</description></item><item><title>Check Web Crawler Impact</title><link>https://lukehebert.com/post/check-web-crawler-impact/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-web-crawler-impact/</guid><description>A quick bash function to identify which search engine crawlers are hitting your Apache logs and how often, so you can spot unusual traffic patterns at a glance.</description></item><item><title>Chroot Suggested Mounts for Rescue</title><link>https://lukehebert.com/post/chroot-suggested-monts-for-rescue/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/chroot-suggested-monts-for-rescue/</guid><description>A quick walkthrough of using virt-rescue to generate the correct mount commands for a chroot rescue session on a libvirt guest.</description></item><item><title>Count Unique Connecting Addresses</title><link>https://lukehebert.com/post/count-unique-connecting-addresses/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/count-unique-connecting-addresses/</guid><description>A quick pipeline using awk, sort, and uniq to count how many times each unique IP address appears in a log file. Handy for spotting the most active or suspicious clients at a glance.</description></item><item><title>Crontab Log</title><link>https://lukehebert.com/post/crontab-log/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/crontab-log/</guid><description>Find where cron logs live on your Linux system and learn how to read them to confirm scheduled jobs actually ran.</description></item><item><title>Disable ModSecurity on a Domain via .htaccess</title><link>https://lukehebert.com/post/disable-mod-sec-on-a-domain-htaccess/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/disable-mod-sec-on-a-domain-htaccess/</guid><description>Learn how to turn off ModSecurity for a specific domain or path using a single directive in your .htaccess file. This is useful when a legitimate request is being blocked by the WAF rules.</description></item><item><title>Drop All Mail in Exim</title><link>https://lukehebert.com/post/drop-all-mail-in-exim/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/drop-all-mail-in-exim/</guid><description>A quick one-liner to flush every message out of the Exim mail queue. Useful when a misconfigured relay or a flood of bounce messages has clogged up your server.</description></item><item><title>Emergency Extraction: When RPM Bites the Dust</title><link>https://lukehebert.com/post/rpm2cpio/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/rpm2cpio/</guid><description>Learn how to manually decompress an RPM package into a working directory using rpm2cpio and cpio, without installing the package.</description></item><item><title>Following the Mailman: Tracking Your Email's Route</title><link>https://lukehebert.com/post/verbose-tracking-of-mail-being-sent/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/verbose-tracking-of-mail-being-sent/</guid><description>A quick reference for enabling verbose output when sending mail from the command line, so you can see the full SMTP transaction and diagnose delivery issues.</description></item><item><title>Forceing MySQL Logs to File</title><link>https://lukehebert.com/post/force-mysql-logs-to-file/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/force-mysql-logs-to-file/</guid><description>Learn how to configure MySQL&amp;rsquo;s log_output variable to write slow query and general logs to files instead of tables, and why that matters for performance and log management.</description></item><item><title>Fsck Quick Reference</title><link>https://lukehebert.com/post/fsck/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/fsck/</guid><description>A quick reference for running a forced, verbose ext filesystem check with automatic repairs and timestamped logging.</description></item><item><title>gdb Thread Dumps</title><link>https://lukehebert.com/post/gbb-thread-dump/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/gbb-thread-dump/</guid><description>A quick three-command recipe for grabbing a full thread backtrace from a running httpd process with gdb, useful when Apache appears hung or unresponsive.</description></item><item><title>Getting Gateway Hostnames from Mail Logs</title><link>https://lukehebert.com/post/get-gateway-hostnamed-from-mail-log/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/get-gateway-hostnamed-from-mail-log/</guid><description>A quick bash one-liner to pull offending IP addresses from exim relay-denied entries and resolve them to hostnames, making it easier to identify which gateways are misconfigured.</description></item><item><title>IP Tables Rate Limit Bad Bots</title><link>https://lukehebert.com/post/ip-tables-rate-limit-bad-bots/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ip-tables-rate-limit-bad-bots/</guid><description>Use iptables string matching and the recent module to drop connections from abusive bots that exceed a request threshold within a short window.</description></item><item><title>Just a quick way to look at Inode Counts</title><link>https://lukehebert.com/post/inode-counts/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/inode-counts/</guid><description>A quick bash one-liner to identify which directories are consuming the most inodes on a Linux system, helping you pinpoint the source of &amp;lsquo;No space left on device&amp;rsquo; errors when disk space still appears available.</description></item><item><title>Locate Largest Files Top 10</title><link>https://lukehebert.com/post/locate-largest-files-top-10/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/locate-largest-files-top-10/</guid><description>A quick one-liner to identify the ten largest files or directories under any path. Useful when disk space is tight and you need to find what is eating your storage.</description></item><item><title>Lsof Check Listening Ports</title><link>https://lukehebert.com/post/lsof-check-listening-ports/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/lsof-check-listening-ports/</guid><description>A quick way to list every port a process is listening on, using lsof and a simple grep filter. Handy for troubleshooting connectivity issues or auditing what services are exposed on a host.</description></item><item><title>Memory by Process</title><link>https://lukehebert.com/post/memory-by-process/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/memory-by-process/</guid><description>A quick one-liner to group running processes by name and rank them by memory usage. Handy when you need to spot which services are eating RAM without pulling up a full top or htop session.</description></item><item><title>Mod Remote IP</title><link>https://lukehebert.com/post/mod-remote-ip/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-remote-ip/</guid><description>A troubleshooting walkthrough for getting mod_remoteip working correctly under Apache 2.4 and cPanel, including the right LogFormat directives and RemoteIP configuration so that access logs, mod_security, and other modules all see the real client IP.</description></item><item><title>Mod Rewrite and Blocking Bad Bot</title><link>https://lukehebert.com/post/mod-rewrite-block-bad-bot/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-rewrite-block-bad-bot/</guid><description>A quick Apache mod_rewrite snippet that returns a 403 Forbidden to any request whose User-Agent matches a bot pattern. Drop it into your .htaccess and you are done.</description></item><item><title>Mod_qos Tailblock</title><link>https://lukehebert.com/post/mod-qos-tailblock/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-qos-tailblock/</guid><description>A lightweight bash script that monitors Apache error logs for repeated access-denied entries and automatically blocks offending IPs via iptables. Useful for quick-and-dirty rate-based blocking without a full WAF.</description></item><item><title>Mount a Labeled Drive Like Backup</title><link>https://lukehebert.com/post/mount-a-labeled-drive-like-backup/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mount-a-labeled-drive-like-backup/</guid><description>Learn how to mount a filesystem by its label in /etc/fstab so your mount points stay stable across reboots and hardware changes.</description></item><item><title>MyISAMchk</title><link>https://lukehebert.com/post/myisamchk/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/myisamchk/</guid><description>A quick reference for repairing corrupted MyISAM index files with myisamchk, including the exact command and what to expect when running it against a database directory.</description></item><item><title>Netstat and SS: Check Listening Ports</title><link>https://lukehebert.com/post/netstat-ss-check-listening-ports/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/netstat-ss-check-listening-ports/</guid><description>A quick reference for checking listening ports on Linux using netstat and ss, including the flags that matter and what each output column means.</description></item><item><title>NUMA: An Update to the MySQL Swap Insanity</title><link>https://lukehebert.com/post/numa-update-to-mysql-swap-insanity/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/numa-update-to-mysql-swap-insanity/</guid><description>A follow-up to the original MySQL NUMA swap post, explaining why the real issue is memory pressure on a single NUMA node rather than swap itself, and outlining a three-part solution for balanced allocation in production.</description></item><item><title>ps aux States</title><link>https://lukehebert.com/post/ps-aux-states/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ps-aux-states/</guid><description>A quick reference for the process state codes shown in the STAT column of ps aux, including both standard and BSD-specific flags.</description></item><item><title>Saving Your Bacon with Linux RCS</title><link>https://lukehebert.com/post/linux-rcs/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/linux-rcs/</guid><description>A quick reference for the core RCS (Revision Control System) commands used to initialize, check in, check out, and log file revisions on a Linux system.</description></item><item><title>Stop Slow Loris Attacks</title><link>https://lukehebert.com/post/stop-slow-loris-attacks/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/stop-slow-loris-attacks/</guid><description>Slow Loris attacks tie up web server sockets with trickling requests until legitimate traffic is starved. This post walks through configuring Apache mod_qos to detect and block those connections automatically.</description></item><item><title>Sync MySQL Time</title><link>https://lukehebert.com/post/sync-mysql-time/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/sync-mysql-time/</guid><description>A quick procedure to verify and correct a time mismatch between the host system clock and MySQL&amp;rsquo;s internal NOW() function, using a simple service restart.</description></item><item><title>The Inode Rescue: Finding Lost Souls with Printf</title><link>https://lukehebert.com/post/find-command-printf-switches-lost-found-and-find-output-format/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/find-command-printf-switches-lost-found-and-find-output-format/</guid><description>A quick reference for GNU find -printf format switches, with practical examples for inspecting file ownership, size, and mode. Includes a use case for auditing files recovered into lost+found after a filesystem check.</description></item><item><title>Understanding Linux Permissions</title><link>https://lukehebert.com/post/understanding-linux-permissions/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/understanding-linux-permissions/</guid><description>A practical breakdown of how Linux file permissions work, including the symbolic and numeric chmod methods, special bits like setuid and sticky, and how permissions differ between files and directories.</description></item><item><title>Understanding Load Averages</title><link>https://lukehebert.com/post/understanding-load-averages/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/understanding-load-averages/</guid><description>A practical guide to reading Linux load averages, with a traffic analogy that makes the numbers click. Learn the thresholds that matter, how multi-core systems change the math, and which of the three averages to watch.</description></item><item><title>Unmounted Disk Labels</title><link>https://lukehebert.com/post/unmounted-disk-labels/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/unmounted-disk-labels/</guid><description>A quick bash one-liner that lists every disk label present in /dev/disk/by-label/ that is not currently mounted, so you can spot forgotten or orphaned volumes at a glance.</description></item><item><title>Updating VM Memory Usage Configs</title><link>https://lukehebert.com/post/update-vm-memory-usage/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/update-vm-memory-usage/</guid><description>Tune Linux VM memory behavior by adjusting vfs_cache_pressure, dirty_ratio, and swappiness to reduce unnecessary swapping and improve I/O throughput.</description></item><item><title>Using an htaccess file to rewrite a block page with Apache</title><link>https://lukehebert.com/post/rewrite-block-page-check-for-patterns-check-google/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/rewrite-block-page-check-for-patterns-check-google/</guid><description>Use Apache mod_rewrite to return a 400 error for a specific URI and optionally block hotlinking from other domains. A quick .htaccess snippet that keeps unwanted traffic off a single page.</description></item><item><title>Error 53: The Server Has Left the Chat</title><link>https://lukehebert.com/post/server-is-unwilling-to-perform-53/</link><pubDate>Wed, 16 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/server-is-unwilling-to-perform-53/</guid><description>LDAP error 53 means the destination server is refusing a password change request. This post walks through the most common Active Directory requirements and policy settings that trigger the error.</description></item><item><title>Checking Host Resolution Using getent</title><link>https://lukehebert.com/post/checking-host-resolution-using-getent/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/checking-host-resolution-using-getent/</guid><description>A quick reference for using getent to verify how your Linux system resolves hostnames, short names, and IP addresses through the full NSS chain.</description></item><item><title>Mount Output in Columns: Formatted Output for Mount List</title><link>https://lukehebert.com/post/mount-output-in-columns-formatted-output-for-mount-list/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mount-output-in-columns-formatted-output-for-mount-list/</guid><description>Pipe the mount command through column -t to get a clean, aligned table of all mounted filesystems. A quick sysadmin trick for scanning devices, mount points, and options at a glance.</description></item></channel></rss>