Vpn_Vpn_SSh-world

Задача – настроить цепочку серверов что бы траффик от клиента передавался первого второму и дальше по цепочке.
Первый и второй сервера настраиваются как OpenVPN сервера. Настройка первого сервера.

serv_1 и serv_2

#add repo EPEL
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

#setup openvpn
yum install openvpn

#setup easy-rsa
yum install easy-rsa

#setup screen to create multi window session
yum install screen

Далее создаем несколько окон screen на севрере_1. В каждом таком окошке у нас будет открыты сессии на нужен сервера.

#start screen session
screen -RD

#create new window in screen
Contral+a C

В первом скрине пусть у нас будет подключение и настройки нашео первого сервера. Во втором скрине мы по ssh подключаемся к серверу_2. В третьем – поделючаемся к серверу_2 а снего к серверу_3 по ssh.

#create conf and dir to openvpn
touch /etc/openvpn/server.conf
touch /etc/openvpn/ip.sv
mkdir /var/log/openvpn
chown openvpn.openvpn /etc/openvpn/*

#create key and cert
cd /usr/share/easy-rsa/2.0/
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
./build-key client01
openvpn –genkey –secret ta.key

#copy keys to conf dir
mkdir /etc/openvpn/key
mkdir /etc/openvpn/tls
cd /usr/share/easy-rsa/2.0/keys
cp {server.crt,server.key,dh2048.pem,ca.crt} /etc/openvpn/key/
cp ../ta.key /etc/openvpn/tls

#create vpn server conf
vim /etc/openvpn/server.conf
local 8.8.8.8 # тут IP нашего сервака на котором висит сервис ВПН
port 443 # Я указываю 443 порт что бы пользоваться ВПН там где блокируют подключения на выше чем 1024 порт
proto tcp
dev tun0
client-to-client
ca /etc/openvpn/key/ca.crt
cert /etc/openvpn/key/server.crt
key /etc/openvpn/key/server.key
dh /etc/openvpn/key/dh2048.pem
server 10.10.20.0 255.255.255.0
tls-server
ifconfig-pool-persist /etc/openvpn/ip.sv
push «dhcp-option DNS 8.8.8.8»
push «redirect-gateway»
keepalive 10 120
tls-auth /etc/openvpn/tls/ta.key 0
cipher AES-256-CBC
auth SHA512
comp-lzo
max-clients 2
user openvpn
group openvpn
persist-key
persist-tun
status /dev/null
log-append /dev/null
verb 0
mute 0

#routing on
echo 1 > /proc/sys/net/ipv4/ip_forward
sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g’ /etc/sysctl.conf

#vpn start
/etc/init.d/openvpn start

#add iptables rule
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE

#copy keys and create tar arhive
cp /etc/openvpn/tls/ta.key /usr/share/easy-rsa/2.0/keys/
tar zcvf /root/keys.tgz /usr/share/easy-rsa/2.0/keys/

копируем к себе на комп архив со всеми ключами и сертами, нам для работы из архива нужны будут только:
ca.crt dh2048.pem client.crt client.key ta.key

я к себе на комп копирую так
cd /etc/openvpn
scp root@8.8.8.8:/root/keys.tgz /etc/openvpn

#make client cnfig file
vim /etc/openvpn/client.conf

client
tls-client
dev tun
proto tcp
remote 8.8.8.8 443 #тут IP serv_1
persist-key
persist-tun
ca /etc/openvpn/ca.crt
dh /etc/openvpn/dh2048.pem
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
tls-auth /etc/openvpn/ta.key 1
cipher AES-256-CBC
auth SHA512
comp-lzo
verb 4
mute 20
log-append /var/log/openvpn/openvpn_client.log
status /var/log/openvpn/status_client.log

Стартуем ВПН и проверяем его работу. Еси все в норме и мы видим при подключении к сайтам не свой IP а сервеар – занчит все в норме и можно настраивать серевр_2

#########################

Сервер_2

#add repo EPEL
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

#setup openvpn
yum install openvpn

#setup easy-rsa
yum install easy-rsa

#create conf and dir to openvpn
touch /etc/openvpn/server.conf
touch /etc/openvpn/ip.sv
mkdir /var/log/openvpn
chown openvpn.openvpn /etc/openvpn/*

#create key and cert
cd /usr/share/easy-rsa/2.0/
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
./build-key client01
openvpn –genkey –secret ta.key

#copy keys to conf dir
mkdir /etc/openvpn/key
mkdir /etc/openvpn/tls
cd /usr/share/easy-rsa/2.0/keys
cp {server.crt,server.key,dh2048.pem,ca.crt} /etc/openvpn/key/
cp ../ta.key /etc/openvpn/tls

#create vpn server conf
vim /etc/openvpn/server.conf
local 9.9.9.9 # тут IP нашего сервака на котором висит сервис ВПН
port 53
proto udp
dev tun0
client-to-client
ca /etc/openvpn/key/ca.crt
cert /etc/openvpn/key/server.crt
key /etc/openvpn/key/server.key
dh /etc/openvpn/key/dh2048.pem
server 10.10.30.0 255.255.255.0
tls-server
ifconfig-pool-persist /etc/openvpn/ip.sv
push «dhcp-option DNS 8.8.8.8»
keepalive 10 120
tls-auth /etc/openvpn/tls/ta.key 0
cipher AES-256-CBC
auth SHA512
comp-lzo
max-clients 2
user openvpn
group openvpn
persist-key
persist-tun
status /dev/null
log-append /dev/null
verb 0
mute 0

#routing on
echo 1 > /proc/sys/net/ipv4/ip_forward
sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g’ /etc/sysctl.conf

#vpn start
/etc/init.d/openvpn start

#add iptables rule
iptables -F
iptables -t nat -A POSTROUTING -s 10.10.30.0/24 -o tun2 -j MASQUERADE

#copy keys and create tar arсhive
cp /etc/openvpn/tls/ta.key /usr/share/easy-rsa/2.0/keys/
tar zcvf /root/keys.tgz /usr/share/easy-rsa/2.0/keys/

копируем на сервер_1 архив со всеми ключами и сертами, нам для работы из архива нужны будут только:
ca.crt dh2048.pem client.crt client.key ta.key

я к себе на комп копирую так (на сервер то же так можно)
mkdir /etc/openvpn/client
cd /etc/openvpn/client
scp root@9.9.9.9:/root/keys.tgz /etc/openvpn/client

#make client cnfig file
vim /etc/openvpn/client/client.conf

client
tls-client
dev tun
proto tcp
remote ip_serv_2 53
persist-key
persist-tun
ca ca.crt
dh dh2048.pem
cert client.crt
key client.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA512
comp-lzo
verb 4
mute 20
log-append /var/log/openvpn/openvpn_client.log #логи оставляю на период тестирования.
status /var/log/openvpn/status_client.log

#start vpn clietn on server_1
nohup openvpn –config client.conf &

проверяем все ли в норме и подключились ли, это будт видно по наличию tun1 интерфейса
ifconfig|grep tun1

tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

Так как клиент у меня завелся без пролем, начинаю настройку переброски траффикана сервере_1 в сторону сервера_2

на сервере_1 делаю

cat /etc/iproute2/rt_tables|grep vpn.out||echo ‘150 vpn.out’ >> /etc/iproute2/rt_tables
ip rule add from 10.10.20.0/24 table vpn.out
ip route add default dev tun1 table vpn.out
iptbles -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -o tun1 -j MASQUERADE

Подключаемся клиентом опять по ВПН и проверяем все ли в норме работаети нет ли каких то проблем с подключением. Если все верно сделали – то при проверке будет IP сервера_2

Далее у нас настраиваем сервер_3. Тут наша задаач сделать ssh тунель но не мапить порты.

На сервере3 в настройках ssh прописываем
vim /etc/ssh/sshd_config

PermitTunnel point-to-point
/etc/init.d/sshd restart

для автостарта туннеля нужно настроить автоматическую авторизацию между сервер_2 и сервер_3, для этого

генерим ключи на сервере_2
ssh-keygen
жмем везде энтер
cat /root/.ssh/id_rsa.pub
копируем строку что нам вывело:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1dCfnyH0KUSnD/PEYiTeft7Ri7t7rSKNh93HCoXIH6BS/CUkX4+dqOEQ4hYuFGq0zHedrTuDLgpw1wObhOoD6NcDZCUKb1KNCOZoYWpSNkJeZiYwtx3b/nlNDZhjPbsbowc/YJ1tKZO7cUCkSiJFUPkU193+MTGI/Q+hkXymFrPsln7n/XxiaL41AWIpkMUqqKAZeFP3XTxciSUK4qFNGu6V/Z6E9sIbejcFJV++Ds7+uxoABbnJwifC80Q/QaQs9m5yzirBkYsKUumff67hr1IM6Po+4LVfshTEU+RbGtwgce3zMqCsh59A/1TMn2PcazdtKlXQ/jfIcXSN6WX+iw== root@test-vpn-2.tld
идем на сервере_3
vim /root/.ssh/authorized_keys
вставляем всю строку сюда:
tunnel=”2″,command=”/sbin/ifdown tun2;/sbin/ifup tun2″ ssh-rsa AAAAB…..iw== root@test-vpn-2.tld

Важно что бы строка была именно в одну строку.

##
vim /etc/rc.d/rc.local

/sbin/ifdown tun2
sleep 120
/usr/bin/ssh -w 2:2 root@ip_serv_3 true &
sleep 5
/sbin/ifup tun2
#
vim /etc/sysconfig/network-scripts/ifcfg-tun2

DEVICETYPE=tunnel
STARTMODE=manual
BOOTPROTO=static
TYPE=IPIP
DEVICE=tun2
TTL=64
MTU=1428
MY_OUTER_IPADDR=ip_serv_2
PEER_OUTER_IPADDR=ip_serv_3
MY_INNER_IPADDR=10.0.0.2
PEER_INNER_IPADDR=10.0.0.1
#
vim /etc/sysconfig/network-scripts/rule-tun2

from 10.10.30.0/24 table vpn.out
#
vim /etc/sysconfig/network-scripts/route-tun2

default dev tun2 table vpn.out
###
делаем один раз на сервере_2
cat /etc/iproute2/rt_tables|grep vpn.out||echo ‘150 vpn.out’ >> /etc/iproute2/rt_tables
#
ssh root@ip_serv_3
вводим YES
получаем ошибку – все хорошо.
####

сервер_3
#
vim /etc/sysconfig/network-scripts/ifcfg-tun2

DEVICETYPE=tunnel
#STARTMODE=manual
ONBOOT=no
BOOTPROTO=static
TYPE=IPIP
DEVICE=tun2
TTL=64
MTU=1428
MY_OUTER_IPADDR=ip_serv_3
PEER_OUTER_IPADDR=ip_serv_2
MY_INNER_IPADDR=10.0.0.1
PEER_INNER_IPADDR=10.0.0.2
#
iptables -F
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
/etc/init.d/iptables save
echo 1 > /proc/sys/net/ipv4/ip_forward
sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g’ /etc/sysctl.conf

##############################

Чистка:

на каждом сервере:

ln -sf /dev/null /root/.bash_history
/etc/init.d/rsyslog stop
chkconfig –del rsyslog

/etc/init.d/postfix stop
chkconfig –del postfix

chkconfig –level 345 openvpn on
###

Лично я не доверяю написанному кем то софту и делаю чистку вот таким образом через крон:

crontab -e
* * * * * cd /var/log; /bin/find . -type f -exec cp /dev/null {} \;

или так (брутально)

yum install wipe

* * * * * cd /var/log; /usr/bin/wipe -rf /var/log/*

Можно воспользоваться сторонним софтом типа vanish или whitecat

vanish – безнадежно устарел, gcc его не хочет собирать, ругается на устаревшие функции.

whitecat – чистит опредеднные записи из лога.

wipe – удаляет файлы с системы с перепрогоном по мету где лежал файл в несколько итераций.

0 голосов

Залишити відповідь

Войти с помощью: 

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*
*
Website