Linux

Linux 上用於 mysql 伺服器私有介面的 IPtables

  • August 3, 2015

希望為 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

引用自:https://serverfault.com/questions/708885