Well an SSH tunnel is not ideal for compressing and encrypting if you want to basically direct all your traffic over it. A VPN is a more ideal solution for that L2TP would be more ideal for that, though if you only wanted to do web browsing socks would work as well. You can also use Dynamic forwarding for web browsing with an ssh tunnel as well. Finally there is a project called sshuttle
https://github.com/apenwarr/sshuttle that uses Python, an ssh connection and iptables to turn an ssh connection into a VPN like solution.
As far as controlling ports and traffic that will depend on the solution you are using. You can for instance use dynamic port forwarding with SSH and socks to encrypt web browsing and use the ssh server like a proxy. See
http://www.debian-administration.org...ing_with_SOCKS for an example of how to set that up. Of couse then you need to go into the preferences for your system or browser and set the proxy server settings to match those of you ssh tunnel.