As others have said, any problem that is publicly well known and interesting, is likely to be either quickly solved by interested and knowledgeable parties, or to be very difficult, having resisted efforts of such people. Thus the ticket to finding and solving problems of reasonable difficulty, is to learn to generate them oneself. For this, you want to learn as much as possible, and practice asking questions that come to mind in thinking about this new knowledge. You can start this exercise in reading standard textbooks, but once you progress beyond those to more advanced works, it will help to choose to read the work of very strong and creative people. Such works will contain not only very useful insights, but also many newly uncovered areas and questions. It is true that sometimes such a strong and creative researcher will keep somewhat quiet about some of his/her discoveries in order to give them to his/her own students, to give them a head start, but it is best if a student develops his/her own approach. In this way the problem will actually be interesting to the student.
It is also true that one should not be too concerned as to whether the problem one generates has already been solved or not. it is just as impressive to discover and solve a non trivial problem on ones own, even if it has already been solved, and indeed there is always room for a new approach even to an already solved problem. Also, if one persists in this endeavor, at some point one will usually happen on a problem that is new. When I was a grad student, I solved two or three problems that turned out to have been already solved, before finally making progress on one that was not solved. Such problems are sometimes found in the publications of good mathematicians from the past. (My thesis problem was an open question revealed on virtually the last page of a paper by Wirtinger from the 19th century.) So my advice is again, practice generating questions from all ones reading, as well as making ones own proofs of results one is learning, and definitely make it a habit to read very good mathematicians. Even the best mathematicians spent over a century essentially working out remarks of Riemann.
Another technique for solving new problems is to understand thoroughly the proof of a known theorem, and to observe that it does not use all the hypotheses that are present. Hence one can prove a similar theorem by omitting that hypothesis and using the same argument. Or, as my teacher Maurice Auslander told us, "look for a theorem whose proof proves more than it claims to". Or as Zariski himself did, and this is more difficult, read a paper but not the proofs, and try to give your own proofs of the results. Then you will sometime find that your proof proves more than the statements you are reading. Another technique, after acquiring some level of mastery: one may read old papers by good people of an earlier era, whose results are interesting, but sometimes lacking in modern clarity or rigor, and one can sometimes use better techniques than were previously known, to clarify and solidify, and possibly improve, their results.
Basically we try to build upon the work of others, and to choose those others wisely, so as to be following in the footsteps of someone as good as possible, but within reason, for our own ability. As we do this moreover, our ability increases.
Another good possibility is to work jointly with other people. Most of my work, and all of my best work, is joint with some very strong people, and the results are much better than anything I did alone. People with different strengths can compliment each other very profitably. You also learn a lot by this process of collaboration.