User Tools

Site Tools


aoe:sl6

SL 6 Installation

Boot to the Network install boot CD or to the PXE boot installer if available.

Network Boot CD

select

Install or upgrade an existing system
  • Skip the media test

Installation Method

URL

Configure TCP/IP

default are fine

OK

(if this fails, turn OFF the computer and restart. A cold boot might help.

URL Setup

ftp://192.168.2.10/linux/scientific/6.4/x86_64/os

it should immediately start to download the installer image.

SL6

Next

language

English 
Next

keyboard

English 
Next

What type of devices will you installation involve?

Basic Storage Devices
Next

Hostname

something.aoe.vt.edu

Timezone

America/New York
Check: System clock uses UTC

Root Password

Domain root password

What type of installation would you like?

Use All Space
Check: Review and modify partitioning layout

Partitioning

click on the volume group below LVM Volume Groups

vg_<hostname>

click edit

Delete /home

click add

Mount Point:

/var

File System Type:

ext4

Logical Volume Name:

lv_var

Size (depends)

51200

click add again

/tmp

File System Type:

ext4

Logical Volume Name:

lv_tmp

Size (depends)

51200

click add again

/l (as in local)

File System Type:

ext4

Logical Volume Name:

lv_local

Size (depends)

the rest

next, Write changes to disk

Boot Loader

Check

Use a boot loader password

set to the old crystals password

Software

Desktop

The defaults are fine. Servers might be better with minimal.

firstboot

Create User

Leave the user information blank as this will be set in Advanced… === Use Network Login… === == User Account Configuration == User Account Database: NIS NIS Domain: aoe NIS Server: alexandria.aoe.vt.edu == Authentication Configuration == Authentication Method: Kerberos Password Realm: AOE.VT.EDU KDCs: neptune.aoe.vt.edu Admin Servers: neptune.aoe.vt.edu Leave the “Use DNS” setting unchecked

Advanced

Click “Add User”

Add New User

Fill in the fields as appropriate

Change the Home Directory from /home/… to

/l/<user name as entered above>
To create a user after setup
useradd -u 501  -c "Steve" -d /l/steve -m -s /bin/bash steve
yum install -y policycoreutils-python
semanage fcontext -a -t home_root_t "/l"
semanage fcontext -a -e /home /l
restorecon -R -v /l

Date and Time

Check

Synchronize date and time over the network

NTP Servers (Delete the old entries)

ntp-1.vt.edu
ntp-2.vt.edu
ntp-3.vt.edu
ntp-4.vt.edu

Uncheck KDump

Post install SL6 Machine Setup

Set BIOS password and disable all bootable devices except the hard disk. A password should be required to boot from CD or USB, etc.

Set up system email forwarding.

cat > /root/.forward
root@aoe.vt.edu
(Ctrl-d)
restorecon .forward

yum install yum-conf-sl6x Then disable sl6.1 repos

vim /etc/yum.repos.d/sl.repo

edit enabled=1 to enabled=0

Note: This is supposed to be another way but it is not quite right: yum –releasever=6x update https://www.scientificlinux.org/documentation/howto/upgrade.6x

Point to mirror.aoe.vt.edu

edit sl6x.repo (only for machines in Randolph until mirror is available to other machines.)

vim /etc/yum.repos.d/sl6x.repo

comment out baseurl lines and add mirror.aoe.vt.edu

[sl6x]
name=Scientific Linux 6x - $basearch
baseurl=ftp://mirror.aoe.vt.edu/linux/scientific/6x/$basearch/os/
#baseurl=http://ftp.scientificlinux.org/linux/scientific/6x/$basearch/os/
#               http://ftp1.scientificlinux.org/linux/scientific/6x/$basearch/os/
#               http://ftp2.scientificlinux.org/linux/scientific/6x/$basearch/os/
#               ftp://ftp.scientificlinux.org/linux/scientific/6x/$basearch/os/
#mirrorlist=http://ftp.scientificlinux.org/linux/scientific/mirrorlist/sl-base-6x.txt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-sl file:///etc/pki/rpm-gpg/RPM-GPG-KEY-dawson

[sl6x-security]
name=Scientific Linux 6x - $basearch - security updates
baseurl=ftp://mirror.aoe.vt.edu/linux/scientific/6x/$basearch/updates/security/
#baseurl=http://ftp.scientificlinux.org/linux/scientific/6x/$basearch/updates/security/
#		http://ftp1.scientificlinux.org/linux/scientific/6x/$basearch/updates/security/
#		http://ftp2.scientificlinux.org/linux/scientific/6x/$basearch/updates/security/
#		ftp://ftp.scientificlinux.org/linux/scientific/6x/$basearch/updates/security/
#mirrorlist=http://ftp.scientificlinux.org/linux/scientific/mirrorlist/sl-security-6x.txt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-sl file:///etc/pki/rpm-gpg/RPM-GPG-KEY-dawson

[sl6x-fastbugs]
name=Scientific Linux 6x - $basearch - fastbug updates
baseurl=http://ftp.scientificlinux.org/linux/scientific/6x/$basearch/updates/fastbugs/
		http://ftp1.scientificlinux.org/linux/scientific/6x/$basearch/updates/fastbugs/
		http://ftp2.scientificlinux.org/linux/scientific/6x/$basearch/updates/fastbugs/
		ftp://ftp.scientificlinux.org/linux/scientific/6x/$basearch/updates/fastbugs/
#mirrorlist=http://ftp.scientificlinux.org/linux/scientific/mirrorlist/sl-fastbugs-6x.txt
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-sl file:///etc/pki/rpm-gpg/RPM-GPG-KEY-dawson

Install local software

yum -y install yum-updateonboot
chkconfig yum-updateonboot on
yum update

crontab -e

add

@daily yum check-update > /dev/null || yum check-update

Install extra software

yum -y install yum-priorities
yum -y install elrepo-release epel-release
yum -y install rdesktop lynx vim-X11 gettext-devel denyhosts gnuplot subversion compat-gcc-34-g77 lyx numpy scipy lapack python-matplotlib ksh screen libXp qtwebkit logwatch libXp openmotif colordiff htop octave gsl

for roycfd lab machines

yum -y groupinstall "Development Tools"
yum -y install git gitk emacs
yum -y install openmpi-devel
yum -y install libXaw

for other ??

compat-libstdc++33
emacs

For Dakota asking for libXm.so.2, which is in a motif package called lesstif.

yum -y install lesstif

For compiling OpenFOAM:

yum install http://ftp.scientificlinux.org/linux/scientific/6x/external_products/devtoolset/yum-conf-devtoolset-1.0-1.el6.noarch.rpm
yum install devtoolset-1.1-runtime devtoolset-1.1-gcc.x86_64 devtoolset-1.1-gcc-c++.x86_64
$ scl enable devtoolset-1.1 bash

(CGAL also needed from dl-atrpms)

to compile 32 bit code on 64 bit installs:

yum install glibc-devel.i686 libgcc.i686 libstdc++-devel.i686

Patran

export LCALL=C

Add this line to use common modulefiles, which comes with openmpi:

cat >> /usr/share/Modules/init/.modulespath
/aoe/etc/modulefiles

yum –enablerepo epel-testing install scipy (scipy is now available in the main epel repo)

yum groupinstall "TeX support"

for Xiao

yum install scitool* ipython*

(Check the wildcard results.)

Also for Dr Xiao, EPD, Enthought Python Distribuiton matplotlib

Video for SL 6

yum install yum-priorities
yum install rpmforge-release
yum install compat-libstdc++-33 libdvdcss libdvdread libdvdplay libdvdnav lsdvd libquicktime
yum install flash-plugin mplayer mplayer-gui gstreamer-ffmpeg gstreamer-plugins-ugly
yum install ffmpeg ffmpeg-devel mplayer mencoder

kernel exclusions (optional if needed)

yum autoupdate exclusions are listed here: /etc/sysconfig/yum-autoupdate EXCLUDE=“kernel* openafs* *-kmdl-* kmod-* *firmware*” To disable kernel updates when using command line (this was required on typhon and apogee because it broke the graphics), edit /etc/yum.conf and add: /etc/yum.conf EXCLUDE=kernel or specific verions EXCLUDE=kernel-2.6.32-220* or EXCLUDE=kernel-2.6.32-220.2.1.el6.x86_64 To temporarily override the exclusion: yum –disableexclues=all update or a specific kernel: yum –disableexcludes=all update kernel-2.6.32-220.2.1.el6.x86_64 apogee and typhon also needed reboot=pci added to the kernel line in grub.conf kernel /vmlinuz-2.6.32-131.0.15.el6.x86_64 ro root=/dev/mapper/vg_apogee-lv_root rd_LVM_LV=vg_apogee/lv_root rd_LVM_LV=vg_apogee/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb reboot=pci

Disable "show user accounts"

edit the file

vim /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

and change the boolean for

disable_user_list

from false to true

Disable Root Access via ssh

vim /etc/ssh/sshd_config
PermitRootLogin no
service sshd restart

ssh login speed and login persistence tweaks(optional)

vim /etc/ssh/sshd_conf
ClientAliveInterval 120
UseDNS no
service sshd restart

vim /etc/ssh/ssh_conf
ServerAliveInterval 120

vim /etc/resolv.conf
options single-request-reopen

iptables

Copy and paste the file below into /etc/syscofig/iptables using the following command:

cat > /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

#-A INPUT -m state --state NEW -m tcp -p tcp -s 198.82.0.0/16 -m tcp --sport 1024:65535 --dport 22 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp -s 128.173.0.0/16 -m tcp --sport 1024:65535 --dport 22 -j ACCEPT

# Block brute force attacks - interface specific
# Drop repeated ssh connection attempts within 20 seconds interval
#-A INPUT -p tcp -m tcp -m state -m recent -i eth0 -s 198.82.0.0/16 --dport 22 --state NEW -j DROP --rcheck --seconds 20 --name THROTTLE --rsource
#-A INPUT -p tcp -m tcp -m state -m recent -i eth0 -s 128.173.0.0/16 --dport 22 --state NEW -j DROP --rcheck --seconds 20 --name THROTTLE --rsource

# Accept ssh connection if not attempted within past 20 sec.
#-A INPUT -p tcp -m tcp -m state -m recent -i eth0  -s 198.82.0.0/16 --dport 22 --state NEW -j ACCEPT --set --name THROTTLE --rsource
#-A INPUT -p tcp -m tcp -m state -m recent -i eth0  -s 128.173.0.0/16 --dport 22 --state NEW -j ACCEPT --set --name THROTTLE --rsource

# Block brute force attacks - all interfaces
# Drop repeated ssh connection attempts within 20 seconds interval
-A INPUT -p tcp -m tcp -m state -m recent -s 198.82.0.0/16 --dport 22 --state NEW -j DROP --rcheck --seconds 20 --name THROTTLE --rsource
-A INPUT -p tcp -m tcp -m state -m recent -s 128.173.0.0/16 --dport 22 --state NEW -j DROP --rcheck --seconds 20 --name THROTTLE --rsource

# Accept ssh connection if not attempted within past 20 sec.
-A INPUT -p tcp -m tcp -m state -m recent -s 198.82.0.0/16 --dport 22 --state NEW -j ACCEPT --set --name THROTTLE --rsource
-A INPUT -p tcp -m tcp -m state -m recent -s 128.173.0.0/16 --dport 22 --state NEW -j ACCEPT --set --name THROTTLE --rsource

# torricelli.cs.wright.edu
#-A INPUT -s 130.108.14.110 -j ACCEPT

# VT subnet
# reject on campus udp 67,68,137,138 without logging

-A INPUT -m udp -p udp -s 198.82.0.0/16 -m multiport --dports 67,68,137,138 -j REJECT --reject-with icmp-host-prohibited
-A INPUT -m udp -p udp -s 128.173.0.0/16 -m multiport --dports 67,68,137,138 -j REJECT --reject-with icmp-host-prohibited

#ignore DHCP requests
-A INPUT -s 0.0.0.0 -m udp -p udp --dport 67 --sport 68 -j DROP

# reject on campus, logging the rest

#-A INPUT -m tcp -p tcp -s 198.82.0.0/16 -j LOG --log-level info --log-prefix "FIREWALL-TCP-REJECTED "
-A INPUT -m tcp -p tcp -s 198.82.0.0/16 -j REJECT --reject-with icmp-host-prohibited
#-A INPUT -m tcp -p tcp -s 128.173.0.0/16 -j LOG --log-level info --log-prefix "FIREWALL-TCP-REJECTED "
-A INPUT -m tcp -p tcp -s 128.173.0.0/16 -j REJECT --reject-with icmp-host-prohibited
#-A INPUT -m udp -p udp -s 198.82.0.0/16 -j LOG --log-level info --log-prefix "FIREWALL-UDP-REJECTED "
-A INPUT -m udp -p udp -s 198.82.0.0/16 -j REJECT --reject-with icmp-host-prohibited
#-A INPUT -m udp -p udp -s 128.173.0.0/16 -j LOG --log-level info --log-prefix "FIREWALL-UDP-REJECTED "
-A INPUT -m udp -p udp -s 128.173.0.0/16 -j REJECT --reject-with icmp-host-prohibited

# drop off campus requests

#-A INPUT -j LOG --log-level info --log-prefix "FIREWALL-DROPPED "
-A INPUT -j DROP

#-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
service iptables restart

ip6tables

Copy and paste file the below into /etc/syscofig/ip6tables using the following command:

cat > /etc/sysconfig/ip6tables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state INVALID -j LOG --log-prefix "FIREWALL-IPV6-INVALID "
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# allow IPsec
#
# IKE negotiations
-A INPUT  -p udp --sport 500 --dport 500 -j ACCEPT
-A OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT
# ESP encryption and authentication
-A INPUT  -p 50 -j ACCEPT
-A OUTPUT -p 50 -j ACCEPT

#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j LOG --log-prefix "FIREWALL-SSH-ACCEPT "
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# VT subnet
-A INPUT -m state --state NEW -m tcp -p tcp -s 2001:468:c80::/48 --dport 22 -j LOG --log-prefix "FIREWALL-IPV6-SSH-ACCEPT "
-A INPUT -m state --state NEW -m tcp -p tcp -s 2001:468:c80::/48 --dport 22 -j ACCEPT
# Allow domain controllers
-A INPUT -m tcp -p tcp -s 2001:0468:0c80:610c:6496:9744:111b:76b6 -j LOG --log-prefix "FIREWALL-IPV6-NEPTUNE-ACCEPT "
-A INPUT -m tcp -p tcp -s 2001:0468:0c80:610c:6496:9744:111b:76b6 -j ACCEPT
-A INPUT -m tcp -p tcp -s 2001:468:c80:610c:b92c:3f7b:e1c7:76f3 -j LOG --log-prefix "FIREWALL-IPV6-PLUTO-ACCEPT "
-A INPUT -m tcp -p tcp -s 2001:468:c80:610c:b92c:3f7b:e1c7:76f3 -j ACCEPT
-A INPUT -m tcp -p tcp -s 2001:468:c80:610c:b94f:dde9:482d:f606 -j LOG --log-prefix "FIREWALL-IPV6-TATOOINE-ACCEPT "
-A INPUT -m tcp -p tcp -s 2001:468:c80:610c:b94f:dde9:482d:f606 -j ACCEPT

# Block brute force attacks
# Drop repeated ssh connection attempts within 20 seconds interval
-A INPUT -p tcp -m tcp -m state -m recent -s 2001:468:c80::/48 --dport 22 --state NEW -j DROP --rcheck --seconds 20 --name THROTTLE --rsource
# Accept ssh connection if not attempted within past 20 sec.
-A INPUT -p tcp -m tcp -m state -m recent -s 2001:468:c80::/48 --dport 22 --state NEW -j ACCEPT --set --name THROTTLE --rsource

-A INPUT -j LOG --log-level info --log-prefix "FIREWALL-IPV6-DROPPED "
#-A INPUT -j DROP
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited

# specific to this machine:
#
COMMIT
service ip6tables restart

network

Stop NetworkManager

service NetworkManager stop
chkconfig NetworkManager off

Stop

service avahi-daemon stop
chkconfig avahi-daemon off

Other services as not needed

chkconfig --list |grep :on

service bluetooth stop
chkconfig bluetooth off

Check the /etc/sysconfig/network file

cat /etc/sysconfig/network
HOSTNAME=apogee.aoe.vt.edu
NETWORKING=yes

Modify the network adapter. The adapter name will vary. em1 is just an example.

vim /etc/sysconfig/network-scripts/ifcfg-em1 
DEVICE="em1"
HWADDR="??:??:??:??:??:??"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
ONBOOT="yes"
TYPE="Ethernet"
NM_CONTROLLED="no"
BOOTPROTO=static

#Randolph
IPADDR=128.173.188.28
BROADCAST=128.173.191.255
NETMASK=255.255.252.0
NETWORK=128.173.188.0
GATEWAY=128.173.188.1

#Hancock
#IPADDR=128.173.167.15
#BROADCAST=128.173.167.255
#NETMASK=255.255.252.0
#NETWORK=128.173.164.0
#GATEWAY=128.173.164.1

#Femoyer
#IPADDR=128.173.105.33
#BROADCAST=128.173.105.255
#NETMASK=255.255.255.0
#NETWORK=128.173.105.0
#GATEWAY=128.173.105.1

DNS1=128.173.188.25
DNS2=128.173.188.26
DOMAIN=aoe.vt.edu

The following step to edit resolv.conf may not be required with the DNS settings above:

edit /etc/resolv.conf

vim /etc/resolv.conf
search aoe.vt.edu
nameserver 128.173.188.25
nameserver 128.173.188.26

Put on open network and bounce the interface

ifdown eth0
ifup eth0

===== NIS Domain, etc (Do Not Use NIS)===== If not joined to the domain during setup, join to the AOE nis domain authconfig-tui

Authentication Configuration

=== User Information === Select Use NIS === Authentication === Select Use MD5 Passwords Use Shadow Passwords Use Kerberos Local authorization is sufficient (verify the meaning of this setting) Next

<del>NIS or</del> LDAP Settings

=== NIS === Domain: aoe Server: alexandria.aoe.vt.edu

LDAP

system-config-authentication

User Account Database

ldap

Download CA Certificate:

https://www.dept.aoe.vt.edu/~stedwar1/aoe-neptune.crt

Kerberos Settings

Realm:

AOE.VT.EDU

KDC:

neptune.aoe.vt.edu

Admin Server:

neptune.aoe.vt.edu

Leave the “Use DNS” checkboxes cleared

Name Service Switch

in /etc/nsswitch.conf

vim /etc/nsswitch.conf

remove nis in hosts:

#hosts:     db files nisplus nis dns
hosts:      files nis dns

should be:

#hosts:     db files nisplus nis dns
hosts:      files dns

Add sudoers

visudo

After:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

(Some items optional for audit data collection)

Add:

%bigwheel ALL=(ALL)         ALL

On local user only machines:

steve   ALL=(ALL)       ALL

Also add in appropriate sections:

aoebackup       ALL=            NOPASSWD:/usr/bin/rsync
stedwar1        ALL=            NOPASSWD:/bin/netstat,/sbin/iptables,/sbin/iptables-save,/sbin/ip6tables,/sbin/ip6tables-save
steve           ALL=            NOPASSWD:/bin/netstat,/sbin/iptables,/sbin/iptables-save,/sbin/ip6tables,/sbin/ip6tables-save

and

Defaults:aoebackup,steve !requiretty

or

Defaults:aoebackup,stedwar1 !requiretty

AOE Domain Software

first, add access to alexandria

modify as required: Add host to hosts file

vim /etc/hosts

To modify running iptables:

iptables -L --line-numbers

Pick a place to insert the rule and add the new rule

iptables -I INPUT 56 -s apogee.aoe.vt.edu -j ACCEPT

Add the entry to the startup file for iptables

vim /etc/sysconfig/iptables

the script in /home/sysadmin/bin/exports will generate send the exports text to std out. Pipe the output to the /etc/exports file.

vim /home/sysadmin/bin/exports/exports.sh
/home/sysadmin/bin/exports/exports.sh > /etc/exports
exportfs -ra
  

Old vim replace command that can be used on the /etc/exports file for temporary changes:

:%s/aphrodite.aoe.vt.edu(rw,sync,root_squash) \\\n/altus.aoe.vt.edu(rw,sync,root_squash) \\\r        aphrodite.aoe.vt.edu(rw,sync,root_squash) \\\r/

then add the mounts in the new Linux machine

* go back to the new Linux box. *be very careful here! Add the line to /etc/fstab

cat >> /etc/fstab
alexandria:/export/apps/aoe-linux-x86_64 /aoe 	nfs 	tcp 		0 0

Then run these commands:

mkdir /aoe
mount /aoe
cd /etc/profile.d
ln -s /aoe/etc/aoe_profile.sh
ln -s /aoe/etc/aoe_profile.csh

Local Directories

mkdir /l
chown root:root /l
chmod 777 /l

boot screen

plymouth-set-default-theme details --rebuild-initrd

Logging

yum install openswan

Place neptune's CA certificate in openssl's CA list. Use the pem from the authconfig download step.

cp /etc/openldap/cacerts/authconfig_downloaded.pem /etc/pki/tls/certs/aoe-ca.pem
ln -s /etc/pki/tls/certs/aoe-ca.pem /etc/pki/tls/certs/`openssl x509 -hash -noout -in /etc/pki/tls/certs/aoe-ca.pem`.0
yum install rsyslog-gnutls
cd /etc/pki/rsyslog
openssl genrsa -out key.pem 2048
chmod 400 key.pem

openssl req -new -key key.pem -out request-$(hostname -s).req -config /aoe/etc/openssl.cnf -nodes
openssl req -text -in request-$(hostname -s).req -noout -verify

copy the csr to neptune

chmod 600 request*
scp request* stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog

perform these steps on neptune

ps > certreq.exe -submit -attrib "CertificateTemplate:WebServerLoghostIPSec" ./request-traininglt.req training.cer

If manual approval is required, then find the issued certificate in the CA and open it.

Select the Details tab and click “copy to file”.

Select Base-64 encoded, and click “next”.

click browse and navigte to the desired folder on the Z: drive to place the certificate.

Name it cert-<client name>

copy cert back to client and rename it

scp stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$( hostname -s ).cer cert.pem

From the Linux client. Check the file extenstion as the export may append .cer:

scp stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$( hostname -s ).cer cert.pem

Fix selinux on certificate files

restorecon -RvF /etc/pki
cat >> /etc/rsyslog.d/tls.conf
# extra config file for rsyslog to be placed in /etc/rsyslog.d to enable
# tls for rsyslog.
# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/aoe-ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/key.pem

$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer artemis.aoe.vt.edu
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
#*.* @@central.example.net:10514 # forward everything to remote server

After the following lines to /etc/rsyslog.conf

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
vim /etc/rsyslog.conf

add vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv the whole line!

#*.info;authpriv.none                                    @loghost
*.info;authpriv.none                          @@artemis.aoe.vt.edu:6514

From artemis, watch the log:

[root@artemis ~]# watch 'tail -1000 /var/log/messages|grep -v FIREWALL|grep -v last|tail -30'

on the client:

service rsyslog restart
logger test

ldap/kerberos

Append the following to /etc/openldap/ldap.conf

cat >> /etc/openldap/ldap.conf
sasl_secprops maxssf=0
TLS_REQCERT never
URI ldaps://neptune.aoe.vt.edu

Modify to add ca to certs:

vim /etc/openldap/ldap.conf
TLS_CACERTDIR   /etc/openldap/cacerts

Enter computer name in DNS and make sure reverse lookups get updated.

==== Method 1 ==== Only good for a single spn Create a computer account in the UnixOU/Unix-computers OU, then set the service principal setspn -A host/centos-test.aoe.vt.edu@AOE.VT.EDU centos-test setspn -L centos-test ktpass /princ host/centos-test.aoe.vt.edu@AOE.VT.EDU /out centos-test.keytab /crypto all /ptype KRB5_NT_PRINCIPAL -desonly /mapuser AOE\centos-test$ +rndPass Securely copy the key to /etc/krb5.keytab with root:root 600 permissions. chmod 600 /etc/krb5.keytab chown root:root /etc/krb5.keytab restorecon /etc/krb5.keytab klist

Method 2

creates multiple spn's per computer account.

yum install msktutil
kinit stedwar1
export host=$(hostname -s)
msktutil -u --server neptune --user-creds-only -s host/$host.aoe.vt.edu -s host/$host --upn host/$host.aoe.vt.edu

Move the computer into the Unix OU from Active Directory

Comment out this line in /etc/openldap/ldap.conf:

vim /etc/openldap/ldap.conf
#TLS_REQCERT never

Verify new keytab file

kinit -k -t /etc/krb5.keytab $host$

This requires upn be specified when requesting the computer account with msktutil

kinit -k -t /etc/krb5.keytab host/$host.aoe.vt.edu@AOE.VT.EDU
yum install openldap-clients
kinit stedwar1  (if not already done)
ldapsearch -H ldaps://neptune.aoe.vt.edu -Y GSSAPI -N -b dc=aoe,dc=vt,dc=edu "(&(objectClass=user)(sAMAccountName=stedwar1))"

Configure sssd

cp -a /etc/sssd/sssd.conf /etc/sssd/sssd.conf.back
vim /etc/sssd/sssd.conf

For SL5, Use these contents, but change the name for ldap_sasl_authid

ldap/kerberos version - for SL5 or SL6(not prefered)

[domain/default]
#debug_level = 9
cache_credentials = false
enumerate = false

id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap
ldap_uri = ldaps://neptune.aoe.vt.edu
#ldap_search_base = dc=aoe,dc=vt,dc=edu

ldap_sasl_mech = GSSAPI
ldap_sasl_authid = host/changeme.aoe.vt.edu@AOE.VT.EDU

ldap_schema = rfc2307bis

ldap_user_object_class = user
ldap_user_home_directory = unixHomeDirectory
ldap_user_principal = userPrincipalName
ldap_user_name = sAMAccountName

ldap_group_object_class = group

ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
ldap_disable_referrals = true

krb5_realm = AOE.VT.EDU
krb5_canonicalize = false
ldap_force_upper_case_realm = true
ldap_tls_reqcert = never
#ldap_tls_cacert = /etc/openldap/cacerts/authconfig_downloaded.pem

ldap_id_use_start_tls = False
krb5_server = neptune.aoe.vt.edu
krb5_kpasswd = neptune.aoe.vt.edu
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_krb5_keytab = /etc/krb5.keytab
ldap_referrals = false

#Try setting ldap_group_nesting_level=1
[sssd]
services = nss, pam
config_file_version = 2

domains = default
[nss]

[pam]

[sudo]

[autofs]

[ssh]

Active Directory version - for SL6 only(prefered)

For SL6, Use these contents

cat > /etc/sssd/sssd.conf
[domain/default]
#debug_level = 9
cache_credentials = false
enumerate = false

ldap_id_mapping = False

id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad

ad_domain = aoe.vt.edu
ad_server = neptune,pluto

ldap_schema = ad

ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
ldap_disable_referrals = true

ldap_tls_reqcert = never
#ldap_tls_cacert = /etc/openldap/cacerts/authconfig_downloaded.pem

#ldap_id_use_start_tls = False
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_referrals = false

#Try setting ldap_group_nesting_level=1
[sssd]
services = nss, pam
config_file_version = 2

domains = default
[nss]

[pam]

[sudo]

[autofs]

[ssh]

Automount

vim /etc/sysconfig/autofs
#
# MOUNT_NFS_DEFAULT_PROTOCOL - specify the default protocol used by
#                              mount.nfs(8). Since we can't identify
#                              the default automatically we need to
#                              set it in our configuration.
#
MOUNT_NFS_DEFAULT_PROTOCOL=3
#MOUNT_NFS_DEFAULT_PROTOCOL=4

...

LDAP_URI="ldaps://neptune.aoe.vt.edu"

SEARCH_BASE="CN=ypServ30,CN=RpcServices,CN=System,dc=aoe,dc=vt,dc=edu"

...

# If no schema is set autofs will check each of the schemas
# below in the order given to try and locate an appropriate
# basdn for lookups. If you want to minimize the number of
# queries to the server set the values here.
#
MAP_OBJECT_CLASS="nisMap"
MAP_ATTRIBUTE="nisMapName"
ENTRY_OBJECT_CLASS="nisObject"
ENTRY_ATTRIBUTE="cn"
VALUE_ATTRIBUTE="nisMapEntry"

...

# AUTH_CONF_FILE - set the default location for the SASL
#                          authentication configuration file.
#
AUTH_CONF_FILE="/etc/autofs_ldap_auth.conf"
vim /etc/autofs_ldap_auth.conf
<autofs_ldap_sasl_conf
      usetls="no"
      tlsrequired="no"
      authrequired="yes"
      authtype="GSSAPI"
      clientprinc = "host/changeme.aoe.vt.edu@AOE.VT.EDU"
/>

Note:

TLS/SSL automount can be achieved with either the above method using

ldaps://neptune.aoe.vt.edu

or setting

usetls="yes"
tlsrequired="yes"

in /etc/autofs_ldap_auth.conf and using

ldap://neptune.aoe.vt.edu

(without the “ldaps” since start TLS uses the standard 389 port to start the ssl session.)

start service

service sssd restart
service autofs restart

Make sure the DNS name is entered correctly, or maybe adjust /etc/idmap.conf so the domain names match.

vim /etc/idmap.conf

Workaround:

vim /etc/nfsmount.conf
Defaultvers=3

Test

as a user, run:

matlab

patran

Troubleshooting

nfs permissions nobody:nobody

Symptom: Key login was not working.

Check permissions on nfs mounted directory

Investigation showed permissions on mounted nfs volumes as nobody:nobody.

Verify that the /etc/hosts file on alexandria is correct. It had an incorrect short name that messed it up on pegasus.

restart rpcidmapd on both machines

service rpcidmapd restart

Possible selinux interference?

Possible /etc/idmapd.conf needed DOMAIN=aoe.vt.edu

/etc/hosts needs ip address and hostname entry on nfs client for alexandria and the client.

Possible /etc/resolv.conf problem

Error processing keytab file [/etc/krb5.keytab]: Principal [host/columbia.aoe.vt.edu@AOE.VT.EDU] was not found. Unable to create GSSAPI-encrypted LDAP connection.

Answer?: Check case and name with

klist -k -t /etc/krb5.keytab

I changed host to HOST in sssd config and autofs config.

convert from nis to LDAP/SSSD

vim /etc/openldap/ldap.conf
TLS_REQCERT never
sasl_secprops maxssf=0

Then start at method 2

Then

system-config-authentication

User Account Database

ldap

Download CA Certificate:

https://www.dept.aoe.vt.edu/~stedwar1/aoe-neptune.crt

Kickstart file for superstations

[root@riccioli ks]# cat ks-superstation.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --ssh
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.2.10/linux/scientific/6.5/x86_64/os"
# Root password
rootpw  --iscrypted $6$xi4xSBxAYmyH6gpb$GPGKSG4GDe2Z6WeqdVQB208pntHS8nYlpoK9OIywpkB.FKZ4uHaAvh27ikxGZY89BZTiRzpQ1.2yGmMk/KOKB0
# System authorization information
auth  --useshadow  --passalgo=sha512 --enableldap --enableldaptls --enablesssd --ldapserver=neptune.aoe.vt.edu --ldapbasedn=dc=aoe,dc=vt,dc=edu --ldaploadcacert=https://www.dept.aoe.vt.edu/~stedwar1/aoe-neptune.crt --enablekrb5 --krb5realm=AOE.VT.EDU --krb5kdc=neptune.aoe.vt.edu --krb5adminserver=neptune.aoe.vt.edu
# Use text mode install
#text
cmdline
# Run the Setup Agent on first boot
#firstboot --enable
# Use interactive kickstart installation method
#interactive
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=debug

# System timezone
timezone --isUtc America/New_York
# Network information
%include /tmp/network.ks
# System bootloader configuration
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --iscrypted --password=$6$lJ8K61J9Ad4gldMi$17LLCDpPN1CJ9b1ytswZajjkmxpR9pQLMEuZEVVSfIRNeN3dr2F/yJr7QvWRs2avuODr8KRLDlLJLIyv3m2nd/
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=1000

part pv.008002 --grow --size=1

volgroup vg_superstation --pesize=4096 pv.008002
logvol /tmp --fstype=ext4 --name=LogVolTmp --vgname=vg_superstation --size=51200
logvol /var --fstype=ext4 --name=LogVolVar --vgname=vg_superstation --size=51200
logvol / --fstype=ext4 --name=lv_root --vgname=vg_superstation --size=51200
logvol swap --name=lv_swap --vgname=vg_superstation --size=8192
#logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_superstation --size=100
logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_superstation --grow --size=1

repo --name="Scientific Linux"  --baseurl=ftp://192.168.2.10/linux/scientific/6.5/x86_64/os --cost=100

# XWindows configuration information
xconfig --startxonboot

reboot

%packages
@base
@client-mgmt-tools
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@misc-sl
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@scalable-file-systems
@server-platform
@x11
mtools
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
pax
#samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
SL_desktop_tweaks
pam_ldap

yum-priorities
yum-updateonboot
elrepo-release
epel-release
rdesktop
lynx
vim-X11
gettext-devel
gnuplot
subversion
compat-gcc-34-g77
numpy
scipy
lapack
python-matplotlib
ksh
screen
libXp
logwatch
libXp
openmotif
gsl
@ Development Tools
git
gitk
openmpi-devel
libXaw
compat-libstdc++-33
@ TeX support
policycoreutils-python
openswan
rsyslog-gnutls
openldap-clients
#devtoolset-1.1-runtime
#devtoolset-1.1-gcc.x86_64
#devtoolset-1.1-gcc-c++.x86_64

%end

%pre
#!/bin/sh
for x in `cat /proc/cmdline`; do
        case $x in SERVERNAME*)
	        eval $x
		echo "network --onboot yes --device eth0 --bootproto dhcp --ipv6 auto --hostname ${SERVERNAME}.aoe.vt.edu" > /tmp/network.ks
                echo "${SERVERNAME}" > /tmp/servername.ks
                ;;

                AOEIP4*)
                eval $x
                echo "${AOEIP4}" > /tmp/ip4.ks
                ;;
	        esac;
	done
%end

%post --nochroot
cp /tmp/*.ks /mnt/sysimage/tmp # /mnt/sysimage/tmp is /tmp in chrooted env

%post
#!/bin/bash


## redirect the output to the log file.  Interaction is confusing since input has to happen on tty1....
## This would be best if no interaction is needed with the post installation or for debugging ks.
#exec >/root/ks-post-anaconda.log 2>&1
## show the output on the 7th console
#tail -f /root/ks-post-anaconda.log >/dev/tty7 &
## changing to VT 7 that we can see what's going on....
#/usr/bin/chvt 7

#this allows interaction with the postinstall portion on the current tty
curTTY=`tty`
exec < $curTTY > $curTTY 2> $curTTY
clear

read aoeip4 < /tmp/ip4.ks #read the var
echo $aoeip4 # print its value, should be SOMEVAL
#rm -rf /tmp/ip4.ks # cleanup
read servername < /tmp/servername.ks #read the var
echo $servername # print its value, should be SOMEVAL
#rm -rf /tmp/servername.ks # cleanup

# set log forwarding to root@aoe
echo 'root@aoe.vt.edu' >> /root/.forward
restorecon /root/.forward

# grab the setup files and replace the contents of the existing files
wget ftp://192.168.2.10/linux/scientific/ks/postinstallsetup.tgz
if [ $? -eq 0 ]; then
  tar xzf postinstallsetup.tgz

# replace the contents of these files
  [ -f /etc/yum.repos.d/sl.repo ] && cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo || echo "sl.repo does not exist yet."
  cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo
  [ -f /etc/yum.repos.d/sl6x.repo ] && cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo || echo "sl6x.repo does not exist yet." 
  cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo 
else
  echo "Could not get tar file"
fi

# setup update on boot
chkconfig yum-updateonboot on
yum -y update

# install packages from epel and elrepo
yum -y install lyx denyhosts qtwebkit colordiff htop octave emacs msktutil

#set up yum check-update in cron job - even though it is not a great implementation
crontab -l | { cat ; echo '@daily yum check-update > /dev/null || yum check-update'; } | crontab -

#append aoe modulefiles
echo '/aoe/etc/modulefiles' >> /usr/share/Modules/init/.modulespath

# turn off unused services
service bluetooth stop
chkconfig bluetooth off
chkconfig NetworkManager off
chkconfig avahi-daemon off
chkconfig kdump off
chkconfig ntpd on

# set up new user
useradd -u 501  -c "Steve" -d /l/steve -m -s /bin/bash steve
semanage fcontext -a -t home_root_t "/l"
semanage fcontext -a -e /home /l
restorecon -R -v /l

# grab the setup files and replace the contents of the existing files
if [ -d postinstallsetup ]; then

# replace the contents of these files
  [ -f /etc/yum.repos.d/sl.repo ] && cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo || echo "sl.repo does not exist yet."
  cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo
  [ -f /etc/yum.repos.d/sl6x.repo ] && cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo || echo "sl6x.repo does not exist yet." 
  cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo 
  [ -f /etc/ssh/sshd_config ] && cat postinstallsetup/sshd_config > /etc/ssh/sshd_config || echo "sshd_config does not exist yet."
  cat postinstallsetup/sshd_config > /etc/ssh/sshd_config
  [ -f /etc/sysconfig/network-scripts/ifcfg-eth1 ] &&  cat postinstallsetup/ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1 || echo "ifcfg-eth1 does not exist yet."
  cat postinstallsetup/ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1
  [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ] &&  cat postinstallsetup/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0 || echo "ifcfg-eth0 does not exist yet."
  cat postinstallsetup/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0
  [ -f /etc/sysconfig/network-scripts/ifcfg-eth2 ] &&  cat postinstallsetup/ifcfg-eth2 > /etc/sysconfig/network-scripts/ifcfg-eth2 || echo "ifcfg-eth2 does not exist yet."
  cat postinstallsetup/ifcfg-eth2 > /etc/sysconfig/network-scripts/ifcfg-eth2
  [ -f /etc/sysconfig/network-scripts/ifcfg-eth3 ] &&  cat postinstallsetup/ifcfg-eth3 > /etc/sysconfig/network-scripts/ifcfg-eth3 || echo "ifcfg-eth3 does not exist yet."
  cat postinstallsetup/ifcfg-eth3 > /etc/sysconfig/network-scripts/ifcfg-eth3
  [ -f /etc/sysconfig/autofs ] &&  cat postinstallsetup/autofs > /etc/sysconfig/autofs || echo "autofs does not exist yet."
  cat postinstallsetup/autofs > /etc/sysconfig/autofs
  [ -f /etc/autofs_ldap_auth.conf ] &&    cat postinstallsetup/autofs_ldap_auth.conf > /etc/autofs_ldap_auth.conf || echo "autofs_ldap_auth.conf does not exist yet."
  cat postinstallsetup/autofs_ldap_auth.conf > /etc/autofs_ldap_auth.conf
  [ -f /etc/ntp.conf ] &&    cat postinstallsetup/ntp.conf > /etc/ntp.conf || echo "ntp.conf does not exist yet."
  cat postinstallsetup/ntp.conf > /etc/npt.conf
  [ -f /etc/sudoers ] &&    cat postinstallsetup/sudoers > /etc/sudoers || echo "sudoers does not exist yet."
  cat postinstallsetup/sudoers > /etc/sudoers
  [ -f /etc/sysconfig/iptables ] &&    cat postinstallsetup/iptables > /etc/sysconfig/iptables || echo "iptables does not exist yet."
  cat postinstallsetup/iptables > /etc/sysconfig/iptables
  [ -f /etc/sysconfig/ip6tables ] &&    cat postinstallsetup/ip6tables > /etc/sysconfig/ip6tables || echo "ip6tables does not exist yet."
  cat postinstallsetup/ip6tables > /etc/sysconfig/ip6tables

  [ -f /etc/sssd/sssd.conf ] &&    cat postinstallsetup/sssd.conf > /etc/sssd/sssd.conf || echo "sssd.conf does not exist yet."
  cat postinstallsetup/sssd.conf > /etc/sssd/sssd.conf
  chmod 600 /etc/sssd/sssd.conf
  [ -f /etc/rsyslog.d/tls.conf ] &&    cat postinstallsetup/tls.conf > /etc/rsyslog.d/tls.conf || echo "tls.conf does not exist yet."
  cat postinstallsetup/tls.conf > /etc/rsyslog.d/tls.conf
  chmod 600 /etc/rsyslog.d/tls.conf
# Modify these files
  [ -f /etc/openldap/ldap.conf ] && tail -2 postinstallsetup/ldap.conf >> /etc/openldap/ldap.conf || cat postinstallsetup/ldap.conf > /etc/openldap/ldap.conf

  [ -f /etc/gconf/gconf.xml.defaults/%gconf-tree.xml ] && cat postinstallsetup/%gconf-tree.xml > /etc/gconf/gconf.xml.defaults/%gconf-tree.xml || echo "%gconf-tree.xml does not exist yet."
  cat postinstallsetup/%gconf-tree.xml > /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

else
  echo "Could not get tar file"
fi
hwaddr=$( ifconfig eth0 | grep eth0| awk '{print $5}' )
sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth0
hwaddr=$( ifconfig eth1 | grep eth1| awk '{print $5}' )
sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth1
hwaddr=$( ifconfig eth2 | grep eth2| awk '{print $5}' )
sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth2
hwaddr=$( ifconfig eth3 | grep eth3| awk '{print $5}' )
sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth3

sed -i "s/128.173.188.28/$aoeip4/" /etc/sysconfig/network-scripts/ifcfg-eth1

#bounce the network
ifdown eth0
ifdown eth1
echo -n "switch to the open network.  Enter a username: "
read ksuser

ifup eth1

echo 'alexandria:/export/apps/aoe-linux-x86_64 /aoe 	nfs 	tcp 		0 0' >> /etc/fstab
mkdir /aoe

mount /aoe
if [ $? -eq 0 ]; then
  cd /etc/profile.d
  ln -s /aoe/etc/aoe_profile.sh
  ln -s /aoe/etc/aoe_profile.csh
fi
#mkdir /l
chown root:root /l
chmod 777 /l
plymouth-set-default-theme details --rebuild-initrd

cp /etc/openldap/cacerts/authconfig_downloaded.pem /etc/pki/tls/certs/aoe-ca.pem
ln -s /etc/pki/tls/certs/aoe-ca.pem /etc/pki/tls/certs/`openssl x509 -hash -noout -in /etc/pki/tls/certs/aoe-ca.pem`.0

#
# Set the correct time
#
/usr/sbin/ntpdate -bus ntp-1.vt.edu ntp-2.vt.edu ntp-3.vt.edu ntp-4.vt.edu
/sbin/clock --systohc

cd /etc/pki/rsyslog
openssl genrsa -out key.pem 2048
chmod 400 key.pem
export HOSTNAME=$servername.aoe.vt.edu
openssl req -new -key key.pem -out request-$servername.req -config /aoe/etc/openssl.cnf -nodes
openssl req -text -in request-$servername.req -noout -verify

chmod 600 request*
#scp request* stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog
scp request* $ksuser@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog

echo " run this on neptune:"
echo 'ps > certreq.exe -submit -attrib "CertificateTemplate:WebServerLoghostIPSec" ./request-traininglt.req training.cer'
echo "press enter when complete"
read waithere
echo " scp may want a password here--wait for it to ask: "
#scp stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$servername.cer cert.pem
scp $ksuser@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$servername.cer cert.pem
restorecon -RvF /etc/pki

sed -i "\/var\/log\/messages/a *.info;authpriv.none                                    @@artemis.aoe.vt.edu:6514" /etc/rsyslog.conf
sed -i "\/var\/log\/messages/a #*.info;authpriv.none                                    @loghost" /etc/rsyslog.conf
service rsyslog start
logger test

echo -n " user credentials: " 
#kinit stedwar1
kinit $ksuser
export host=$servername
msktutil -u --server neptune --computer-name $host --user-creds-only -s host/$host.aoe.vt.edu -s host/$host --upn host/$host.aoe.vt.edu
if [ $? -ne 0 ]; then
  echo " There was a problem adding computer to domain.  Hit return to continue. "
  read waithere
else
  echo " looks like the domain join worked. press return to continue "
  read waithere
fi
#change ldap.conf back
sed -i "s/TLS_REQCERT never/#TLS_REQCERT never/" /etc/openldap/ldap.conf
sed -i "s/^URI ldap/#URI ldap/" /etc/openldap/ldap.conf

#change the hostname in autofs_ldap_auth.conf
sed -i "s/changeme/$servername/" /etc/autofs_ldap_auth.conf

#Set default NFS version to 3 because file ownership does not work with v4
[ -f /etc/nfsmount.conf ] && sed -i "/# Defaultvers=4/a Defaultvers=3" /etc/nfsmount.conf || echo "nfsmount.conf does not exist"
%end

Kickstart file for single network computers

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --ssh
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.2.10/linux/scientific/6.5/x86_64/os"
# Root password
rootpw  --iscrypted $6$xi4xSBxAYmyH6gpb$GPGKSG4GDe2Z6WeqdVQB208pntHS8nYlpoK9OIywpkB.FKZ4uHaAvh27ikxGZY89BZTiRzpQ1.2yGmMk/KOKB0
# System authorization information
auth  --useshadow  --passalgo=sha512 --enableldap --enableldaptls --enablesssd --ldapserver=neptune.aoe.vt.edu --ldapbasedn=dc=aoe,dc=vt,dc=edu --ldaploadcacert=https://www.dept.aoe.vt.edu/~stedwar1/aoe-neptune.crt --enablekrb5 --krb5realm=AOE.VT.EDU --krb5kdc=neptune.aoe.vt.edu --krb5adminserver=neptune.aoe.vt.edu
# Use text mode install
#text
cmdline
# Run the Setup Agent on first boot
#firstboot --enable
# Use interactive kickstart installation method
#interactive
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=debug

# System timezone
timezone --isUtc America/New_York
# Network information
%include /tmp/network.ks
# System bootloader configuration
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --iscrypted --password=$6$D4nAyc/Bl1bTjcDl$q3JkiI58Akk3USPcCqhN04K1P1xMjQuyATFGsCUgpDJzF/gog9B4ypIkaNMeKer9GXbnOXYdAebuFNp3NKKQl.
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=1000

part pv.008002 --grow --size=1

volgroup vg_aoelocal --pesize=4096 pv.008002
logvol /tmp --fstype=ext4 --name=LogVolTmp --vgname=vg_aoelocal --size=10240
logvol /var --fstype=ext4 --name=LogVolVar --vgname=vg_aoelocal --size=10240
logvol / --fstype=ext4 --name=lv_root --vgname=vg_aoelocal --size=10240
logvol swap --name=lv_swap --vgname=vg_aoelocal --size=8192
#logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_superstation --size=100
logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_aoelocal --grow --size=1

#volgroup vg_superstation --pesize=4096 pv.008002
#logvol /tmp --fstype=ext4 --name=LogVolTmp --vgname=vg_superstation --size=51200
#logvol /var --fstype=ext4 --name=LogVolVar --vgname=vg_superstation --size=51200
#logvol / --fstype=ext4 --name=lv_root --vgname=vg_superstation --size=51200
#logvol swap --name=lv_swap --vgname=vg_superstation --size=8192
##logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_superstation --size=100
#logvol /l --fstype=ext4 --name=LogVolLocal --vgname=vg_superstation --grow --size=1

repo --name="Scientific Linux"  --baseurl=ftp://192.168.2.10/linux/scientific/6.5/x86_64/os --cost=100

# XWindows configuration information
xconfig --startxonboot

reboot

%packages
@base
@client-mgmt-tools
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@misc-sl
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@scalable-file-systems
@server-platform
@x11
mtools
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
pax
#samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
SL_desktop_tweaks
pam_ldap

yum-priorities
yum-updateonboot
elrepo-release
epel-release
rdesktop
lynx
vim-X11
gettext-devel
gnuplot
subversion
compat-gcc-34-g77
numpy
scipy
lapack
python-matplotlib
ksh
screen
libXp
logwatch
libXp
openmotif
gsl
@ Development Tools
git
gitk
openmpi-devel
libXaw
compat-libstdc++-33
@ TeX support
policycoreutils-python
openswan
rsyslog-gnutls
openldap-clients
#devtoolset-1.1-runtime
#devtoolset-1.1-gcc.x86_64
#devtoolset-1.1-gcc-c++.x86_64

%end

%pre
#!/bin/sh
for x in `cat /proc/cmdline`; do
        case $x in SERVERNAME*)
	        eval $x
		echo "network --onboot yes --device eth0 --bootproto dhcp --ipv6 auto --hostname ${SERVERNAME}.aoe.vt.edu" > /tmp/network.ks
                echo "${SERVERNAME}" > /tmp/servername.ks
                ;;

                AOEIP4*)
                eval $x
                echo "${AOEIP4}" > /tmp/ip4.ks
                ;;
	        esac;
	done
if [ ! -f /tmp/network.ks ] ; then
  curTTY=`tty`
  exec < $curTTY > $curTTY 2> $curTTY
  #clear
  echo -n "Not enough cmd line args. Enter a Hostname: "
  read SERVERNAME
  echo "network --onboot yes --device eth0 --bootproto dhcp --ipv6 auto --hostname ${SERVERNAME}.aoe.vt.edu" > /tmp/network.ks
  echo "${SERVERNAME}" > /tmp/servername.ks
fi
%end

%post --nochroot
cp /tmp/*.ks /mnt/sysimage/tmp # /mnt/sysimage/tmp is /tmp in chrooted env
killall NetworkManager
echo 'nameserver 128.173.188.25' > /etc/resolv.conf
echo 'nameserver 128.173.188.26' >> /etc/resolv.conf
echo 'search aoe.vt.edu' >> /etc/resolv.conf

%post
#!/bin/bash


## redirect the output to the log file.  Interaction is confusing since input has to happen on tty1....
## This would be best if no interaction is needed with the post installation or for debugging ks.
#exec >/root/ks-post-anaconda.log 2>&1
## show the output on the 7th console
#tail -f /root/ks-post-anaconda.log >/dev/tty7 &
## changing to VT 7 that we can see what's going on....
#/usr/bin/chvt 7

#this allows interaction with the postinstall portion on the current tty
curTTY=`tty`
exec < $curTTY > $curTTY 2> $curTTY
clear

if [ -f /tmp/ip4.ks ] ; then
  read aoeip4 < /tmp/ip4.ks #read the var
  echo $aoeip4 # print its value, should be SOMEVAL
  #rm -rf /tmp/ip4.ks # cleanup
else
  echo -n "enter an ipv4 address: "
  read aoeip4
fi

if [ -f /tmp/servername.ks ] ; then
  read servername < /tmp/servername.ks #read the var
  echo $servername # print its value, should be SOMEVAL
  #rm -rf /tmp/servername.ks # cleanup
else
  echo -n "Enter a hostname: "
  read servername
fi

# set log forwarding to root@aoe
echo 'root@aoe.vt.edu' >> /root/.forward
restorecon /root/.forward

# grab the setup files and replace the contents of the existing files
wget ftp://192.168.2.10/linux/scientific/ks/postinstallsetup.tgz
if [ $? -eq 0 ]; then
  tar xzf postinstallsetup.tgz

# replace the contents of these files
  [ -f /etc/yum.repos.d/sl.repo ] && cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo || echo "sl.repo does not exist yet."
  cat postinstallsetup/sl.repo > /etc/yum.repos.d/sl.repo
  [ -f /etc/yum.repos.d/sl6x.repo ] && cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo || echo "sl6x.repo does not exist yet." 
  cat postinstallsetup/sl6x.repo > /etc/yum.repos.d/sl6x.repo 
else
  echo "Could not get tar file"
  read waithere
fi

# setup update on boot
chkconfig yum-updateonboot on
yum -y update

# install packages from epel and elrepo
yum -y install lyx denyhosts qtwebkit colordiff htop octave emacs msktutil

#set up yum check-update in cron job - even though it is not a great implementation
crontab -l | { cat ; echo '@daily yum check-update > /dev/null || yum check-update'; } | crontab -

#append aoe modulefiles
echo '/aoe/etc/modulefiles' >> /usr/share/Modules/init/.modulespath

# turn off unused services
service bluetooth stop
chkconfig bluetooth off
chkconfig NetworkManager off
service NetworkManager stop
chkconfig avahi-daemon off
chkconfig kdump off
chkconfig ntpd on

# set up new user
useradd -u 501  -c "Steve" -d /l/steve -m -s /bin/bash steve
semanage fcontext -a -t home_root_t "/l"
semanage fcontext -a -e /home /l
restorecon -R -v /l

# grab the setup files and replace the contents of the existing files
if [ -d postinstallsetup ]; then

# replace the contents of these files
  [ -f /etc/ssh/sshd_config ] && cat postinstallsetup/sshd_config > /etc/ssh/sshd_config || echo "sshd_config does not exist yet."
  cat postinstallsetup/sshd_config > /etc/ssh/sshd_config
#  [ -f /etc/sysconfig/network-scripts/ifcfg-eth1 ] &&  cat postinstallsetup/ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1 || echo "ifcfg-eth1 does not exist yet."
#  cat postinstallsetup/ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1
  [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ] &&  cat postinstallsetup/ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth0 || echo "ifcfg-eth0 does not exist yet."
  sed -i 's/eth1/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
#  cat postinstallsetup/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0
#  [ -f /etc/sysconfig/network-scripts/ifcfg-eth2 ] &&  cat postinstallsetup/ifcfg-eth2 > /etc/sysconfig/network-scripts/ifcfg-eth2 || echo "ifcfg-eth2 does not exist yet."
#  cat postinstallsetup/ifcfg-eth2 > /etc/sysconfig/network-scripts/ifcfg-eth2
#  [ -f /etc/sysconfig/network-scripts/ifcfg-eth3 ] &&  cat postinstallsetup/ifcfg-eth3 > /etc/sysconfig/network-scripts/ifcfg-eth3 || echo "ifcfg-eth3 does not exist yet."
#  cat postinstallsetup/ifcfg-eth3 > /etc/sysconfig/network-scripts/ifcfg-eth3
  [ -f /etc/sysconfig/autofs ] &&  cat postinstallsetup/autofs > /etc/sysconfig/autofs || echo "autofs does not exist yet."
  cat postinstallsetup/autofs > /etc/sysconfig/autofs
  [ -f /etc/autofs_ldap_auth.conf ] &&    cat postinstallsetup/autofs_ldap_auth.conf > /etc/autofs_ldap_auth.conf || echo "autofs_ldap_auth.conf does not exist yet."
  cat postinstallsetup/autofs_ldap_auth.conf > /etc/autofs_ldap_auth.conf
  [ -f /etc/ntp.conf ] &&    cat postinstallsetup/ntp.conf > /etc/ntp.conf || echo "ntp.conf does not exist yet."

  cat postinstallsetup/sudoers > /etc/sudoers
  [ -f /etc/sysconfig/iptables ] &&    cat postinstallsetup/iptables > /etc/sysconfig/iptables || echo "iptables does not exist yet."
  cat postinstallsetup/iptables > /etc/sysconfig/iptables
  [ -f /etc/sysconfig/ip6tables ] &&    cat postinstallsetup/ip6tables > /etc/sysconfig/ip6tables || echo "ip6tables does not exist yet."
  cat postinstallsetup/ip6tables > /etc/sysconfig/ip6tables

  [ -f /etc/sssd/sssd.conf ] &&    cat postinstallsetup/sssd.conf > /etc/sssd/sssd.conf || echo "sssd.conf does not exist yet."
  cat postinstallsetup/sssd.conf > /etc/sssd/sssd.conf
  chmod 600 /etc/sssd/sssd.conf
  [ -f /etc/rsyslog.d/tls.conf ] &&    cat postinstallsetup/tls.conf > /etc/rsyslog.d/tls.conf || echo "tls.conf does not exist yet."
  cat postinstallsetup/tls.conf > /etc/rsyslog.d/tls.conf
  chmod 600 /etc/rsyslog.d/tls.conf
# Modify these files
  [ -f /etc/openldap/ldap.conf ] && tail -2 postinstallsetup/ldap.conf >> /etc/openldap/ldap.conf || cat postinstallsetup/ldap.conf > /etc/openldap/ldap.conf

#This is done at the end of this ks with sed
#  [ -f /etc/gconf/gconf.xml.defaults/%gconf-tree.xml ] && cat postinstallsetup/%gconf-tree.xml > /etc/gconf/gconf.xml.defaults/%gconf-tree.xml || echo "%gconf-tree.xml does not exist yet."
#  cat postinstallsetup/%gconf-tree.xml > /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

else
  echo "Could not get tar file"
fi
hwaddr=$( ifconfig eth0 | grep eth0| awk '{print $5}' )
sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth0
#hwaddr=$( ifconfig eth1 | grep eth1| awk '{print $5}' )
#sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth1
#hwaddr=$( ifconfig eth2 | grep eth2| awk '{print $5}' )
#sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth2
#hwaddr=$( ifconfig eth3 | grep eth3| awk '{print $5}' )
#sed -i "s/xx:xx:xx:xx:xx:xx/$hwaddr/" /etc/sysconfig/network-scripts/ifcfg-eth3

#sed -i "s/128.173.188.28/$aoeip4/" /etc/sysconfig/network-scripts/ifcfg-eth1
sed -i "s/128.173.188.28/$aoeip4/" /etc/sysconfig/network-scripts/ifcfg-eth0

#bounce the network
ifdown eth0
ifdown eth1

sed -i 's/NM_CONTROLLED="yes"/NM_CONTROLLED="no"/' /etc/sysconfig/network-scripts/ifcfg-*

echo -n "switch to the open network.  Enter a username: "
read ksuser

ifup eth0

sleep 10

echo 'alexandria:/export/apps/aoe-linux-x86_64 /aoe 	nfs 	tcp 		0 0' >> /etc/fstab
mkdir /aoe

mount /aoe
if [ $? -eq 0 ]; then
  cd /etc/profile.d
  ln -s /aoe/etc/aoe_profile.sh
  ln -s /aoe/etc/aoe_profile.csh
else
  echo " /aoe not mounted "
  read waithere
fi
#mkdir /l
chown root:root /l
chmod 777 /l
plymouth-set-default-theme details --rebuild-initrd

cp /etc/openldap/cacerts/authconfig_downloaded.pem /etc/pki/tls/certs/aoe-ca.pem
ln -s /etc/pki/tls/certs/aoe-ca.pem /etc/pki/tls/certs/`openssl x509 -hash -noout -in /etc/pki/tls/certs/aoe-ca.pem`.0

#
# Set the correct time
#
sed -i 's/0.rhel.pool.ntp.org/ntp-1.vt.edu/' /etc/ntp.conf
sed -i 's/1.rhel.pool.ntp.org/ntp-2.vt.edu/' /etc/ntp.conf
sed -i 's/2.rhel.pool.ntp.org/ntp-3.vt.edu/' /etc/ntp.conf
sed -i 's/3.rhel.pool.ntp.org/ntp-4.vt.edu/' /etc/ntp.conf
/usr/sbin/ntpdate -bus ntp-1.vt.edu ntp-2.vt.edu ntp-3.vt.edu ntp-4.vt.edu
/sbin/clock --systohc

cd /etc/pki/rsyslog
openssl genrsa -out key.pem 2048
chmod 400 key.pem
export HOSTNAME=$servername.aoe.vt.edu
openssl req -new -key key.pem -out request-$servername.req -config /aoe/etc/openssl.cnf -nodes
openssl req -text -in request-$servername.req -noout -verify

chmod 600 request*
#scp request* stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog
scp request* $ksuser@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog

echo " run this on neptune:"
echo 'ps > certreq.exe -submit -attrib "CertificateTemplate:WebServerLoghostIPSec" ./request-'$servername'.req '$servername'.cer'
echo "press enter when complete"
read waithere
echo " scp may want a password here--wait for it to ask: "
#scp stedwar1@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$servername.cer cert.pem
scp $ksuser@alexandria.aoe.vt.edu:~/sandbox/openssl/rsyslog/cert-$servername.cer cert.pem
restorecon -RvF /etc/pki

sed -i "\/var\/log\/messages/a *.info;authpriv.none                                    @@artemis.aoe.vt.edu:6514" /etc/rsyslog.conf
sed -i "\/var\/log\/messages/a #*.info;authpriv.none                                    @loghost" /etc/rsyslog.conf
service rsyslog start
logger test

echo -n " user credentials: " 
#kinit stedwar1
kinit $ksuser
export host=$servername
msktutil -u --server neptune --computer-name $host --user-creds-only -s host/$host.aoe.vt.edu -s host/$host --upn host/$host.aoe.vt.edu
if [ $? -ne 0 ]; then
  echo " There was a problem adding computer to domain.  Hit return to continue. "
  read waithere
else
  echo " looks like the domain join worked. press return to continue "
  read waithere
fi
#change ldap.conf back
sed -i "s/TLS_REQCERT never/#TLS_REQCERT never/" /etc/openldap/ldap.conf
sed -i "s/^URI ldap/#URI ldap/" /etc/openldap/ldap.conf

#change the hostname in autofs_ldap_auth.conf
sed -i "s/changeme/$servername/" /etc/autofs_ldap_auth.conf

#Set default NFS version to 3 because file ownership does not work with v4
[ -f /etc/nfsmount.conf ] && sed -i "/# Defaultvers=4/a Defaultvers=3" /etc/nfsmount.conf || echo "nfsmount.conf does not exist"

#change default logon screen to disable user list
sed -i '/disable_user_list/ { N ; /disable_user_list/ { N ; s/false/true/ } }' /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

%end
aoe/sl6.txt · Last modified: 2015/05/27 15:44 by 127.0.0.1