What needs to happen is that all systems running complexes that are needed by the majority of people, like Energy/Water/Medical/Food etc have to sever its tighs with the internet. And become closed standalone systems which don't allow outside connections - not even USB sticks etc - and that perhaps don't even allow any changes to the internal code at all. A computer is basically just a machine that fulfills a specific function, now in running an nuclear power plant that function can be defined exactly, and, if no hardware changes are done, could stay the same.
Why do all these crucial & important systems need to have that much flexibility? Because currently it's handy, it's easy, it's cheap - it's just to save money, getting things more cheap. Let's just interconnect all our industry via the internet with everybody, so you can easily update these systems (saves some bucks when you don't have to order a postal CD) or supply the government with statistics...
But everybody knows that no security system, firewall etc is a 100% guarantee of protection so for all this ease they willfully - and knowingly - invite these kinds of dangers. And we all know that the industry is very lax to invest into good personal for online security, that's their second fault.
The culprits above are merely criminals wanting to make money, what do you think will happen if you replace these people with terrorists; or another nation you're at war with. They may take down your entire source of electricity, water, everything... and there are already military projections that state that, esp. for highly industrialised states, people will start dying in massive amounts after 1 week of such an attack.