Why was Sherlock Holmes such a memorable character?
Because he had flaws. He condescended to Watson. He embraced the seediest aspects of life in London. He was so bored with everyday life that he took cocaine when he was between cases.
These are traits you rarely find in heroes, because heroes are supposed to be so damn good all the time. Unfortunately "being good" is synonymous with never saying anything interesting and never doing anything interesting. It's why nobody remembers God from Paradise Lost, but everybody remembers Satan.
Try adding defects to your hero. Make him struggle with his ethics. Give him weaknesses. Give him a physical flaw.
Nobody's perfect, including your readers. Give them a hero they can identify with.