在LAMP(Linux, Apache, MySQL, PHP)环境中配置防火墙是为了保护服务器免受未经授权的访问和潜在的安全威胁。以下是一些基本步骤来配置防火墙,这里以最常见的iptables为例:
检查iptables状态: 在开始配置之前,首先检查iptables是否已经安装并且正在运行。
sudo systemctl status iptables
设置默认策略: 设置默认策略为DROP,这意味着任何未被明确允许的流量都将被丢弃。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
允许SSH连接: 允许通过SSH(通常是端口22)进行远程管理。
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许HTTP和HTTPS流量: 允许通过HTTP(端口80)和HTTPS(端口443)的流量。
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许MySQL/MariaDB连接: 允许来自本地主机的MySQL/MariaDB连接(通常是端口3306)。
sudo iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许其他必要的服务: 根据需要,可能还需要允许其他服务的流量,例如FTP、SMTP等。
保存iptables规则:
保存iptables规则以确保它们在服务器重启后仍然有效。这可以通过使用iptables-save
和iptables-restore
命令来完成,或者安装一个iptables持久化工具,如iptables-persistent
。
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
测试防火墙规则: 在配置完成后,测试防火墙规则以确保它们按预期工作,并且没有阻止合法的流量。
监控和调整: 定期监控防火墙日志,并根据需要调整规则以应对新的安全威胁。
请注意,iptables的配置可能会因Linux发行版的不同而有所差异。此外,随着时间的推移,安全最佳实践也在不断变化,因此建议定期审查和更新防火墙配置。对于更高级的防火墙管理,可以考虑使用ufw(Uncomplicated Firewall)或firewalld等服务。