به نام خدا
در این آموزش با نحوه کانفیگ و پیکره بندی سرویس anyconnect ocserv در لینوکس آشنا میشویم,توجه داشته باشید که:این آموزش صرفا جهت بالابردن امنیت شخصی در فضای سایبری میباشد و هرگونه سئو استفاده از آن برعهده شخص میباشد.
همچنین توجه داشته باشید که در این آموزش جدیدترین ورژن یعنی ۰٫۸٫۹ آموزش میشود ممکن است بعضی از قسمت های آموزش با ورژن های قبل کار نکند همچنین سایر پکیج ها نیز جدیدترین ورژن آموزش داده میشود.درصورتی نیز شما هم اکنون در سرور خود ورژن قبل تر از ۰٫۸٫۹ دارید کافی است آموزش را از اول انجام دهید و نیازی به پاک کردن ورژن قبل و… نیست.
خب مواد مورد نیاز:
۱) یک سرور لینوکس سنت او اس ۶۴بیت(در این آموزش از Centos 6.6 X64 استفاده میشود.)
۲) یک فنجام قهوه و صبر و حوصله!
خب اول پیش نیازهای oscerv رو نصب میکنیم, به ترتیب دستورات زیر را وارد ssh سرورتون بکنید:
1
|
yum install autoconf automake gcc libtasn1-devel zlib zlib-devel trousers trousers-devel gmp-devel gmp xz texinfo libnl-devel libnl tcp_wrappers-libs tcp_wrappers-devel tcp_wrappers dbus dbus-devel ncurses-devel pam-devel readline-devel bison bison-devel flex gcc automake autoconf wget
|
1
2
3
4
5
6
7
|
cd
wget http://www.lysator.liu.se/~nisse/archive/nettle-2.7.tar.gz
tar xvf nettle-2.7.tar.gz
cd nettle-2.7
./configure --prefix=/opt/
make
make install
|
1
2
3
4
5
6
7
8
9
|
cd
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/gnutls-3.2.12.tar.xz
unxz gnutls-3.2.12.tar.xz
tar xvf gnutls-3.2.12.tar
cd gnutls-3.2.12
export LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
NETTLE_CFLAGS="-I/opt/include/" NETTLE_LIBS="-L/opt/lib64/ -lnettle" HOGWEED_CFLAGS="-I/opt/include" HOGWEED_LIBS="-L/opt/lib64/ -lhogweed" ./configure --prefix=/opt/
make
make install
|
1
2
3
4
5
6
7
|
cd
wget http://www.carisma.slowglass.com/~tgr/libnl/files/libnl-3.2.24.tar.gz
tar xvf libnl-3.2.24.tar.gz
cd libnl-3.2.24
./configure --prefix=/opt/
make
make install
|
خب اکنون نوبت به نصب خود ocserv یا همون cisco anyconnect میرسه:
1
2
3
4
5
6
7
8
9
|
cd
wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.8.9.tar.xz
unxz ocserv-0.8.9.tar.xz
tar xvf ocserv-0.8.9.tar
cd ocserv-0.8.9
export LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
LIBGNUTLS_CFLAGS="-I/opt/include/" LIBGNUTLS_LIBS="-L/opt/lib/ -lgnutls" LIBNL3_CFLAGS="-I/opt/include" LIBNL3_LIBS="-L/opt/lib/ -lnl-3 -lnl-route-3" ./configure --prefix=/opt/
make
make install
|
خب اکنون نوبت به ساخت سرتیفیکت هاست و انجام تنظیمات ocserv هست اما بنده جهت راحتی شما(وخودم!) این دستورات رو بیان نمیکنم و تنظیمات خودم رو براتون قرار میدم که دستورات کمتری رو وارد کرده باشید بنابراین دستورات زیر را وارد کنید:
1
2
3
4
|
cd /etc
yum install unzip zip -y
wget http://dl.cloudha.ir/pub/ocserv/ocserv.zip
unzip ocserv.zip
|
خب با دستور بالا تنظیمات ocserv رو دریافت و مکان خودش قرار میدید.
اکنون دستور زیر را وارد کنید:
1
|
nano /etc/ocserv/profile.xml
|
در اواخر این فایل دستورات زیر رو مشاهده میکنید:
1
2
|
<HostName>LearnSpot</HostName>
<HostAddress>Server_IP</HostAddress>
|
بجای عبارت LearnSpot هرچیز دلخواه میتونید بنویسید مثلا اسم سایتتون,یا هر چیز دیگر اما بجای کلمه Server_IP ای پی سرورخودتون رو قرار بدید.
اکنون port forwarding رو فعال میکنیم:
پس دستور زیر را وارد کنید:
1
|
nano /etc/sysctl.conf
|
سپس عبارت:
1
|
net.ipv4.ip_forward = 0
|
رو به
1
|
net.ipv4.ip_forward = 1
|
تغییر دهید و سیو کنید و خارج بشید.(با استفاده از ctrl + x و y) و سپس:
1
|
sysctl -p
|
اکنون Selinux رو غیرفعال میکنیم:
1
|
nano /etc/sysconfig/selinux
|
عبارت:
1
|
SELINUX=enforcing
|
به عبارت زیر تغییر دهید و سیو کنید خارج بشید:
1
|
SELINUX=disabled
|
سپس دستورات زیر را به ترتیب وارد کنید:
1
2
3
4
5
6
7
8
|
cd
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar zxf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
mv apps/sys-utils/start-stop-daemon-IR1_9_18-2/ ./
rm -rf apps
cd start-stop-daemon-IR1_9_18-2/
cc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/local/bin/start-stop-daemon
|
و سپس:
1
|
nano /etc/init.d/ocserv
|
و عینا موارد زیر را در ان قرار دهید و سیو کنید:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#!/bin/sh
### BEGIN INIT INFO
# Provides: ocserv
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
# Copyright Rene Mayrhofer, Gibraltar, 1999
# This script is distibuted under the GPL cloudha
PATH=/bin:/opt/bin:/sbin:/opt/sbin
DAEMON=/opt/sbin/ocserv
PIDFILE=/var/run/ocserv.pid
DAEMON_ARGS="-c /etc/ocserv/ocserv.conf"
case "$1" in
start)
if [ ! -r $PIDFILE ]; then
echo -n "Starting OpenConnect VPN Server"
export LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
/usr/local/bin/start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS > /dev/null
echo
else
echo -n "OpenConnect VPN Server is already running"
echo
exit 0
fi
;;
stop)
echo -n "Stopping OpenConnect VPN Server"
/usr/local/bin/start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
echo
rm -f $PIDFILE
;;
force-reload|restart)
echo "Restarting OpenConnect VPN Server"
$0 stop
sleep 1
$0 start
;;
status)
if [ ! -r $PIDFILE ]; then
echo -n "OpenConnect VPN Server Stoped"
echo
exit 3
fi
PID=`cat $PIDFILE | sed 's/ //g'`
EXE=/proc/$PID/exe
if [ -x "$EXE" ] &&
[ "`ls -l \"$EXE\" | cut -d'>' -f2,2 | cut -d' ' -f2,2`" = \
"$DAEMON" ]; then
echo -n "OpenConnect VPN Server run correctly"
echo
exit 0
elif [ -r $PIDFILE ]; then
echo -n "OpenConnect VPN Server stoped but pid file exist"
echo
exit 1
else
# no lock file to check for, so simply return the stopped status
exit 3
fi
;;
*)
echo "Usage: /etc/init.d/ocserv {start|stop|restart|force-reload|status}"
exit 1
;;
esac
exit 0
|
سپس دو دستور زیر را وارد کنید:
1
2
|
chmod 755 /etc/init.d/ocserv
chkconfig ocserv on
|
خب تنظیمات ocserv تمام شد و اکنون میریم سراغ اتصال اون به ibsng!درصورتی که با نحوه نصب ibsng اشنا نیسیتید میتوانیداز این آموزش استفاده کنید.
خب ,پس از نصب ibsng و تنظمیات اون دستورات زیر را وارد کنید:
1
2
3
4
5
6
7
8
9
|
cd
wget http://pkgs.fedoraproject.org/repo/pkgs/pam_radius/pam_radius-1.3.17.tar.gz/a5d27ccbaaad9d9fb254b01a3c12bd06/pam_radius-1.3.17.tar.gz
tar -xvf pam_radius-1.3.17.tar.gz
cd pam_radius-1.3.17
make
cp pam_radius_auth.so /lib/security/
mkdir /etc/raddb/
cp pam_radius_auth.conf /etc/raddb/server
nano /etc/raddb/server
|
اکنون دنبال دو عبارت زیر بگردید:
1
2
|
127.0.0.1 secret 1
other-server other-secret 3
|
خط دوم را به صورت کامنت در بیارید(کاراکتر# رو اولش قرار دهید) سپس بجای ۱۲۷٫۰٫۰٫۱ ای پی سرورتون رو قرار دهید و بجای secret نیز secret که در ibsng اضافه کردید رو قرار دهید(درصورتی که با اینکار اشنا نیستید به انتهای آموزش مراجعه کنید.)
سپس تنظیمات رو ذخیره و خارج شوید.
و دستور زیر را وارد کنید:
1
|
nano /etc/pam.d/ocserv
|
و ۳ خط زیر را در ان قرار دهید و سیو کنید و خارج شوید:
1
2
3
|
auth required /lib/security/pam_radius_auth.so
account required /lib/security/pam_radius_auth.so
session required /lib/security/pam_radius_auth.so
|
خب تنظمیات به پایان رسید اکنون اگر تست کنید به سرور متصل میشوید اما صفحه ای باز نمیشه و مشکل نیز مربوط به فایروال iptables میباشد بنابراین دستورات زیر وارد کنید:
1
2
3
4
|
cd /etc/sysconfig
rm -f iptables
wget http://dl.cloudha.ir/pub/ocserv/iptables
service iptables restart
|
تنظیمات به پایان رسید و با دستور زیر میتوانید ocserv را استارت / استاپ / و یا ری استارت کنید:(دستور دوم را واردکنید.)
1
2
3
|
service ocserv start
service ocserv restart
service ocserv stop
|
اکنون در ibsng یوزر بسازید و تست کنید وضعیت رو!اکنون ۲ عیبیابی میکنیم (که بنده بارها با ان مواجهه شده ام و درنهایت آموزش تنظیم ibsng و secret رو میدیم)
عیب یابی ۱) به سرور متصل میشود اما دیتا ندارد(پیج باز نمیشود) درصورتی که تنظیمات iptables رو که در چند خط بالا گفتم از صحت ان مطمئن هستید احتمال زیاد مشکل مربوط به dns میباشد جهت تنظیم dns دستور زیر وارد کنید:
1
|
nano /etc/resolv.conf
|
در اینجا درصورتی که فایل خالی است(اگر پر است پاک کنید)و خط های زیر را جایگزین نمایید:
1
2
|
nameserver 8.8.8.8
nameserver 8.8.4.4
|
خب dns های بالا مربوط به dns های گوگل میباشد؛همچنین جهت کیفیت بالاتر سرویس میتوانید از dns های دیتاسنتری که از ان سرور تهیه کرده اید استفاده کنید(درصورتی که مقدار ان را نمیدانید میتوانید از کسی که سرور تهیه کردید سوال کنید ۰ هرچند در بعضی موارد انها نیز اطلاع ندارند!)به طور مثال dns های دیتاسنتر هتزنر المان به صورت زیر میباشد:
1
2
|
nameserver 213.133.98.98
nameserver 213.133.99.99
|
همچنین میتوانید از dns های پابلیک opendns نیز استفاده کنید:
1
2
|
nameserver 208.67.222.222
nameserver 208.67.220.220
|
سپس سرور را با دستور reboot ریبوت دهید و وضعیت را دوباره بررسی کنید.(این مشکل تنها برای cisco نیست و درصورتی که سایر سرویسهایتان نیز چنین مشکلی دارند میتوانید از همین راهکار استفاده کنید.)
عیبیابی ۲) اصلا به سرور متصل نمیشود!: وضعیت cisco را با دستور service ocserv status بررسی کنید و درصورتی که درحال اجراست ممکن است مشکل از کلاینت شما باشد.
اکنون برای دوستانی که آموزش رادیوس ibsng اطلاعی ندارند:
پس از تنظیم رادیوس secret در فایل etc/raddb/serv که در آموزش بالا گفته شد (برفرض مقدار secret عبارت learnspot باشد.) وارد ibsng شده و setting در قسمت ras یک ras جدید بسازید و ras ip را ای پی سرور(ای پی که در تنظیمات وارد کرده اید) وارد کنید؛type را از نوع pppd و secret را نیز ان کلمه ای که در تنظیمات بالا قرار داده اید بگزارید(مثال: learnspot) سپس سیو کنید.