Public NTP servers
http://www.pool.ntp.org/
If you are in the US: United States — us.pool.ntp.org To use this pool zone, add the following to your ntp.conf file:
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
Other pools around the world are available and can be found at the http://www.pool.ntp.org/ site.
The U.S. Commerce Department’s National Institute of Standards and Technology maintains the official time for the US. It also has a list of public time servers.
http://tf.nist.gov/tf-cgi/servers.cgi
The answer depends on where you are and how sophisticated your infrastructure can be.
The offical US NIST time servers are available here.
These are authoritative, and are the best NTP sources of time you will find in the US. To use them, configure a single ntp server on your network to synchronize to at least three, but no more than five, geographically diverse servers from the list. (Note that the servers change from time to time: check every few months and update accordingly).
Then, configure every host on your network to synchronize to your server, which itself is synchronizing to the NIST cloud. Do not configure multiple hosts to synchronize directly to these servers, and do not query them relentlessly.
If you are unable or unwilling to run a local personal NTP server, then consider instead using the NTP Pool Project pool.ntp.org servers instead. Configure your hosts to synchronize with these directly, choosing the pool that is closest to you geographically. The only difference between this method and the previous one is that these servers are stratum 2, and themselves synchronize with stratum 1 servers like NIST. You will very likely not notice any difference.
The purpose of using the pool if you are not running a local ntp server is to minimize the load on the stratum 1 servers. If you require a very high degree of accuracy (beyond what most desktop or simple server users need), then you should run a local ntp server. Without one, most of the benefits of using stratum 1 time sources are lost, so you had might as well use the ntp pool instead.