Linux 上用於 mysql 伺服器私有介面的 IPtables
希望為 Web 伺服器製作一個 mysql 數據庫伺服器。伺服器有一個公共和私有介面,我需要一些幫助來編寫規則。
我只想通過私有介面允許 SSH、mysql,並基本上關閉公共介面
iptables -nL -v –line-numbers
如果由伺服器啟動,則允許 Public 和 Private。
iptables -I INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT
允許環回本地主機
iptables -A 輸入 -i lo -j 接受
通過公共介面阻止所有傳入流量。
??
通過公共介面阻止所有 SSH
iptables -A INPUT -i eth0 -p tcp –destination-port 22 -j DROP
允許通過來自 1 個 IP 的專用介面進行 SSH。
iptables -A INPUT -p tcp -s PRIVATE_IP –dport 22 -i eth1 -j ACCEPT
允許 mysql 通過來自特定 IP 的專用介面。通過 eth0 (public) 拒絕 mysql
iptables -A INPUT -i eth1 -p tcp –dport mysql -s PRIVATE_IP -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp –dport mysql -j REJECT
允許 Ping eth1(私有),但不允許 eth0(公共)
iptables -A INPUT -i eth1 -p icmp -j 接受
iptables -A INPUT -i eth0 -p icmp -j REJECT
刪除公共連接
iptables -A INPUT -i eth0 -j DROP
我的所有基地都覆蓋了嗎?
我的所有基地都覆蓋了嗎?
當談到面向公眾的伺服器時,永遠不要認為最終是安全的;除此之外,我會為 INPUT 鏈設置一個 DROP 策略,然後只允許真正需要的內容。例如,經過
iptables -P INPUT DROP
沒有必要指定
iptables -A INPUT -i eth0 -p tcp -m tcp --dport mysql -j REJECT
如果您不打算使用該界面,為什麼不禁用它(或不啟動它)?
您沒有說您使用的是哪個發行版,但它們都應該有一種在系統啟動時不啟動界面的方法。
對於 RHEL/CentOS 等,您可以
ONBOOT=no
在相關文件中設置/etc/sysconfig/network-scripts
對於 Debian/Ubuntu 等,您可以
iface InterfaceName inet manual
在 /etc/network/interfaces 中進行設置。介面啟動發生在啟動過程的早期 sssd|mysqld 沒有要綁定的介面,但也可能建議將 sshd 和 mysqld 配置為僅偵聽相關地址,請查看各自文件中的
ListenAddress
和選項。bind-address
ip
ifconfig
您還可以使用(deprecated)從命令行禁用介面。ip link set eth1 down
或者
ifconfig eth0 down