Обучение

Обучение

Life-Hack

На самом деле это кусок 1-й части. Он про настройку файрволла и маршрутизации.

Часть 1

Часть 2

Часть 3

В правой панели WinCSP открываем папку /root. На пустом месте правой панели жмём правую кнопку мыши, выбираем New -> File. В появившемся окошке вместо “New file” пишем “ipt-set” (без кавычек) и жмём ОК. Будет создан файл с именем ipt-set и откроется окно для его редактирования. Вписываем следующее содержимое:

#!/bin/sh

IF_EXT="venet0"

IF_OVPN="tun0"


OVPN_PORT="443"

SQUID_PORT="8080"


IPT="/sbin/iptables"

IPT6="/sbin/ip6tables"


# flush

$IPT --flush

$IPT -t nat --flush

$IPT -t mangle --flush

$IPT -X

$IPT6 --flush


# loopback

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT


# default

$IPT -P INPUT DROP

$IPT -P OUTPUT DROP

$IPT -P FORWARD DROP

$IPT6 -P INPUT DROP

$IPT6 -P OUTPUT DROP

$IPT6 -P FORWARD DROP



# allow forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward


# NAT

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

# SNAT - local users to out internet

$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE


# INPUT chain

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

$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT



# ssh

$IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT

# VPN

$IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.0.0/24 -j ACCEPT

# DNS

$IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT

# openvpn

$IPT -A INPUT -i $IF_EXT -p udp --dport $OVPN_PORT -j ACCEPT


# squid

$IPT -A INPUT -i $IF_OVPN -p tcp --dport $SQUID_PORT -j ACCEPT

$IPT -A INPUT -i $IF_OVPN -p udp --dport $SQUID_PORT -j ACCEPT


# FORWARD chain

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

$IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT


# OUTPUT chain

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

$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Нужно обратить внимание на следующие моменты:

- сетевой интерфейс называется venet0. Это особенность сборки операционной системы конкретного хостера. Возможно у вас он называется eth0. Узнать, как же правильно в вашем случае можно введя в консоли команду

ip a

В получившемся выводе команды будет список сетевых интерфейсов. Один из них носит название lo , это локальная петля. А вот второй, тот, что вам нужен.


- OVPN_PORT="443" это порт используется для нашего VPN сервера. Почему именно 443? Мы же настроим VPN и для домашнего компьютера/ноутбука, и для смартфона и, возможно, для рабочего компьютера/ноутбука. Вполне возможно, что ваше устройства окажется в сети (например, корпоративный Wi-Fi), где все порты кроме самых базовых запрещены. 443 точно будет разрешен, а VPN серверу без разницы на каком порту «висеть». Да и активность на этом порту не будет подозрительной.


- SQUID_PORT="8080"

$IPT -A INPUT -i $IF_OVPN -p tcp --dport $SQUID_PORT -j ACCEPT

$IPT -A INPUT -i $IF_OVPN -p udp --dport $SQUID_PORT -j ACCEPT

подключения к прокси-серверу мы будем принимать на порт 8080 и только от тех, кто уже подключился к VPN, мамкины кулхацкеры идут лесом.


- $IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT

клиенты VPN будут видеть друг друга. Т.е. ваш смартфон будет видеть ваш компьютер если оба они подключились к VPN. Это удобно для расшаривания контента.

Сохраняем получившийся файл. Кликаем на нём правой кнопкой мыши, выбираем Properties и отмечаем галочками все квадратики с буквой X (третий столбик квадратиков). Обратите внимание, в поле Octal получится число 0755. Можно задать свойства файла введя сразу нужное чиасло в это поле, а не выбирая свойства галочками. В дальнейшем мы так и бедуем делать. Я просто буду писать число, которое вам нужно будет вписать в это поле.

Жмём ОК. В консоли PuTTY выполняем команду:

/root/ipt-set

а затем команду:

iptables -L -n

Наши правила применились. Закрываем окно putyy, открываем заново и пробуем подключится. Если подключились, значит вы нигде выше не ошиблись и правила работают. Но работать они будут до перезагрузки сервера. Если что-то не так, ребутим сервер из консоли управления и пробуем заново.

Добавим правила в автозапуск. В правой панели WinCSP переходим к папке /etc/systemd/system/ и создаем файл с именем ipt-settings.service со следующим содержимым:


[Unit]

Description=Iptables Settings Service

After=network.target


[Service]

Type=oneshot

User=root

ExecStart=/root/ipt-set


[Install]

WantedBy=multi-user.target

В свойствах файла (см. выше) указываем права 0644.

Теперь в консоли вводим команду

systemctl enable ipt-settings

В ответ получим:

Created symlink from /etc/systemd/system/multi-user.target.wants/ipt-settings.service to /etc/systemd/system/ipt-settings.service.

Таким образом мы создали службу, которая будет применять наши правила при каждой перезагрузке системы.

Проверим, что всё работает как задумано. Перезагрузим сервер командой reboot, подключимся к нему и введем команду

iptables -L -n


Должны получить то, что было на последнем скриншоте (см. выше).