For those of you who are still paying way too much money on proxies services. This guide is ********* for you.
To start off, setting up a proxy server isn't really that hard if you have:
1. A budget ($100 usd +)
The more you put into it, the more you can get back out. You can also sell back some of your services.
2. A hosting provider that can provide you with the amount of IPS that you need. (You will also need a server)
Get a hosting provider that can give you a Class C Ip Address range. You don't have to, but it is recommended. The more IPS you get, the more it will cost you, BUT you can easily make it back.
3. A server with the right operating system and proxy software.
We would recommend using Centos and Squid. He is a basic setup guide using that:
First you have to install all the basic requirements for Centos and Squid to work.
yum -y groupinstall "Development Tools"
yum -y install rpm-build openjade linuxdoc-tools openldap-devel pam-devel openssl-devel httpd rpm-devel
Then you have to download Squid and install it:
cd /usr/src
wget http://download.fedora.redhat.com/p...ource/SRPMS/squid-3.0.STABLE10-1.fc10.src.rpm
rpm -ivh squid-3.0.STABLE10-1.fc10.src.rpm
You have to now generate and install the rpm file:
cd /usr/src/redhat/SPECS
rpmbuild -bb squid.spec
Now for the next step. You have to install the newly built rpm, which will be found in /usr/src/redhat/RPMS/i386 for i686 and /usr/src/redhat/RPMS/x86_64 for x86_64.
rpm -Uvh /usr/src/redhat/RPMS/i386/squid-3.0.STABLE10-1.i386.rpm
After all of this you now need to do some configuration:
vi /etc/squid/squid.conf
Once you have this file open you need to modify a few things:
1. Configure auth_param (enable ncsa authentication to access the squid server)
FIND:
#auth_param basic program <uncomment and complete this line>
#auth_param basic childred 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
CHANGE TO:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
auth_param basic childred 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
2. Create proxy_auth acl (create proxy_auth acl to prompt user/pass to everyone who wants to use the anonymous proxy)
FIND:
#INSERT YOUR OWN RULES(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
CHANGE TO:
#INSERT YOUR OWN RULES(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
3. Disable Forwarded Client IP (By default squid forwards the client IP to the respective website, but to set up an anonymous proxy we will disable it to hide client IPs and send only IPs which are configured on the squid server.
FIND:
forwarded_for on
CHANGE TO:
forwarded_for off
4. Configure IPs (Now we will generate rules for outgoing IPs, i.e. if anyone connects to any IP of my server, so it will go with the same IP to the destination server. In this way we can connect several clients on different IPs and all IPs act as an anonymous proxy)
FIND:
# TAG: tcp_outgoing_address
CHANGE TO: (add as many IPS as needed and provided by your hosting provider)
# TAG: tcp_outgoing_address
acl ip1 myip 192.168.1.1
tcp_outgoing_address 192.168.1.1 ip1
acl ip2 myip 192.168.1.2
tcp_outgoing_address 192.168.1.2 ip2
acl ip3 myip 192.168.1.3
tcp_outgoing_address 192.168.1.3 ip3
acl ip4 myip 192.168.1.4
tcp_outgoing_address 192.168.1.4 ip4
acl ip5 myip 192.168.1.5
tcp_outgoing_address 192.168.1.5 ip5
Just to let you know, you need to use public ip addresses. 192.168.1.1 is just and example
5. Enable Anonymizer (Anonymous Proxy)
Now you need to put the following at the bottom of your squid.conf file: (when done with that save the file)
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
6. Now it's time to create the squid_passwd file, in which you will put your users for authentication using ncsa. To do this, we need the htpasswd command to generate a user/pass. Create the file to hold the usernames and passwords.
RUN THIS COMMAND:
touch /etc/squid/squid_passwd
7. Now we need to Create New User
RUN THIS COMMAND:
htpasswd /etc/squid/squid_passwd proxyadmin
Where /etc/squid/squid_passwd is a file, in which all users go, and proxyadmin is a username which will be added with the password given.
8. Next we need to Update Password
RUN THIS COMMAND:
htpasswd /etc/squid/squid_passwd proxyadmin
9. Run Squid and configure it to run on startup (when you start your server)
RUN THIS:
service squid start
chkconfig squid on
Hope this helps

To start off, setting up a proxy server isn't really that hard if you have:
1. A budget ($100 usd +)
The more you put into it, the more you can get back out. You can also sell back some of your services.
2. A hosting provider that can provide you with the amount of IPS that you need. (You will also need a server)
Get a hosting provider that can give you a Class C Ip Address range. You don't have to, but it is recommended. The more IPS you get, the more it will cost you, BUT you can easily make it back.
3. A server with the right operating system and proxy software.
We would recommend using Centos and Squid. He is a basic setup guide using that:
First you have to install all the basic requirements for Centos and Squid to work.
yum -y groupinstall "Development Tools"
yum -y install rpm-build openjade linuxdoc-tools openldap-devel pam-devel openssl-devel httpd rpm-devel
Then you have to download Squid and install it:
cd /usr/src
wget http://download.fedora.redhat.com/p...ource/SRPMS/squid-3.0.STABLE10-1.fc10.src.rpm
rpm -ivh squid-3.0.STABLE10-1.fc10.src.rpm
You have to now generate and install the rpm file:
cd /usr/src/redhat/SPECS
rpmbuild -bb squid.spec
Now for the next step. You have to install the newly built rpm, which will be found in /usr/src/redhat/RPMS/i386 for i686 and /usr/src/redhat/RPMS/x86_64 for x86_64.
rpm -Uvh /usr/src/redhat/RPMS/i386/squid-3.0.STABLE10-1.i386.rpm
After all of this you now need to do some configuration:
vi /etc/squid/squid.conf
Once you have this file open you need to modify a few things:
1. Configure auth_param (enable ncsa authentication to access the squid server)
FIND:
#auth_param basic program <uncomment and complete this line>
#auth_param basic childred 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
CHANGE TO:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
auth_param basic childred 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
2. Create proxy_auth acl (create proxy_auth acl to prompt user/pass to everyone who wants to use the anonymous proxy)
FIND:
#INSERT YOUR OWN RULES(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
CHANGE TO:
#INSERT YOUR OWN RULES(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
3. Disable Forwarded Client IP (By default squid forwards the client IP to the respective website, but to set up an anonymous proxy we will disable it to hide client IPs and send only IPs which are configured on the squid server.
FIND:
forwarded_for on
CHANGE TO:
forwarded_for off
4. Configure IPs (Now we will generate rules for outgoing IPs, i.e. if anyone connects to any IP of my server, so it will go with the same IP to the destination server. In this way we can connect several clients on different IPs and all IPs act as an anonymous proxy)
FIND:
# TAG: tcp_outgoing_address
CHANGE TO: (add as many IPS as needed and provided by your hosting provider)
# TAG: tcp_outgoing_address
acl ip1 myip 192.168.1.1
tcp_outgoing_address 192.168.1.1 ip1
acl ip2 myip 192.168.1.2
tcp_outgoing_address 192.168.1.2 ip2
acl ip3 myip 192.168.1.3
tcp_outgoing_address 192.168.1.3 ip3
acl ip4 myip 192.168.1.4
tcp_outgoing_address 192.168.1.4 ip4
acl ip5 myip 192.168.1.5
tcp_outgoing_address 192.168.1.5 ip5
Just to let you know, you need to use public ip addresses. 192.168.1.1 is just and example
5. Enable Anonymizer (Anonymous Proxy)
Now you need to put the following at the bottom of your squid.conf file: (when done with that save the file)
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
6. Now it's time to create the squid_passwd file, in which you will put your users for authentication using ncsa. To do this, we need the htpasswd command to generate a user/pass. Create the file to hold the usernames and passwords.
RUN THIS COMMAND:
touch /etc/squid/squid_passwd
7. Now we need to Create New User
RUN THIS COMMAND:
htpasswd /etc/squid/squid_passwd proxyadmin
Where /etc/squid/squid_passwd is a file, in which all users go, and proxyadmin is a username which will be added with the password given.
8. Next we need to Update Password
RUN THIS COMMAND:
htpasswd /etc/squid/squid_passwd proxyadmin
9. Run Squid and configure it to run on startup (when you start your server)
RUN THIS:
service squid start
chkconfig squid on
Hope this helps