在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等服務。