It seems the advice here is to rename the admin directory to something obscure. I think an even better solution is to go one step further and to re-create a dummy admin directory after you've renamed the real one. The relatively bare-bones dummy one I have contains only a few files...
admin/index.php
admin/login.php
admin/includes/general.js
admin/includes/stylesheet.css
admin/images/oscommerce.png
admin/images/pixel_trans.gif
My admin/index.php contains:
<?php
header("Location: https://www.mydomain.com/admin/login.php");
die();
?>
and admin/login.php contains a cut-and-paste of the 'view source' result from viewing the default admin/index.php before moving it.
In other words my admin/login.php now contains this...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="ltr" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="robots" content="noindex,nofollow">
<title>osCommerce Online Merchant Administration Tool</title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<script language="javascript" src="includes/general.js"></script>
</head><body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" onload="SetFocus();" bgcolor="#ffffff" marginheight="0" marginwidth="0">
<!-- header //-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td colspan="2"><a href="https://www.mydomain.com/admin/index.php"><img src="images/oscommerce.png" alt="osCommerce Online Merchant v2.2 RC2a" title=" osCommerce Online Merchant v2.2 RC2a " border="0"></a></td>
</tr>
<tr class="headerBar">
<td class="headerBarContent"> <a href="https://www.mydomain.com/admin/index.php" class="headerLink">Administration</a> | <a href="http://www.mydomain.com/" class="headerLink">Online Catalog</a> | <a href="http://www.oscommerce.com/" class="headerLink">Support Site</a></td>
<td class="headerBarContent" align="right"> </td>
</tr>
</tbody></table>
<!-- header_eof //-->
<!-- body //-->
<table border="0" cellpadding="2" cellspacing="2" width="100%">
<tbody><tr>
<td><table border="0" cellpadding="0" cellspacing="0" width="100%" height="40">
<tbody><tr>
<td class="pageHeading">Administrator Login</td>
<td class="pageHeading" align="right"><form name="adminlanguage" action="https://www.mydomain.com/admin/index.php" method="get"><select name="language" onchange="this.form.submit();"><option value="en" selected="selected">English</option></select></form></td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td>
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody><tr class="infoBoxHeading">
<td class="infoBoxHeading"><b>Administrator Login</b></td>
</tr>
</tbody></table>
<form name="login" action="https://www.mydomain.com/admin/login.php?action=process" method="post">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody><tr>
<td class="infoBoxContent">Username:<br><input name="username" type="text"></td>
</tr>
<tr>
<td class="infoBoxContent"><br>Password:<br><input name="password" maxlength="40" type="password"></td>
</tr>
<tr>
<td class="infoBoxContent" align="center"><br><input value="Login" type="submit"></td>
</tr>
</tbody></table>
</form>
</td>
</tr>
</tbody></table>
<!-- body_eof //-->
<!-- footer //-->
<br>
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody><tr>
<td class="smallText" align="center">
osCommerce Online Merchant Copyright � 2008 <a href="http://www.oscommerce.com/" target="_blank">osCommerce</a><br>
osCommerce provides no warranty and is redistributable under the <a href="http://www.fsf.org/licenses/gpl.txt" target="_blank">GNU General Public License</a>
</td>
</tr>
<tr>
<td><img src="images/pixel_trans.gif" alt="" border="0" width="1" height="5"></td>
</tr>
<tr>
<td class="smallText" align="center">Powered by <a href="http://www.oscommerce.com/" target="_blank">osCommerce</a></td>
</tr>
</tbody></table>
<!-- footer_eof //-->
<br>
</body></html>
Obviously 'mydomain' is replaced by my own shop's domain.
The other files add to the illusion that this is the real admin area.
The idea is that hackers will waste their time with admin/login.php which does absolutely nothing of course, whilst the real back office area is now in a different directory as already described in this thread.
It might be a waste of time, but if you're going to go to the trouble of renaming admin, you might as well go the whole hog and create a dummy one in its place to keep the hackers entertained.