Archive | Home Page

Articles to appear on the home page (nearly all)

Hentzenwerke Moving from Windows to Linux

MySQL-VFP book cover Followers of the Hentzenwerke Publishing empire know that Whil Hentzen has the largest catalog of Visual FoxPro books and an impressive collection of books bridging the gap from the Windows world into the Linux/Free/Open Source world. Whil’s been working for quite some time to put together a book on working with VFP and back-end data servers other than SQL Server. I was one of the many community members who contributed comments, criticisms and ideas to the book, and was honored when Whil chose to designate me as technical editor. Whil Hentzen announces, MySQL Client-Server Applications with Visual FoxPro now on sale:

After far too long a wait, the eagerly awaited companion to our Client/Server Apps with VFP and SQL Server book from years ago is here. The brand new 414 page MySQL Client-Server Applications with Visual FoxPro covers Client-Server apps from the perspective of the hugely popular open-source SQL database, MySQL. Learn how to install, configure MySQL and then connect specifically with VFP. Then get your hands dirty bringing data – both flat files and DBFs – into MySQL databases. Build a variety of user interfaces. Learn about development and deployment scenarios with this multi-platform backend. Each step of the way, real world problems (‘What if the connection fails?’) and potential solutions will be discussed.

The book is on sale only for a short period. Get your copy now!

Take that, Voldemort!

Does anyone else think that “Bifidus Regularis™!” sounds like a spell Harry Potter should have been casting?

Bifidus Regularis is a trademark of Dannon for their Activia line of yogurts

Running Windows within VMWare on FC6

One of my current client projects requires me to VPN into their establishment. Rather than have a second machine running Windows, I thought I’d try running VMWare using a dual-boot (WinXPPro/Fedora Core 6) machine. A recent Linux Magazine article by Jason Perlow, “Run Your Windows with VMWare” pointed out that VMWare can read a Windows installation off disk and run it as if it were a virtual image, a feature I wasn’t aware of. You get the benefits of both having a VM and being able to dual-boot. Cool! So, I set about the process of installing such beast.

VMWare offers several versions for free (as in price, not as in speech) downloads. Their main install scripts (written in Perl) are pretty slick, detecting problems, coaching you for the correct actions, and advising about where more information can be found. Several cycles of script, run, error, re-configure, install, repeat got me to a working VMWare install. Extra clues were found in “How to Install VMWare Server on A Fedora Core 6 Desktop” and “Run Existing Windows Installation with VMWare Player.” Some obscure permission errors (VMWare reports that it can’t open the image or some related file) were fixed by adding my login to the ‘disk’ group so VMWare could read the raw disk, and giving the /dev/hda device group-read-write access (sudo chmod g+rw /dev/hda – there’s a way to do this permanently…). I confirmed VMWare was installed correctly by downloading and running one of the many VMs that can be found at the VMWare Virtual Appliance Marketplace. After a few tweaks to the settings in the Windows-from-disk virtual machine configuration file windows.vmdk and generating a separate file for the MBR from the disk, booting into the VM produced by startup GRUB menu! Selecting a Linux partition started Linux, but selecting the Windows partition just hung after the message “chainloader +1”.

It’s progress. Now to Google around and see what the next tweak needs to be…

What I’m listening to…

July has found me working out more often and more consistently. One of the big challenges with staying on an exercise machine is the tedium. It is boring. I’ve found audiocasts have helped me pass the time, occupy my mind and make me feel the time spent is more worthwhile. This month and last, I’ve listened to:

  • The keynote presentations from the RedHat Summit 2007
  • Nearly all the videos from the RedHat site
  • Several weekly Technometria audiocasts
  • David Weinberger on ‘Everything is Miscellaneous
  • Chris Lydon interview David Weinberger
  • David Weinberger interviewed Cory Doctorow
  • Several Boston PHP meetings
  • The Massachusetts Technology Leadership Council’s Open Source Summit presentations (thanks Dan Bricklin!), including discussions on GPL3, the OLPC, Lightning Presentations, and more.

I’ll plug them any chance I get: the GigaVox network has some of the best, most interesting, high-quality audiocasts for techies on the web. I’m a contributing member and I encourage you to do the same.

Brute Force Detection (BFD) script for vsftpd

vsftpd is the “very secure file transfer protocol daemon” and a great product to use for file transfers. Unfortunately, a bunch of script kiddies and zombies runs scripts guessing the 2283 most common user name and password combinations. Sometimes, I’ll see several of these runs of login attempts in a single day, peaking one day at over 13 thousand bogus login attempts. I resent the amount of time, resources, bandwidth and power my server has to spend rejecting these attempts.

Last year, I blogged about the script Brute Force Detection that works with many servers and reads the logs to ban repeated failed login attempts. Unfortunately, it did not have the settings to read vsftpd generated logs, and there were not any directions simple enough for me to understand to set one up. A year passes, I read more, learn more, expecially the great Man Page of the Month sessions at MonadLUG, and I find a couple of hours to hack at this, motivated by yet another log report filled with vsftpd login attempts. Here’s what I did:

BFD uses rules files that are portions of scripts customized for the particular log to read, the messages to look for, and the locations at which the IP addresses of the offending attacker can be found. When each rule file in turn is read into the main BFD script, it becomes part of a set of commands that slices and dices the log, finds the (adjustable) number of excessive attempts, and issues the commands to ban attempts from that IP address. The trick is figuring out what commands you need to implement to return the stream of IP addresses in the correct format. Here’s an example, the sshd rule file:

REQ="/usr/sbin/proftpd"
if [ -f "$REQ" ]; then
LP="/var/log/secure"
TLOG_TF="proftpd"
TRIG="15"

## PROFTP
ARG_VAL=`$TLOGP $LP $TLOG_TF | grep -w proftpd | grep -iwf $PATTERN_FILE | tr '[]' ' ' | tr -d '()' | awk '{print$10" "$13}' | tr -d ':' | awk '{print$1":"$2}' | grep -E '[0-9]+'`
fi

Boy, is that inscrutable! Here’s a quick tour: REQ is the required file (the binary that runs proftpd) so the script only runs if there is such a file (“fi” is the shell script equivalent of “if” – cute!). The other variables are used to feed the main processing line, starting with ARG_VAL. This line processes the log (named LP) through a series of pipes that filters the result down to the items that need to be processed. Grep processes lines through Globally searching, using Regular Expressions and Prints them through to the next command in the pipe. TR translates characters from one set to another, or -Deletes them. Awk is a simple text processing language, really handing for tricks like printing the tenth and thirteenth words out of a line.

Here’s the trick to working this out: take a log file you know has your suspect violations, use cat to feed it into the beginning of the pipe described above, and add item-by-item to the pipe to figure out what each does and what the final result looks like, in this case a text file IP Addresses and login names, something like:

192.168.1.1:fred
192.168.1.1:fred
192.168.1.1:fred
192.168.1.1:fred
192.168.1.1:barney
192.168.1.1:charlie
192.168.1.1:dave
192.168.1.1:eric

This is what BFD gets fed bac k to it. Then, it counts the number of attempts, compares that against the TRIG value set above, and if it exceeds the trigger level, executes the command (set in BFD’s configuration file, conf.bfd) to ban the offending attacker. (It also optionally sends an email to the admin, a good idea to ensure you’ve got things set up properly.)

Now, your installation of vsftpd may be a little different from mine, your logs may have different names and columns in different orders, so use this script only after testing out that it works properly with your configuration. Best of luck with it. Here’s my implementation of a script to detect vsftpd script kiddie attacks:

REQ="/usr/sbin/vsftpd"
if [ -f "$REQ" ]; then
LP="/var/log/messages"
TLOG_TF="vsftpd"
TRIG="15"

## VSFTPD
ARG_VAL=`$TLOGP $LP $TLOG_TF | grep -w vsftpd | grep -i rhost | grep -iwf $PATTERN_FILE | awk '{print $13":"$12}'| tr -d '[]()?@'| cut -d = -f 2,4 | grep -E '[0-9]+'`
fi

The cut command is a new one here: like the use of awk it lets you pick particular columns to slice out of the line, but also gives you the option to specify the delimiter that sets off the columns. In this case, I use cut to pick off the second half of two columns that are formatted as “rhost=192.168.1.1” and “ruser=badguy@badplace.com” to pick off the second values from each of those columns.

DLSLUG notes, 7-June-2007

The Dartmouth – Lake Sunapee Linux User Group held their meeting on the usual first Thursday, but at a new location: the Dartmouth Regional Technology Center, where Bill McGonigle has recently set up his new offices. Nice place!

Seven attendees found their way to the meeting, and we had an informal chat covering a wide range of issue: the challenges of single-person consultancies, the business of consulting, Nagios, Dartware, a new version of Logo from MIT, having a presence at Hanover’s Street Fest (July 28, btw).

Bill had an interesting proposal: that the group create a “chuck box” (Boy Scouts’ term, ref: http://www.troop168.net/forms/patrolboxa.htm) that could contain a GNHLUG-booth-in-a-box: a banner, handouts, a tent/canopy,… what else? Interesting idea.

Bill also recommended we check out http://www.zazzle.com if we’re considering making promotional items.

Good times had by all. No DLSLUG meeting in July; instead, you’re encouraged to come to the GNHLUG-wide BBQ July 15th. Hope to see you there!

MonadLUG meeting notes, 14-June-2007: Ed Haynes of WindRiver: real-time and Linux

Bill Sconce posted the notes from the MonadLUG meeting of 14-June-2007, one I had to miss due to client projects. It sounds like it was a really interesting meeting. The push to tweak the kernel of Linux to be responsive in a real-time environment benefits us all, as some portions of that specialized work can be rolled into the main-line kernel code. This is one of the great benefits of Open Source, where developers “scratching their itch” – working on their specific needs – can contribute back to the greater community at little or no cost to them.

I heard a similar sentiment voiced at FUDCon ’07 Boston in presentations about the One Laptop Per Child machines: in tracing down some of the code that was running down the batteries on these cute little laptops, the OLPC crowd found entire classes of code that were working fine on desktop and server machines plugged into the wall, but wasting CPU cycles when a different algorithm could be implemented that was more power-friendly. This doesn’t just benefit the OLPC crowd; some of their work goes back into mainline kernels where it makes everyone’s laptop battery last longer, server stacks idle cooler, requiring less AC power and less Air Conditioning power, lowering the heat-disapation requirements of data centers, and slowing global warming. Yet another case of Open Source saving the world.

ongoing · I’ve Seen This Movie

Tim Bray is ticked and he’s not going to take it any more: in I’ve Seen This Movie, Tim blogs,

One would assume that the world’s largest software company, when facing a technology choice, would take the trouble to actually, you know, understand the technologies involved, but the evidence doesn’t support that assumption.
Why? · The thing is, I’ve seen this movie before: The movie where there’s an emerging standard that’s got some buzz and looks promising and maybe it’ll raise the tide and float all our boats a little higher, and then Microsoft says they won’t play.

Geez. Nothing new on the internet but repeats. There’s a great conclusion. Worth reading the entire post.

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.