Back to the sea ; the OpenBSD installation, episode II
768 words, 4 minutes
OpenBSD is really easy to install.
It’s not shinning, but it asks for a few questions and only takes a couple of
minutes to get a working system.
Installation
Grab the install48.iso file that corresponds to your version and CPU architecture. Burn it to a CD or use it to boot a VM.
The installation is straight forward, no big deal.
It’ll ask for the keyboard layout you want to use.
It’ll propose you to configure a DHCP (or fixed) network configuration.
It’ll configure the root password, create a basic user, configure SSH and NTP
and set your time zone.
The disk configuration might be a bit tricky.
But just read the FAQ
and you’ll be able to handle this.
If you downloaded the install*.iso
file, every archives will be provided on
the CD (emulation). So you’ll choose cd
as the “Location of sets?”. If not,
you may use http
or ftp
; if you have a network access.
When asked for the “Set name(s)?”, I choose all
then done
. This might not
be the safest installation for a server but there are packages that might
require X stuff latter and I don’t really want to fight with those latter.
Then, I consider that a non running service doesn’t harm. I know it’s not quite
true, but that’s the level of security I want to afford.
Let the installation proceed, auto-configure a few other things and you’re ready to reboot.
First boot
Here we are. The system has rebooted and the login prompt is ready for me.
As I configured a user and SSH, I won’t use the console. I’ll do everything via a remote SSH connexion.
From DHCP to fixed IP
I installed the system with a DHCP configuration. It’s just easier for a start ; and I don’t remember what the default network range inside a VMware Fusion NAT ;-)
There are only a few steps to switch to fixed IP:
# vi /etc/hostname.em0
inet 192.168.12.144 255.255.255.0 192.168.12.255
# vi /etc/myname
eddie.tumfatig.net
# vi /etc/mygate
192.168.12.2
# vi /etc/hosts
192.168.12.144 eddie.tumfatig.net eddie
# vi /etc/resolv.conf
search tumfatig.net carnat.net free.fr
nameserver 192.168.12.2
lookup file bind
Reboot the server to apply the name and network configuration.
OpenSSH service
I want to use long SSH keys and deny SSH access via password.
Create the server keys:
# ssh-keygen -t rsa1 -f ssh_host_key -N '' -C "tumfatig.net" -b 4096
# ssh-keygen -t dsa -f ssh_host_dsa_key -N '' -C "tumfatig.net" -b 1024
# ssh-keygen -t rsa -f ssh_host_rsa_key -N '' -C "tumfatig.net" -b 4096
# cp -p ssh*key* /etc/ssh/
Create the personal keys:
# ssh-keygen -t rsa -C "jca@tumfatig.net" -b 4096
Deny password authentication:
# vi /etc/ssh/sshd_config
PasswordAuthentication no
# kill -HUP `cat /var/run/sshd.pid`
Execute a command as another user
Your normal user is no admin ; or at least, it shouldn’t. So to do big guy
things, you need to be granted the ultimate mighty power. sudo
is the tool
that enables you to run a single command as Zeus.
Configure sudo:
# visudo
%wheel ALL=(ALL) SETENV: ALL
If your user was created during installation, it already is in the wheel
group. If not, add it and relog to apply the changes. And remember:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
User environment
The default user environment is perfect for administration. Fast, silent, efficient. But I like to add a bit of color in my terminals.
# vi ~/.profile
PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/
local/sbin:/usr/games:.
export PATH HOME TERM
export EDITOR="/usr/local/bin/vim"
export EXINIT='set autoindent'
export PAGER="/usr/bin/less"
export VISUAL=$EDITOR
HISTFILE=$HOME/.history
HISTSIZE=4096
alias ls="/bin/ls -aF"
ll="ls -lh"
set -o emacs
umask 022
_U="`whoami`"
_H="`hostname -s`"
_V="`uname -sr`"
BLANK='^[[0m'
DRED='^[[0;31m'
DGREEN='^[[0;32m'
DYELLOW='^[[0;33m'
DBLUE='^[[0;34m'
DPURPLE='^[[0;35m'
DCYAN='^[[0;36m'
DWHITE='^[[0;37m'
case $TERM in
xterm*|*rxvt*)
# PS1='^[]0;[ $_U@$_H:$(pwd) ]^G
#$DRED-($DCYAN$_U$BLANK@$DCYAN$_H$DRED)-($DWHITE$_V$DRED)-($DYELLOW$(date +"%Y-%
m-%d")$DRED)-
#$DRED-($DYELLOW$(date +"%H:%M")$DRED)-($DGREEN$(pwd)$DRED)- $BLANK'
PS1='^[]0;[ $_U@$_H:$(pwd) ]^G
$DRED-($DCYAN$_U$BLANK@$DCYAN$_H$DRED)-($DWHITE$_V$DRED)-($DYELLOW$(date +"%Y-%m
-%d %H:%M")$DRED)-
$DRED-($DGREEN$(pwd)$DRED)-$BLANK
# '
;;
*)
PS1='[ $_U@$_H:$(pwd) ] '
;;
esac
The mighty editor
I like to use vim
as my system editor:
# pkg\_add http://ftp.fr.openbsd.org/pub/OpenBSD/4.8/packages/amd64/vim-7.2.444-no\_x11.tgz
# pkg_add http://ftp.fr.openbsd.org/pub/OpenBSD/4.8/packages/amd64/vim-spell-fr-7.2.tgz
# vi ~/.vimrc
set nocompatible
set backspace=indent,eol,start
set nobackup
set history=50
set ruler
set showcmd
set incsearch
syntax on
Last step
It’s time for a remote backup:
# ssh 192.168.12.144 "sudo tar czpf - /" > eddie.obsd48amd64.01basics.tar.gz
tar: Removing leading / from absolute path names in the archive
tar: Ustar cannot archive a socket /dev/log
tar: Ustar cannot archive a socket /var/cron/tabs/.sock
tar: Ustar cannot archive a socket /var/empty/dev/log
tar: Ustar cannot archive a socket /var/www/dev/log
That’s All Folks!