Use the Ubuntu LiveCD, the application called Gparted, in the Admin menu.
It's the *ahem* best tool for the job.
A few points first though:
1 - it isn't widely recomended to move the START location of an existing partition.
2 - NTFS partition should be defragmented before resizing it.
3 - If your data is important, a backup first is recomended.
4 - depending on the layout of the partitions right now, you may be in a situation where you MUST move the start of a partition. If this is the case, hopefully it is a linux partition. If so, the easiest thing to do is backup everything on it (Gparted has a partition copier), then shrink the NTFS partition by moving the END of it down. Next, recreate the Linux partition following the NTFS one.
Finally, restore the backup of Linux, onto the new Linux partition.
I/we/someone can give you more accurate directions, if you post us the exact partition scheme of the drive (what is hda1, hda2, hda3, etc etc).
NOTE - If the partition names/numbers change, you will need to edit your GRUB/LILO appropriately.