Родился 6 мая 1925 года в селе Гуськи ныне Чулымского района Новосибирской области в семье рабочего. Русский.
В 1931 году вместе с родителями переехал в Читинскую область, где окончил 9 классов. Началась война и он пошел работать шахтёром на Киинский прииск треста «Забайкалзолото».
В январе 1943 года Шилкинским райвоенкоматом призван в армию. В запасном полку получил специальность заряжающего артиллерийского орудия. Боевое крещение принял весной 1944 года на 1-м Прибалтийском фронте. Воевал в составе истребительно-противотанковой батареи 44-й мотострелковой Полоцкой бригады. Отличился в боях за освобождение Прибалтики.
19 августа 1944 года в бою при отражении вражеских контратак западнее города Шяуляй (Литва) младший сержант Иванов в составе орудийного расчёта уничтожил 8 танков, 5 автомашин и до 2 рот пехоты противника.
Войну закончил в день падения Кенигсберга, получив тяжелое ранение. После войны был демобилизован.
Вернувшись в г. Шилку, окончил десятый класс, позднее — Московский государственный университет им. М. В. Ломоносова. В 1947 году вступил в ВКП(б)/КПСС.
Жил в городе Москве. Работал преподавателем в заочном политехническом институте.
Умер 15 сентября 1994 года. Похоронен в городе Долгопрудный Московской области на Южном кладбище (участок № 28).