希望为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只侦听相关的地址,检查ListenAddress和bind-address选项他们各自的文件。
您还可以使用ip ifconfig (不build议使用)从命令行禁用接口。
ip link set eth1 down
要么
ifconfig eth0 down