Posts

2024

Moving away from WordPress

Yes, I'm moving Sysadmins of the North away from WordPress and migrate to another CMS.

Disable ECDH public server param reuse in Windows Server IIS

Windows Server IIS is known for reusing DH key values, but there is a way to disable ECDH public server param reuse in Windows Server IIS and here is how.

Create strong passwords in Windows

Learn how to create strong and unique passwords in Windows using PowerShell, because the use of those is important. Whereas creating a secure password was difficult in Windows, you nowadays have the tools at hand to do this properly. Unique passwords keeps you safe(r) online and all those unique passwords are easily and securely stored in a password manager.

Install IIS in Windows 11 using PowerShell

Have a need for IIS in your Windows 11 development station, and now you wonder how to install IIS? Here I describe how you can easily install IIS and some modules using PowerShell

Monitor website performance in IIS with Zabbix

Zabbix is a great tool to monitor your website performance on IIS using Performance Counters, PowerShell and WMI.

2023

Use PowerShell with SSL client certificates for HTTPS GET requests

Sometimes you have use a specific TLS/SSL certificate or thumbprint for outgoing HTTPS connections because of endpoint restrictions. To test these connections you can use PowerShell, but how do you get the required certificate from your certificate store?

Test if a port is open with PowerShell

Learn how to use PowerShell Test-NetConnection to test if a TCP port is open

Calculate SHA-256 checksums in PowerShell

Learn how to calculate and create file checksums with PowerShell's Get-FileHash and certutil.exe. Use this to validate file integrity in Windows (Windows Server).

IPv6 support for WSL2! 🥳

Windows Subsystem for Linux (WSL) 2 now has native support for IPv6! 🥳

Windows SID to username and vice versa

Old school: learn how to convert a Windows SID (security identifier) to an username, or vice versa (username to SID) using PowerShell and VBScript.

Get SQL database backup details with PowerShell

Whenever I need to restore an SQL Server .bak backup file, I want to know some properties of the backup file to make sure I'm working with the correct file(s). Luckily, the .bak file and PowerShell provide all the information I need, so I don't have to start a Restore procedure in SQL Server Management Studio (SSMS) just to view the header information. As you know, SSMS is slow...

Get IIS Current Connections using PowerShell

Use Get-Counter in PowerShell to get the current number of connections to IIS hosted websites. This information is stored in Windows Server Performance Counters, and you can get it using `Get-Counter` cmdlet in PowerShell of course. But in post I'll show you a different - and perhaps even faster - method using CIM and Win32_PerfRawData_W3SVC_WebService. Read on...

Install SSL/TLS certificates in Windows Server using PowerShell

The following PowerShell snippet can be used to quickly install an SSL (or TLS) certificate in Windows Server. It assumes you have a PFX file and its password. The default location is Cert:\LocalMachine\My, to use for IIS websites.

Tune Windows Server TCP/IP and IIS

In this small post I'll guide you through the various Windows Server and IIS configuration settings, for an optimized network performance, high performance websites and high volume of web requests.

Install Windows Updates using PowerShell

You can use PowerShell to install Windows Updates automatically, unattended and simple. Neat, right? For this, you don't have to have an enterprise environment with WSUS, or Windows Server, but since this is Sysadmins of the North, I assume you do. In this post I'm show you how to install Windows Updates with PowerShell and the PSWindowsUpdate module.

Send email with PowerShell

Easily send your DevOps reporting by email with this PowerShell function, because the Send-MailMessage cmdlet is obsolete. Of course you'll be using StartTLS and authenticated SMTP as additional security.

Are you in my blocklist?

With just a few manual steps, you create your own little blocklist for WordPress in either a `.htaccess` or `web.config` file. Here are the IP addresses I'm currently blocking. Note, this list can get long (loooonnggg).

2022

Create an additional SQL Server Login

Here is a small T-SQL snippet that creates such a login for contained databases in SQL Server and adds memberships.

Monitor SQL Server and databases in depth using Zabbix

Whether you run a .NET web application or administer a webserver that hosts .NET web applications, it is important to keep an eye out for memory usage. As developers and systems administrators we're all too familiar with OutOfMemoryException. As the name suggests, the exception is thrown when a .NET application runs out of memory, something you don't want to happen.

Query all WordPress posts in MySQL not having a Yoast SEO meta description

If you just started using Yoast SEO it's sometimes nice to know which posts don't have a meta description yet. Knowing this, you can add the description which is good for your SEO results. Here is a query you can use to query all posts in WordPress not having a Yoast SEO meta description yet. You can run this on your MySQL prompt or in phpMyAdmin.

Configure Windows Debugging Symbols in WinDbg

In this article I explain how to set up debugging symbols for WinDbg in Windows.

Extract files from an MSI package

To extract all files from a .msi file, use the following msiexec command and arguments.

Connect to a KVM host through an ssh tunnel and arbitrary port in Windows 11 and WSL 2

If you need to connect virt-manager to a KVM host over ssh in Windows, then Windows 11 and WSL 2 made things a whole lot easier for you. Even if you need to connect virt-manager through an ssh tunnel and arbitrary port because your network is reachable only through a bastion host with ssh key authentication. Here is how.

Windows 11/10 and WSL 2 DevOps environment

In this post I describe some of the settings and changes I made to make my Windows 10 and Ubuntu WSL into a fully fledged development environment. Here are the settings and tools I use for DevOps/SysOps on Windows.

YubiKey support in OpenSSH for Windows 11 and Windows 10

Now Win32-OpenSSH has decent support for FIDO/U2F hardware authenticators you can finally use your YubiKey for SSH authentication in Windows 11, jeej! Here is how.

How to display longer username in `ps`

Have you ever had the need to show the full username in ps output? Here is how. Normally in Bash, the ps output truncates an username to 7 characters and a \+ sign, e.g IUSR_60\+. In cases when you absolutely need the full username in ps, this can be pretty annoying. Here is how to display longer usernames in ps

Monitor .NET CLR Garbage Collected heap from your web application

Whether you run a .NET web application or administer a webserver that hosts .NET web applications, it is important to keep an eye out for memory usage. As developers and systems administrators we're all too familiar with OutOfMemoryException. As the name suggests, the exception is thrown when a .NET application runs out of memory, something you don't want to happen.

Quickly check EnableTrailerSupport isn't set in your network for http.sys (CVE-2022-21907)

Find out fast if your IIS webservers have EnableTrailerSupport enabled for https.sys in the registry

Convert SqlCe database to SQL Server

Now the SQL Server Compact (SQL CE) database type is unsupported, it's recommended by Microsoft to upgrade to SQL Server. But how do you convert your SqlCe database? I'll explain in this article, read on.

2021

How to optimize Umbraco 8 performance

Out of the box, Umbraco is a well built and pretty fast content management system. However, it is still important you perform some steps to further optimize Umbraco's performance and loading speed.

3 Ways of blocking sendmail.php on IIS webserver

Here are 3 ways of blocking access to a PHP sendmail.php script on your Windows Server IIS webserver. This comes in handy if a websites on your webserver sends out spam and you need to block access to a script on a specific website or globally in IIS. You can use a web.config file for this purpose, and here is how.

How to extend TinyMCE in Piranha CMS?

In Piranha CMS you can easily extend TinyCME with additional plugins, here is how.

How to add a trailing slash in Umbraco 8

This article shows you how to add a trailing slash to URL's in Umbraco 8, using IIS URL Rewrite Module, without breaking the Umbraco backend. Forcing one particular URL avoids duplicate content, which is important for SEO.

Adding VirtIO drivers to Windows Recovery Environment (Windows RE)

Learn how to add VirtIO drivers to your Windows Recovery Environment (Windows RE) to recover your Windows virtual machines. Using Powershell ofcourse and Windows Server 2022.

Retrieve SSH public key from Active Directory for SSH authentication

If you have tens (hundreds) of servers and/or users it's easier to retrieve user SSH public keys from Active Directory (AD) than from various unmanaged authorized_keys files.

Install SQL Server cumulative updates silently

Installing SQL Server cumulative updates is always a cumbersome, and quite daunting task. Unpacking and running the CU installer is a slow process, you have to click through a lot of screens, and it's hard to get it to install silently. But here is how!

Remove computer object from Windows Server Update Services (WSUS) in PowerShell

Here is a short PowerShell snippet for you to remove a computer object from Windows Server Update Services (WSUS).

How to add, list and remove IP addresses in Windows Firewall

How to bulk add IP addresses in Windows Firewall, list an IP address and how to remove all IP addresses from Windows Defender Firewall with Advanced Security

Block brute force attacks on SQL Server, block IP addresses in Windows Firewall using PowerShell

This PowerShell solution blocks IP addresses that are trying to brute-force your SQL Server logins, by blocking IP addresses in Windows Defender Firewall with Advanced Security.

Windows Defender: Turn off routine remediation (DisableRoutinelyTakingAction)

You can turn off Windows Defender routine remediation using a GPO setting called "DisableRoutinelyTakingAction". This policy setting allows you to configure whether Microsoft Defender Antivirus automatically takes action on all detected threats.

How to enable HTTP/3 in Windows Server 2022

With the release of Windows Server 2022, there is now native support for hosting HTTP/3 services in IIS 10.0. Jeej!

How to share OpenSSH keys with WSL in Windows 10

Don't want to copy over your ssh keys from Windows to WSL 2 Linux? Or generate new ones? Then share your Windows OpenSSH key with WSL 2! The OpenSSH config gives you the option to share keys using an IdentityFile directive. Here is how you can share your SSH keys between Windows 11/10 and WSL 2.

Increase WMI memory to support large volume of queries

Learn how to fix memory issues and subsequent crashes in WMI / WmiPrvse.exe by increasing available memory and handles

How-to fix Windows Defender error "Get-MpComputerStatus : The extrinsic Method could not be executed."

Enabling Windows Defender per GPO errored out with the error message "Get-MpComputerStatus : The extrinsic Method could not be executed.", here is how to resolve this issue.

Install and setup IIS Manager for Remote Administration in Windows Server IIS (step by step)

You can use IIS Manager to administer various components of your website through a graphical user interface (GUI) if it's hosted in Windows Server IIS. In this article you'll learn how to install and setup IIS Manager in Windows 11/10 to manage your website(s).

Delete saved RDP credentials from Windows 10 Credentials Manager, using cmdkey

Execute the following command in an elevated `cmd.exe` command-prompt terminal to quickly delete all saved Remote Desktop credentials from your Windows 10 Credentials Manager

Getting more out your Windows Performance Counters monitoring for web applications - part 3

Zabbix monitoring for your websites and ASP.NET applications in IIS using _Process Performance Counter.

Monitor IIS application pools in Zabbix, part 1

Here is a small introduction to query the number of running w3wp.exe processes per IIS application pool in Zabbix so you can start monitoring Microsoft Windows Server IIS with Zabbix.

ASP.NET web application monitoring in Zabbix, part 2

When you host multiple websites in IIS, and you need to monitor them, Zabbix is one of your options. In Zabbix, you can take advantage of Windows Server performance counters. And in this article I show you some important Windows performance counters you can use to monitor your ASP.NET web application in Zabbix.

Disable WordPress XCloner Plugin logger in MySQL / phpMyAdmin

If XCloner Logger option is enabled, it will store a log file inside the xcloner-XXXXX folder inside the backup archive. This can generate a huge amount of temporary files and log files, slowing down your file system.

Disable Joomla Contacts component (com_contact) in MySQL / phpMyAdmin

The built-in Joomla contact forms component (com_contact) is abused by spammers, I explain how to disable these forms and combat this abuse.

2020

Force HSTS in Apache .htaccess

Learn how to enable HSTS in Apache .htaccess configuration file to start using HTTP Strict Transport Security (HSTS)

Install OpenSSH in Windows Server

OpenSSH is an ideal and secure way of performing remote maintenance & administration on your servers. Even on Windows Server! :-)

Emulate ternary operator in PowerShell

For example when determinering if the server you are servicing is a Windows Server Desktop Experience version or Server Core

How to remove IIS from Windows Server using PowerShell

How to remove IIS from Windows Server using PowerShell

Force BITS to download WSUS updates in the foreground in Windows Server

WSUS uses BITS for downloading updates, and it does so in background mode. Unfortunately, this utilizes remaining bandwidth of the server instead of its full capacity. To speed up WSUS downloads, you can configure BITS in WSUS to use foreground priority.

Securing privileged access

Protect your privileged admin credentials!

Hugo development environment in WSL 2

Using WSL it is pretty easy to install Hugo, set up your development environment and configure Hugo to listen on your Ubuntu's IP address, here is how.

Quickly view all symbolic links, junctions points and hard links in a folder

When you migrating a file server and transfering data, you may need to recreate junction points, as they cannot be copied using (for example) Robocopy. This makes it a must to know where you have junction points, and that is where PowerShell and even plain old cmd.exe DIR come to the rescue.

How to Fix Yoast SEO for WordPress DeleteDuplicateIndexables MySQL error

A possible fix for Yoast broken DeleteDuplicateIndexables statement

Count and display number of WordPress users in your Dashboard

Show the number of registered WordPress users in a At-a-Glance widget. This is particular handy as an indicator of compromise (IoC), when a hacker has registered numerous new users in your WordPress database for spam purposes.

Find vulnerable WordPress plugin versions fast using PowerShell

Use PowerShell to find vulnerable WordPress plugins on your Windows webserver fast, because on a daily bases, new vulnerabilities are found in WordPress plugins and you can count on the fact you have customers using that vulnerable version of that particular plugin.

Disallow direct access to PHP files in wp-content/uploads/

It's recommended to disallow access to and execution of PHP files in wp-content/uploads folder. Preferably without the use of a security plugin. Blocking access to PHP files in WordPress wp-content/uploads folder is easily achieved with .htaccess on Linux Apache, or `web.config` accesssPolicy in Windows Server IIS. And here is how.

WMI Filters for Group Policy to manage Windows Server versions

This post contains some example WMI filters for you to use in Group Policy Objects (GPOs) to target and manage specific Windows Server versions like 2012R2, 2016 and Windows Server 2022/2019.

Basic Authentication module for Windows Server IIS 10

Basic Authentication managed HTTP module for IIS 10 with virtual users support. In my pursuit of a basic authentication alternative in IIS, other than the built-in Basic Authentication module or Helicon Ape, I came across Devbridge AzurePowerTools. It's apparently one of few HTTP managed modules for IIS that enables HTTP Basic Authentication with support for virtual users.

IIS 10.0 FTP IP Security allow list

In this post I'll show you how to configure an IP allow list for IIS FTP Server using PowerShell, iisadministration and webadministration modules

2019

Removing phantom application folders from website configuration in IIS

How to remove phantom application folders from websites in IIS using PowerShell

Delete spam comments after three (3) days

Change Akismet interval to three days instead of 15 days for deleting spam comments using the akismet_delete_comment_interval filter

IIS backup and restore

Backup and restore IIS 10 webserver configuration with appcmd.exe and PowerShell

How to fix System.Collections.Generic.KeyNotFoundException "The given key was not present in the dictionary" Exception with MySQL Connector/NET and utf8mb4 character set

MySQL Connector/NET and utf8mb4 character set can cause an exception System.Collections.Generic.KeyNotFoundException "The given key was not present in the dictionary".

Reduce Wordfence CPU usage, disable Wordfence "Live Traffic View"

The Wordfence "Live Traffic Options" ("Traffic logging mode") feature can cause high CPU usage and load issues for WordPress websites.

Use -SearchBase with Get-ADComputer for faster results

Using -SeachBase with PowerShell's Get-ADComputer gives me faster results with AD DS queries.

Install Windows Server Servicing Stack Updates (SSU) using PowerShell

Install Servicing Stack Updates (SSU) for Windows Server 2012R2, 2016 and Windows Server 2019 using PowerShell, without downtime

Automatically flush Redis cache after publishing a WordPress post

Did you know you can automatically flush opcode caches like Redis when you publishing a post or page in WordPress? Doing so ensures you and your visitors see the newly created content immediately.

Setting up Monit monitoring in Windows Subsystem for Linux WSL

How to install and configure Monit monitoring in Windows 11/10 WSL

2018

Silently import .reg file in your Windows registry

Learn how to silently import a .reg file into your Windows Registry. This neat regedit trick comes in handy quite often. The regedit command is valid for Windows 11, 10, Windows Server 2022, 2019 and older.

How to uninstall and remove Adobe Flash Player in Windows Server

You can easily uninstall and remove Adobe Flash Player from Windows Server using Deployment Image Servicing and Management (DISM)

11+ Tips to optimize Umbraco 7 CMS

11+ tips to optimize Umbraco 7 performance on Windows Server

WordPress .htaccess security best practices in Apache 2.4.6+

Since Apache 2.4.6, a new module is used to configure and set up access control for websites: mod_authz_core. This means you have to use a different syntax for allowing or blocking hosts and IP addresses to your website.

How to set SVN_EDITOR environment variable in Windows Server

Learn how to set SVN_EDTIROR environment variable in Windows Server to resolve subversion errors

Manually failover all databases in an SQL Server Database Mirroring configuration

A manual SQL Server failover can only be initiated from the principal server, and the mirrored database must be synchronized (that is, when the database is in the SYNCHRONIZED state). In this article I will show you how to manual failover mirrored SQL Server databases using Transact-SQL (T-SQL) in SQL Server 2017 and up.

ASP and ASP.NET connectionstring examples for Microsoft SQL Server and MySQL

A connectionstring is sometimes a bit obscure. Do I need ODBC or OLE DB? When you need one and Google for it, you often find old ones that either don't work at all anymore, or are not optimal. This article provides you with a couple of ASP.NET to SQL Server connectionstring examples, and as a bonus for ASP to MySQL too.

MySQL Connector/ODBC C# test script

Quickly test the MySQL database connection from ASP.NET using this C# test script. It utilizes the MySQL ODBC 8.0 Unicode Driver and SslMode is available.

Working with file attributes in PowerShell

Working with PowerShell Get-ItemProperty to get file attributes may boost your work productivity. It's often easier to getting things done if you have a more generic way of doing something. Here is how to use Get-Item and Get-ItemProperty in PowerShell to perform and streamline day to day tasks like installing or updating software based on file versions. I also address changing timestamps on files in short.

How to use SSL in PHP Data Objects (PDO) mysql

If you want to connect securely to your MySQL database using PHP Data Objects (PDO), here is how to connect to MySQL with PHP PDO using an SSL encrypted connection.

Fatal error: Uncaught Error: [] operator not supported for strings - PHP 7.1

With PHP 7.1, some PHP web applications fail because of deprecated code usage. This may result in an error message like `[] operator not supported for strings` for various Joomla, WordPress and Drupal components. Here's how to fix this code for PHP 7.1+.

Windows Server 2016 on Hyper-V stuck at stopping

When a Windows Server 2016 guest VM on Hyper-V hangs while stopping after Windows Updates, and it won't reboot, it might be caused by the recovery debug information type set. Here is some additional information.

List all SPNs used in your Active Directory

List Service Principal Names (SPNs) in your Windows network quickly using PowerShell

Increase WordPress' memory limit WP_MEMORY_LIMIT properly in wp-config.php

2017

How to: Determine which .NET Framework versions are installed

Users can install and run multiple .NET Framework versions on their computers. When you develop or deploy your app, you might need to know which .NET versions are installed on a machine.

How to unzip a file in PowerShell

Unzip a file on your PowerShell command-prompt may come in handy sometimes, even on your Windows 11/10 workstation. Use Expand-Archive for this, and all that is required is PowerShell 5.0+, or the .NET 4.5+ Framework to use System.IO.Compression.ZipFile.

Restore single MySQL table from a full mysqldump backup file

Release hold queue email in Postfix - postsuper

The `postsuper` command controls different types of queues in the Postfix mail system, like the deferred or hold queue. This post shows you some Postfix queue operations to maintain your mail servers.

How to determine if a SQL Server backup is compressed?

Compressed SQL Server backups can be verified in PowerShell using a handy PowerShell function. This comes in handy when you need to verify if existing SQL Server backups are compressed.

How to turn off the TLS default in FileZilla?

Protect WordPress from brute-force XML-RPC attacks

WsusPool keeps crashing: stops again and again

WSUSPool keeps stopping? Sometimes you find your WSUS server keeps crashing over and over again. The WSUS application pool periodically stops, WSUS is unavailable and/or the WSUS management console hangs.

Remove Jetpack email sharing service

Merge multiple files into one new file in Windows

What are 4 important security measures for Windows Server & IIS 10?

In this post I address four (4) important actionable security measures for your servers running Windows Server (AD DS, DFS, IIS) and RDP.

How to disable SMBv1 in Windows 10 and Windows Server

It is urged you disable SMBv1 in your Windows variant (Windows 10, 8.1, Server 2016, 2012 R2), and here is how if you haven't done so yet.

How to detect ethernet network speed in Windows

Being able to detect the ethernet network speed using PowerShell or WMI is perfect for Windows Server Core. If you ever need to lookup the speed of your ethernet network card in Windows, on the command-prompt, use one of the following PowerShell / WMIC commands.

DisableNSRecordsAutoCreation with Dnscmd

This post explains how to restrict automatic NS resource record registration in Windows Server DNS using Dnscmd. This prevents Windows Server DNS to automatically create NS records for zones that it hosts on the server.

How to make Twenty Seventeen theme full width in WordPress

The default WordPress theme Twenty Seventeen's content width can be easily changed to full width. All you need is this bit of CSS. To make Twenty Seventeen full width in WordPress, add the following CSS to your theme's CSS file, or in Customizer's Additional CSS.

2016

Check WordPress Core files integrity

Enable NTFS long paths GPO in Windows Server 2022, 2019 and Windows Server 2016

Windows Server 2016 was finally released last week, meaning we can finally lift the idiotic 260 characters limitation for NTFS paths.

Clear PHP opcode caches before WordPress Updates: ease the updating process

WordPress core-, plugin- and theme updates sometimes fail because of enabled opcode caches in PHP. Popular PHP opcode caches are OPcache, WinCache and APC. This little WordPress Must Use Plugin tries to flush opcode caches. Making your live a bit easier when updating WordPress Core, Plugins and Themes.

The WinCache effect: Save with object caching

WinCache, or Windows Cache Extension for PHP, is a PHP accelerator that is used to significantly increase the speed of PHP applications running on Windows Server IIS. Besides increasing the speed of PHP applications, WinCache decreases CPU usage making it a win win situation extension.

Measure WordPress loading time and queries

During an HTTP request, WordPress executes a lot of queries on your MySQL database. Not just the database queries take time, also loading and executing PHP takes time. How to measure WordPress loading time and executed database queries?

Benchmarking WordPress, simple load & speed testing with ApacheBench

In this post I show you how you can benchmark the loading speed of your WordPress. For this you use ab, or ApacheBench. ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs.

Intrusion Detection with Windows Event ID's

This paper is the best I have ever read on how to build IOC's with Windows Event ID's. I highly recommend you to read it, it contains very useful information and some very interesting behavioral examples of attacker activity. If you are looking to enhance your detection in your core network this is the document!

Tips to speed up WordPress, serve gzip compressed static HTML files

Optimized WordPress hosting (9+ practical tips)

WordPress advisory Akal premium theme XSS vulnerability

Over the course of one week I had the opportunity to audit two hacked WordPress websites. I could quickly discover two vulnerabilities, a Cross Site Scripting, or XSS, in a premium WordPress theme Akal, and a Denial-of-Service in an undisclosed newsletter plugin.

5 Extra ways to clean up disk space in Windows Server

Available diskspace usage is often an issue with Windows Server from 2012 and up. Here are five extra ways to clean up disk space in Windows Server.

List all MAC addresses of all Hyper-V Virtual Machines

You sometimes need to list and get all MAC addresses of all Hyper-V virtual machines in your network. Either for your Hyper-V administration or provisioning if you don't set an unique MAC address automatically. Here is how to get all those MAC addresses easily with PowerShell.

SSL in WordPress: how to move WordPress to HTTPS? The definitive guide

Having an SSL certificate in your WordPress is the de-facto standard nowadays, did you know that? Google ranks sites having HTTPS higher in their SERP. But in WordPress, how do you configure an SSL certificate and HTTPS URL? You'll learn the important steps to move WordPress from http to https in this post.

MySQL InnoDB performance improvement: InnoDB buffer pool instances - Updated!

KMS Migration from 2008 R2 to Windows Server 2012 R2 and KMS Activation Known Issues

How to install IIS URL Rewrite Module on Windows Server 2016 & IIS 10

When you start to play with Windows Server 2016 and IIS 10, you'll get an error when you try to install the IIS URL Rewrite Module in IIS. The error occurs because the URL Rewrite Module installer contains an invalid version check for the IIS being used. Here is how to install IIS URL Rewrite Module 2 in IIS 10...

PowerShell blacklist check script: find an IP address' blacklist status & reputation

Ghost on IIS with HTTPS, how to resolve a "Too many redirects" error

When you use iisnode to host the Node.js blogging software Ghost on your IIS web server you may encounter a \"Too many redirects\" error while setting up and TLS/SSL certificate for your site. Here is the solution.

AppCmd introduction and examples

The `AppCmd.exe` command is your one-stop-shop for administering Windows Server IIS web servers. In combination with WinRM it's your Swiss Army knife for your daily routine. This post introduces appcmd and provides you with a lot of helpful appcmd examples.

Get current number of FTP client connections (NonAnonymous) with PowerShell and Get-Counter

Ever wanted to know the current number of active FTP client connections on your Windows Server IIS FTP Service? You can get this statistic using PowerShell, the `Get-Counter` cmdlet and the Microsoft FTP Service Current NonAnonymous Users performance counter.

Simple PowerShell introduction for Windows Server administration, automation and scripting

Windows PowerShell is an important tool in Windows Server for administrators. You can use PowerShell for Windows Server administration, software installation, automation, and shell/command-prompt scripting.

Binary webshell through OPcache in PHP 7

Windows Update error 0xc1420127 and 0xc190010b when upgrading Windows 8.1 to Windows 10

After downloading the Windows 10 update through Windows Update, Windows Update returned errors `0xc1420127` and `0xc190010b`, even after using the Windows 10 media creation tool

How to install Microsoft's SQL Server Driver for PHP

This post walks you through the steps necessary to install the SQL Server driver and SQLSRV extension for PHP 7+, on Windows Server IIS of course.

Optimize WordPress MySQL tables through Cron, behind the scenes

To regularly optimize my WordPress database tables, I created a small plugin that utilizes the WordPress Cron feature. This comes in handy to perform database optimization for WordPress on a regular basis, without forgetting about it. Just activate and enjoy. And here is the plugin code.

HackRepair.com's Bad Bots .htaccess in web.config for IIS

Learn to protect your WordPress website with this web.config file

IIS URL Rewrite "Rewrite Module error: Expression contains a repeat expression"

Cracking PHP rand()

This is a very interesting read about how PHP rand() works, and how to attack & crack it...

Recursive scp and symlinks

TL;DR, when using recursive scp, symbolic links aren't preserved and are copied as if they are normal directories. So you have to look for another solution to recursively transfer symlinks over ssh. Use Tar over ssh!

Deny vulnerable WordPress plugins using Windows Server File Server Resource Manager's File Screens

2015

Install Elasticsearch on CentOS 6.7

Install Varnish Cache on CentOS 6.7

Minify WP-Super-Cache HTML cache files: WPSCMin a WP-Super-Cache plugin

SQL Server versions list

How to identify your Microsoft SQL Server version, build and edition.

Generate pseudo-random passwords with OpenSSL

OpenSSL comes in handy when you need to generate random passwords, for example for system accounts and services. In this short post I'll give you a quick example on how to generate random passwords with OpenSSL in Linux (Bash), Windows and PHP.

Always_populate_raw_post_data setting in PHP 5.6 & Magento 2.0

How to fix upgrades to Magento 2.0 in PHP 5.6 and higher: PHP 7+.

PowerShell return value, exit code, or ErrorLevel equivalent

RewriteProxy with .htaccess in IIS

Get Hyper-V guest serial number with PowerShell

Learn how to retrieve the Hyper-V virtual machine's serial number with PowerShell

How to block BaiduSpider bot User-Agent?

The Baidu spider (BaiduSpider user agent) can be a real pain to block, especially since it does not respect a robots.txt as it should. This post shows you how to block Baidu Spider bot, using IIS URL Rewrite Module based on its User-Agent string.

Optimize PHP's OPcache configuration

How to add conditional analytics tracking code in WordPress Multisite

Learn how to conditionally add Google Analytics tracking code to your WordPress Multisite

Add a delay to your WordPress login form

It is important to protect your WordPress website from brute-force attacks, and various security exist in doing so, but don't blatantly copy from other sites without proper testing, as this post points out.

My WordPress web.config

How to enable HTTP Strict-Transport-Security (HSTS) on IIS

Tunnel RDP through SSH & PuTTY

Monitor Windows services with PowerShell

Schedule a PowerShell script to monitor local services in your Windows Server environment

PowerShell Get-FsrmQuota and Set-FsrmQuota

To get and set File Server Resource Manager NTFS quota you now have to use PowerShell FileServerResourceManager cmdlets. It's pretty easy to get directory information with Get-FsrmQuota and change dirquota.exe using Set-FsrmQuota.

Set IIS Application Pool recycle defaults to Specific Times, not Regular Time Interval

By default, an IIS application pool (or "AppPool") recycles on a regular time interval of 1740 minutes, or 29 hours. One reason for this time interval is that application pools don't recycle at the same moment every day (every day at 07.00 for example).

PHP 5.6 default_charset change may break HTML output

An important note for everyone who's upgrading from PHP 5.4 and PHP 5.5, to PHP 5.6. The PHP `default_charset` in php.ini changed from "empty" to UTF-8, making UTF-8 the default charset in PHP. This may break HTML output if you try to set a different charset in your HTML head. It may also break functions like htmlentities() and htmlspecialchars.

Turn off swap

Redirect HTTP to HTTPS

In this post I provide you various HTTP to HTTPS redirection methods, for Windows Server IIS and Linux Apache. Use these examples to your advantage to secure the traffic between your visitors and your website.

Software deployment through WDS

Monit monitoring on Ubuntu 14.04 VM on Hyper-V

Convert PHP ext/mysql to MySQLi

Migrating away from ext/mysql to MySQLi (or PHP Data Object ([PDO](http://php.net/pdo "PHP Data Objects"))) is important, because the ext/mysql functions are deprecated as of PHP 5.5.0. If you do not update your PHP code, your website will fail soon!

How to restore a deleted Open-Xchange context?

PowerShell: find all files owned by a particular user

How to play old games on Windows with DOSBox

Disable WordPress comments (how-to)

With thousands spam reactions, disabling (-)and removing) WordPress comments is the only way to go. Here is how to disable WordPress comments in both the WordPress Dashboard interface and in your MySQL database.

2014

Disk Cleanup in Windows Server

Over time, as your Windows Server runs longer, more and more disk space is eaten. Simply gone! Investigating the disk usage leaves you clueless; there are no large log files, crash dumps, or there is no software to be removed. Where did that space go?

WMI/netsh to add DNS servers on network adapters

DHCP on Windows Server 2012 using 169.254.xx.xx as server name

After installing a new Windows Server 2012 R2 machine with the DHCP role enabled, adding a DHCP server used a 169.254.x.x IP address as server name. Instead of the servers hostname

Explicit Congestion Notification (ECN) slows down outbound connections

ECN is an optional feature that may be used between two ECN-enabled endpoints when the underlying network infrastructure also supports it. Unfortunately, having one ECN Capability enabled endpoint may slow down outbound network connections to outdated network equipment.

"A domain rename operation is already in progress"

The other day, when I attempted to add a newly installed Active Directory to become the slave domain controller of a master, the error message "A domain rename operation is already in progress" was displayed. Promoting the Windows Server 2012 R2 server to a Domain Controller failed.

Joomla websites abused as open proxy for Denial-of-Service attacks

Convert decimal to hex in Bash?

Sysadmins of the North goes global!

How to set up a global Geolocation DNS load balancing Varnish Cache Content Delivery Network with Bind9, geo-ip database, Varnish Cache and DigtalOcean. DIY High-Availability for your website!

How to set a good PHP realpath_cache_size

Learn how to optimize PHP performance by checking and setting PHP realpath_cache_size

Redirect old URL to new URL or send 404 page with PHP

If you've moved some old PHP pages, or URLs, to new pages and URLs, you can use the following PHP code snippet to easily redirect all visitors and incoming requests to the new location. This PHP code snippet uses a 301 Moved Permanently redirect, perfect for SEO and returns a 404 Not Found if a new location hasn't been set up yet.

Display commas in WordPress tags

How to use a tag with a comma in it in WordPress? Normally, in WordPress all tags are comma seperated: php, wordpress, website, functions.php. But what if you need to use a tag with commas in it? For instance "cafe, bar, restaurants". Easy, create a filter in your WordPress functions.php, and here is how...

How to string replace on all WordPress posts in MySQL

Learn how to mysql replace content in your MySQL database in bulk with MySQL REPLACE. Sometimes it's useful to know how to bulk edit content in your WordPress MySQL database using MySQL replace() function.

Conditionally start Application Pools on remote IIS web servers

Check website availability with PHP and cURL

Custom PHP version on IIS Express and WebMatrix 3

Increase in SQL injection attacks

MySQL sleep() attacks

Send authenticated SMTP email over TLS from WordPress

Learn how to override wp-mail() and send secure email using authenticated SMTP and StartTLS from WordPress.

Magento maintenance script for IIS

Mod_evasive on IIS

Huge increase in WordPress xmlrpc.php POST requests

Remove IIS Server version HTTP Response Header

Windows Server IIS loves to tell the world that a website runs on IIS. It does so with the `Server:` header in the HTTP response, as shown below. In this post I'll show you how to remove HTTP response headers in Windows Server IIS. You don't want to give hackers too much information about your servers, right?.

.svc WCF web service returns 404 Not Found on IIS 8

When a Windows Communications Foundation (WCF) web service returns a 404 Not Found error, after installing the HTTP-Activation feature in IIS, you might need to add an extra Handler to your IIS configuration.

8 Tips to improve Joomla performance

Learn how to speed-up Joomla performance on Windows Server IIS using these 8 simple, but important, tips. Add caching, gzip compression, set your sessions & optimize MySQL database functions.

MySQL database optimization with indices

Send email with Ghost using SMTP authentication and TLS encryption

Convert MySQL MyISAM tables to InnoDB

Export and migrate WordPress to Ghost

I wanted migrate from WordPress to Ghost, but failed. Here's the write up.

How to flush MySQL query cache from time to time

From time to time you need to flush MySQL's query_cache to prevent fragmentation of free query cache memory space. In this post, you'll learn how to flush the MySQL query cache unattended / automatic through a Linux cronjob and manually on the MySQL shell.

How to delete all MAILER-DAEMON emails in Postfix queue

How to install the Web-WebSockets feature in IIS using PowerShell

Learn how to install WebSocket Protocol support in Windows Server IIS 8.0 using PowerShell's Install-WindowsFeature.

How to: Test MySQL database connectivity in ASP.NET, PHP, ASP

Whenever you need a MySQL connectivity test from a website or server, it's handy to have various test scripts nearby. Whether it is because you are setting up a new website or you have just installed a new server and are running your tests.

How to hide the .php file extension with IIS URL Rewrite Module

Sometimes it's important to remove (or hide) the file extension of scripts you use. Security by obscurity might be that reason, if you don't want others to know what script language you are using for your website, or for static site hosts.

Minify JavaScript, CSS and compress images

Test SMTP Authentication and StartTLS

Investigate SMTP authentication issues like a boss! Particular over TLS encrypted SMTP connections, it's always handy if you are able to test the SMTP authentication and StartTLS connection. Preferably from your command-prompt.

IIS Outbound Rules with gzip compression

Saotn.org used URL Rewrite Outbound Rules in IIS to offload content from a different server or host name. Doing so, IIS uses URL Rewrite and acts as a reverse proxy. Add gzip compression to the mix, and this will improve website performance. But just recently I noticed Outbound Rules conflicted with gzip compressed content. The following HTTP 500.52 URL Rewrite Module Error was thrown...

prettyPhoto DOM based XSS

Uh-oh, prettyPhoto DOM based XSS on Saotn.org...

WordPress wp_options table autoload micro-optimization

Learn how to add an index and optimize WordPress' wp_options table for faster database results. This probably isn't a big issue, but today I noticed a slow MySQL query coming from a WordPress database (WordPress wp_options table). This made me investigate and to optimize the WordPress wp_options table "autoload" feature.

Check, repair and optimize MySQL tables with mysqlcheck

Optimize WP StatPress plugin database performance

The WordPress StatPress plugin (no longer available in the Plugin Directory) is still widely used and still is very slow. Here are some MySQL statements you can use to optimize its performance, as a WordPress optimization tip...

Install WordPress plugins without WP-admin access

How to clean up Contact Form 7 temporary captcha files on IIS web servers

Validate MIME types with PHP Fileinfo

How to check the file type in PHP and secure file uploads: it is important to validate MIME types in PHP. Especially of files uploaded through an upload form to your website.

Set or remove the read-only attribute assigned to files with PHP chmod

Chmod.php, change file attributes with PHP to make files read only or normally accessible on Windows IIS servers. Sometimes you need chmod to make files read only on your website, or make them normally accessible in case they already are read only. For instance Drupal's settings.php configuration file, or WordPress Contact Form 7 temporary captcha files, are examples of read-only files.

How to compare MD5 and SHA1 hashes in MySQL

Learn how to do MD5 and SHA1 hash comparisons in MySQL

WordPress plugin "In Over Your Archives" Call-time pass-by-reference fix for PHP 5.4

Here is how to fix PHP "Call-time pass-by-reference has been removed in ..." errors in PHP and WordPress.

Optimize all MySQL tables with PHP/MySQLi multi_query

The PHP MySQLi extension supports multiple queries, which are concatenated by a semicolon, with `mysqli->multi_query`. We use this to optimize all MySQL tables, in a single multi-query statement. Neat! Optimizing MySQL tables is important to keep tables small and fast. This boosts MySQL, PHP and website performance and we all love that, don't we? :)

How to load google-code-prettify syntax highlighting without plugins

If you run a WordPress blog where you display (parts of) source code, syntax highlighting is a must! It prettifies the code which makes it easier to read and it distinguishes code from text. However, most syntax highlighting is made available through plugins, and we all know too many plugins bring a lot of overhead to your blog.

Configure SQLServer sessionState for Umbraco

Clean-up WordPress spam comments and meta data

How to delete WordPress spam comments and meta data with phpMyAdmin. A lot of WordPress spam comments and meta data will keep your WordPress database huge, and slows down your site. It's best to delete spam comments regularly, but if you're facing hundreds of thousands spam comments, here is how to delete them all in bulk.

Add (custom) headers to MailMessage class

System.Net.Mail sometimes lacks important email headers like the Message-Id. This post shows you how to add them and improve email delivery from websites.

Install Node.js, iisnode module and Ghost on Windows Server / IIS

This post describes the steps necessary to install Node.js and Ghost Publishing Platform on Windows Server IIS. Ghost is a Node.js web application, specific for just blogging. To run Node.js applications in IIS, you need iisnode as a module. Here is how to install all of this.

Ssh shorthand name for hostnames

Target multiple ASP.NET versions with AppCmd.exe

Did you know you can target both x86 and x64 versions of ASP.NET with AppCmd.exe?

Optimize images for the web in bulk

Optimizing and lossless compressing images is one of those items that always pops up when analyzing your website with Google PageSpeed Insights. Images have to be lossless compressed to save many bytes of data and thus bandwidth. But, how do we optimize images for the web?

Mount an Open-Xchange InfoStore on Linux

Forfiles: How to delete files recursively on Windows Server

The Forfiles command on Windows selects and executes a command on a file or set of files. Forfiles is ideal for batch processing through scripts, for instance on Windows Server systems. With Forfiles, you can run a command on or pass arguments to multiple files. For example, you could run the type or del command on all files in a tree with the .txt extension.

2013

Block WordPress comment spammers manually

The less spammers hit your WordPress blog, the better your blog performs, is one of my opinions. A second is, the less unnecessary plugins you use on your WordPress blog, the better. So, a little while ago I decided to remove plugins like Stop Spammer Registration Plugin and do its work myself.

How to fix Joomla HTTP 500 errors after updates

Add websites and application pools to IIS with PowerShell, in a for loop

How to use Powershell to create websites and application pools in IIS

Windows Live Mail error 0x80041161 (Fix)

After not using Windows Live Mail for quite some time, it gave me an error code 0x80041161. This Windows Live Mail error can have several different reasons, like corrupt files or services that aren't started, not easing the task of identifying the cause. Read on to learn how to fix this Windows Live Mail error 0x80041161...

Create your own CDN using IIS Outbound Rules

Offloading content is important for the performance of your website, because then content is downloaded in parallel and thus faster. A faster website attracts more visitors, is more user friendly, improves CTR and Google SEO. Here is how to create a Content Delivery Network (CDN) using IIS outbound rewrite rules.

Bash: Grep through a large number of files - "Argument list too long"

/bash/grep and /bash/rm give me an error Argument list too long. Here is how to overcome this grep error.

WordPress CMS admin password reset

How to reset your WordPress password? If you've lost or forgotten your WordPress admin password, you can easily reset the password. Either use the following MySQL statement to reset your WordPress admin password, or change it through functions.php.

Fix "Could not establish trust relationship for the SSL/TLS secure channel" error

Here is how to resolve the ASP.NET exception "System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

ASP.NET performance: what to keep in mind

A lot of information is available on this subject. In this post I'll share some valuable posts, and I continue to update this post when I find something new. Posts about ASP.NET performance I frequently pass on to customers so they can improve their ASP.NET web applications.

Don't turn off CURLOPT_SSL_VERIFYPEER and fix your PHP configuration

Do not turn off CURLOPT_SSL_VERIFYPEER in your PHP configuration, but learn how to fix your PHP config instead.

Installing Debian GNU/Linux 7.0 (Wheezy) on HP EliteBook 8570w

I was FedUp with Fedora Core 17/18 after a day, so I decided to return to my old love: Debian GNU/Linux. It's been a couple of years, but I'm happy to be back! Just run the netinst installer which will take care of the most.

Connect to SqlCe (SQL Server Compact) database from ASP

Here is how to install the Microsoft.SQLSERVER.CE.OLEDB.4.0 Provider and use classic ASP to connect to an SqlCe (SQL Server Compact) database sdf file, as a Microsoft Access database replacement.

How to send authenticated SMTP over a TLS encrypted connection, in PHP, ASP and ASP.NET?

Learn how to send email securely from your website using TLS with ASP.NET, PHP, WordPress and Classic ASP!

Grep for forensic log parsing and analysis on Windows Server IIS

How to use GnuWin32 ported tools like grep.exe and find.exe for forensic log file analysis in Windows Server.

Drop all tables, SPs, triggers, constraints and dependencies in one SQL statement

Drop all tables, SPs, triggers, constraints and dependencies in an SQL Server database in one SQL statement.

Connect to MS SQL Server with PHP 5.3+

Learn how to conditionally add Google Analytics tracking code to your WordPress Multisite

MySQL Connector/NET and Entity Framework

How to let MySQL Connector/NET and [Entity Framework](https://learn.microsoft.com/en-us/aspnet/entity-framework) play nicely. This blog post is a quicky and an oldy… Since we still receive a reasonable amount of questions about this topic at the customer service of my employer I'm posting this here, with some commonly made mistakes and points of attention.

WordPress 3.5 on IIS 8.0 is unable to save a web.config file

This website Saotn.org is hosted on Windows Server 2012 with IIS 8.0 with WordPress for a few months now, and everything is running very smooth. And I would never hit this bug because I don't need to change my permalinks structure. One of my colleagues on the other hand, just moved his website to an IIS 8.0 web server and he noticed he couldn't save his Permalinks structure in the IIS web.config file. This can be pretty annoying ;-) Quick fix attached...

Create your own PHP based Origin Pull CDN

The advantage of having your website content hosted on a Content Delivery Network (CDN) is having your content distributed and stored across the Globe. Utilizing the network of the Content Delivery Network provider. Hosting your WordPress website on a Content Delivery Network is an important WordPress optimization tip.

Cache MySQL query results with PHP WinCache

Calculate MySQL database size with PHP (off the old shelf)

Sometimes you'd be amazed what you find when cleaning out your old script archives. I found an old PHP script to calculate the size of a MySQL database. I post it here just for the fun of it.

Convert .htaccess to web.config

PHP with WinCache on IIS

In this article you'll learn how to install and set up PHP with the Windows Cache Extension (WinCache) on windows IIS web servers. WinCache enabled PHP gives a great PHP performance boost for your WordPress-, Drupal or Joomla website. This post will show you it's not hard to set up high performance PHP hosting on IIS.

Remove ETags HTTP response header in IIS

2012

"The length of the URL for this request exceeds the configured maxUrlLength value"

The length of the URL for this request exceeds the configured maxUrlLength value is an IIS error telling you the length of the given URL exceeds a limit. The Windows Server IIS maximum URL length is defined by the `HttpRuntimeSection.MaxUrlLength` property. Its value is 260 characters. This may cause problems with longer than configured `maxUrlLength` URL's, and here is how to resolve this max URL length issue.

"htaccess files should not be used for security restrictions"

Acunetix' Bogdan Calin wrote an article explaining why .htaccess files should not be used to secure sensitive data

WordPress HyperDB is an advanced database class that supports replication

HyperDB is an advanced database class for WordPress that supports replication and partition of data. HyperDB is a replacement for the standard wpdb class.

Multiple IIS 6.0/7.5 Vulnerabilities

Multiple vulnerabilities found in IIS 6.0 and 7.5 web servers and reported to the Full-Disclosure mailinglist by Kingcope. I took some time to test the various vulnerablities.

How to filter web traffic with blocklists

Create your own HTTP web blocklist filter to block and filter unwanted web HTTP traffic with blocklists.

Microsoft Deployment Workbench: silent installation of various applications

Silently deploy applications through Windows Deployment Services (WDS) / Microsoft Deployment Workbench

Clean up WordPress post revisions

Every time you write or edit a WordPress post, WordPress saves the change as a post revision. As you might expect, this fills up your database with a huge amount of unneeded post revisions and information. This uses space which should be free space, the MySQL database becomes bloated. You can clean up these WordPress post revisions quite easily, you only need one (1) simple SQL statement.

"System.Web.HttpException (0x80004005): The URL-encoded form data is not valid." error after MS11-100

After applying MS11-100, an out-of-band security update for ASP.NET to mitigate an ASP.NET Denial of Service vulnerability, you may experience the errors comming from .NET web applications

2011

How to use .htaccess files on Windows Server IIS

Start all stopped application pools in IIS 6.0

Learn how to stop and start all application pools using VBScript and ADSI in Windows Server 2003 and IIS 6.0. Query IIS' Metabase for all AppPool objects and their .State property.

WCF Service error: "This collection already contains an address with scheme http."

\"This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.\" is a Windows Communication Foundation (WCF) error message indicating you are trying to add an already existing binding. By default the web service listens to all in IIS configured host headers. A host header is the website address, for example example.com and 'www.example.com'. If this is not correctly added to the `web.config` file, the following error is thrown...

Umbraco CMS admin password reset

MySQL query caching using PHP/Zend_Cache

By using the Cache.php PHP class of the Zend Framework, you can relatively easy cache MySQL query results to disk. This ensures faster consecutive results and speeds up execution.

Failed Request Tracing error LOG FILE MAX SIZE TRUNCATE

Check IP address blacklist status in Bash

Here is a Linux Bash shell script to check whether an IP address is listed in a DNSBL blacklist, or RBL. Using this script in Bash you can quickly test if an IP address is blacklisted.

PHP on IIS: No input file specified.

"Forensic Log Parsing with Microsoft's LogParser"

Forensic Log Parsing with Microsoft's LogParser. Log parser is a powerful, versatile tool that provides universal query access to text-based data such as log files, XML files and CSV files.

7 Snippets to use .htaccess as a Web Application Firewall

2010

IIS 6.0 Adsutil.vbs server name command line parameter

Adsutil.vbs is a versatile and useful tool to administer IIS 6.0 servers. But did you know there is a remote server command line parameter? With this you can use Adsutil.vbs remotely.

Delete undeletable files from NTFS file system

The filename, directory name, or volume label syntax is incorrect, here's how to fix it using internal NTFS commands.

2008

The "SendUsing" configuration value is invalid.

The "SendUsing" configuration value is invalid is an error message indicating an issue with IIS SMTP Service configuration. Here is how to resolve this issue.

Inexplicable COM+ error messages

The run-time environment has detected an inconsistency in its internal state.", in IIS 6.0 may be due to desktop heap exhaustion

IIS 6.0 error: The tracking (workstation) service is not running