详细讲解如何在OpenBSD上配置OpenVPN服务以及相关的防火墙规则配置。鉴于文章在墙外,我就全部搬过来吧.
在今年(2017)的defcon大会上,Ilja van Sprundel做了一个名为 “所有的BSD生来是平等的吗?”(Are all BSDs created equally? ),副标题: 一次关于BSD系统内核漏洞的调查(A survey of BSD kernel vulnerabilities)。我在youtube上搜了一下,目前还没有视频。
从6.1版开始,OpenBSD支持使用二进制文件为系统打补丁,结束了每个补丁要用户自己下载源文件并编译、安装的历史,就像现在所有Linux发行版一样。也算是补上了一个短板。
这是一篇根据此文意译的文章, 我只翻译了自己认为重要的东西。作者以自己移植python的dnslib库到OpenBSD的过程来描述移植的过程。作者为Bryan Everly。此译文发表时文章发布的原域名过期,无法访问。 事前准备 找到你想移植的软件 准备好承担做一个维护者的责任 和软件的开发者/团队协作,而不是为软件加几个补丁,让它在OB上能编译通过 你很可能没有权限把软件添加到ports中,请和ports邮件列表中的人合作 先读文档,再问问题 OpenBSD ports树传统 软件按类别放在/usr/ports目录下,如开发工具放在/usr/ports/devel,数据库软件放在/usr/ports/database等等 软件源码并不放在/usr/ports的任何目录下,而是在编译时从它的官网下载到/usr/ports/distfiles/PORT-v.v.v子目录下 实际编译时的工作目录在/usr/ports/pobj/PORT-v.v.v下 某个软件的ports包含如下标准的文件: Makefile — 包含编译指令 distinfo — 包含指定软件的验证信息,如tar包的SHA1/SHA256摘要信息 pkg — 子目录 pkg/DESCR — 关于此软件的简短描述,请保持列宽为72 pkg/PLIST — 由此ports编译成的软件包(package)的manifest文件 patches — 子目录,包含要为此软件的源码打的补丁包 大部分ports的Makefile的结尾会包含一个名为bsd.port.mk的文件。这个文件用于告诉ports如何利用OpenBSD现有的ports编译的基础架构。 以移植python库dnslib为例,在/usr/ports/net目录下新建一个文件夹py-dnslib,因为一个跟网络相关的工具,也是python的库文件,所以以py-开头。 接下来要创建Makefile. # $OpenBSD$ COMMENT=…
如何在OpenBSD 5.9下编译fish shell
doas是OpenBSD 5.8上开始出现的一个程序,用来代替sudo。相比sudo,它的好处是配置简单明了。坏处嘛我还不知道,估计功能上没有sudo那么全面吧。因为我都是用sudo的一些基本功能(指定那些用户可以切换到root),所以对sudo的优势了解并不全面。另外就是,doas的配置完全不兼容sudo,且目前只有OpenBSD上才有。 doas的配置文件是/etc/doas.conf,配置规则如下 permit|deny [options] identity [as target] [cmd command [args …]] 一个规则以permit(允许)或deny(拒绝)开头, 接下来是一些选项(options,非必须),然后是配置的用户名或用户组(identity部分),再接下来是这个用户(identity部分)可以(或不允许)以哪个用户(target)的身份来执行命令,用as关键词来表示。这也是可选的。如果省略,表示这个用户(identity)可以以任意用户的身份执行后面cmd关键词指定的命令; cmd关键词用来指定允许(或拒绝)的命令,args关键词用来指定命令的参数; cmd 和args都是可选的。省略的话表示任意命令和参数。 选项(options)部分有一下两个选择: a. nopass , 表示用户无需输入密码 b. keepenv { [ variables … ] },表示用户的使用环境将会被保持,如果不指定的话,默认是会重置的(除了这些变量: DISPLAY, HOME, LOGNAME, MAIL, PATH, TERM, USER and USERNAME.)。keepenv还可以指定具体那些变量被保持。将需要保持的变量名称放在大括号中,多个时以空格分开。…
rcctl 是OpenBSD系统上的后台进程(daemon)管理程序,功能上类似于以前redhat Linux上的chkconfig或新版中的systemctl。 它其实是一个shell脚本程序,最早见于OpenBSD 5.7。需要有root权限才可以使用。 它的原理主要是通过在/etc/rc.conf.local文件中设置相应进程的配置来完成。被管理的进程需要在/etc/rc.d/目录下有相应的控制脚本文件。 主要功能及示例 (下面的内容主要是根据rcctl的man手册翻译而来,我再加上一些范例。愿意的朋友可以自己阅读man手册) 启用或禁用后台进程(包括系统自带进程如httpd以及通过软件包安装的进程如mysqld/nginx等,下同) rcctl enable httpd ## 启用 rcctl disable httpd ## 禁用 启动或停止后台进程 rcctl start httpd rcctl stop httpd 也可以根据需要传入 -d (开启debug)或 -f (强制)参数 列出进程相关的参数 # rcctl get httpd httpd_class=daemon httpd_flags= httpd_timeout=30 httpd_user=root…
我的Thinkpad X20E的回车键坏掉了,但是手头很紧,不想换键盘,而且也不常用,干脆就把回车键映射到其它的键上吧。 考虑了一番,大写键(CapsLock)就是这次的牺牲品了。 当然,目前这台计算机运行的(还)是DragonFlyBSD 4.2。 下面要开始实施计划。当然,你还需要一个外接的键盘。 由于控制台(console)界面下和X(图形界面)下键映射的负责程序不同,需要分别来做。 1. 命令行下 根据网络搜索结果和命令手册,命令行下键的映射由kbdcontrol程序来控制。 首先,导出目前键盘映射表到一个文件(需要在控制台界面下操作,SSH不行(?)): kbdcontrol -d > /root/no_enter.map 然后编辑此文件。我的键盘映射表中,大写键编码为058 (找文件的2-8列中clock对应的编码)。 然后将058那一行的第二列的clock改为cr(Carriage Return)。参看下面我修改过的文件。 第一个带有#的058的行是kbdcontrol命令导出的数据,被我注释掉了。 [acheng@violet ~]$ cat /root/no_enter.map # alt # scan cntrl alt alt cntrl lock # code base shift cntrl shift alt…
无意中发现了Fish Shell,对我来说是个全新的东东,也有很多看起来不错的特性。决定试一下。 不过OpenBSD上没有fish shell的软件包,需要自己编译。幸好编译的过程还算简单顺利。 先安装需要的工具: pkg_add -v gmake autoconf 安装autoconf的时候要选择2.60或更高的版本。 然后根据autoconf的版本设置变量AUTOCONF_VERSION: export AUTOCONF_VERSION=2.69 #我安装的是autoconf-2.69p1 接下来下载fish shell的源码包。我选择到github上下载。fishshell.com上应该也有,但是我打不开。 https://github.com/fish-shell/fish-shell/archive/master.zip 然后解压。我用的是7z (7zip): 7z x master.zip 解压后得到一个fish-shell-master文件夹。接下来编译。 cd fish-shell-master autoconf ./configure gmake gmake install # 需要root权 一切顺利的话,运行fish命令即可进入fish shell 至于fish shell的配置、特性等等,后面的博客中我们再聊(我也还没看完文档呢)
scrot是一个X环境下的命令行抓屏工具。注意是X环境,只开个终端是不行的。在OpenBSD上需要另外安装: ## 首先确保PKG_PATH变量已经设置好 $ echo $PKG_PATH http://ftp.jaist.ac.jp/pub/OpenBSD/snapshots/packages/amd64/ ## 安装scrot pkg_add -v scrot scrot的常见用法是: scrot -c -d 5 screen.png 其中”-c”用于显示倒计时,”-d”用于设定延迟的秒数。最后screen.png是保存截屏要有的文件名。