openbsd

nginx on OpenBSD

UPDATE
原文针对OpenBSD4.9,现在已经是5.2了,有些内容重新做了修订。

Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器 。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。

经过几年的发展,nginx的市场占有率稳步上升,截至2013年,市场份额占有率为15.52%(netcraft统计),微软的IIS为16.69%。nginx不日即可超越IIS。

OpenVPN on OpenBSD

2013-04-03添加topology subnet和ccd配置。
2013-02-14取消whichsslconf依赖。
2012-04-12初稿。
{: .info}

OpenVPN是近年来最火的VPN软件,它部署容易,使用简单,跟IPsec相比,它所缺少的只是积累和口碑,不过没关系,已经有越来越多的公司开始在生产环境中用OpenVPN来取代IPsec。

升级OpenBSD

我目前的两台防火墙是OpenBSD4.9,需要升级到5.2。由于OpenBSD不支持跨版本升级,因此需要采用4.9->5.0->5.1->5.2这种逐步升级的方式。

下面步骤是官网推荐的upgrade by install kernel。

# mkdir /backup
# mv /bsd.rd /backup/bsd.rd.50
# wget http://ftp.jaist.ac.jp/pub/OpenBSD/5.2/i386/bsd.rd
# shutdown -r now

在boot的提示符中输入

>bsd.rd

选择(U)pgrade,然后选择合适的sets: bsd.rd,bsd,base.tgz,comp52.tgz,man52.tgz

# wget http://ftp.jaist.ac.jp/pub/OpenBSD/5.2/i386/etc52.tgz
# sysmerge -x /backup/etc52.tgz

最后是确认所有的配置文件是否正确

# shutdown -r now

OpenBSD中的网络管理

这些天我花了一些时间研究了一下OpenBSD中的系统/网络监控软件,走了不少弯路,在这里跟与诸位分享一些心得体会。

一开始,我直奔主题,花了不少精力尝试了大量网管软件,考察的对象包括:Munin、Monit、collectd、nagios/icinga和symon。

unbound on OpenBSD

2013-03-05 更新几条kill的正确用法和客户端排错说明
{: class=“info” }

一提起DNS,大家一般都会想到BIND。2000年的时候,Oreilly的《DNS and BIND》是最著名的也是唯一的一本关于DNS的书籍,现在已经更新到第5版。然而,时光流逝,美人迟暮,BIND的代码越来越臃肿,每向前迈一步都很困难,不少后起之秀都在觊觎BIND的地位,nsd/unbound便是其中之一,目前已有3台根域名服务器跑的就是nsd。

nsd/unbound是NLnet Labs开发的一套DNS daemon,其中nsd作为authorative DNS,unbound负责recursive和caching,旨在为用户提供一套安全、简洁、高效的DNS解决方案。ubuntu和OpenBSD均计划在下一版本中将unbound作为默认的DNS解释器。
今天仅介绍unbound,以后有机会再讲nsd。

fail2ban on OpenBSD

自部署OpenBSD以来,经常发现有script kid使用暴力破解的方式试探SSH的密码,一直以来都不以为然,最近总部下发的通报让我痛下决心,非解决这个问题不可。

解决方式有两种:

  1. 将密码验证更改为证书认证;
  2. 实时监控/var/log/authlog,一旦发现非法IP,就列入黑名单,使用pf对黑名单进行过滤。

OpenBSD学习笔记

o 运行locate时出错

# locate
locate: database too small: /var/db/locate.database

解决办法:# /usr/libexec/locate.updatedb

o 安装bash

# pkg_add -i bash

然后调整.bash_profile

o 安装port tree

$ cd /tmp
$ ftp ftp://ftp.openbsd.org/pub/OpenBSD/4.9/ports.tar.gz
$ cd /usr
$ sudo tar xvzf /tmp/ports.tar.gz
;注意,tar一定要带上参数v,因为在openbsd中解压非常慢,v可以即时显示解压进度。

o 彩色显示目录和文件

在openbsd需要安装colorls才能用不同颜色区分不同文件和目录。

# pkg_add colorls
# vim ~/.profile
export TERM=wsvt25
alias ls="colorls -G"

重新登录ls看看吧。

默认颜色:

  1. 白色 正常文件
  2. 蓝色 目录
  3. 红色 可执行文件
  4. 品红 连接

o 如何在openbsd中重启服务?

kill -HUP $(cat /var/run/sshd.pid)
kill -HUP `cat /var/run/sshd.pid`

ps aux | grep app_name
kill -9 id

o 如何更新时间

# rdate -ncv pool.ntp.org
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这样就可以得到正确的时间了。

那如何将时间同步到bios中呢?目前还没有找到合适的方法,以下是一种workaround

# echo "/usr/local/bin/ntpd -A -c /etc/ntp.conf -l /var/log/ntp.log