Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Network File System over SSH tunnel and bypass firewall
  1. Network File System over SSH tunnel and bypass firewall
EazySnatch
     
Автор  EazySnatch (07.02.2008 15:42)  съобщение до автора
Погледнат  2898 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за Unix
    Страница 1 / 1

 



Ето как съм конфигурирал NFS server + NFS clients през SSH tunnel и защитните стени.Няма да обяснявам как съм направил NAT-a рутерите и как са свръзани спрямо комутаторите главната цел е NFS.

1.Използвани устройвства:

office 1
Router: cisco 2801
Switch: hp 2626
PC  : Linux Debian unstable Gnome 2.20.3

office 2
Router: Linux Debian stable
Server:  Linux Debian stable

Admin@root# < ----- NFS Client
stabil:~#         < ----- NFS Server

2.Кракто обяснение по диаграмата.



- Създаваме криптиран тунел от офис 1 до офис 2 с помоща на SSH
- Инсталираме NFS server на машината Office 2 следователно исталираме NFS client на комоютъра от Office 1
- Конфигуриране на NFS server & NFS client
- Отваряне на нужните портове от защитната стена.

3.Да започваме с практическата част.

3.1 Инсталиране на NFS server в Office 1 (ползвана диструбиция Debian stable ).
--- CONFIG ON OFFICE 1 (NFS server)
 CODE
1
stabil:~#apt-get -y install nfs-kernel-server


- Настройка на портовете на които ще работи NFS

 CODE
1
2
3
stabil:~#echo "STATDOPTS=--port 3443" > /etc/default/nfs-common
stabil:~#echo "options lockd nlm_udpport=3445 nlm_tcpport=3445" >> /etc/modules.conf
stabil:~#echo "RPCNFSDCOUNT=8 RPCMOUNTDOPTS='-p 3446'" > /etc/default/nfs-kernel-server



CONFIG ON OFFICE 2 (NFS client)
- Създаване на нов юзер с който ще работят публичните ключове нужни за тунелите.

 CODE
1
2
Admin@root#adduser tunnel
Admin@root#su tunnel

- Сега нека създадем публичните ключове.

Начин 1 Автоматично

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Може да ползвате скрипта който съм написал с цел по-бързо и лесно да прехвърлям публичните си ключове.Има вероятност да не работи с някой системи зависимост как сте си настроили SSH ,но на дефалтно инсталирана машина работи.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Как да го пуснем

 CODE
1
tunnel@Admin:~$nano sh.ssh_gen

Копирайте скрипта вътре и го запазете

 CODE
1
tunnel@Admin:~$chmod +x sh.ssh_gen

 CODE
1
tunnel@Admin:~$./sh.ssh_gen
Трябва да видите това

 CODE
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
tunnel@Admin:$/Desktop#./sh.ssh_gen
Enter remote username: tunnel                <--- usera който ще ползваме да се логнем
Remote username is set to tunnel 
Enter remote ip
/host address: X.X.X.X        < --- IP-то на NFS server
Remote ip
/host is set to X.X.X.X  Enter PORT: 22  < --- Понякога сменям портовете затова има и тази опция.
Remote port is 22  Your config is :User = tunnel  Host = X.X.X.X Port = 22
******
*PROGRAM MENU**********
1 - Generate & Upload New Key
2 - Upload Old Key

0 - exit

Enter choose:

#####################################################33

  1. Script


#!/bin/bash    
# This was write only for simple usage
#Valentin Hristev  System and network administrator

### Enter username and IP(or hostname) for REMOTE machine
echo -n "Enter remote username: "
read USR
echo
-n "Remote username is set to $USR  "
case $usr in
esac
echo
""

echo -n "Enter remote ip/host address: "
read HOST
echo
-n "Remote ip/host is set to $HOST  "
case $usr in
esac

#echo -n "Default SSH port is 22 if you want to change it please open ssh_gen with your favourite text editor and change "PORT=" PORT_NUMMER"


echo -n "Enter PORT: "
read PORT
echo
-n "Remote port is $PORT  "
case $usr in
esac

echo
-n "Your config is :User = $USR  Host = $HOST Port = $PORT "
 
#PORT="22"
NEWKEY="yes"

# Generate SSH keys RSA
makekey () {
if [ $NEWKEY == "yes" ]; then
ssh
-keygen -t rsa -f ~/.ssh/identity
fi
}

# Check for file "authozed_keys" if file is not there create it.

checkfile () {
if [ -f ~/.ssh/authorized_keys ]; then
touch
~/.ssh/authorized_keys
fi
}

# Check for ".ssh" if dir is not there create it.
upload () {
cat ~/.ssh/identity.pub | ssh -p $PORT $USR@$HOST 'sh -c "if [ ! -d .ssh ] ; then mkdir .ssh ; chmod 700 .ssh ; fi
cat - >>~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
'
echo "Done..................... "
}

## Main Menu
press_enter () {
echo ""
echo -n "Press Enter to continue"
read
clear
}

selection=
until [ "$selection" = "0" ]; do
echo ""
echo "*******PROGRAM MENU"**********
echo "1 - Generate & Upload New Key"
echo "2 - Upload Old Key"
echo ""
echo "0 - exit "
echo ""
echo -n "Enter choose: "
read selection
echo ""
case $selection in
1 ) checkfile ; makekey ; upload ;;
2 ) upload ;;
0 ) exit ;;
  • ) echo "Please enter 1, 2 or 0"; press_enter
esac
done

exit
0

#END

###########


Опция 1 ще ви генерира нов ключ и ще го прехвърли на системата която искате
Опция 2 Ако имате вече ключове скрипта просто ще копира стария ви ключ на новата система която искате да достъпите
!!!! моя ключ е генериран без парола затова при следващото ви логване няма да е нужно да въвеждате парола .Погледнете статиите ми за SSH за повече информация. !!!!


Начин 2  Ръчно
 
Така ще ползваме nfs_server като име на определено IP можете да си го промените спрямо вашите конфигурации
 CODE
1
Admin@root#echo "192.168.10.1    nfs_server" >> /etc/hosts

!!! TRQBVA DA STE LOGNATI S USER "tunnel"

 CODE
1
tunnel@Admin:/ssh-keygen -t rsa -b 2048


Сега отиваме на OFFICE 2 сървъра за да си настроим ключовете
 
 CODE
1
2
3
4
5
stabil:~#mkdir ~/.ssh
stabil:~#cd ~/.sshauthorized_keys
stabil:~#mv ../id_rsa.pub ./id_rsa.pub
stabil:~#cat id_rsa.pub >> authorized_keys
stabil:~#chmod 600 authorized_keys

Въведете този ред в началото на ~/.ssh/authorized_keys
client="nfs_client",command="/bin/sleep"

nfs_client  = Вашото реално ИП от което излизате от office 1 ако не го знаете просто отворете браузера и пишете www.whatismyip.com

Моя ~/.ssh/authorized_keys
####
client="nfs_client",command="/bin/sleep"ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA4zIJO2wbF+A5KcfgHMKHZU
####



Сега се връщаме на Office 1 ,за да пуснем тунетлите

 CODE
1
Admin@root#ssh nfs_server

Тук не трябва да ви иска парола ако ви иска значи имате проблем с публичните ключове ако не иска просто exit и се връщаме пак в Office 1 и продължаваме за повече информация ползвате "ssh nfs_server -v"
!!!!!!!!!!
Ако сте генерирали публичните с скрипта id_rsa трябва да бъде заменен с identity
!!!!!!!!!!
 CODE
1
2
Admin@root#ssh -f -i [i]root[/i].ssh/id_rsa -c blowfish -L 61001:nfs_server:2049 -l tunnel nfs_server sleep 600d
Admin@root#ssh -f -i [i]root[/i].ssh/id_rsa -c blowfish -L 62001:nfs_server:3446 -l tunnel nfs_server sleep 600d

Сега нека да настроим автоматичното монтиране
ВСИЧКО Е НА ЕДИН РЕД
 CODE
1
2
3
Admin@root#echo "localhost:/Data /mnt/stabil nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto" >> /etc/fstab

Admin@root#mkdir /mnt/stabil
 
Office 2 Настройка на NFS server
 CODE
1
stabil:~#nano /etc/exports
Много важна опция е "insecure" малко се измъчих докато разбера ,че зад NAT трябва да се ползва тази опиця затова ако имате ваш си рутер сложете тази опция

/Data  REAL_IP_ON_NFS_SERVER(insecure,rw,no_root_squash,no_all_squash,sync)

ПОДСИГУРЯВАНЕ

Сега нека конфигурираме малко TCP wrappers (не е задължително да се конфигурира)

 CODE
1
2
stabil:~#echo "portmap: ALL" > /etc/hosts.deny
stabil:~#echo "portmap: VASHOTO_IP/255.255.255.0" > /etc/hosts.allow

Сега да се прехвърлим на Fiwewall-a или аз ползвам iptables
 CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
IN_IP= Вашето реално ИП или просто цъкнете това на вашия реален интерфейс (eth0 ,eth1 ... etc )
IN_IP=`/sbin/ifconfig eth0 | grep inet | cut -d : -f 2 | cut -d \  -f 1`            < тази команда ви дава IP ADDRESS za eth0

######### Allow SSH NFS from WCO  #######################################################
echo "Open ports for NFS"

#LOG
iptables -A INPUT -p tcp -s 0/0 -d 0/0 -j LOG --log-prefix "Dropped by firewall: "

iptables -A INPUT -p tcp -s $IN_IP --dport 111 -j ACCEPT
iptables
-A INPUT -p tcp -s $IN_IP --dport 2049 -j ACCEPT
iptables
-A INPUT -p tcp -s $IN_IP --dport 3446 -j ACCEPT
#########################################################################################
За да хванете точно какво става с вашия NFS ползвайте #LOG след това търсете резултата в /var/log/syslog
Ето какво ще видите
Feb  7 13:01:55 Stabil kernel: TCP LOGDROP: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=Х.Х.Х.Х DST=Х.Х.Х.Х LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=37029 DF PROTO=TCP SPT=14008 DPT=3446 WINDOW=32792 RES=0x00 SYN URGP=0

Рестартираме NFS

 CODE
1
2
3
4
5
6
7
8
stabil:~# /etc/init.d/nfs-kernel-server restart
Stopping NFS kernel daemon: mountd nfsd.
Unexporting directories for NFS kernel daemon....
Exporting directories for NFS kernel daemon...exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export "Х.Х.Х.Х:/Data".
 
Assuming default behaviour ('subtree_check').
 
NOTE: this default will change with nfs-utils version 1.1.0
.
Starting NFS kernel daemon: nfsd mountd.
ТЕСТОВЕ с който ще можете да си помагате
1.Как да видя на кои портове работи сървъра
 CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
stabil:~# rpcinfo -p
  
program vers proto   port
   
100000    2   tcp    111  portmapper
   
100000    2   udp    111  portmapper
   
100003    2   udp   2049  nfs
   
100003    3   udp   2049  nfs
   
100003    4   udp   2049  nfs
   
100003    2   tcp   2049  nfs
   
100003    3   tcp   2049  nfs
   
100003    4   tcp   2049  nfs
   
100021    1   udp  16928  nlockmgr
   
100021    3   udp  16928  nlockmgr
   
100021    4   udp  16928  nlockmgr
   
100021    1   tcp  27098  nlockmgr
   
100021    3   tcp  27098  nlockmgr
   
100021    4   tcp  27098  nlockmgr
   
100005    1   udp   3446  mountd
   
100005    1   tcp   3446  mountd
   
100005    2   udp   3446  mountd
   
100005    2   tcp   3446  mountd
   
100005    3   udp   3446  mountd
   
100005    3   tcp   3446  mountd
stabil
:~#


Тестване на Firewall

 CODE
1
2
stabil:~# iptables -nL | grep 344
ACCEPT     tcp  --  X.X.X.X        0.0.0.0/0           tcp dpt:3446
Отиваме на Office 1

 CODE
1
Admin@root/mnt#mount /mnt/stabil

Това се вижда от Office 2 /var/log/syslog
 CODE
1
Feb  7 15:47:06 Stabil mountd[22825]: authenticated mount request from X.X.X.X:2696 for /Data (/Data)

Office 1 see tunnel
 CODE
1
2
3
Admin@root/mnt#ps axu | grep identity
root      8054  0.0  0.1   4988  1084 ?        Ss   13:43   0:00 ssh -f -i [i]root[/i].ssh/identity -c blowfish -L 61001:X.X.X.X:2049 -l tunnel X.X.X.X sleep 600d
root     
8061  0.0  0.1   4984   988 ?        Ss   13:43   0:00 ssh -f -i [i]root[/i].ssh/identity -c blowfish -L 62001:X.X.X.X:3446 -l tunnel X.X.X.X sleep 600d

Нека сега си направим един тест колко е бърза нашата връзка

Това ще генерира 268 МБ файл в директорияте ви mnt
 CODE
1
2
3
4
5
6
7
8
Admin@root/mnt#time dd if=/dev/zero of=/mnt/testfile bs=1M count=256 
256+0 records in
256+0 records out
268435456 bytes (268 MB) copied, 4.48962 s, 59.8 MB/s

real   
0m4.699s
user    0m0.000s
sys   
0m0.396s
Това ще генерира 268МБ файла в директорият /mnt/stabil която се явява NFS Server
  CODE
1
2
3
4
5
6
7
8
9
Admin@root/mnt#time dd if=/dev/zero of=/mnt/stabil bs=1M count=256
Запис на отдалечената машина 
(stabil) на 256 MB файл
256+0 records in
256+0 records out
268435456 bytes (268 MB) copied, 652.249 s, 412 kB/s

real   
10m52.456s
user    0m0.000s
sys   
0m0.196s
Също полезна опция за следене състоянието на сървъра
 CODE
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
stabil:~# nfsstat
Server rpc stats:
calls      badcalls   badauth    badclnt    xdrcall
1029716    0          0          0          0      

Server nfs v3:
null         getattr      setattr      lookup       access       readlink    
24        0% 344320   33% 133       0% 313282   30% 313986   30% 0         0%
read         write        create       mkdir        symlink      mknod       
8025      0% 33660     3% 31        0% 13        0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus 
21        0% 0         0% 30        0% 0         0% 0         0% 15833     1%
fsstat       fsinfo       pathconf     commit      
192       0% 24        0% 0         0% 45        0%

Client rpc stats:
calls      retrans    authrefrsh
0          0          0      

Client nfs v4:
null         read         write        commit       open         open_conf   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
open_noat    open_dgrd    close        setattr      fsinfo       renew       
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
setclntid    confirm      lock         lockt        locku        access      
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
getattr      lookup       lookup_root  remove       rename       link        
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
symlink      create       pathconf     statfs       readlink     readdir     
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
server_caps  delegreturn
Към статията съм прекрепил снимки с който виждта файловете на сървъра.











С тези 412K трафик спокойно можете да си пуснете филм или mp3 който се намират на отдалечения сървър.

eazysnatch[a_t]gmail.com
Поздрави
В.Христев



   


Ключови думи: unix firewall ssh tunnel network bypass


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008