I need to hard reset my Debian server from time to time since all services are down (SSH, Apache, etc.).
What can I do to find the cause of the problem?
As Martin suggested, if you can log into server locally while ssh/apache is down, this might indicate a problem with network card.
If a server freezes completely and syslog doesn't indicate the problem program or hardware, it would rather point to a larger hardware problem, since syslog doesn't even get to write entry before server hangs.
Beside checking syslog as per previous answer you should also:
1) make sure to check environment, maybe server overheats. Even if when you go to it, the room temperature is OK, you should be able to check processor temperature in BIOS. Also, you can install some monitoring software that would poll thermal sensors periodically and show you the status remotely.
2) run BIOS diagnostics to see if BIOS detects any problems with hardware.
/var/log/syslog (and the archived ones like syslog1, syslog2.gz etc.) may hold valuable information.
Also, this could be a hardware problem with the ethernet card of your server.