c78198809bbaca4da12349af0d7a756baa70ee5c
[mirror/dsa-wiki.git] / input / howto / new-machine.creole
1 == setup/integrate a new machine ==
2
3 Note: this is partially obsolete now that we have [[puppet|howto/puppet-setup]].  We should probably update/rework some parts.
4
5 * install ssh if it isn't there already
6 {{{
7     apt-get install ssh
8 }}}
9
10 * make apt sane
11 {{{
12     echo 'Acquire::PDiffs "false";' > /etc/apt/apt.conf.d/local-pdiff
13     echo 'APT::Install-Recommends 0;' > /etc/apt/apt.conf.d/local-recommends
14 }}}
15
16 * sane locales:
17
18  make sure there is _no_ locale defined in /etc/environment and /etc/default/locale
19
20 {{{
21    echo -n > /etc/environment
22    echo -n > /etc/default/locale
23 }}}
24
25 * make debconf the same on every host: - dialog, - high
26 {{{
27     apt-get install dialog &&
28     echo "debconf debconf/priority        select high" | debconf-set-selections &&
29     echo "debconf debconf/frontend        select Dialog" | debconf-set-selections
30 }}}
31
32 * add db.d.o to sources.list:
33 {{{
34     cat > /etc/apt/sources.list.d/debian.org.list << EOF
35 deb     http://db.debian.org/debian-admin lenny main
36 deb-src http://db.debian.org/debian-admin lenny main
37 EOF
38
39     apt-key add - << EOF
40 -----BEGIN PGP PUBLIC KEY BLOCK-----
41 Version: GnuPG v1.4.9 (GNU/Linux)
42
43 mQGiBEf4BP0RBACfXnRhBb9HKiA3h5A1tDnluVwfkSuDX4ZXdVAuMZapdOm8r9ug
44 9zE/dDGWPWja+DArAPZ/i3BFvlMewmden/IFbQKtXluQVIC4GL1RBMwrtWsZzo0g
45 picl3CYWDAYjRdg4WppUc9FawwGw081FlLGDv7eYRO3+8uGUHfr+SD7CwwCgxJK6
46 SvDX6M2Ifuq8WmgWWrVFyakD/ipdxd3NPIcnl1JTO2NjbOJYKpZMl6v0g+1OofSq
47 CAKTO8ymc0z6SF1j/4mWe1W76wvTpOhOUgn2WO7SQHZaujb/3z+yAJedfbCDgq0S
48 H/T2qbQTzv+woAjyR/e2Zpsc2DRfqO/8aCw1Jx8N3UbH9MBPYlYlyCnSra1OAyXW
49 VvC0A/9nT/k6VIFBF0Oq2WwmzOLptOqg61WrnxBr3GIe503++p88tOwlCJlL0uZZ
50 k68m3m5t7WDtQK4fHQwLramb9AqtBPhiEaXU5bXk77RYE54EeEH9Z4H4YSMMkdYU
51 gLG5CZI2jprxAZew1mHKROv+15jxYd+BZCrORmpWn5g7N+TC5rQeZGIuZGViaWFu
52 Lm9yZyBhcmNoaXZlIGtleSAyMDA4iGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgID
53 AQIeAQIXgAUCSdlA9AUJA8JvcwAKCRC+p88QvSsO4AoeAJ0dY+rDwxNVR6HPs8JZ
54 xLceOYU/hgCeNW1KkOXrSt2Lv8PVWXnr5jHNZSo=
55 =4LFD
56 -----END PGP PUBLIC KEY BLOCK-----
57 EOF
58 }}}
59
60 * in /etc/ssh/sshd_config:
61 ** disable the DSA hostkey, so that it only does RSA
62 ** remove old host keys:
63 ** disable X11 forwarding
64 ** Tell it to use alternate authorized_keys locations
65 ** maybe link root's auth key there:
66 {{{
67     #| HostKey /etc/ssh/ssh_host_rsa_key
68     #| X11Forwarding no
69     #| AuthorizedKeysFile /etc/ssh/userkeys/%u
70     #| AuthorizedKeysFile2 /var/lib/misc/userkeys/%u
71
72     cd /etc/ssh/ && rm -f ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_key ssh_host_key.pub &&
73     mkdir -p /etc/ssh/userkeys && ln -s /root/.ssh/authorized_keys /etc/ssh/userkeys/root &&
74     sed -i -e 's/^HostKey.*_dsa_key/# &/;
75                s/^X11Forwarding yes/X11Forwarding no/;
76                $ a AuthorizedKeysFile /etc/ssh/userkeys/%u
77                $ a AuthorizedKeysFile2 /var/lib/misc/userkeys/%u' sshd_config &&
78     (cd / && env -i /etc/init.d/ssh restart)
79 }}}
80
81
82
83 * install userdir-ldap
84 {{{
85     apt-get update && apt-get install userdir-ldap
86 }}}
87
88
89 * on draghi, add the host to /home/sshdist/.ssh/authorized_keys and generate.conf
90 (you want the host's rsa host key there: {{{cat /etc/ssh/ssh_host_rsa_key.pub}}})
91 {{{
92     : :: draghi :: && sudo vi /home/sshdist/.ssh/authorized_keys
93     : :: draghi :: && sudo vi /etc/userdir-ldap/generate.conf
94 }}}
95 * run generate, or wait until cron runs it for you
96 {{{
97     : :: draghi :: && sudo -u sshdist ud-generate
98 }}}
99
100 * fix nsswitch for ud fu.
101 {{{
102     sed -i -e 's/^passwd:\[[:space:]]\+compat$/passwd:         compat db/;
103               s/^group:\[[:space:]]\+compat$/group:          db compat/;
104               s/^shadow:\[[:space:]]\+compat$/shadow:         compat db/' \
105         /etc/nsswitch.conf
106 }}}
107
108 (you might have to restart sshd here:
109 {{{
110     (cd / && env -i /etc/init.d/ssh restart)
111 }}}
112 )
113
114 * on the host, run ud-replicate
115 {{{
116     echo draghi.debian.org,draghi,db.debian.org,db,82.195.75.106,::ffff:82.195.75.106 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAy1mAS0xIOZH9OrJZf1Wv9qYORv5Z5fmpF0o8Y4IMdS+ZzTjN1Sl8M77jaFTJbumJNs+n2CMcX8CoMemQEPBoRe20a5t3dExPQ3c7FNU0z+WIVFbu/oTTkAWGp5gCDwF3pg2QxUjqYc0X4jpv6pkisyvisij6V/VJ5G1hsIMuKqrCKYyyyiJJytfzSfRrBx2QvB5ZWQxhYeSYDoLDvuF31qUy4TLZ/HR3qZQ1cBrP9dCh5d+GQxdY9LuO6zjlnSyU64GHkyjYt3p03AKG4plD7WHX01bD0DQQ/NOFVwFhOZ63mePyridPuqBMFW39jBf4jSsewV95RE5VbY04+MY4XQ== root@draghi >> /etc/ssh/ssh_known_hosts &&
117     ud-replicate
118 }}}
119
120 * check if it worked:
121 {{{
122     id weasel
123 }}}
124
125 * add pam_mkhomedir to common-session:
126 {{{
127     grep pam_mkhomedir /etc/pam.d/common-session || \
128     echo "session optional        pam_mkhomedir.so skel=/etc/skel umask=0022" >> /etc/pam.d/common-session
129 }}}
130
131 * install debian.org which brings you shells and much other fun
132 {{{
133     apt-get install debian.org
134 }}}
135
136 * try to login using your user and ssh key.  you should get a homedir.
137
138 * make ca-certificates sane:  (choose to *not* trust new certs, and we only want the spi cert activated)
139 {{{
140     echo "ca-certificates ca-certificates/trust_new_crts  select no" | debconf-set-selections
141     sed -i -e 's/^[^#!].*/!&/; s#^!spi-inc.org/spi-cacert-2008.crt#spi-inc.org/spi-cacert-2008.crt#' /etc/ca-certificates.conf
142     dpkg-reconfigure ca-certificates
143 }}}
144
145 * Add debian-admin@debian.org to root in /etc/aliases
146
147 * sane default editor
148 {{{
149     apt-get install vim && update-alternatives --set editor /usr/bin/vim.basic
150 }}}
151
152 * setup sudo
153 {{{
154     grep '^%adm' /etc/sudoers || echo '%adm    ALL=(ALL) ALL' >> /etc/sudoers
155     grep '^%adm.*apt-get' /etc/sudoers || echo '%adm    ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get dist-upgrade, /usr/bin/apt-get clean, /usr/sbin/samhain -t check -i -p err -s none -l none -m none' >> /etc/sudoers
156
157     apt-get install libpam-pwdfile
158     cat > /etc/pam.d/sudo << EOF
159 #%PAM-1.0
160
161 auth [authinfo_unavail=ignore success=done ignore=ignore default=die] pam_pwdfile.so pwdfile=/var/lib/misc/thishost/sudo-passwd
162 auth required pam_unix.so nullok_secure try_first_pass
163 #@include common-auth
164 @include common-account
165
166 session required pam_permit.so
167 session required pam_limits.so
168 EOF
169 }}}
170
171 * OPEN A NEW SHELL - DO _NOT_ LOG OUT OF THIS ONE:<BR>
172   test that the dedicated sudo password works.  if not, undo the pam sudo config.
173   (comment out the auth lines and include common-auth again)
174
175 * setup ldap.conf:
176 {{{
177     grep '^URI.*db.debian.org' /etc/ldap/ldap.conf || cat >> /etc/ldap/ldap.conf << EOF
178
179 URI             ldap://db.debian.org
180 BASE            dc=debian,dc=org
181
182 TLS_CACERT      /etc/ssl/certs/spi-cacert-2008.pem
183 TLS_REQCERT     hard
184 EOF
185 }}}
186
187 * add to munin on spohr
188 {{{
189     : :: spohr :: && sudo vi /etc/munin/munin.conf
190 }}}
191
192
193 * add host to nagios config
194
195 * disable password auth with ssh, once you verified you can log in
196   and become root using keys.
197 {{{
198     vi /etc/ssh/sshd_config
199       | PasswordAuthentication no
200     (cd / && env -i /etc/init.d/ssh restart)
201 }}}
202
203 * if it is a HP Proliant, or has other management fu, read [[howto/ilo-https]]
204
205 * setup [[puppet|howto/puppet-setup]]
206
207 * add to nagios
208
209 -- weasel, Wed, 04 Jun 2008 20:52:56 +0200