North comes from the Old English norÞ and since that Þ is the th sound (why doesn’t it still have its own letter?!), that means the word is just north. Before that, it was the Proto Germanic nurtha, and it’s theorized that nurtha comes from the Proto Indo European ner-, which means left. Because which way is north when you’re looking at the sun rise?
South has a very similar story, coming from the Old English suð (south, of course). For those who don’t know, that ð is another letter for the th sound (used to have two; now we have zero -_-), but Þ sounds more like the th in the (try not to be too confused by that sentence) and ð is more like the th in math. Anyway, suð comes from the Proto Germanic sunthaz, which is thought to mean “sun side”—and that sun is where sun comes from. No explanation as to why south is the sunny side, though. Maybe it has to do with the angle of the sun at certain times of year or something.
East comes from the Old English east which means…east. I guess there hasn’t been many changes in recent years. It comes from the Proto Germanic aust-, which literally meant “towards the sunrise”, and is from the Proto Indo European aus-, to shine. Which the sun does do when it comes up in the morning. While you’re trying to sleep. Weirdly enough, aus- is related to ausus-, dawn, which gave us the classical Latin word auster, which means a southern wind. Seriously. What the hell.
Much like North and South are similar, so are East and West. West comes from the Old English west which means (brace yourself!) west. And before that, it was the Proto Germanic west-. So there’s even less change in this one. Even the Proto Indo European word it comes from isn’t that different: wes-, which in turn comes from a phrase wes-poro-, which means evening. In other words, when the sun sets.
Tony Jebson’s page on the Origins of Old English