想要为 Web 服务器制作一个 mysql 数据库服务器。该服务器有一个公共和私有接口,我需要一些帮助来编写规则。
我只想允许通过私有接口使用 SSH、mysql,并关闭公共接口
iptables -nL -v --行号
如果由服务器发起,则允许公开和私有。
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 --目标端口 22 -j DROP
允许从 1 IP 通过私有接口进行 SSH。
iptables -A 输入 -p tcp -s私有 IP–dport 22 -i eth1 -j 接受
允许特定 IP 通过私有接口访问 mysql。拒绝通过 eth0(公共)访问 mysql
iptables -A 输入 -i eth1 -p tcp --dport mysql -s私有 IP-j 接受
iptables -A INPUT -i eth0 -p tcp -m tcp --dport mysql -j REJECT
允许在 eth1(私有)上进行 Ping,但不允许在 eth0(公共)上进行 Ping
iptables -A 输入 -i eth1 -p icmp -j 接受
iptables -A 输入 -i eth0 -p icmp -j 拒绝
删除公共连接
iptables -A 输入 -i eth0 -j DROP
我是否已经做好了一切准备?
答案1
我是否已经做好了一切准备?
当谈到面向公众的服务器时,人们不应该认为最终安全的; 除此之外,我会为 INPUT 链设置 DROP 策略,然后只允许真正需要的内容。例如,在
iptables -P INPUT DROP
没有必要指定
iptables -A INPUT -i eth0 -p tcp -m tcp --dport mysql -j REJECT
答案2
如果您不打算使用该界面,为什么不禁用它(或不启动它)?
您没有说您正在使用哪个发行版,但它们都应该有一种在系统启动时不启动界面的方法。
对于 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
您还可以使用(已弃用)从命令行禁用接口。
ip link set eth1 down
或者
ifconfig eth0 down