resource Authentication Gateway howto http://www.faqs.org/docs/Linux-HOWTO/Authe...CATGATEWAYSETUP
Linux Wireless Access Point howto http://oob.freeshell.org/nzwireless/LWAP-HOWTO.html
http://www.tldp.org/HOWTO/Authentication-Gateway-HOWTO/index.html
tip
ว๊าก ๆ set ตั้งนาน..
- อย่าลืม package Net::Netmask จาก CPAN
- อย่าลืมตั้ง permission ของ folder pgp
- อย่าลืมใส่ LocalNetwork ใน nocat.conf ของ authen ด้วย (ไม่มีใน doc นะ มันไม่ได้บอกไว้)
- file trusted.pgp ต้องเอาไปไว้ที่ nocat/gw/pgp นะ ไม่ใช่ที่ nocat/gw
สรุปวิธีตั้ง auth server ใน FC3
(เวลา install FC3 อย่า enable SELinux แต่ถ้า Enable ไปแล้วให้ไปเอาออกที่ /etc/selinux/config
-
ลง NoCatAuth โดย 1.1 make PREFIX=/usr/local/nocat/authserv authserv (ระวัง มันจะหา gpg โดยใช้คำสั่ง which ให้ดูด้วยว่าเครื่องที่จะลงมันมี which อยู่หรือเปล่า FC3 ถ้าลงแบบ server มันจะไม่ลง which ให้) 1.2 make PREFIX=/usr/local/nocat/authserv pgpkey
-
แก้ /etc/httpd/conf/httpd.conf โดยเพิ่มบรรทัด Include /usr/local/nocat/authserv/httpd.conf ไว้หลัง include มันจะได้ทำ Alias ของ /script
-
Install Net::Netmask perl module โดย 3.1 untar Net-Netmask.xxxx 3.2 ใน Net-Netmask.xxxx directory พิมพ์ perl Makefile.pl 3.3 พิมพ์ make 3.4 พิมพ์ make install
-
แก้ config ของ auth server แก้วิธี authenticate ให้ตรงกับที่จะใช้ เพิ่มบรรทัด LocalNetwork 192.168.1.0/24 ด้วย (สำคัญมาก)
-
copy ไฟล์ /usr/local/nocat/authserv/trustedkeys.gpg ไปที่เครื่อง gateway โดยเอาไว้ที่ /usr/local/nocat/gw/pgp ด้วย
-
แก้ permission ของ /usr/local/nocat/authserv/pgp ให้ owner เป็นคนเดียวกับที่รัน httpd
-
restart httpd
---------- FOR FreeBSD ---------------
อย่างแรกเลย Authen::Smb มันต้องแก้
#include < malloc.h >
มันจะ error ใน FreeBSD ให้แก้เป็น
#include < stdlib.h >
แทน
แล้วก็
#include < sys/vfs.h>
ก้ใช้ไม่ไ้ด ต้องเป็น
#include < sys/statvfs.h>
แทน
apache เวลาจะให้มันใช้ modssl ด้วยต้อง start ด้วย apachectl startssl ซึ่งมันจะถาม passphrase วิธีเอาออกก็คือ
1. Remove the encryption from the RSA private key (while preserving the original file): $ cp server.key server.key.org $ openssl rsa -in server.key.org -out server.key 2. Make sure the server.key file is now only readable by root: $ chmod 400 server.key
ดูมาจาก http://www.modssl.org/docs/2.7/ssl_faq.html#ToC31
ต่อไปก็คือ.... เป็นไรไม่รู้ ถ้าให้ apache มัน start ตอน boot เครื่องเองเนี่ย มันจะหา gpg ไม่เจอ (คือตอน authen มันจะร้องด่าว่าหา gpg ไม่เจอ ดูได้จาก http-error.log) แต่ถ้า login เป็น root เข้าไป restart server แล้วมันจะหาเจอ ไม่รู้แก้ไงเหมือนกัน ก็เลย copy gpg ไปไว้ที่ /bin อีกที (ตอนแรกมันอยู่ที่ี /usr/local/bin) ก็ work เลย คงเกี่ยวกะ path ของแม่ง
โอ้วเย็ดดดดด
พยายามทำให้มันใช้ NIS.... ทำตั้งนาน.. ไม่ work ซะที ให้มันใช้ NIS ตรง ๆ (โดยใช้ package Net::Nis) ไม่ work
หันมาใช้ PAM ทดลองแล้วใช้ PAM ก็เหมือนจะ work ดี ลอง set PAM ให้ใช้ pam_permit.so ก็ work ใช้ได้.... แต่พอตั้งให้ให้จริง ๆ กลับไม่ work ไม่รู้เพราะอะไร.. ลองเอา Authen::PAM มา่ใช้ตรงๆ (คือเขียน perl ลองดู) ก็ใช้ได้ แต่พอใช้ใน apache กลับ ไม่ work
สุดท้ายใช้ Samba กะ Authen::Smb... ทีเดียว work เลย.. เฮ่อ...
แก้ไข Authentication server
หน้า web ต่าง ๆ ของ auth server มันมีผิด ๆ อยู่หน่อย อย่างแรกคือเวลา login ได้ถูกต้อง หน้า login_ok.html ที่แสดงออกมา link ที่ให้ click เผื่อเวลาที่ไม่ auto มันเป็น link ที่ผิด (มันใช้อันเดียวกับที่ใส่ไว้ใน content= 5;refresh ตรง header)
ให้ไปแก้ไฟล์ AuthService.pm ใน /usr/local/nocat/authserv/lib/NoCat/
แก้ sub ชื่อ sucess โดยเพิ่มตัวแปร redirect_click ให้ไว้
เวอร์ชั่นที่แก้แล้วจะเป็นยังงี้
sub success { my ( $self, $form, $args ) = @_; my %vars = ( $args ? %$args : $self->cgi->Vars ); my @headers; my $redirect = $vars{redirect} || $self->{HomePage}; # Add a refresh time of five seconds... unless one is already set. $vars{redirect_click} = $redirect; $vars{redirect} = $redirect = "5; URL=$redirect" unless $redirect =~ /^\d+;/o; push @headers, -Refresh => $redirect; # push @headers, -Cookie => $self->{Cookie} if $self->{Cookie}; # Hit the g/w with the ticket first if there is one, get a 304, # then refresh the renewal link. # push @headers, -Status => "302 Moved", -Location => $vars->{deliver_ticket} # if $vars->{deliver_ticket}; $vars{CGI} = $self->cgi->url; print $self->cgi->header( @headers ), $self->template( $form => \%vars ); }
แก้ไฟล์ login_ok.html ด้วย ตรงที่ click ให้เป็น
You've logged in. You will be redirected within five seconds. If not, click here to continue.
password เครื่องลูก ๆ ในชั้น 17
;sdgjo*(04286
ตอนที่ 2 การสร้าง authentication gateway
หลักจากสร้าง authentication server เสร็จแล้ว รายการต่อมาก็คือการสร้าง authentication gateway
-
ลง Fedora Core3 (อีกแล้ว...) ตอนลงอย่าลืมเลือกให้มันลง dhcpd มาไว้ด้วย
-
ตั้ง dhcpd server 2.1 สร้างไฟล์ /etc/dhcpd.conf ดังต่อไปนี้
ddns-update-style ad-hoc; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.250; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option broadcast-address 192.168.1.255; option domain-name-servers 161.200.93.11, 161.200.93.1; option domain-name "floor17.cp.eng.chula.ac.th"; } subnet 161.200.92.0 netmask 255.255.254.0 { }
subnet 161.200.92.0 เอาไว้บอกว่าเครื่องนี้ต่อกะ 2 network แล้วไม่ต้องยุ่งอะไรกะ network ของ 161.200.92.0/23
2.2 ตั้งให้ dhcpd รันทุกครั้งที่เปิดเครื่อง
chkconfig --level 345 dhcpd on
- ลง NoCatAuth โดย 3.0 ตัว script มันจะ detect firewall (iptables) แต่ว่า script มันเขียนไว้ผิด เราต้องไปแก้ script ที่มันเขียนก่อน
ให้แก้ไขไฟล์ bin/detect-fw.sh
ดูตรง
# Do we have iptables *and* are running Linux 2.4? # elif which iptables >/dev/null 2>&1 && \ test X"`uname -sr | cut -d. -f-2`" = X"Linux 2.4"; then FIREWALL=iptables FW_BIN=iptables
ให้แก้ตรง Linux 2.4 เป็น Linux 2.6 (เพราะ Fedora Core3 มันใช้ 2.6)
3.1 make PREFIX=/usr/lolcal/nocat/gw gateway 3.2 แก้ไขไฟล์ nocat.conf โดยเพิ่ม/แก้ บรรทัดต่อไปนี้
AuthServiceAddr auth.cp.eng.chula.ac.th ExternalDevice eth0 InternalDevice eth1 MembersOnly 1
3.3 copy ไฟล์ trustedkeys.gpg จากเครื่อง auth มาไว้ที่ /usr/local/nocat/gw/pgp
- ทำให้ service วิ่งได้เองเวลา reboot ให้แก้ไฟล์ /etc/rc.d/rc.local โดยเพิ่ม
/usr/local/nocat/gw/bin/gateway
อ้อ ๆ อย่าลืมแก้พวก htdocs ต่าง ๆ ใน auth server ให้ตรงกับที่ต้องการ (ไม่จำเป็น)
เช่นแก้ชื่ือให้เป็น CP Network, ใส่คำเตือน, etc.
- Log in to post comments
อยากรู้ว่
ผมใช้เวอร