You will probably have to build your own. Don't worry, it's not that hard. I personally think it's easier to just create my own.
Linux comes with netfiltering in the kernel and most distributions come with iptables. Just type in iptables as root and see what comes back. If file is not found then, you will have to install it to create or use any type of firewall.
If you do have iptables, then what you do is setup your policies to drop packets and then selectively allow certain ports, protocols and states to pass through. That is generally refered to as a Stateful Packet Inspection (SPI) firewall. If you set up your box as a router as well, iptables can also act as a Network Address Translation (NAT) Firewall.
Yes, you can technically setup your SMB server on your firewall. However, firewall boxes usually have no hard drive. This is to make it more difficult for a hacker should they get control of your firewall box. It all depends, really, on how paranoid you are.
If you create a firewall script, you can then put it into your init scripts so that it starts up every time your computer does. You can learn how to do all this at:
http://www.linuxguruz.com/iptables/h...les-HOWTO.html <--Basic
http://iptables-tutorial.frozentux.n...-tutorial.html <-- More advanced (includes NAT)
Hope this helps
RK