2007-03-20

Speaking of steganography...

One of the true odd ducks of the internet, Shannon Larratt, created a good proof of concept for a randomized steganography implemented by using Markov chains. His post on his blog Zetastic.com two years ago showed his method and some sample meta code for the process. Also included is a demo Win32 app that performs the functions. One of my goals of re-learning C++ lately had been to write a simple function or library to preform a Markov
chain encoding for data. The main draw back to using this process is the vast increase of space needed to store the output. Every bit will be represented by a entire word of several bytes. One way to help with that may be to use a large randomized pad of data. Then use that instead of text for the seed.

This is one form for steganography that may be useful as a publicly visible data. Through a judicious use of seed text it may be possible to use a text that is both large, and contains very few "identifier" words that would reveal the original text. Thus, without the original text (seed/key) it may be impossible to generate the Markov chains and build the separate sets needed to decode the data.

2007-03-19

Outlaw information security tools and only the outlaws will have the security tools

While doing research into Steganography I looked at a couple of sources on wikipedia on organized crime and some of their applied uses. Organized crime still hasn’t fully adopted technology but is slowly getting there. Phishing scams and other online fraud schemes are netting a pretty penny now a day.

My point is not to illustrate organized crime as a "good" example of how to do things. My point IS to illustrate how an organization that relies on absolute secrecy to exist applies the principals that we have discussed in theory into practice.

Wikipedia has a prison tattoo section explaining prison tattoos and their meaning. Prison Tattoo’s in this context are a means to communicate social status and other intentions or proclamations. Tattooed illustrations containing metaphors such as status in a criminal gang or their intention to escape is one example. Japanese Yakuza publicly display the name of their gang on their storefront and on their clothing to identify themselves as a part of a gang.

La Cosa Nostra utilized a form of slang that baffled the FBI for a long time until the full lexicon of mafia terms was eventually discovered.

These examples show how Steganography was applied to mundane speech, body art and clothing styles that in the criminal context had a different meaning. The problem with this secret communication is that though the medium was secret, the information was not and thus vulnerable to discovery and interpretation by a third party.

It also illustrated to me the fatal flaw in Steganography which is security by obscurity which is a mantra often chanted by security guru's when addressing insecure weak proprietary security systems. However this being said, Steganography DOES buy time and help overcome passive discovery so when combined with good crypto it can be a part of a balanced communication strategy. Kind of like buying a box of SUPER ULTRA SUGAR SMACKS for your kid because its the only way you can get them to have milk in their diet.

http://en.wikipedia.org/wiki/Criminal_organization
http://en.wikipedia.org/wiki/Criminal_tattoo
http://en.wikipedia.org/wiki/Steganography

2007-03-04

15 minutes past midnight ... and all is well

Topics covered at 2600 were:

Linksys v6+ routers not handling extended port scans with nmap.
Clustering with Open Mosix
Favorite IRC chat clients.
Legal issues with dumpster diving

Discussed several scenarios where in-appropriate bodily functions could lead to severe beatings, a triathlon through briar invested woods or side splitting laughter when observing where said items landed.

.... And how the whole world is going to end in a magnificent atomic/economic fireball of doom ... (Thank you Eugene Rabinowitch) all this over a magnificently prepared fiery Thai food. (YUM!)

It was funny, it was the first time some of my cohorts acknowledged that perhaps this whole Iraq thing was a mistake.
Naw gee? Ya think?

2007-03-03

KC 2600 Meeting highlights

There's not a whole lot to report from 2600. I showed up on my suburban assault human-powered warcycle (with battery-powered accessories). As usual, we discussed a broad array of topics including caffeine abuse, war driving, geek culture of days gone by, snarge and a little bit of politics.

We had a new face at the meeting as well, which is usually a good thing. Afterwards, we went and stuffed our faces with delightfully spicy Thai food. Dumpster diving was a wash.

2007-02-26

Ax0n's Insight

I can't vouch for all hackers. I can't even vouch for my fellow HiR contributors. All I can do is tell you where I came from and what shaped me into who I am today. I must tell you that the mainstream image of "hackers" has obviously strayed a great deal from reality. Think of Matthew Broderick in WarGames. He wasn't malevolent. He was a bit mischievous, perhaps, but not a cyber-terrorist. He was curious and brilliant and he got in over his head.

I define "hacker" somewhere between any person who, by virtue of curiosity, must know everything about something and any person who refuses to blindly accept posted limitations. I also think that "hacker" is a strong word that usually shouldn't be used introspectively. I call myself a tinkerer.

My personal motto is this:


If something is broken, I can usually fix it.
If something is not broken, I can usually make it faster, better or easier to use...
or I can break it.


My parents were kind of technical. My mother comes from a long line of tinkerers and engineers. My father comes from a strong mechanical discipline, and knew the advantages that computers would offer in the future.

One of the very first truly affordable and personal computers was the Timex Sinclair 1000. It was released in Europe in 1981 as the Sinclair ZX-81, and found its way to our side of the pond a year later through a partnership with Timex. It was powered by a Zilog Z80 CPU, was about 6 inches square, about 3/4 inch thick. It had a tiny touch-membrane keyboard mounted on the computer case itself, and had composite video output (Black and White) for a Television as a monitor, and used a cassette tape for data storage. Out of the box it came with a scant two kilobytes of RAM. To put things into perspective, this paragraph would fill more than half the RAM of my old Timex. My dad purchased the $100 kit from a local department store and had to solder all the parts together himself. For an extra $25, if I recall correctly, he could have purchased one that was as ready-to-run as they come (which wasn't all that ready-to-run, it just didn't require assembly)

This isn't about my dad's old Timex, though. I was about four years old when he bought it. Most of the programs for it were found in magazines and required the user to type them in by hand. As you can imagine, this wasn't a difficult task with only 2kB of RAM. Before I was 5, I was already messing with the Timex. I had learned how to turn it on and load programs that my dad had recorded to tape. The programs sounded faintly like a modem handshake, and I liked that sound, despite its cold, harsh tone. The whole experience was mysterious and magical to me.

By the age of five, I was modifying programs and saving them to tape. I started by putting my name on the side of a bomber plane (which was drawn with block characters on the screen) in one of the games. Later on, I made my own text programs. I was also rabidly taking apart anything I could find screws on. This included mechanical spring-wound alarm clocks, radios, TV remotes, my toys, and anything else I felt like opening up. Curiosity had gotten the best of me. A firm grasp of mechanical synergy had not quite bestowed its wisdom upon me, yet. My parents often ended up having to re-assemble or simply throw away things that I'd broken with hand tools.

I have to give a lot of credit to my father and to my grandfather on my mother's side, as they were my earliest inspirations for mechanical hacking. As any Father should, my dad used me as early as possible for my extra set of hands. Sometimes it was to fetch a beer, but more often it was to hold a screwdriver or wrench while he worked on his truck. I observed while he replaced a timing chain, serviced his transmission, did oil changes, and even patch a hole in the gas tank.

My grandfather was the bona-fide definition of an Optics Hacker, even back in the 1940s. His team took and refined the crude fresnel lens to come up with the paper-thin magnifying surfaces found today in projectors, on cheap bookmarks, etc. On top of microscopes, telescopes and photography equipment, he also had a full machine shop in his basement where he spent hours and hours crafting devices made of wood, PVC, glass, metal, and plexiglass. Furthermore he was an electronics tinkerer. His basement was a mad scientists laboratory of anything and everything you could think of (even a kitchen sink!) It's easy to see where I got the itch to tinker beyond what's normal for a kid.

I was born a little late to really savor the experience of the technology of the early 1980s, but that didn't stop me from finding dial-up BBS systems, mainframes and UNIX servers in the mid-to-late 1980's. My first foray into dial-up servers (as opposed to BBSs) was the local library. Using some trickery at the library itself, I found the unprivileged account information to allow me to log in to the library with my modem. This resulted in me being able to reserve books, browse the card catalog, view full magazine articles, and even request inter-library transfers all from the comfort of my home as if I were in the library. I eventually found the IP Address for the server by using one of the more privileged "research terminals" to telnet out to somewhere that would show my the IP Address I was coming from. Via the Internet, the library's server had even more interesting things to show me. I spent a great deal of time not just using, but tinkering with the library's software. I used their services "under the radar" for many years before they replaced the entire system with a more modern Web-Based solution.

While still in high school, I was accepted to take certain classes for high-school and college credit at the local community college. I always made sure to enroll myself in a few classes that would require UNIX shell access. This was great, and really helped me sharpen my shell scripting and UNIX userland skills. My dad and I had tried Linux in 1994, but with only one Linux-capable computer in the house and not enough space to really dedicate to a Linux partition, we abandoned the project early on. Legitimate shell accounts were the only way I really could play with anything other than DOS.

In parallel to this, I was learning how to solder, and how to build circuits using schematics I'd find printed in books. My mechanical interests were becoming more refined as well, leading me away from Lego creations and repairing broken power tools, and into working on two-cycle engines and picking locks. In college, I took classes that would allow me to practice what I liked doing while earning high marks. This included small engine repair (four cycle), photography, networking (IT) and even a few programming classes. Oddly enough, I met Asmodian X, one of HiR's contributors, through one of the IT classes.

It's important to note that I didn't learn a lot from my coursework in these classes. My instructors were often my mentors, and I would often use the class time as an opportunity to mess with similar things of a more advanced nature. Some of my professors thought of this as goofing off, but I usually scored well on tests, so they let me be.

I'm at a phase in my life now where I'm still striving to know more about everything I'm interested in, and I'm constantly looking for more things to be interested in. I've chronicled a few stories from my life which brought me here. Just remember, it's not about how many web pages you can deface. It's not about how many uber-secure servers you can weasel your way into or how good your social engineering skills are. It's about a lifestyle of curiosity and constant learning.

2007-02-15

Encrypted filesystem images

Introduction:
Hola boys and girls, in this article I will speak a bit about encrypted file system images. There are many different utilities out there and each modern operating system has some kind of encryption scheme for either all or parts of their file system.
This is a short list of utilities that are available to the general public. Ill cover the basics of what an encrypted file system image is and list a few publicly available implementations for your information.

This article is intended for advanced users with a well-rounded understanding of how a computer and operating systems work.

-=- ToC -=-
x.......... Introduction
1.......... What is an encrypted file system
2.......... Uses of encrypted storage
3.......... Implementations of note with feature breakdown
4.......... Summary
5.......... Works cited

-=-=-=-=-=-=-=-=-=-=-=-=-=-
1.......... What is an encrypted file system
An encrypted file system consists of two parts, the file system (an organized system of storing binary data in an organized fashion). The other part being encryption, which is scrambling data in an organized fashion so that only designated parties may view it. In this article I am speaking about a file with in a file complete with its own file system and not dependant on the file system which the physical media that the file resides on.

-=-=-=-=-=-=-=-=-=-=-=-=-=-
2.......... Uses of encrypted storage
Secret codes as a concept are well known, it allows you to speak in a public area with out the information being revealed to un-intended recipients. The Internets data privacy is only safe because no one cares to dig through the deluge of information to figure out what your doing. In the novel "Takedown" regarding the capture of Kevin Mitnick, the authorities and two over zealous private citizens proceeded to track a persons activities via packet sniffing an entire ISP. This was done transparently so no one knew his or her privacy has been violated all to hell.

Encryption has become necessary as the medium of the Internet and computers in general have been under attack by governments, multinational corporations and criminal institutions.

Encryption is not the ENTIRE answer to these threats though. Being proactive about your computer usage routines so that you minimize communicating in an un-secure fashion is very important. Protecting your computer from rogue programs and un-trusted software is also important. All this while asking yourself, "what is this information worth." If the answer is ever your life, then you have best be prepared to dedicate a sizable portion of your life to servicing the protection of that information. Security is about setting the bar for your would be intruder. Basic security keeps the honest people honest, medium security keeps the burglar at bay, and comprehensive security keeps the bogyman out. Encryption can be very effective as an effort multiplier when used correctly.

-=-=-=-=-=-=-=-=-=-=-=-=-=-
3.......... Implementations of note with feature breakdown
- 3.1 Integrated encrypted file systems (OSS/Un*x):
Native utilities within most of the free Un*x like os's have included crypto.
Most of which have the capacity to create "memory disks" or "looped file systems". The utilities typically have the option for encrypting the data.
---LINUX---
In Linux in the 2.4 series and greater a person can do the following command:
$ dd if=/dev/zero of=enc_vol.img bs=1k count=4096
$ losetup -e 3des /dev/loop0 enc_vol.img
$ mkdosfs /dev/loop0
$ mount /dev/loop0 /mnt/

This system can use XOR and DES encryption by itself, if additional encryption algorithms are compiled into the kernel then you can make use of those too. The files created in this format are compatible with FreeOTFE, which is also available on windows and some mobile devices.

*** A side note -there was a paper which was written by Jerome Etienne titled "Vulnerability in encrypted loop device for Linux". In short, this is not a problem getting access to encrypted data, but making educated guesses and moving encrypted data around in the encrypted file. Since the file system doesn’t care about what data is where so long it’s in accordance with the file system structure the changes would not be detectable to the system. This attack is classified as a Denial of service attack but could be also classified as a kind of instant replay attack. The suggestion by the author is to authenticate to each data block or authenticate the integrity of the entire file system at boot time. The truly paranoid may want to perform a hash on the encrypted file system image via a mounting and unmounting script. This is a minor issue because the integrity of the information is controlled more by safe computing practices and physical security than encryption (Etinne, 2001).

In light of the looped file system and its shortcomings dm-crypt and LUKS have been developed as an alternative.

Prerequisites: A Linux 2.6 kernel with device mapper and dm-crypt support is needed. Also install cryptsetup-luks the package and util-linux package (g-loaded, 2005).

# cryptsetup --verbose --cipher "aes-cbc-essiv:sha256" --key-size 256 \
> --verify-passphrase luksFormat /dev/mydev/zipdisk
# cryptsetup luksOpen /dev/mydev/zipdisk encr-zipdisk
# mkdosfs -v -F 16 -n "ENCR1" /dev/mapper/encr-zipdisk
# mount -t vfat -o rw /dev/mapper/encr-zipdisk /mnt/tmp/

---OPENBSD---
OpenBSD supports memory disks or Virtual Nodes and this is done by:
$ vnconfig -k svnd0 /tmp/cryptimg
Encryption key:
$ mount /dev/svnd0c /mnt
This uses the blowfish algorithm for encryption (OpenBSD, 2007).

- 3.2 Encrypted Volume Utilities for commercially desktop systems:
---Ms Windows---
NTFS file encryption is available on Microsoft Windows XP Professional and supposedly Vista Business, Premium and Ultimate on a per file basis. Ultimate supposedly has full disk encryption utilizing their trusted computing hardware (Microsoft 2007).

Typically with the standard NTFS crypto you need to be using their latest version of the NTFS file system.
-Right click on the files you intend to encrypt.
-Select advanced
-Click on the encrypt check box.

Alternatively you can use the cipher command.
c:\echo "HiR" > example.txt
c:\cipher -e c:\example.txt

Encryption in windows this way is transparent to the user, it looks to them like any other file, however its encrypted on the disk so recovery by a third party person who has direct access to the file system is unlikely.

The file system will then enable the "encrypt" attribute which keys off of your account login info. So in order to access the content you will need the person's login info.

---Apple Mac OS 10---
Mac OS 10 has encrypted volume file creation available with AES encryption (Apple, 2007).

Select Macintosh HD -> Applications -> Utilities -> Disk Utility -> File -> New -> Blank Disk image
... Then put in the file name (ex. file)
-> select encryption -> AES-128 -> put in the password -> DONE!

Whenever you click on the image it will mount and ask for your password (assuming you don't put it in your keychain).

Of course this can be done in the command shell too.
$ hdiutil create -size 10m -encryption AES-128 -stdinpass test
Enter disk image passphrase:
...............................................................................
created: /Users/jkershner/Desktop/test.dmg
$ hdiutil attach test

- 3.3 Third Party disk encryption systems:
http://www.truecrypt.org/
Can create layered encrypted file systems images with a form of segnagraphy which a user can use a panic password to display the outer non-sensitive disk image, and a normal password for normal access to the disk image. It also can use file keys, which are existing files located anywhere on the computer, which the program uses as part of the authentication process. It can either use files on the hard drive or it can directly access devices such as hard drive partitions, entire disks or jump drives. In addition to secure file access by reading encrypted data in packets and keeping it in memory so that it does not hit the disk in unencrypted form. This is a free utility available on Windows and Linux platforms (TrueCrypt Foundation, 2007).

http://www.freeotfe.org/
Operates under both PC (MS Windows 2000/XP) and PDA (Windows Mobile 2003/2005) platforms Linux compatibility (Crypto loop "losetup", dm-crypt and LUKS supported) "Hidden" volumes may be concealed within other FreeOTFE volumes, providing "plausible deniability" FreeOTFE volumes have no "signature" to allow them to be identified as such Encrypted volumes can be either file or partition based (Dean, 2007).

- 3.4 Steganographic features
The most compelling features are the features offered in some of the 3rd party utilities which use a false nested file system image which is accessible with a panic password incase you are cohersed into giving the password so that at this first glance there would be plausible deniability (Dean, 2007)(TrueCrypt Foundation, 2007).

Simply renaming the encrypted volume file to appear as something else (such as an MP3 or a JPEG) requires the use of a 3rd party stegnagraphy utility such as Jsteg(Guillermito, 2004). Unfortunately there are ways of detecting this kind of embedding in images and possibly in other kinds of stegnagraphic containers formats (Raggo, 2007)(Fridrich, Goljan and Hogea 2006).
-=-=-=-=-=-=-=-=-=-=-=-=-=-
4.......... Summary

We have glossed over several methods of securely storing sensitive information. Combining these methods with other methods of securing information physically, electronically (through ciphering) and through safe computing practices you should have a fighting chance at keeping your data from prying eyes. Granted the data we are protecting is usually not as valuable as we think nor so worthless as to not disserve our attention to keeping it safe. A little paranoia can be healthy.

-=-=-=-=-=-=-=-=-=-=-=-=-=-
5.......... Works cited

Jessica Fridrich, Miroslav Goljan, Dorin Hogea. "Steganalysis of JPEG Images: Breaking the F5
Algorithm." (April 2006)
http://www.ws.binghamton.edu/fridrich/Research/f5.pdf

Guillermito. "Extracting data embedded with JSteg." (February 2004)
http://www.guillermito2.net/stegano/jsteg/index.html

Raggo, Michael. (Accessed February 2007)
http://www.spy-hunter.com/stego.html

Etienne, Jerome ".Vulnerability in encrypted loop device for Linux" (December 2001)
http://www.off.net/~jme/loopdev_vul.html

Shimomura, Tsutomu and Markoff, John. "Takedown: The Pursuit and Capture of Kevin Mitnick, America's Most Wanted Computer Outlaw-By the Man Who Did It." Warner Books Inc (December 1996). ISBN-13: 978-0786889136

-3rd Party Security Products
Dean, Sarah "Free OTFE." (Accessed February 2007)
http://www.freeotfe.org/

TrueCrypt Foundation websirte. (Accessed February 2007)
http://www.truecrypt.org/

-Opperating systems, security feature implementation and howto's

Microsoft Inc. "Encrypting File System overview." (Accessed February 2007)
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/encrypt_overview.mspx?mfr=true

Apple Corp. "Mac OS X: How to create a password-protected (encrypted) disk image." (Accessed February 2007)
http://docs.info.apple.com/article.html?artnum=107333

g-loaded.eu, "Encrypt devices using dm-crypt and LUKS." (November 2005)
http://www.g-loaded.eu/2005/11/10/encrypt-devices-using-dm-crypt-and-luks/

OpenBSD foundation. (Accessed 2007)
http://www.openbsd.org

-=-=-=-=-=-=-=-=-=-=-=-=-=-EOF-=-=-=-=-=-=-=-=-=-=-=-=-=-

2007-02-14

Build your own network appliance

You're probably used to seeing "appliances" - that is, certain kinds of embedded computing devices -- on a daily basis. Embedded computing is a pretty broad term. It can include obvious things like ATM machines and display kiosks, or less obvious computer-controlled devices like mobile phones and wireless network routers.

Appliances usually describe a smallish computer with a dedicated purpose. These are usually slow computers with no hard drive, very little RAM, and often lacking a monitor, keyboard, or graphical display.

The wireless network router is a perfect example. It has no screen, no input method except for a reset button, very limited RAM, and little bit of flash memory for saving user-defined settings. The user interaction takes place via the network, mostly through a small web application. Most of the time, it just sits there doing its job without the owner giving it a second thought. It may go months or even years without being rebooted or any other user interaction.

There are four main things you need to carefully consider before starting out:

Hardware: Since it will potentially be running 24 hours a day for years on end, the appliance should be built on a reliable and/or easily replaced hardware platform.

Operating system: Ideally, the operating system on a network appliance will take up as little space as needed, and have only the most basic set of tools to get the job done.

Configuration & resilience: An appliance should be resistant to damage that can be caused by a sudden power-off or reboot, but changes made in the user interface should be stored to non-volatile memory as soon as the user chooses to save the configuration.

Daemons & Services: A little network-attached computer that doesn't do anything for the network is just plain useless. Be creative.

Hardware

With modern technology, it's not difficult to meet the hardware requirements that an appliance demands. A motherboard and processor can last longer than a decade. Most computer hardware failures are due to moving parts such as cooling fans and hard drives. If you take the moving parts out of the equation, it's possible to build a computer that will be reliable for years to come.

Building an appliance out of a normal, everyday PC is possible. Get a motherboard that supports booting from USB, or purchase a solid-state hard drive (including those IDE-to-Compact-Flash adapters), under-clock the CPU and pick up a really good heat sink. There will be no need for a CPU fan, and if the fan in the power supply fails, it still should function properly.

A more practical route is to built a mini-ITX system. These are small motherboards, usually with slow but cool-running processors. They usually require no ventilation and are powered by an external power brick, without a real power supply in the case.

Another option is the use of a specialized ultra-compact, low-power computer that's purpose-built for this sort of thing. On the forefront of this market is Soekris Engineering. Soekris manufactures and sells purpose-built appliances that are for the most part x86 compatible. You can order just the components you want, or you can purchase it assembled into a high-quality metal case that's no bigger than an average-sized small-office ethernet hub. The logic boards come with at least one serial port for console interaction, and can be specified with several ethernet ports, cardbus, compact flash, and miniPCI connectors. They are affordable in small quantities for tinkering and prototyping, with heavy discounts on bulk orders.


Operating System

The operating system, as the base of your appliance, should be rock-solid and of course should have hardware and software support for everything you plan on doing with your appliance. The last thing you want is a setup that requires you (or your users!) to constantly reboot the appliance because of an unstable kernel, un-tested third-party patches for unsupported hardware devices, and the like.

Several appliance developers have chosen to go with OpenBSD, with many of them choosing Soekris hardware as their platform. Installation of the operating system in an "appliance" style really doesn't vary too much from platform to platform as much as it varies depending on the type of media that you plan on installing onto. Since we want to keep moving parts to a minimum, the best media to use is some sort of flash memory such as a compact flash card or a USB flash drive. Generally speaking, compact flash cards have the highest performance potential assuming you don't bottle-neck their performance by hooking them up via a USB card-reader. Many of the Soekris appliances and mini-ITX motherboards come with a built-in CF slot and support booting off of compact flash. On other mini-itx systems and most full-sized computers, you will probably end up having to boot off of a USB flash drive, but if you never need to change configurations, you could just as easily burn your installation to a CD and boot your appliance that way.

Flashdist is one project that aims to make it really easy to install OpenBSD onto an appliance. The author's target is Soekris, but in reality flashdist will work to install a compact version of OpenBSD onto a small flash drive, and the resulting flash drive should boot OpenBSD on any system that supports booting from USB, although I'd strongly recommend re-compiling the OpenBSD kernel with only the hardware support and options that are needed for your project.

Getting the base operating system installed is somewhat beyond the scope of this article. There are several other projects that you can find for getting various other operating systems to run on a very compact environment. Some are made with Soekris in mind, while others, such as m0n0wall are made to boot a full-sized desktop or server PC from CD and write configuration information to magnetic media, such as a floppy diskette.


Configuration & Resilience

This is a big one. Resilience is usually achieved by leaving the boot media mounted read-only so that files can't be easily corrupted if power is suddenly lost. Configuration changes can be saved by re-mounting the drive in a read/write state just long enough to modify the necessary files.

An operating system still needs a place to store its temporary files, and it's quite possible that other services you install on your homebrew appliance will also want to store logs, or otherwise require some writable drive space. This is achieved through the use of ramdisks. Usually, an appliance only keeps temporary logs that vanish once it's rebooted. Ramdisks for /tmp and /var are most common. This allows the system to use the binaries and libraries directly from the boot media, while giving the operating system and daemons somewhere to store logs and temporary files.

You will likely have to tinker with the configuration of the OS and daemons you choose to run. Ramdisks are meant to be small, so you will want to make automated provisions to keep them from becoming full of clutter, carefully monitoring them while you're in the development process.

Daemons & Services

This is where creativity comes into play, but this can also heavily steer the hardware requirements for your project, as well. If you want to make a network attached storage (NAS) file server, you will probably need to have a real hard drive. Some Mini-ITX systems have provisions for a 2.5" laptop hard drive, but I haven't seen a Soekris board that has this feature. You could make an 802.11 bridge to join two wireless networks together, a network sniffing and intrusion detection appliance, a web server load-balancer, or even a simple firewall for your home network. The opportunities are almost limitless!


Links:
------
PCEngines: Adapters to attach a CF card to a normal IDE controller
Soekris Engineering: Manufacturers of high-quality x86 appliance hardware
Flashdist, a package for creating embedded OpenBSD installations
M0n0wall, a ready-to-run network appliance CD-ROM