In the realm of network security and privacy, a proxy server acts as a gateway between your device and the internet. It enhances anonymity by masking your IP address and can help bypass geographical restrictions. This article will guide you through setting up a secure proxy server on a Linux system. We’ll use Squid, a popular open-source proxy server, for this task.

Prerequisites

  1. Linux server: You can use any Linux distribution. Ubuntu Server or CentOS are popular choices.
  2. Root or sudo access: Ensure you have administrative access to your server.
  3. Basic command-line knowledge: You should be comfortable using the terminal.

Step 1: Update Your System

Before we begin, it’s a good practice to update your package lists and upgrade installed packages to their latest versions. Open your terminal and run:

sudo apt update && sudo apt upgrade -y   # For Ubuntu or Debian-based systems
sudo yum update -y # For CentOS or RedHat-based systems

Step 2: Install Squid

To install Squid, use the package manager relevant to your Linux distribution. Here’s how to do it for Ubuntu and CentOS:

For Ubuntu/Debian:

sudo apt install squid -y

For CentOS/RedHat:

sudo yum install squid -y

Step 3: Configure Squid

The configuration file for Squid is typically located at /etc/squid/squid.conf. Before editing, it’s wise to back up the original configuration file:

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Now, open this configuration file in your preferred text editor:

sudo nano /etc/squid/squid.conf

Basic Configuration

Here are some fundamental configurations you might want to set:

  1. HTTP Port: By default, Squid listens on port 3128. If you want to change it, find the line:

    http_port 3128

    You can specify a different port, such as 8080:

    http_port 8080

  2. Access Control Lists (ACLs): To allow access to specific IP addresses, you can modify the ACL settings:

    For example, if your client’s IP is 192.168.1.100, add the following lines:

    acl mynetwork src 192.168.1.100
    http_access allow mynetwork
    http_access deny all

    This configuration allows only the specified IP to use the proxy and denies access to everyone else.

Step 4: Enable HTTPS Support (Optional)

If you want to support HTTPS traffic, you’ll need to enable SSL:

  1. Install necessary packages (if not already installed):

    sudo apt install openssl -y   # for Ubuntu/Debian
    sudo yum install openssl -y # for CentOS

  2. Generate SSL certificates:

    You can generate self-signed certificates (for testing; for production use, consider using trusted certificates):

    sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl_cert.pem -out /etc/squid/ssl_cert.pem

  3. Configure Squid for SSL:

    Add the following lines to the squid.conf file:

    https_port 3129 cert=/etc/squid/ssl_cert.pem key=/etc/squid/ssl_cert.pem

Step 5: Start and Enable Squid Service

After configuring, start the Squid service and enable it to run on boot:

sudo systemctl start squid
sudo systemctl enable squid

Step 6: Configure Firewall

If you have a firewall running (like UFW on Ubuntu or firewalld on CentOS), you need to allow traffic on the proxy port (default 3128):

For UFW:

sudo ufw allow 3128/tcp

For firewalld:

sudo firewall-cmd --zone=public --add-port=3128/tcp --permanent
sudo firewall-cmd --reload

Step 7: Testing Your Proxy Server

You can test your new proxy server using a web browser. Configure your browser’s proxy settings to point to your server’s IP and port (e.g., http://your-server-ip:3128) and check if you can access the internet.

Alternatively, you can use cURL in the terminal to test it:

curl -x http://your-server-ip:3128 http://example.com

Step 8: Logging and Monitoring

Squid provides logging features to monitor traffic. Logs are stored in /var/log/squid/. Regularly check these logs for insights and to ensure everything runs smoothly:

sudo tail -f /var/log/squid/access.log

Conclusion

Congratulations! You’ve successfully set up a secure proxy server using Squid on your Linux system. This setup allows you to control internet traffic effectively while enhancing privacy. Always remember to stay updated with security measures, such as regular software updates and monitoring access logs, to keep your proxy server secure.

Happy browsing with your new proxy server! If you have any questions or encounter any issues during the setup, feel free to reach out in the comments below.