如何在 NW 接口上设置规则以丢弃所有 DHCP/BOOTP 消息

如何在 NW 接口上设置规则以丢弃所有 DHCP/BOOTP 消息

我有一个 openstack 环境,其中有一个使用 openvswitch 实现的提供商网络方案。我的 openstack 安装在 allinone 节点设置上。有没有办法可以禁用/删除落在我服务器网络接口上的所有 DHCP 请求?

答案1

DHCP/BOOTP 请求发送到端口 67 UDP。设置防火墙规则以丢弃所有目标端口为 67 且协议为 UDP 的数据包,这样您就成功阻止了它。

端口 67 仅用于服务器目标,客户端在端口 68 上接收答复,因此您仍然可以从该服务器发送请求,但不能向该服务器发送请求。

更好的做法是禁用所有传入流量(策略丢弃)并只允许您真正想要的连接。

针对您的特定情况的删除规则是:

iptables -A INPUT -p udp -i em2 --dport 67 -j DROP

更好的做法是创建一个防火墙脚本,将其放在 /root/ 中,例如名为防火墙的脚本,并赋予其执行权限:chmod u+x /root/firewall在此脚本中写下所有规则。这是我们电子邮件服务器的一个示例:

#!/bin/bash

# IPv4 flush all tables
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F -t nat

# IPv6 flush all tables
ip6tables -F INPUT
ip6tables -F FORWARD
ip6tables -F OUTPUT

# IPv4 set default policy drop
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# IPv6 set default policy drop
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

# IPv4 allow local communication
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# IPv6 allow local communication
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# IPv4 allow related/established
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# IPv6 allow related/established
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# INPUT

# ICMP
iptables -A INPUT -p icmp -m state --state NEW -j ACCEPT

# SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# EMAIL
iptables -A INPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 143 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 465 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 993 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -m state --state NEW -j ACCEPT

# OUTPUT allow all

iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


# save rules
iptables-save > /etc/iptables.conf
ip6tables-save > /etc/ip6tables.conf

然后您只需以 root 身份执行脚本:/root/firewall并且所有规则都已设置。

相关内容