Rules, from Jim Wildman

January 5, 2011 |

 I recently made a potentially serious mistake. I updated a web site and left it in a world writable state (i.e, anyone in the world could change it). Fortunately, a good friend noticed and fixed it temporarily while I scurried back to my computer to implement a permanent solution. Naturally one of the things on the web site is a page (by me) discussing the importance of a security mindset.

Mistakes are only useful if you learn from them, so I wrote up my thoughts on the subject. In summation, I set up rules, then broke some of them. Fortunately I had multiple layers of defense (stop loss rules) which made recovery easy.

In the bigger picture of my life, I see that most of the recent (last 5 years) decisions that I now consider mistakes are of the same sort. I had a rule or principle in place, then ignored it. At my age (50+) I'm not really getting surprised by much anymore; when I make a mistake, it's because I ignore what I know and charge ahead.

For example.. I REALLY wanted xyz, so I bought it despite the price, condition, etc, then did not like it, did not use it, broke it, etc. I was REALLY in a big hurry…broke something, ignored the rules, etc I was NOT going to ask for help/go back to the store again

So what strategies are there for stop loss rules, or layers of defense in life? How do you implement them without turning into a cold, heartless SOB? How do you identify reactionary rules (I'll NEVER do that again) that are not sustainable?

Time for some beginning of the year introspection. Here's what I wrote about this on my blog:

As I note in the overview, one of the things I want to focus on is security by design. Nice thought.

I switched from my hand crafted php scripts to Dokuwiki for the web site. Shortly after I pushed the web site out to the world, a good friend called me to say that the entire site was world writeable. Ooops… He was kind enough to flip it to read only while I scurried back home to fix it.

Obviously this was not a good outcome. I've spent parts of the last few days analyzing where I went wrong. How or why did I violate my principles?

- I forgot the rules. In the rush to get things done, I forgot to stop and think before I pushed send. The tyranny of the urgent got the best of me.
- I was complacent in my thinking. In the back of my mind, I knew Russ was watching things (or more correctly that his monitoring systems were). He is a very experienced admin and I trust his infrastructure.
- I did not think carefully enough about my actions. Sort of a variation of point #1, but I did not stop to think about what I was doing and the effects it might have.

In the end, even if Russ had not caught it, there was little chance of damage (other than egg on my face for a defaced web site). I've designed the site with defense in depth in mind.

- By design, the site is read only. It is the target node of the push. I never edit the site directly and never move information from the site back into the development environment. The content of the site is in a Subversion repo on another machine.
- I can easily repush the site from my secure repo
- The host that the web site runs on is not trusted by any other machine. There are no keys or logins on it that can be used on another machine that I control.
- OS level security in the form of SELinux is enabled.
- Logs are monitored
- The entire environment (OS and all) is snapshotted regularly

So the web site is in at least 3 sandboxes, each a little larger, each with their own monitoring system and recovery system or methodology.

Lessons to learn
- Think
- Use check lists to guide your thinking, especially when doing something new or different
- Have experienced people check your work
- Belt, suspenders, boots, raincoat, umbrella. Many layers work together to cover the gaps of each other
- Not only think before you act, but think about how to recover from a mistake ahead of time.

All in all, the best kind of mistake: small, relatively private, easily recoverable but widely applicable.

Nigel Davies writes:

One of the great problems with creating a lot of rules is that it simply gives you more to think about and these are usually not central to the activity itself. I believe that the only answer is to reach such a high level of mastery in a field that one feels an innate sense of revulsion when doing the wrong thing.

Easan Katir comments:

One important word for this topic: checklists. The more items from a list that can be computerized, automated, the better, the routine things, leaving one's mental capital for the important trading decisions .As you know, many working with high risk activities use checklists: pilots, some surgeons, etc..





Speak your mind


Resources & Links