在FreeBSD 10上保护resolv.conf免受DHCP攻击

如果您正在运行自己的解析程序,或者希望使用第三方供应商提供的解析程序,则可能会发现您的/etc/resolv.conf文件已被DHCP覆盖。有几种方法可以解决此问题。由于您可能要重新启动以确保所做的更改仍然有效,并且由于首先要考虑网络设置,因此我强烈建议在测试实例和/或高峰期之外进行此操作小时。

现在,这是从最差到最好的三种方法。请注意,本指南中的所有方法都是针对FreeBSD 10编写的。Linux用户可以参考本指南

方法1:使用静态接口设置

在我的有限测试中,由于不必等待DHCP分配网络设置,因此引导时间会稍短一些。但是,我在一些Vultr文档中看到提到使用静态接口设置是不受欢迎的,您应该坚持使用DHCP。我认为他们对此有充分的理由,因此我自己继续使用DHCP。不过,如果您决定走这条路,请按照以下步骤操作。

  • 确定服务器的IP,网络掩码和网关IP。
  • 修改/etc/rc.conf以使用这些值而不是DHCP。
  • 重新启动以测试设置。

确定IP /网络掩码/网关

假设您的接口是vtnet0,请执行以下操作:

ifconfig vtnet0 | grep inet

这应该为您获取服务器的IP地址和网络掩码:

inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255

FreeBSD喜欢使用十六进制作为网络掩码。255.255.255.0如果您有兴趣,可以将以上内容转换为。您可以在此处找到一个方便的表,但不要担心:您可以将十六进制地址复制到配置文件中(或者根据需要将其转换为十进制)。

您可以通过多种方式找到网关。这是一个:

route get default | grep gateway 将返回以下内容:

gateway: 10.10.10.1

/etc/rc.conf用新值修改

有了IP,网络掩码和网关,现在可以将它们添加到系统配置中了。我强烈建议您在进行任何更改之前备份此文件,因为如果您搞砸了,它将使撤消操作变得容易得多。现在,/etc/rc.conf在您选择的编辑器中打开,并进行以下更改:

# Comment out this line:
# ifconfig_vtnet0="dhcp"

# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"

显然,您应该确保将您的实际IP,网络掩码和网关替换为我明显的假货。

重新启动并测试

使用重新启动服务器shutdown -r now,并确保其正确启动。执行您认为必要的任何测试,以确保一切正常。如果无法访问网络,请通过控制台登录并还原您的更改。如果一切都很好,此时,您可以放入任何您喜欢的东西,resolv.conf而不必担心它会消失。

如果出于某种原因您无法重新启动,那么应该可以,但是如果您是我,我真的会进行适当的重新启动:

service netif restart && service routing restart

方法2:使resolv.conf不可变

这有点骇人听闻,但这无疑是最快的解决方案。我不建议这样做,因为当您升级到新版本的操作系统时,我无法保证这不会在将来引起某些怪异,并且dhclient可能会抱怨很多。就是说,一个简单的chflags schg /etc/resolv.conf就是所需要的。现在,该文件已被完全写保护,即使从根目录也是如此。您可以这样验证:

vultr [~]# chflags schg /etc/resolv.conf
vultr [~]# ls -ol /etc/resolv.conf
-rw-r--r--  1 root  wheel  schg 50 Nov 29 06:28 /etc/resolv.conf
vultr [~]# echo "so very untouchable" >> /etc/resolv.conf
/etc/resolv.conf: Operation not permitted.

撤消: chflags noschg /etc/resolv.conf

方法3:礼貌地告诉FreeBSD不要理会您的设置

到目前为止,这是最干净,最正确的方法。您可以采用两种方法:

配置 dhclient

让我们从上面的例子开始,并说您要做的就是将自定义名称服务器放入其中,resolv.conf并且不想每次DHCP都执行它时就丢失它。就我而言,我想使用我安装的在本地主机上侦听的缓存解析器,因此我进行编辑/etc/dhclient.conf(除了注释之外,它可能是空白的)并添加以下内容:

interface "vtnet0" {
    supersede domain-name-servers 127.0.0.1;
}

这将使dhclient可以做您需要做的所有其他事情,但是当DHCP服务器向它发送要使用的名称服务器列表时,您的名称服务器将取代(完全替换)它提供的名称服务器。如果您想补充(而不是替换)所提供的内容,则可以视需要“附加”或“添加”而不是“取代”。

顺便说一句,如果您需要多个定制服务器,请按以下方式指定它们:

supersede domain-name-servers 127.0.0.1, 127.0.0.2;

进行更改后,请重新启动dhclient以使它们立即生效:

service dhclient restart vtnet0

检查您的服务器/etc/resolv.conf,您应该发现它现在已包含您的自定义名称服务器。

在撰写本文时,名称服务器是Vultr的DHCP服务器已放入my resolv.conf的唯一内容,也是我希望自定义的唯一内容。但是,如果您需要覆盖任何其他设置,请查阅出色的手册以获取详细列表:

man 5 dhclient.conf

底部有很多很好的例子,应该使您对可以做的事情有所了解。想不到,我可以想象您可能想添加一些类似的内容,supersede domain-name "example.com";如果您通常在其中有一行resolv.conf。再次,请查阅文档。

配置 resolvconf

如果您只想resolv.conf一个人呆着,这是最简单的解决方案。根据手册:

resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients

它的配置位于中/etc/resolvconf.conf,它可能在您的系统上不存在,因此随时创建它。为了使您的resolv.conf一成不变,请添加以下内容:

# prevent all updates to resolv.conf:
resolv_conf="/dev/null"

如果您unbound用作本地缓存解析器,那就是它添加的行(以及一些附加的行)。基本上是在欺骗resolvconf您,以为您/etc/resolv.conf位于/dev/null。稍微不那么平均,但同样有效的是:

# disable resolvconf from running any subscribers:
resolvconf="NO"

如果您想做一些比关闭它更复杂的事情,请参考手册页resolvconf并获取resolvconf.conf大量信息。



Leave a Comment

使用OpenBSD在Vultr上配置BGP

使用OpenBSD在Vultr上配置BGP

Vultrs BGP功能使您可以拥有自己的IP空间并在我们的任何位置使用它,而OpenBSD实例则不需要其他软件!

如何在FreeBSD 12上使用Pkg软件包管理器

如何在FreeBSD 12上使用Pkg软件包管理器

简介FreeBSD是一种类似于Unix的开源操作系统,用于为现代服务器,台式机和嵌入式平台提供动力。Netflix,雅虎等巨人!

FreeBSD的Vultr块存储

FreeBSD的Vultr块存储

本文中的信息涉及修改磁盘,分区和文件系统,因此在执行任何示例之前,应先完全理解它们,因为它们会导致数据丢失或丢失。

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在FreeBSD 12上安装osTicket

如何在FreeBSD 12上安装osTicket

使用其他系统?osTicket是一个开放源代码的客户支持票务系统。osTicket源代码公开托管在Github上。在本教程中

如何在FreeBSD 12上安装Dolibarr

如何在FreeBSD 12上安装Dolibarr

使用其他系统?Dolibarr是面向企业的开源企业资源计划(ERP)和客户关系管理(CRM)。多利巴尔

在OpenBSD 6上设置Ghost Professional发布平台

在OpenBSD 6上设置Ghost Professional发布平台

Ghost是与WordPress竞争的最新,最大的暴发户。主题开发既快速又容易学习,因为Ghost开发人员决定同时使用

如何在FreeBSD 12上安装Monica

如何在FreeBSD 12上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在FreeBSD 12上安装LimeSurvey CE

如何在FreeBSD 12上安装LimeSurvey CE

使用其他系统?LimeSurvey是一个用PHP编写的开源调查软件。LimeSurvey源代码托管在GitHub上。本指南将向您展示

如何在FreeBSD 12的Nginx中启用TLS 1.3

如何在FreeBSD 12的Nginx中启用TLS 1.3

使用其他系统?TLS 1.3是传输层安全性(TLS)协议的版本,该协议于2018年作为RFC 8446中的建议标准发布

如何在FreeBSD 12上安装MyBB

如何在FreeBSD 12上安装MyBB

使用其他系统?MyBB是一个免费,开放源代码,直观且可扩展的论坛程序。MyBB源代码托管在GitHub上。本指南将

使用Prosody和FreeBSD设置XMPP服务器

使用Prosody和FreeBSD设置XMPP服务器

尽管ejabberd非常普遍,但最近有一个竞争对手-Prosody。本教程将向您展示如何在FreeBS上设置Prosody

用Poudriere建立自己的Pkg存储库

用Poudriere建立自己的Pkg存储库

从9.2版开始,FreeBSD引入了一个新工具来替换旧的pkg _ *-命令-pkg,也称为pkgng。它非常类似于Debians apt o

如何在FreeBSD 11上安装Matomo Analytics

如何在FreeBSD 11上安装Matomo Analytics

使用其他系统?Matomo(以前称为Piwik)是一个开源分析平台,是Google Analytics(分析)的一种开放替代方案。Matomo源托管o

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

使用其他系统?ProcessWire CMS 3.0是一个简单,灵活,功能强大,免费和开源的内容管理系统(CMS)。ProcessWire CMS 3。

如何在FreeBSD 12的Apache中启用TLS 1.3

如何在FreeBSD 12的Apache中启用TLS 1.3

使用其他系统?TLS 1.3是传输层安全性(TLS)协议的版本,该协议于2018年作为RFC 8446中的建议标准发布

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

使用其他系统?Redaxscript 3.2 CMS是一款现代,超轻量级,免费和开源的内容管理系统(CMS),具有火箭fas

如何在FreeBSD 12上安装BookStack

如何在FreeBSD 12上安装BookStack

使用其他系统?简介BookStack是一个简单的,自托管的易于使用的平台,用于组织和存储信息。BookStack已满

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息