Skip to content

How to Allow Port 80 on CentOS 7

How to Allow Port 80 on CentOS 7 - Softwarecosmos.com

Allowing traffic through Port 80 is essential for serving HTTP (web) content on your CentOS 7 server. By default, CentOS 7 uses Firewalld as its firewall management tool, which provides a dynamic way to manage firewall rules without restarting the service. This guide will walk you through the steps to allow Port 80 using Firewalld, verify the configuration, and provide additional troubleshooting tips.

Understanding Port 80

  • Port 80 is the default port used by HTTP (HyperText Transfer Protocol) to serve web pages. When users access a website without specifying a port (e.g., http://yourdomain.com), their browsers automatically use Port 80.

  • Allowing Port 80 ensures that your web server (like Apache or Nginx) can receive and respond to HTTP requests from clients.

Prerequisites

Before proceeding, ensure you have the following:

  • CentOS 7 installed on your server.

  • Root or sudo privileges to execute administrative commands.

  • Firewalld is installed and running (default in CentOS 7).

Step 1: Check Firewalld Status

First, verify whether Firewalld is active on your system.

sudo systemctl status firewalld

Expected Output:

● firewalld.service – firewalld – dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since [Date] [Time] Docs: man:firewalld(1) Main PID: 1234 (firewalld) CGroup: /system.slice/firewalld.service └─1234 /usr/bin/python2 -Es /usr/sbin/firewalld –nofork –nopid

  • Active (running): Firewalld is operational.

  • Inactive: Firewalld is not running. You may need to start and enable it.

See also  Understanding VDS (Virtual Dedicated Server) and the Difference Between VDS vs. VPS

If Firewalld is Not Running:

Start and enable Firewalld.

sudo systemctl start firewalld sudo systemctl enable firewalld

Step 2: Allow Port 80 Temporarily

To allow HTTP traffic through Port 80 temporarily (i.e., until the next reboot or Firewalld reload), use the following command:

sudo firewall-cmd –add-port=80/tcp

  • –add-port=80/tcp: Opens Port 80 for TCP traffic.

  • Note: This change is not persistent and will be removed on Firewalld reload or system reboot.

Step 3: Allow Port 80 Permanently

To ensure Port 80 remains open permanently, apply the rule permanently and then reload Firewalld to apply the changes.

sudo firewall-cmd –permanent –add-port=80/tcp

  • –permanent: Makes the rule persistent across reboots and reloads.

After adding the permanent rule, reload Firewalld:

sudo firewall-cmd –reload

Note: Reloading applies all permanent rules without disrupting current connections.

Step 4: Verify Firewall Rules

To confirm that Port 80 is allowed, list the current firewall rules.

sudo firewall-cmd –list-ports

Expected Output:

80/tcp

If you have multiple ports open, they will be listed separated by spaces. For example:

22/tcp 80/tcp 443/tcp

Step 5: Reload Firewalld

If you made any changes to the Firewalld configuration files manually, it’s good practice to reload Firewalld to ensure all rules are applied.

sudo firewall-cmd –reload

However, if you followed the previous steps (using –permanent), a reload was already performed after adding the rule.

Additional Configuration: Allowing HTTP Service

Instead of allowing a specific port, you can allow predefined services like http (Port 80) and https (Port 443) using Firewalld service definitions. This method is more descriptive and aligns with service-based firewall management.

Allow HTTP Service

sudo firewall-cmd –permanent –add-service=http sudo firewall-cmd –reload

Allow HTTPS Service

To also allow HTTPS traffic (Port 443):

sudo firewall-cmd –permanent –add-service=https sudo firewall-cmd –reload

Verify Services

List all allowed services to confirm:

sudo firewall-cmd –list-services

Expected Output:

dhcpv6-client http https ssh

Disabling Firewalld (Not Recommended)

Warning: Disabling Firewalld exposes your server to potential security threats. Only proceed if you understand the risks and have alternative security measures in place.

Disable Firewalld

sudo systemctl stop firewalld sudo systemctl disable firewalld

Verify Firewalld Status

sudo systemctl status firewalld

Expected Output:

● firewalld.service – firewalld – dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) since [Date] [Time] Docs: man:firewalld(1)

See also  Understanding Inodes in cPanel: A Simple Guide

Troubleshooting

1. Port 80 Not Open After Configuration

  • Check Firewalld Status:

    Ensure Firewalld is active and running.

    sudo systemctl status firewalld

  • Verify Port is Open:

    Use ss or netstat to check if the port is listening.

    sudo ss -tuln | grep :80

    Or

    sudo netstat -tuln | grep :80

  • Check Apache Configuration:

    If Port 80 is allowed but not serving content, ensure Apache is configured to listen on Port 80 and is running.

    sudo systemctl status httpd

    Restart Apache if necessary:

    sudo systemctl restart httpd

2. Cannot Access Website via HTTP

  • DNS Configuration:

    Ensure your domain’s DNS records point to the correct server IP.

  • SELinux Policies:

    By default, SELinux allows HTTP traffic, but custom policies might block it.

    • Check SELinux Status:

      sestatus

    • Allow HTTP Traffic in SELinux (If Needed):

      sudo setsebool -P httpd_can_network_connect on

  • Apache Virtual Host Configuration:

    Verify that your virtual host files are correctly set to handle HTTP requests.

    sudo nano /etc/httpd/conf.d/your-site.conf

    Ensure that there is a <VirtualHost *:80> block configured properly.

3. Firewall-Cmd Commands Not Working

  • Ensure Firewalld is Installed:

    sudo yum install firewalld -y

  • Start and Enable Firewalld:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Best Practices

  1. Use Service Definitions Over Ports:

    • Managing services (like http and https) is more intuitive and less error-prone than handling raw ports.

    • Example:

      sudo firewall-cmd –permanent –add-service=http sudo firewall-cmd –permanent –add-service=https sudo firewall-cmd –reload

  2. Regularly Update Your System:

    • Keep your CentOS system and Apache updated to benefit from security patches and improvements.

      sudo yum update -y

  3. Implement SSL/TLS:

    • Secure your HTTP traffic by implementing HTTPS (Port 443).

    • Use Let’s Encrypt for free SSL certificates.

      sudo yum install epel-release -y sudo yum install certbot python2-certbot-apache -y sudo certbot –apache

  4. Monitor Firewall Rules:

    • Periodically review your firewall settings to ensure no unintended ports are open.

      sudo firewall-cmd –list-all

  5. Limit Open Ports:

    • Only open ports that are necessary for your server’s functionality to minimize security risks.

Frequently Asked Questions (FAQ)

1. Why Should I Allow Port 80 and 443?

  • Port 80 (HTTP): Enables standard web traffic, allowing users to access your website via http://yourdomain.com.

  • Port 443 (HTTPS): Facilitates secure web traffic, encrypting data between the client and your server via https://yourdomain.com.

2. Can I Allow Multiple Ports at Once?

Yes. You can allow multiple ports in a single command by separating them with a space.

See also  How to Protect MySQL with Fail2Ban on Ubuntu

sudo firewall-cmd –permanent –add-port=80/tcp –add-port=443/tcp sudo firewall-cmd –reload

3. How Do I Remove a Port from Firewalld?

Use the –remove-port option.

sudo firewall-cmd –permanent –remove-port=80/tcp sudo firewall-cmd –reload

4. What If I’m Using a Different Firewall Manager?

CentOS 7 primarily uses Firewalld. If you’ve installed another firewall manager like iptables, you’ll need to adjust the commands accordingly.

  • Allow Port 80 with iptables:

    sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT sudo service iptables save sudo systemctl restart iptables

5. Is Opening Port 80 Safe?

Yes, especially if you are running a web server that requires it to serve HTTP content. However, it’s recommended to shift to HTTPS (Port 443) for encrypted and secure communication.

6. How Do I Check Which Ports Are Currently Open?

Use the following command to list all open ports and associated services.

sudo firewall-cmd –list-ports sudo firewall-cmd –list-services

7. Do I Need to Restart Apache After Allowing Port 80?

Not necessarily. Allowing the port in Firewalld does not require an Apache restart. However, if you have made changes to Apache’s configuration files, you should restart or reload Apache.

sudo systemctl restart httpd

8. Can I Allow Port 80 Without Firewalld?

While technically possible by disabling Firewalld and managing iptables manually, it is not recommended due to the complexity and increased risk of misconfiguration. Utilizing Firewalld ensures easier and more secure firewall management.

9. How Can I Temporarily Access Port 80 Without Changing Firewall Rules?

You can use port forwarding or SSH tunneling to route traffic through allowed ports temporarily, but these methods require intermediate configurations and are typically unnecessary if you can safely adjust Firewalld rules.

10. Will These Changes Affect Other Services?

Allowing Port 80 will enable HTTP traffic specifically. It should not interfere with other services unless there are overlapping configurations or restrictive rules already in place. Always review existing firewall rules to ensure compatibility.

Conclusion

Allowing Port 80 on CentOS 7 is a fundamental step for enabling your server to handle HTTP requests and serve web content. By following the steps outlined in this guide, you can configure Firewalld to permit traffic through Port 80 safely and efficiently. Always prioritize security by implementing HTTPS (Port 443) and adhering to best practices in firewall management.

Key Takeaways:

  • Firewalld: The default firewall manager in CentOS 7, providing a dynamic and flexible approach to managing firewall rules.

  • Permanent vs. Temporary Rules: Use the –permanent flag to make rules persistent across reboots and reloads.

  • Service Definitions: Prefer using –add-service=http over –add-port=80/tcp for better readability and management.

  • Security First: Always consider securing your web traffic with HTTPS and minimizing open ports to only what is necessary.

Maintaining a secure and well-configured firewall ensures that your CentOS 7 server remains protected while effectively handling the necessary web traffic.

Author