We routinely land impactors, robots, and even sample return missions on other bodies in the Solar System. It does not seem to be a stretch to land a small rocket on a meteor and give it a push. If you do it a few years in advance, it would not even take much of a rocket.
When the mass you are trying to move is a billion metric tons, you're gonna need a lot of advance warning. We can land on asteroids, changing their trajectory enough to avoid a planet strike is uncharted and entirely unpracticed territory.
Part of me thinks that NASA's recent foray into asteroids is just that, practice.