You can totally store an iterator in an Box<dyn Iterator<Item=String>>. The iterator returned from filter_map can be stored in a box using Box::new(filtered_iterator).
If you wish to “keep” the index, you should consider using an iterator which implements Clone. For example, the immutable iterator over a vector or slice can be cheaply cloned. While you cannot crawl back, you can store where you are and keep going in a copy.
Unfortunately the fact that the iterator can be cloned is lost when you put it in a box, so that is not really an option. You can use generics instead: example.