OpenBsd是一款多平台,基于4.4BSD的类UNIX的操作系统,其是BSD衍生出的三种免费操作系统之一,被称为世界上最安全的操作系统。OpenBsds包含一些在其他操作系统缺少或是选择性的安全功能,它极度重视程式码的品质,任何对核心的修改都需要经过严格的程式码审阅,它完全集成了密码安全软件可保证数据安全。OpenBsds可以再17种不同的硬件环境下运行(包含DEC Alpha、Intel i386、Hewlett-Packard PA-RISC和AMD64等),像FreeBSD和NetBSD一样,OpenBSD也有很多应用软件支持,它包含了许多免费软件包的定制版本,它的软件库没有FreeBSD中的那么大,但是包含了大多数你想给Unix服务器或者工作站安装的工具。新版OpenBsds是目前做出最大改动的版本,其中加入了大量改进,包括硬件支持、通用网络堆栈、安装器、路由后台、用户层网络和安全性,此外还有各种核心组件和包,涵盖了Apache Web服务器、OpenSMTPD、OpenSSH、LibreSSL以及Syslogd。
OpenBsd安装教程
一、打开OpenBsd安装包,并进入安装第一步,此时会出现三个选项,输入I进入安装过程,输入U进入升级过程,输入S则进入一个shell环境,进入shell环境后可以输入install重新进入安装程序
二、输入I进行安装
1.进入Choose your keyboard layout(选择键盘布局)选项,一般都为us,也可以输入L列出键盘布局备选选项查看,然后选择自己的键盘布局
2.进入Choose your keyboard layout(设置主机名)选项,这里设置为VM1
3.进入网络配置部分,系统列出了当前全部的网卡,这里有两个vic0和vlan0,其中vic0是我们虚拟机配置里那个采用桥接方式的那个网卡,选择配置那一块网卡,默认为vic0,回车
4.进入配置ipv4地址选项,默认是dhcp,我们采用静态ip,输入ipv4的地址:192.168.1.123回车,进入设置掩码选项,默认为255.255.255.0,如不对,自己在后面填写正确的掩码,回车,不配置ipv6地址,默认none,回车
5.再一次进入选择网卡进行配置的选项,如果有多个网卡,这里可以配置下一个,这里选择done完成网卡配置,回车进入配置网关地址选项,填入19.168.1.1回车
6.进入设置dns域名的选项,如果公司有域名这里可以填写如( openbsd.org或者baidu.com等)这里我填写openbsd.org。那么我的机器将来的唯一标识则是主机名加上域名,即为:VM1.openbsd.org。填写好回车,进入DNS解析服务器的ip地址,多个dns解析服务器的ip用逗号隔开,填写:202.106.195.68。以上操作步骤如下图:
三、回车,系统询问还要进行其他的网络配置吗,默认NO回车,进入设置用户密码的选项,不回显
1.连续输入两次。回车,系统询问是否默认启动sshd服务,默认为yes,建议选择yes开启ssh登陆
2.系统询问是否默认启动ntpd服务,这是个时间同步服务,可以开启也可以不开启,如果系统需要准确的时间,建议开启以便和网络上的时间服务器进行时间同步,默认为no,这里选择不开启
3.回车系统询问是否期望运行X window系统,默认为yes,这里可以选择yes也可以选择no,我这里选择yes
4.回车系统询问是否默认运行x window ,默认值为no,这里选择默认值,即不启动x window,回车系统询问change the console to com0默认no即可
5.下一步系统让新建用户,这里不新建用户选择no即可
6.下一步,选择时区,可以输入L查看备选选项,这里选择Asia/Shanghai选项
7.下一步系统列出了当前可用的磁盘,如果有多快磁盘,选择指定的磁盘回车,系统提示是否在/etc/fstab里面使用DUIDS替代默认的设备名称,默认为yes即可
8、下一步系统提示是使用整个磁盘还是编辑MBR以使用部分磁盘,这里选择Whole全部即可
四、下一步,系统会默认有一个分区方案,如果同意的话输入A采用自动分区方案,或者输入E编辑自动分区的方案或者输入c采用自定义分区方案,这里我采用自定义分区方案,输入c如图
五、下一步进入自定义分区,输入?可以查看分区命令,分区编号可以是a到p的任何字母,但要注意,分区的时候,两个分区号代表特殊意义,即 b代表交换分区,c代表整个磁盘,所以添加第一个分区 a a即可,添加交换分区 a b ,不能使用a c,添加第三个分区 a
六、offset是分区开始的地方,size是分区的大小,fs type默认即可,mount point填入挂载点。这里我给/分区分了10G的空间,交换分区分了1G空间,剩下29G分给了/opt分区
七、完成后,系统进入选择安装介质的选项,默认cd回车即可,选择cd0,第一个光驱,回车,选择路径,默认即可。系统列出了都有哪些包可以安装
八、取消选择的包可以使用-包名的方式,如-game51.tgz,选择一个包输入报名回车即可,选择好所要安装的包后回车开始安装openbsd系统
九、安装完成后进入shell,为了使系统生效,我们需要重新启动系统,输入reboot
十、重新启动过程中,系统会生成rsa密钥对等等,启动完成后,如输入root密码进入系统
OpenBsd可运行的硬件
1、Alpha:基于 Digital Alpha的系统
2、amd64:基于 AMD64 的系统
3、Cat:Strongarm 110 评估板 (Evaluation Board)
4、hp300:Hewlett-Packard HP 9000 系列的 300 和 400 工作站
5、HP/PA:Hewlett-Packard Precision Architecture (PA-RISC) 系统
6、i386:基于 Intel® i386 体系结构和兼容处理器的标准计算机
7、luna88k:Omron LUNA-88K 和 LUNA-88K2 工作站
8、mac68k:基于 Motorola 680x0 的带 MMU 的 Apple Macintosh
9、macppc:从 iMac 开始,基于 Apple PowerPC 的计算机
10、mvme68k:基于 Motorola 680x0 的 VME 系统
11、mvme88k:基于 Motorola 881x0 的 VME 系统
12、SGI:基于 SGI MIPS 的工作站
13、SPARC:Sun sun4-、sun4c- 和 sun4m 级的 SPARC 系统
14、SPARC64:Sun UltraSPARC 系统
15、VAX:基于 Digital VAX 的系统
16、Zaurus:Sharp Zaurus C3x00 PDA
OpenBSD缺省列表
OpenSSH Version 4.3
Version 6.9.0(i386 分发版中包含了 V3.3 XFree86 服务器)
GCC Versions 2.95.3 和 3.3.5(缺省情况下启用了 Propolice 栈保护技术)
Perl Version 5.8.6(包含来自 OpenBSD 团队的修补程序和改进程序)
Apache Version 1.3.29 Web 服务器(包括 mod_ssl Version 2.8.16 和动态共享对象 (DSO) 支持)
OpenSSL Version 0.9.7g(包含来自 OpenBSD 团队的修补程序和改进程序)
Groff Version 1.15
Sendmail Version 8.13.4(包含 libmilter)
BIND Version 9.3.1(包含对 chroot 操作和其他安全相关问题的改进)
Lynx Version 2.8.5rel.4(添加了对安全套接字层 (HTTPS) 的 HTTP 支持,并包含来自 OpenBSD 团队的修补程序)
Sudo Version 1.6.8p9
Ncurses Version 5.2
KAME IPv6
Heimdal Version 0.7(包含修补程序)
Arla Version 0.35.7
gdb Version 6.3
OpenBsd安全配置使用
一、为了更加安全,为了更加容易更新升级系统和包,可以使用 M:Tier的openup
$ ftp https://stable.mtier.org/openup
$ chmod +x openup
$ sudo openup
===> Checking for openup update
===> Installing/updating binpatch(es)
===> Updating package(s)
二、保护裸机OpenBSD缺省设置非常安全,没有服务监听端口,除了SSH,SSH监听的是缺省22端口,可以设定服务器只接受来自你的计算机的公共地址,其他IP地址全部屏蔽
$ sudo vi /etc/pf.conf
block in quick from ! x.x.x.x # 这里是你的公共IP地址
pass out quick
改变完成后,通过下面命令激活:
$ sudo pfctl -f /etc/pf.conf
下面是创建SSH key,失效root登录,使得SSH监听另外其他端口。首先是创建key,在Linux/BSD下客户端下可以如下使用-t ed25519,如果是Windows客户端,可以使用-t rsa
$ ssh-keygen -t ed25519
客户端产生Key以后,拷贝这个公共key到~/.ssh/authorized_keys:
$ cp ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys
复制你的私有key到远程服务器上,注意赋予600权限,设置正常后,可以通过下面命令连接正常:
ssh -i your_private_key your_server_ip
第二步是修改端口,端口号越高越避免扫描。
$ sudo vi /etc/ssh/sshd_config
# 修改缺省监听端口
Port 21598
# Authentication
PasswordAuthentication yes # temporary
PermitRootLogin no
AllowUsers YOUR_USER
AuthorizedKeysFile .ssh/authorized_keys
AllowTcpForwarding no
UsePrivilegeSeparation sandbox # Default for new installations.
Subsystem sftp /usr/libexec/sftp-server
重新启动sshd:
$ sudo /etc/rc.d/sshd restart
再从客户端连接服务器:"ssh -i your_private_key your_server_ip",如果一切正常,我们失效密码登录,修改/etc/ssh/sshd_config行:
PasswordAuthentication no
再重新启动sshd,测试是否成功。下面我们配置ssh key以十进制hex格式连接,ASCII图形方式:
$ sudo vi /etc/ssh/ssh_config
# Display fingerprint in hex and ASCII graphic when connecting
VisualHostKey yes
至此,我们已经设置SSH监听在非标端口,root无法直接登录,授权password失效,基于SSH key进行授权
三、系统和网络如果你的服务器是基于SSD固态硬盘,那么在fstab文件中加入mount选项softdep和noatime可以提高磁盘性能,同时可以阻止文件属性 "last access time" 的写入
$ sudo vi /etc/fstab
YourDiskDUID.b none swap sw
YourDiskDUID.a / ffs rw,noatime,softdep 1 1
YourDiskDUID.k /home ffs rw,nodev,nosuid,noatime,softdep 1 2
YourDiskDUID.d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2
YourDiskDUID.f /usr ffs rw,nodev,noatime,softdep 1 2
YourDiskDUID.g /usr/X11R6 ffs rw,nodev,noatime,softdep 1 2
YourDiskDUID.h /usr/local ffs rw,nodev,noatime,softdep 1 2
YourDiskDUID.j /usr/obj ffs rw,nodev,nosuid,noatime,softdep 1 2
YourDiskDUID.i /usr/src ffs rw,nodev,nosuid,noatime,softdep 1 2
YourDiskDUID.e /var ffs rw,nodev,nosuid,noatime,softdep 1 2
如果你的服务器缺省基于DHCP,我们可以修改为手工DNS,这样减少被控制可能,类似windows下网卡中IP的配置,:
$ sudo vi /etc/hostname.vio0
inet 你的服务器公共地址 网络netmask
加入网关地址
$ sudo vi /etc/mygate
服务器网关地址
激活流量分发forward
$ sudo sysctl net.inet.ip.forwarding=1
$ sudo vi /etc/sysctl.conf
net.inet.ip.forwarding=1
DNS
我们可以使用DNSCrypt让我们的DNS请求更加加密安全,不绑定到任何本地DNS缓存:
$ export PKG_PATH=http://ftp.fr.openbsd.org/pub/OpenBSD/5.6/packages/amd64/
$ sudo pkg_add dnscrypt-proxy
$ sudo vi /etc/rc.local
# DNSCrypt
/usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk
你能以下面方式选择dnscrypt激活你的DNS服务器:
$ sudo /usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk
现在我们配置和激活unbound,这已经包含在基本系统中,配置在/var/unbound目录:
$ sudo vi /var/unbound/etc/unbound.conf
server:
username: _unbound
directory: /var/unbound
chroot: /var/unbound
do-not-query-localhost: no
interface: 127.0.0.1
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: 10.8.0.0/24 allow
hide-identity: yes
hide-version: yes
auto-trust-anchor-file: "/var/unbound/db/root.key"
forward-zone:
name: "." # use for ALL queries
forward-addr: 127.0.0.1@40 # dnscrypt-proxy
不要忘记修改/etc/resolv.conf:
$ sudo vi /etc/resolv.conf
nameserver 127.0.0.1 # unbound 是在监听53端口
运行Unbound,并且在系统启动时激活:
$ sudo /etc/rc.d/unbound start
$ sudo vi /etc/rc.conf.local
# Unbound
unbound_flags="-c /var/unbound/etc/unbound.conf"
测试你的DNS链是否正常工作:
$ host openbsd.org
openbsd.org has address 129.128.5.194
openbsd.org mail is handled by 6 shear.ucar.edu.
openbsd.org mail is handled by 10 cvs.openbsd.org.
Unbound监听在端口53,当连接上后分发到dnscrypt监听的端口40,再接触到外部dnscrypt激活的DNS服务器
OpenBsd防火墙属性说明
1、total代表屏蔽黑名单的IP地址数量
2、first是匹配监视端口的IP数量,但是没有加入黑名单
3、retry是匹配监视端口应用加入黑名单的数量
4、ports blocked是被屏蔽加入黑名单的访问端口
5、bruteforce是连接我们的开放SSH端口太多次的IP总数
OpenBsd功能特色
一、OpenSSH
第一个值得关注的包是 OpenSSH,所有的 UNIX 和 Linux® 用户对它都很熟悉。然而,许多人可能并不知道它来自于 OpenBSD 开发人员。OpenSSH 最初用于 OpenBSD,后来成为标准的安全 Shell (SSH) 包,并移植到几乎所有版本的 UNIX、Linux 和 Microsoft® Windows® 操作系统。OpenSSH 包括用于安全登录的 ssh、用于安全复制的 scp 和 sftp,后者是 ftp 的安全替代方法。所有的源代码都符合开放源代码 BSD 许可,必须遵守 OpenBSD 的规程以杜绝在该分发版中出现任何专用代码和限制性许可计划(这是创建新版本的 SSH 的原动力)。OpenBSD中所包含的每个软件部分都是完全免费的,并且在使用上没有任何限制
二、加密
因为OpenBSD项目是在加拿大进行的,所以其中应用的加密技术不受美国的出口限制,这使得该分发版可以充分利用各种现代的加密算法。几乎可以在该操作系统的任何地方找到加密处理,从文件传输到文件系统,乃至网络。OpenBSD 中还包含伪随机数生成器,它可以确保无法根据系统状态预测随机数。其他的特性还包括加密哈希函数、加密转换库和加密硬件支持
三、IP安全协议
OpenBSD中另一个主要的部分是IP安全协议 (IPSec),该操作系统中没有依赖先天不安全的TCP/IP Version 4 (IPV4),而使用了这个协议。(IPV4 选择信任所有的人和所有的事物。)IPSec 对数据包进行加密和验证以保护数据的保密性,并确保在传输过程中不会对数据包进行任何更改。随着TCP/IP Version 6 (IPV6) 的引入,IPSec 成为标准的 Internet 协议中不可或缺的部分,这使得未来的 Internet 在缺省情况下更加安全
四、防火墙
1.因为OpenBSD很小并且很安全,所以OpenBSD实现的最常见目标之一是用作防火墙。防火墙从底层对大多数安全单元进行操作,并且 OpenBSD 的包过滤实现是非常优秀的。Packet Filter (PF),OpenBSD 开发社区设计的开放源代码解决方案,它是 OpenBSD 所选择的方法。与 OpenBSD 软件的其他许多部分一样,这种方法非常成功,以至于其他的 BSD 变种纷纷将其移植到自己的分发版中
2.OpenBSD配置为缺省安全,所以在设置坚如磐石的防火墙时,您无需关闭过多的服务。您需要启用第二个 Ethernet 接口,并根据需要配置 PF。有关介绍如何将 OpenBSD 服务器设置为防火墙的文章链接
四、加密和随机数
1.大多数操作系统很少在其关键组成部分中包含加密处理,这使得它们先天就缺乏安全性。导致这种缺陷的一个重要原因是,大多数的操作系统来自美国,不允许开发人员出口健壮的加密软件。OpenBSD中的加密哈希库包括 MD5、SHA1 和 RIPEMD160。OpenBSD中的加密转换库包括 Blowfish、数据加密标准 (DES)、3DES和Cast
2.大部分加密处理都在底层进行,这样一来,用户就不用为了保护系统安全而必须成为加密方面的专家。OpenBSD 开发团队很清楚,大多数管理员并不是安全方面的专家,并且不应该指望他们煞费周折地加强他们的环境。那些认为 OpenBSD 不是用户友好的操作系统的人,大部分是受到了误导。如果大多数管理员愿意花时间使用 OpenBSD 的缺省安全措施来替代任何其他的分发版,那么他们很可能会改变其思维方式
3.随机数是确保安全性的重要组成部分。OpenBSD 内核使用中断信息创建不断变化的熵池,它可以为加密函数提供种子数据,并为事务 ID 提供数值。例如,伪随机数可用于进程 ID和包 ID,这使得那些想要进行攻击的人很难进行欺骗。OpenBSD 甚至在 bind(2) 系统调用中使用了随机端口分配。大多数源于 UNIX 的操作系统要么创建顺序的 ID,要么使用可预测其结果的简单算法
更新日志
OpenBsd 6.0更新内容
一、新增组件
Xenocara、基于X.Org 7.7的OpenBSD图形堆栈、带额外补丁的X.Org Server 1.16.4、Mesa 10.2.9、FreeType 2.6、FontConfig 2.11.1、Xterm 314、GCC 4.2.1和3.3.6、Perl 5.20.2、SQLite 3.8.9、Ncurses 5.7、Binutils 2.17、Unbound 1.5.4、NSD 4.1.3、GDB 6.3、以及Less 458
二、硬件性能方面的提升有
New xhci(4) driver for USB 3.0 host controllers.
New umcs(4) driver for MosChip Semiconductor 78x0 USB multiport serial adapters.
New skgpio(4) driver for Soekris net6501 GPIO and LEDs.
New uslhcom(4) driver for Silicon Labs CP2110 USB HID based UART.
New nep(4) driver for Sun Neptune 10Gb Ethernet devices.
New iwm(4) driver for Intel 7260, 7265, and 3160 wifi cards.
The rtsx(4) driver now supports RTS5227 and RTL8411B card readers.
The bge(4) driver now supports jumbo frames on various additional BCM57xx chipsets.
The ciss(4) driver now supports HP Gen9 Smart Array/Smart HBA devices.
The mpi(4) and mfi(4) drivers now have mpsafe interrupt handlers running without the big lock.
penBSD 5.8 正式发布,此版本是第 38 个基于 CD-ROM 的版本(and 39th via FTP/HTTP)。此版本包括系统各个方面的新特性和一些重要改进
三、主要改进
1.改进硬件支持
New rtwn(4) driver for Realtek RTL8188CE wifi cards.
New hpb(4) driver for HyperTransport bridges as found in the IBM CPC945
The ugold(4) driver now supports TEMPerHUMV1.x temperature and humidity sensors.
Improved sensor support for the upd(4) driver for USB Power Devices (UPS).
Support for jumbo frames on re(4) devices using RTL8168C/D/E/F/G and RTL8411, including PC Engines
re(4) now works with newer devices e.g. RTL8111GU.
Partial support has been added for full-speed isochronous devices in ehci(4), allowing USB 1.1 audio devices to be used on EHCI-only systems in some cases.
mproved macppc stability and G5 performances with MP kernels
acpicpu(4) uses ACPI C-state information to reduce power consumption of idle CPUs.
Kernel supports x86 AVX instructions on CPUs that have them.
Avoid assigning low address to PCI BARs, fixing various issues on machines whose BIOSes neglect to claim low memory.
wscons(4) works with even more odd trackpads
Added pvbus(4) paravirtual device tree root on virtual machines that are running on hypervisors
New octdwctwo(4) driver for USB support on OpenBSD/octeon
New amdcf(4) driver for embedded flash on OpenBSD/octeon
2.移除的硬件支持
The lmc(4) driver for Lan Media Corporation SSI/T1/DS1/HSSI/DS3 devices has been removed.
The san(4) driver for Sangoma Technologies AFT T1/E1 devices has been removed. 11常规网络栈改进
MTU of vlan(4) devices can now be set independently from the parent interface's MTU.
The same network range can now be assigned to multiple interfaces, using interface priorities to choose between them.
New MPLS pseudowire driver mpw(4)
3.安装器改进
hostname-mode.conf response file names.
response files to be placed in a subdir of the webserver's document root.
passing a template file to\tdisklabel(8)\tto automatically partition the disk.
The default answer is now 'no'.
'prohibit-password' has been added to the list of possible answers.
The logic of the 'Allow root ssh login?' question has been changed.
autoinstall(8) has been extended to allow
ntpd(8) is now enabled by default at install time.
DUID support has improved enough that new installs now use them unconditionally.
Installing sets from CD-ROM has been fixed if more than one CD-ROM drive is present.
The 'Which CD-ROM contains the install media?' question has been removed. Available cdrom devices are now shown directly in the 'Location of sets?'prompt.
4.安全改进
sudo in base has been replaced with doas(1), sudo is available as a package
file(1) has been replaced with a new modern implementation, including sandbox and privilege separation
pax(1) (and tar(1) and cpio(1)) now prevent archive extraction from escaping the current directory via symlinks; tar(1) without -P option now strips up through any ".." path components
Improved kernel checks of ELF headers
0条评论