在Linux系統中,使用Node.js設置防火墻規則通常涉及到使用iptables或者更現代的nftables。以下是使用這兩種工具設置防火墻規則的基本步驟:
查看現有規則:
sudo iptables -L
允許特定端口(例如,允許TCP端口80):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
拒絕所有其他入站連接:
sudo iptables -P INPUT DROP
保存規則(不同的發行版可能有不同的命令):
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
sudo service iptables save
重啟iptables服務(如果需要):
sudo systemctl restart iptables
查看現有規則:
sudo nft list ruleset
允許特定端口(例如,允許TCP端口80):
sudo nft add rule inet filter input tcp dport 80 accept
拒絕所有其他入站連接:
sudo nft add rule inet filter input drop
保存規則:
sudo nft list ruleset > /etc/nftables.conf
設置nftables在啟動時加載規則(不同的發行版可能有不同的方法):
sudo systemctl enable nftables
sudo systemctl start nftables
sudo systemctl enable --now nftables
雖然Node.js本身不直接提供設置防火墻規則的功能,但你可以使用Node.js來調用系統命令來管理防火墻。以下是一個簡單的示例,展示如何使用Node.js執行iptables命令:
const { exec } = require('child_process');
// 允許特定端口
exec('sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT', (error, stdout, stderr) => {
if (error) {
console.error(`執行錯誤: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
// 拒絕所有其他入站連接
exec('sudo iptables -P INPUT DROP', (error, stdout, stderr) => {
if (error) {
console.error(`執行錯誤: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
請注意,使用Node.js執行系統命令需要適當的權限(通常是root權限),因此你可能需要使用sudo
。
通過以上步驟,你可以在Linux系統中使用Node.js來設置和管理防火墻規則。