How can i restrict /admin login page to a particular IP only?
I think I would go for doing this at the Apache level before hitting Drupal.

Have a look at the Apache manual for doing this but you are looking at something like this:

# Only allow request for admin only from localhost.
&lt;Location /admin&gt;
  Deny from all
  Allow from 127.0.0.1
&lt;/Location&gt;


So admin will be denied for all but allowed from 127.0.0.1 for example. Also take in to account cleanurls. You will need to deny access to ?q=admin aswell.