Archive for the 'General B.S.' Category
FreeBSD Single Sign on with Active Directory and Access Control
Introduction
This document describes how to join a FreeBSD box to a Windows domain controller and to control access to the FreeBSD box. We will be using Samba’s WinBind and Kerberos for authentication.
This document assumes that you have a functioning FreeBSD sever on a network with internet access.
Install Samba Port
1. Log into FreeBSD Sever
2. Su to root “su –“
3. Change to Samba 3 ports directory “cd /usr/ports/net/samba3”
4. Compile and install Samba 3 “make install”
a. Select ONLY the following Samba options in the configuration “LDAP, ADS, WINBIND, ACL_SUPPORT, SYSLOG, UTMP, PAM_SMBPASS, EXP_MODULES, & POPT”
Configure Samba
1. To get Samba and Winbind to work on boot up add the following to /etc/rc.conf file:
nmbd_enable=”YES”
smbd_enable=”YES”
winbindd_enable=”YES”
kerberos5_server_enable=”YES”
kadmind5_server_enable=”YES”
2. Move the orginal smb.conf file “mv /usr/local/etc/smb.conf /usr/local/etc/smb.conf.default”
3. Copy the following to smb.conf…
[global]
workgroup = YOURDOMAIN
server string = FreeBSD Server %v
load printers = no
encrypt passwords = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
smb ports = 139
security = ADS
realm = YOURDOMAIN.COM
password server = domaincontroler1.yourdomain.com
password server = domaincontroler2.yourdomain.com
winbind separator = \
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U
template shell = /bin/tcsh
client ntlmv2 auth = yes
winbind use default domain = yes
restrict anonymous = 2
domain master = no
local master = no
preferred master = no
disable netbios = no
dos charset = ASCII
unix charset = UTF8
display charset = UTF8
Configure Kerberos
1. Edit /etc/krb5.conf (it probably doesn’t exist) and add the following text:
default = SYSLOG:INFO:LOCAL7
[libdefaults]
ticket_lifetime = 24000
clock_skew = 300
default_realm = YOURDOMAIN.COM
[realms]
domain.LOCAL = {
kdc = domaincontroler1.yourdomain.com:88
kdc = domaincontroler2.yourdomain.com:88
admin_server = domaincontroler1.yourdomain.com:464
admin_server = domaincontroler2.yourdomain.com:464
default_domain = yourdomain.com
}
[domain_realm]
.domain.local = YOURDOMAIN.COM
2. Test Kerberos by typing “kinit <Username>”. Put a username that is on the domain controller. You should get a response of “kinit: NOTICE: ticket renewable lifetime is 1 week” and you will know its working. You can also do a “klist” to see who issued the ticket and verify its from the Smartech domain.
Joining The Domain
1. We should now be able to join the domain, enter the following:
/usr/local/bin/net ads join -U domaincontroler1.yourdomain.com -U administrator
2. It will prompt you for the domain controllers administrator password. If your successful you should see a reply like:
Using short domain name — YOURDOMAIN
Joined ‘FBTEST2′ to realm ‘YOURDOMAIN.COM’
Turning Samba on and Testing
1. Run “/usr/local/etc/rc.d/samba start”
2. Your output should look like this:
Removing stale Samba tdb files: done
Starting nmbd.
Starting smbd.
Starting winbindd.
3. Then run “wbinfo -u” and it should list all of the domain users.
4. Also “wbinfo -g” will show you a list all of the domain groups.
Name Switch Service
1. Now we tell pam to authenticate from the AD server first then failover to local accounts if the domain controller is over.
2. Edit the “/etc/nsswitch” file. Make it match the following example. Notice we only make changes to the group and passwd entries.
group: winbind files
group_compat: nis
hosts: files dns
networks: files
passwd: winbind files
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
Automatic Creation of Home Directories
1. To make automatic home directories we need to compile and install pam_mkhomedir port.
cd /usr/ports/security/pam_mkhomedir
make install
Setup SSHD Authentication with PAM
1. Now we have to make SSHD authenticate with PAM and WinBind by editing “/etc/pam.d/sshd”. This will also do the automatic home directory creation.
2. Add “auth sufficient /usr/local/lib/pam_winbind.so # Allows access to everyone in the domain” to the 3rd line under “# auth”
3. Add “session required /usr/local/lib/pam_mkhomedir.so” to the 2nd line under “# session # Creates home directories for AD authenticated users.”
4. You can also run “getent passwd” and “getent group” to get the list of users and groups that combine both the domain controllers user list with the local list and the same for groups.
Testing Domain Authentication
1. Try logging into the account with an account on the domain controller and its password. Once logged in make sure the account has a home directory by typing “pwd” to see your current path.
Setup AD Group Access Restrictions
1. Now we need to restrict the FreeBSD box to particular users. We do not want everyone to have access. No now we will need to gather some needed information.
a. Run “wbinfo -g” to view all of the groups that are in the domain controller or look in the Active Directory Users and Computers.
b. Note the groups you want to have access to the box. You are required to add “Domain Admins” as a group to all FreeBSD boxes.
c. Next we need the SID of each of the groups.
i. wbinfo -n “GROUPNAME” , will return the SID of the group.
fbtest2# wbinfo -n “domain admins”
S-1-5-21-1328793019-4053271937-1264903302-512 Domain Group (2)
ii. The long number starting with S is the SID, i.e. S-1-5-21-1328793019-4053271937-1264903302-512
2. Now we need to add the SID’s to /etc/pam.d/sshd to allow those users access and to remove access for everyone.
a. Comment out “auth sufficient /usr/local/lib/pam_winbind.so # Allows access to everyone in the domain”
b. Add “auth sufficient /usr/local/lib/pam_winbind.so try_first_pass require_membership_of=<SID> # Group: <GROUP NAME>” below it.
i.e. “auth sufficient /usr/local/lib/pam_winbind.so try_first_pass require_membership_of=S-1-5-21-1328793019-4053271937-1264903302-512 # Group: Domain Admins”
c. Make sure you label the “GROUP NAME” so that we know which group the SID belongs to.
d. Add the rest of the groups you want to have access to the box.
3. Add a user to a group on the domain controller and test your loggin.
Windows Vista - Setting MTU to work with aDSL
I recently purchased a Windows Vista laptop and it worked great, well as soon as I bumped it to 2 gigs of RAM. I was able to use the laptop at home and at one of my offices, both were on comcast cable. I then took the laptop to the warehouse which was on Windstream DSL and to my surprise it would hardly cerf the net because my dsl was so slow. No mater what page I went to some of the page would show up but it would never load an entire page. I knew right then that it was most likely an MTU problem. So I did some research and found that Vista tries to make guesses on what it should set your MTU settings for each connection to. I disabled this and set my MTU manually to 1430 and walla everything worked like a champ. Here is what I did…
1. You must get into a command prompt as Administrator. To do this…
- Click Start and type cmd in the Search box. This should produce a list consisting of one entry: the shortcut to the Windows Command Processor, cmd.
- Right-click the cmd shortcut and choose Pin to Start Menu.
- Click Start again. Right-click the Command Prompt shortcut you just added to the Start menu and choose Properties.
- Click the Advanced button and click to select the Run as administrator check box.
- Click OK to save your changes.
2. You must tell vista not to autotune itself and to abide by your MTU setting to do this at the cmd prompt type….
netsh int tcp set global autotuninglevel=disabled
3. And finally you must list set the MTU to each interface you want to change. At the cmd prompt type….
netsh interface ipv4 set subinterface “Local Area Connection” mtu=1430 store=persistent
If you just want to see what your MTU settings are or find other interface names you can run….
netsh interface ipv4 show subinterfaces
Hope this Helps!
Chris Edwards
No commentsCrystal Reports - Converting UNIX Time Stamp
I had a heck of a time finding out how to convert a UNIX time stamp in Crystal Reports. My company has a ecommerce package that stores all sales date in a UNIX time stamp format. Which means it stores the time and date by storing the number of seconds since 1/1/1970. So here is the formula I came up with…
dateadd (”s”,{order.date}-18000, #1/1/1970#)
dateadd function does the trick, the “s” is for seconds, order.date is the table that contains the unix time stamp, -18000 is -5 hours from UTC in seconds because im in the Eastern Time Zone and 1/1/1970 is the base date for dateadd to add the other argument to.
Hope This Helps!
Chris Edwards
5 commentsWeb Page Started
I am currently working on a web page for http://www.superfloorcenter.com. I just installed X-Cart and have a few ladies doing some graphics work for me, designing logos and what not.
WOW, this is a big task, I have to figure everything out from begining to end on this one. From ordering to shipping. Honey… I’m gonna be late!

First Post To My First Blog!
Eh, in all my years computing (1982) I have never had my own blog. So here it is, i’m setting down the o’le Commodore 64 and moving ahead to 2006. Basically this is a test of the blog but the previous statement is completely true.
TTL,
Chris Edwards
1 comment






