Linux上的IPtables用于mysql服务器专用接口

希望为web服务器build立一个mysql数据库服务器。 服务器有一个公共和私人的界面,我需要一些帮助来编写规则。

我只想通过专用接口允许SSH,mysql,并closures公共接口

iptables -nL -v – 行号

如果由服务器启动,则允许公共和私有。

iptables -I INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

允许回送到本地主机

iptables -A INPUT -i lo -j ACCEPT

通过公共界面阻止所有传入stream量。

??

通过公共接口阻​​止所有的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

通过特定IP的私有接口允许mysql。 通过eth0拒绝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拒绝

允许ping eth1(私有),但不能eth0(公共)

iptables -A INPUT -i eth1 -p icmp -j ACCEPT
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等,您可以在/etc/sysconfig/network-scripts中的相关文件中设置ONBOOT=no

对于Debian / Ubuntu等,您可以在/ etc / network / interfaces中设置iface InterfaceName inet manual

接口激活在引导过程的早期发生sssd | mysqld将不会有一个接口绑定到,但也可以build议configurationsshd和mysqld只侦听相关的地址,检查ListenAddressbind-address选项他们各自的文件。

您还可以使用ip ifconfig (不build议使用)从命令行禁用接口。

 ip link set eth1 down 

要么

 ifconfig eth0 down