The nine-point deal includes setting up a 19-mile buffer zone, a ban on overflights of part of eastern Ukraine by military aircraft and the withdrawal of “foreign mercenaries” on both sides.
The agreement was announced at talks in the Belarusian capital Minsk, where a ceasefire was agreed on September 5.
More than 3,000 have died in fighting in two eastern regions since April.
The original cease-fire has been frequently violated but is still holding.
Ukraine accuses Russia of arming separatists and sending Russian troops to the eastern Donetsk and Luhansk regions. The Kremlin denies it has any role there.
In a separate development on Saturday, a humanitarian convoy of about 200 trucks from Russia has arrived in the city of Donetsk, Russian news agencies report.
They say the convoy – Russia’s third in recent weeks – delivered food, water and generators, but this was done without Ukraine’s authorization.
The deal was reached after late-night talks between representatives of Ukraine, Russia, eastern separatists and the Organization for Security and Cooperation in Europe (OSCE).
Correspondents say it is an effort to add substance to the fragile ceasefire agreement.
Former Ukrainian President Leonid Kuchma, representing Kiev at Minsk talks, said that all sides had agreed to move back some of their heavy weapons.
“Heavy artillery will be moved 15 km away from the front line,” he said.
He added that the deal would be implemented within 24 hours and monitors from the OSCE would travel to the buffer zone to check for compliance.
Separatist leader Alexander Zakharchenko said that the two sides did not discuss the status of the rebel-held areas of Luhansk and Donetsk.
“We have our opinion on it while Ukraine has its own,” he said.
Earlier this week, Ukraine’s parliament passed a bill granting a three-year “self-rule” to parts of the Donetsk and Luhansk regions – a move described as “capitulation” by some Ukrainian lawmakers.
The Russian ambassador to Ukraine, Mikhail Zurabov, representing Moscow at the talks, said that “mercenaries” were fighting on both sides, and called on OSCE to oversee their removal.
Russia has repeatedly said that any of its citizens fighting alongside separatists in Ukraine are doing so in a private capacity.
WDiKviVSCC8The US House Ethics Committee has voted to release its report on former Republican Representative…
ABC News has agreed to pay $15 million to President-elect Donald Trump to settle a…
South Korea’s parliament has voted to impeach President Yoon Suk Yeol over his failed attempt…
Israeli war planes have carried out more than 100 air strikes in Syria on December…
President-elect Donald Trump has threatened to impose 100% tariffs on the BRICS countries if they…
Syrian troops have withdrawn from the city of Aleppo following an offensive by rebels opposed…