He said the package of reforms would require changes to European Union treaties, but said he was "confident" that he could reach agreement with fellow EU leaders.
In a long-awaited speech on the issue, Cameron stopped short of calling for a cap on new arrivals or a mooted "emergency brake", which had caused consternation in EU capitals.
But he announced plans to make EU workers wait four years to receive in-work benefits such as tax credits and social housing, and vowed to stop migrants claiming benefits for children who were living elsewhere in Europe.
His Conservative party is facing an electoral challenge from the UK Independence Party (UKIP), which advocates leaving the EU altogether as the only way to stop EU migration.
More From This Section
Cameron said the reforms were an "absolute requirement" of his attempts to renegotiate Britain's membership of the bloc before holding an in-out referendum in 2017.
"There is no doubt that this package as a whole will require some treaty change and I am confident we can negotiate that," he said.
He said: "If our concerns fall on deaf ears and we cannot put our relationship with the EU on a better footing, then of course I rule nothing out."
In a wide package of measures intended to make it less attractive to come to Britain, Cameron said EU migrants should have a job before arriving and could be deported if they do not find work after six months.
Cameron had promised to cut net migration to Britain to under 100,000, but official statistics released yesterday effectively killed that promise.