Squid is a multipurpose caching and forwarding proxy server built mainly to serve HTTP and FTP requests. It extends its capability to support other protocols like SSL, TLS, HTTPS, and Internet Gopher, though with limitations. It was designed to exploit the internet connection for speedy content delivery. Squid also supports building cache server hierarchies with its ability to route requests in various ways. It has the ability to act as a reverse proxy cum webserver accelerator.
Features
Multiple Caching Protocols Support
Squid offers excellent support to a wide array of caching protocols that include ICP, HTCP, CARP, WCCP.
Scalability
Squid can be used from smaller and simpler networks to larger and complex networks.
Anonymizing Connections
It can anonymize connections by changing or disabling the header fields.
It will take a few minutes for your VM to be deployed. When the deployment is finished, move on to the next section.
Connect to virtual machine
Create an SSH connection with the VM.
bashCopy
ssh azureuser@10.111.12.123
Usage/Deployment Instructions
Step 1: Access Squid in Azure Marketplace and click on Get it now button.
Click on Continue and then click on Create.
Step 2: Now to create a virtual machine, enter or select appropriate values for zone, machine type, resource group and so on as per your choice.
Click on Review + create;
Step 3: The below window confirms that VM was deployed.
Step 4: Open port 3128 in security group by going to resource group –
Step5: Open putty and connect with your machine. Add IP address of the running virtual machine.
Step 6: Login with user name and password that you provided during machine creation.
Step 7: Configuring Squid as an HTTP Proxy on Ubuntu
Add Squid ACLs
If you wish to allow only one IP address to access the internet through your new proxy server, you will need to define new acl (access control list) in the configuration file.
sudo vim /etc/squid/squid.conf
The acl rule you should add is:
acl localnet src your_server_IP
Where 192.168.0.102 is the IP address you should change it according to your IP address. This acl should be added in the beginning of the ACL’s section as shown in the following screenshot.
You will need to restart Squid service to take the new changes into effect.
sudo systemctl restart squid
Open Ports in Squid Proxy
By default, only certain ports are allowed in the squid configuration, if you wish to add more just define them in the configuration file as shown.
acl Safe_ports port XX
Where XX is the port number that you wish to allow.
sudo systemctl restart squid
Step 8: Squid Proxy Client Authentication
To allow users to authenticate before using the proxy, you need to enable basic http authentication in the configuration file.
Now we will create a new user and setup its password.
sudo htpasswd /etc/squid/passwords username
Provide a username and password of your choice
sudo systemctl restart squid
Step 9: Block Websites on Squid Proxy
To block access to unwanted websites, first create a file called “blacklisted_sites.acl” that will store the blacklisted sites in it.
sudo touch /etc/squid/blacklisted_sites.acl
Now add the websites that you wish to block access, for example.
.badsite1.com
.badsite2.com
The proceeding dot informs squid to block all references to that sites including www.badsite1, subsite.badsite1.com etc.
Now open Squid’s configuration file.
sudo vim /etc/squid/squid.conf
Just after the above ACLs add the following two lines:
acl bad_urls dstdomain “/etc/squid/blacklisted_sites.acl”
http_access deny bad_urls
Now save the file and restart squid:
sudo systemctl restart squid
Step 10: Connecting through Squid
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 http://www.google.com/
It is also possible to access https:// websites with your Squid proxy
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 https://www.google.com/
Enjoy your Appliation.
Until now, small developers did not have the capital to acquire massive compute resources and ensure they had the capacity they needed to handle unexpected spikes in load. Amazon EC2 enables any developer to leverage Amazon’s own benefits of massive scale with no up-front investment or performance compromises. Developers are now free to innovate knowing that no matter how successful their businesses become, it will be inexpensive and simple to ensure they have the compute capacity they need to meet their business requirements.
The “Elastic” nature of the service allows developers to instantly scale to meet spikes in traffic or demand. When computing requirements unexpectedly change (up or down), Amazon EC2 can instantly respond, meaning that developers have the ability to control how many resources are in use at any given point in time. In contrast, traditional hosting services generally provide a fixed number of resources for a fixed amount of time, meaning that users have a limited ability to easily respond when their usage is rapidly changing, unpredictable, or is known to experience large peaks at various intervals.
Traditional hosting services generally provide a pre-configured resource for a fixed amount of time and at a predetermined cost. Amazon EC2 differs fundamentally in the flexibility, control and significant cost savings it offers developers, allowing them to treat Amazon EC2 as their own personal data center with the benefit of Amazon.com’s robust infrastructure.
When computing requirements unexpectedly change (up or down), Amazon EC2 can instantly respond, meaning that developers have the ability to control how many resources are in use at any given point in time. In contrast, traditional hosting services generally provide a fixed number of resources for a fixed amount of time, meaning that users have a limited ability to easily respond when their usage is rapidly changing, unpredictable, or is known to experience large peaks at various intervals.
Secondly, many hosting services don’t provide full control over the compute resources being provided. Using Amazon EC2, developers can choose not only to initiate or shut down instances at any time, they can completely customize the configuration of their instances to suit their needs – and change it at any time. Most hosting services cater more towards groups of users with similar system requirements, and so offer limited ability to change these.
Finally, with Amazon EC2 developers enjoy the benefit of paying only for their actual resource consumption – and at very low rates. Most hosting services require users to pay a fixed, up-front fee irrespective of their actual computing power used, and so users risk overbuying resources to compensate for the inability to quickly scale up resources within a short time frame.
No. You do not need an Elastic IP address for all your instances. By default, every instance comes with a private IP address and an internet routable public IP address. The private address is associated exclusively with the instance and is only returned to Amazon EC2 when the instance is stopped or terminated. The public address is associated exclusively with the instance until it is stopped, terminated or replaced with an Elastic IP address. These IP addresses should be adequate for many applications where you do not need a long lived internet routable end point. Compute clusters, web crawling, and backend services are all examples of applications that typically do not require Elastic IP addresses.
You have complete control over the visibility of your systems. The Amazon EC2 security systems allow you to place your running instances into arbitrary groups of your choice. Using the web services interface, you can then specify which groups may communicate with which other groups, and also which IP subnets on the Internet may talk to which groups. This allows you to control access to your instances in our highly dynamic environment. Of course, you should also secure your instance as you would any other server.