当前位置: 首页
系统平台
FreeBSD配置防火墙并开启SSH服务的完整教程

FreeBSD配置防火墙并开启SSH服务的完整教程

热心网友 时间:2026-06-20
转载

1. 配置 FreeBSD 防火墙:从零开始设置网络防护

首先讲解防火墙的整体配置流程。核心配置文件是 /etc/rc.conf,使用编辑器打开该文件,在末尾追加以下配置项:

firewall_enable="yes"                # 开启防火墙
net.inet.ip.fw.verbose=1            # 启用防火墙日志功能
net.inet.ip.fw.verbose_limit=5      # 日志条目数量限制
natd_enable="YES"                   # 开启防火墙NAT功能
natd_interface="rl0"                # 指定公网接口
natd_flags="-dynamic -m"
firewall_script="/etc/ipfw.rules"   # 自定义防火墙规则路径

保存操作同样重要——按下 Esc 键,输入冒号,然后回车,即可完成写入。

2. 添加 IPFW 防火墙规则:精细管控内外网流量

规则文件指向 /etc/ipfw.rules,创建或编辑该文件,将下方脚本粘贴进去。注意,这套规则设计得相当详尽,全面覆盖了内外网通信、服务端口以及安全过滤策略。不过,在复制之前,有几个关键参数必须根据你的实际网络环境进行调整。

#!/bin/sh
################ Start of IPFW rules file ####################

# Flush out the list before we begin.
ipfw -q -f flush

# Set rules command prefix
cmd="ipfw -q add"
skip="skipto 800"
pif="rl0"   # 公网接口名称,务必改成你实际使用的网卡

##################################################################
# No restrictions on Inside LAN Interface for private network
# 修改 xl0 为你的内网接口名称
##################################################################
$cmd 005 allow all from any to any via xl0

##################################################################
# No restrictions on Loopback Interface
##################################################################
$cmd 010 allow all from any to any via lo0

##################################################################
# check if packet is inbound and nat address if it is
##################################################################
$cmd 014 divert natd ip from any to any in via $pif

##################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
##################################################################
$cmd 015 check-state

##################################################################
# Interface facing Public Internet (Outbound Section)
# Check session start requests originating from behind the
# firewall on the private network or from this gateway server
# destined for the public Internet.
##################################################################
# Allow out access to my ISP's Domain name server.
# x.x.x.x 必须填你 ISP 的 DNS 服务器 IP
# 如果有多个 DNS,复制这几行即可
$cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
$cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state
$cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state
$cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state
$cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root
$cmd 080 $skip icmp from any to any out via $pif keep-state
$cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state
$cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state
$cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state
$cmd 130 $skip udp from any to any 123 out via $pif keep-state

##################################################################
# Interface facing Public Internet (Inbound Section)
# Check packets originating from the public Internet
# destined for this gateway server or the private network.
##################################################################
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16   to any in via $pif
$cmd 301 deny all from 172.16.0.0/12    to any in via $pif
$cmd 302 deny all from 10.0.0.0/8       to any in via $pif
$cmd 303 deny all from 127.0.0.0/8      to any in via $pif
$cmd 304 deny all from 0.0.0.0/8        to any in via $pif
$cmd 305 deny all from 169.254.0.0/16   to any in via $pif
$cmd 306 deny all from 192.0.2.0/24     to any in via $pif
$cmd 307 deny all from 204.152.64.0/23  to any in via $pif
$cmd 308 deny all from 224.0.0.0/3      to any in via $pif

$cmd 315 deny tcp from any to any 113 in via $pif
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81  in via $pif

$cmd 330 deny all from any to any frag in via $pif
$cmd 332 deny tcp from any to any established in via $pif

$cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state
$cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2
$cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2
$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2

$cmd 400 deny log all from any to any in via $pif
$cmd 450 deny log all from any to any out via $pif

$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 allow ip from any to any

$cmd 999 deny log all from any to any

################ End of IPFW rules file ############################

需要特别留意的地方:

如果你的内网地址是 192.168.21.173(即落在 192.168.0.0/16 网段内),那么 $cmd 300 这一行必须注释掉,否则本机也将无法访问外网——这是典型的“拦截了所有私有地址却忘记放行自身”的错误。

$cmd 380 这行负责开放 SSH 默认端口 22,便于远程安全管理服务器。

3. 重启网络服务,使防火墙规则立即生效

规则编辑完成后,接下来就是激活配置。请按顺序执行以下命令:

/etc/netstart               # 重启网络
/etc/rc.d/ipfw start        # 开启防火墙
ipfw disable firewall       # 关闭防火墙(如果需要)
ipfw enable firewall        # 重新开启
/etc/rc.d/ipfw restart      # 重启防火墙
sh /etc/ipfw.rules          # 手动加载自定义规则

如需彻底关闭防火墙,可使用 ipfw disable firewall,但在生产环境中建议始终保持开启,确保系统安全。

4. 开启 SSH 服务,实现远程安全登录

防火墙配置完成后,接下来配置 SSH 服务。整个流程分为三步:

第一步:编辑 /etc/inetd.conf,找到下面这行,去掉行首的 # 注释符号(若已被注释):

ssh    stream  tcp    nowait  root    /usr/sbin/sshd    sshd -i -4

第二步:编辑 /etc/rc.conf,追加以下内容:

sshd_enable="yes"

第三步:编辑 SSH 配置文件 /etc/ssh/sshd_config,设置以下参数确保远程连接可用:

PermitRootLogin yes              # 允许 root 登录
PasswordAuthentication yes       # 使用密码验证
PermitEmptyPasswords no          # 不允许空密码登录

最后启动或重启 SSH 守护进程:

/etc/rc.d/sshd start
/etc/rc.d/sshd restart

至此,所有配置完成。现在可以使用 Putty 等 SSH 客户端工具尝试连接,验证是否能够正常远程管理 FreeBSD 服务器。

扩展阅读:IPFW 规则加载的两种常用方式

两种方法均可正常工作,取决于个人习惯。第一种是直接设置 firewall_type 变量,使其指向一个只包含规则的文本文件(不包含 ipfw 命令选项)。例如:

firewall_type="open"        # 允许所有流量
firewall_type="client"      # 只保护本机
firewall_type="simple"      # 保护整个网络
firewall_type="closed"      # 禁止除回环外的所有 IP 流量
firewall_type="UNKNOWN"     # 不加载规则
firewall_type="/path/to/file"  # 绝对路径

第二种方式就是本文采用的方法:使用 firewall_script 变量指向一个可执行的 Shell 脚本,系统启动时会自动运行该脚本加载规则。系统自带的示例规则文件位于 /etc/rc.firewall/etc/rc.firewall6,可作为学习参考。

来源:https://www.jb51.net/os/Unix/88922.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Mac隐藏左上角菜单栏苹果图标

Mac隐藏左上角菜单栏苹果图标

先直接告诉你答案:Mac电脑屏幕左上角的那个苹果标志,既无法关闭,也无法隐藏。它是系统级的固定入口,所有macOS版本都会强制显示。苹果既没有提供开关选项,也没有预留终端命令,更不可能在系统偏好设置里让你找到隐藏开关。如果有人声称能用第三方工具或修改系统文件来删除它,千万别相信——结果很可能是系统不

时间:2026-07-02 07:30
Win11切换输入法的几种常用方法和快捷键设置

Win11切换输入法的几种常用方法和快捷键设置

写文档写得正顺,突然要敲几个英文单词,或者打代码时想切回中文拼音——手指条件反射地按下Ctrl+Space,光标却纹丝不动。这种场景你应该不陌生。Windows 11其实准备了五种互不干扰的切换方式,有些连锁屏界面都能响应,关键是你得选对场景来用。下面把这五种路径挨个拆开,看完你就能找到最适合自己的

时间:2026-07-02 07:29
电脑开机黑屏提示未检测到启动盘修复方法

电脑开机黑屏提示未检测到启动盘修复方法

电脑开机直接黑屏,屏幕上孤零零地显示一句“No boot disk has been detected”——别紧张,这并非系统崩溃,也不是常见的蓝屏代码,而是主板在告诉你:“我没有找到硬盘。”换句话说,电脑连BIOS自检阶段都没能通过。 这属于硬件层面的硬中断,与引导损坏、系统文件丢失完全不是一回事

时间:2026-07-02 07:29
Windows 11更改默认音频采样率级别的详细方法

Windows 11更改默认音频采样率级别的详细方法

Windows 11 用户在播放音频时,偶尔会遇到爆音、杂音甚至声音动态被压缩得干瘪的情况。这种问题通常并非硬件损坏,而是系统在音频采样率设定上“擅作主张”了。例如某次系统更新后,默认格式可能被悄然重置为 24 位 192000 Hz——一个不少声卡难以稳定运行的高规格,结果导致 DMA 缓冲溢出、

时间:2026-07-02 07:29
Win11如何查看笔记本实时充电功率

Win11如何查看笔记本实时充电功率

对于笔记本充电功率的实时监测,系统自带的电池图标只能显示“正在充电”或“已充满”,却无法告知具体的瓦数。要获得实时数值,需要绕过默认界面直接读取硬件传感器。这里直接给出结论:最可靠的工具是HWiNFO64,其次是BatteryInfoView,而powercfg只能用于间接验证。无论你遇到插着65W

时间:2026-07-02 07:29
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜