I have 3 stand alone CentOS servers on same hosting provider. The hosting company can't offer me a firewall for this devices, only iptables. So I want to buy another server and make this server a firewall (and some monitoring tools like Snort) for first 3 servers that I already have a. I don't have private IP at any server, they are not in a private network. It is possible to route all traffic through "firewall server" if they are not in a private network?
Public vs private doesn't really matter here, you can use either one. However, I think you'll find that it's very tricky to implement what you're looking for without placing your existing servers into a dedicated subnet, private or public, for which the new server/FW acts as a gateway, because that's the most natural way to get traffic to flow systematically through the firewall.
The problem is that if something else is acting as a gateway in front of the subnet containing the 3 servers and the firewall, it's tricky to configure this "something else" to send traffic to the firewall first, when it has direct access to the 3 servers via a connected network.
It could be done using a bridging firewall. I had to do that at an old workcenter where our department wasn't allowed to create a private network, so I put up a bridging firewall (linux iptables and bridging software) between the link outside our network, and everything inside. You have to do some extra tricks to do it but it works.
Here is one link that seems pretty accurate. It's been a while since I did it myself, though (at least 10 years).