The FBI will be shutting down the temporary DNS servers that they set up to support Internet users that were compromised with DNSChanger malware. Anyone still using those DNS servers will be unable to resolve host names, which will effectively render them unable to do pretty much anything online until they clean up their infected system.
On November 8th 2011, the FBI, in conjunction with NASA-OIG and Estonian police, arrested several criminals operating under the company name “Rove Digital”. Rove Digital had been distributing DNS changing viruses (TDSS, Alureon, TidServ and TDL4). They then routed victims through their own DNS servers in order to direct traffic to junk ads. They infected around 4 million users, and made a reported $14Million before getting shut down.
With such a large number of compromised users relying on Rove Digital’s DNS servers for their Net access, the FBI decided to temporarily leave the DNS servers up and running to give people time to clean up their infected systems. Because people have been slow about cleaning up their computers, the FBI extended their original March deadline to Monday July 9th.
If you would like to verify that your computer is clean, you can go to http://www.dcwg.org/detect/ for a list of safe sites that you can use to check. Should you find that you have a compromised computer, they have good resources available to help you clean up your system.
There is always confusion about what DNS does and what it doesn’t do. In particular, I see constant reference to DNS functions mixed up with web server functions, and vice-versa. Hopefully this post clarifies things a bit to separate what DNS does and what web servers handle.
IP address allocation for web hosting isn’t really a new topic, it has in fact been pretty well resolved for over a decade. But it’s still a point of confusion to some people, so here we go.
Websites have a hostname, like www.iphouse.com. When you click on a link or enter a URL into your web browser, the browser extracts the hostname from the URL and opens a connection to it. But the network doesn’t work with a hostname, it works with numeric IP addresses like 3522190849, which is usually written 188.8.131.52. So the web browser first has to look up the IP address for the hostname through DNS, the Domain Name System. Once it has an IP address, it can open a connection to the server and request the file.
Passwords. It seems like most people, when asked, will tell you that it’s important to use strong passwords. However, in my work experience, all too often I see people using fairly weak ones. When asked why, the answer I usually get is that it’s too hard to remember long random passwords. I get this. A password doesn’t do you much good if you can’t remember it.
A popular techie web comic made a good one about this from xkcd:
Although revisiting and updating existing code isn’t necessarily fun or an obviously lucrative way to spend your limited time, it can certainly pay dividends. I know my personal knowledge, skill, and experience have changed over the years, and code which seemed perfectly good six years ago can be painful to read now. Perhaps you’ve gained new appreciation for readable code in general. Or limiting how deeply you nest your conditional blocks, or avoiding incomprehensible loops six pages long. Regardless, code which is easy to read and understand is easy to maintain, and has fewer bugs.
Sometimes, its not your skill which was necessarily at fault, but your environment. Perhaps the code has simply outgrown the original project scope, and become littered with references and obscure exceptions which were bolted on later. Reconsidering and refactoring the code is a necessary step to regaining control of the chaos. Or the original project simply didn’t afford enough time for development, and you had to leverage existing code which didn’t quite fit. Our own ipMom account interface started life as PostfixAdmin, which was quick and easy to put into production, though you wouldn’t be able to tell anymore.
Finally, programming languages themselves change. New libraries are added, and new functions which can make your code leaner and cleaner overall. With relatively new programming languages, its easy to have code which predates any developed or widely-used best practices for the language. Bringing the code up to spec now will make it easier for you, and easier for others, to maintain it in the future.