Ukraine will not allow Russian men aged 16-60 into the country following the imposition of martial law, Kiev says.
An exception would be made for “humanitarian cases” such as those travelling to funerals. Russia says it is not planning retaliatory measures.
Martial law has been imposed in 10 Ukrainian regions until 26 December.
The move came amid fears of a Russian invasion after Russian forces seized three Ukrainian vessels and 24 sailors in the Black Sea last Sunday.
Ukraine said the incident was a flagrant violation of international law, while Russia says the vessels violated its territorial waters.
It is the most dangerous clash at sea off Crimea since Russia annexed the Ukrainian peninsula in March 2014.
What did Ukraine say?
The restrictions were announced after President Petro Poroshenko met the country’s top security officials, including border guard chiefs, in Kiev.
The president tweeted (in Ukrainian) that the ban was designed to prevent the formation of “private armies” in Ukraine.
He was referring to Russian-backed separatists who formed units in April 2014 to fight Ukrainian government forces in eastern Ukraine.
Mr Poroshenko also said registration criteria would be tightened for Russian citizens in the regions under martial law.
On Tuesday, he warned there was a threat of “full-scale war” with Russia.
“The number of [Russian] tanks at bases located along our border has grown three times,” the president said.
Five of the 10 regions border Russia while two are adjacent to Moldova’s breakaway Trans-Dniester region, where Russian troops are stationed. The other three regions border the Black Sea or Sea of Azov close to Crimea.
The BBC’s Jonah Fisher in Kiev says the ban could have a devastating impact on cross-border travel as the holiday period approaches. Many Russians have relatives living in Ukraine.
Reacting to the Ukrainian ban, Russian Foreign Ministry spokeswoman Maria Zakharova said Moscow was not planning “mirror” measures as this “could result in full madness”.
Russia earlier said the 30-day martial law in Ukraine had been declared in order to potentially suspend presidential elections set for 31 March.
It said President Poroshenko – whose approval ratings have plummeted – would then be the main beneficiary.
Mr Poroshenko denies the claim, saying the polls will be held as scheduled.