Tango Devlopment

Author: Bill Thorsteinson

  • Manual networking for KVM

    I found the networking configured by libvirt (KVM) did not allow me to firewall the network as I desired.  I use Shorewall for firewalling, and DNSMasq for internal DNS and DHCP.  After a little experimentation, I found that I could configure Ubuntu to create the network.  This allows me to get a reliable firewall configuration with a virtual DMZ.

    The virtual hosts are assigned to a bridge, and only have connectivity to other networks as defined in the Shorewall configuration.  A single DNSMasq server provides DSN an DHCP services for all virtual servers, as well as the network the server is connected to.  The network and firewall configuration remains consistent even as servers are cycled up and down.  An additional bridge was created to support virtual servers in the DMZ zone.

    This page has been updated in 2019 to reflect changes in the tools.

    (more…)

  • Remote Desktops with VNC and RDP

    I find it useful to have a remote desktop to my Ubuntu systems.   On secure connections I have been using VNC via xinetd.  Connections with xrdp where possible, but it wasn’t launching the desktop for the connection.  For secure terminal connections, I stick with with ssh.  All these connection have a login at the start of the connection. This is how I do it. (more…)

  • Implementing DKIM with Exim

    This article was updated in February 2014 to reflect changes policy and reporting options. The earlier ADSP (Author Domain Signing Practices) information has been removed.

    DomainKeys Identified Mail (DKIM) provides a method to confirm the origin of an e-mail. DKIM also provides some protection against tampering. Unlike SPF, this validation applies to the contents of the message when it is signed. Like SPF, the information required for validation is added to DNS. (more…)

  • Signing Return Path Addresses with Exim

    I have been receiving a fair amount of Spam from an e-mail forwarder.  They are unwilling to correct their problems.  Much of the Spam they forward is the form of bounce notifications.  Attempting to reject other Spam resulted in more notifications.  To control this Spam I implemented signed return path addresses.  As a side benefit, I am also rejecting bogus notifications sent directly to me.

    Signing my return path allows me to reject faked notification e-mail.  The SMTP standard requires that no email sent with a null return path “<>” (aka Envelope Sender) be returned.  Its purpose is for allow for notifications about existing messages.  These includes notifications such as address unknown, message delivered, and message read.  E-mail notification which are not about a previously sent message can be refused . Signing the return path allowed me to reject such invalid notifications. (more…)

  • Cfengine 2 for Debian and Ubuntu

    Cfengine is a declarative system configuration tool.  This helps apply standards to system configuration. The configuration files specify the desired configuration and the engine applies these specifications to the system.  It is useful to:

    • Distribute configuration files;
    • Install standard packages (including on Debian and Ubuntu with code provided here);
    • Cleanup old files; and
    • Ensure certain programs are/are not running.

    This documentation applies to Cfengine version 2. . The latest version has made significant changes to the scripting structure, but maintains the capability to run the version 2 format files. (more…)

  • Firewalling Google Chat and Skype

    To enable for Internet chat I set up Google Chat and Skype.  My firewall rules have been extremely restrictive with only known and approved services allowed to connect.  Google Chat installed with no noticeable impact to the firewall. Things did not go so well with Skype.

    The installation of Skype resulted in lots of warnings on the firewall.  Outgoing tests worked with only port 80 and 443 open.  Skype’s peer-to-peer approach  requires at least one port be opened incoming and and a large range of ports outgoing.  They specify all ports over 1024 should be open.  Their preferred mode seems to be to use uPnP to dynamically modify the firewall.   They do allow you to attempt to set  fixed incoming port which is also used for some outgoing UDP traffic. (more…)

  • Setting up Squid Proxy on Ubuntu

    Squid is a proxy service for HTTP and other requests.  This article covers installing it and configuring it to run on Ubuntu as a transparent proxy.  This documentation includes configuring Web Proxy Auto-Discovery (WPAD) via DHCP and DNS.

    I run a heterogeneous configuration.  This provided a number of challenges as various implementations of WPAD were encountered.  These each seem to require something different.  The final configuration works for Ubuntu, Windows X/P, and Windows Vista.  Both Internet Explorer and Firefox configured correctly. (more…)

  • Database Naming Conventions

    Naming standards  for database objects can simplify development. The names used for tables and columns are most visible. Using standard conventions for the other objects can clarify where they fit in the design. This article describes the conventions I use be default. (more…)

  • Code Optimization Rules

    It is common for developers to worry about optimization while doing initial programming. Some write extremely complex code in the belief that it is optimized. Unfortunately, this code is often slower than it might otherwise be. Additionally, the compiler may be unable to optimize the code. I find optimization is rarely necessary and effective optimizations are difficult to predict.

    This post present the my optimization rules. Future posts will present the techniques I use to avoid optimization, and perform optimization when needed. (more…)

  • Running an Email Server

    I administer an email server for a couple of domains and a few users.  Incorrectly configured email servers result in a lot of my administration work.   Due to improper configuration, far too many servers look like Spam servers.   A little effort in setting up your server can make my life easier, and increase your chance of successfully delivering email everywhere.  This article describes steps you should take. (more…)