Настройка безопасного WI-FI



Technorati Tags: WiFi, Configure, openVPN, WEP, Firewall

Привет, читатели. На днях случилось событие которое я ждал без малого пол года. Наконец то мне удалось дома поднять Wi-FI сеть между своим сервером и ноутбуком. Когда я купил в ноябре свой адаптер Asus wl-167g в ноябре, я даже не предполагал сколько с ним может быть проблем :( Я никак не мог найти нормальный драйвер, и создание сети все время откладывалось. Но вчера я запустил карточку через Ndiswrapper и она заработала! ;-) То же самое я сделал с карточкой на ноутбуке, удалив драйверы из системы. Вобщем это долгая история, и я хочу описать здесь процесс защиты уже существующей сети. Так вот, начну с того, что 2 wi-fi карты без точки доступа работать могут только в режиме ad-hoc(компьютер-компьютер). В этом режиме скорость работы составляет всего 11 мб/с. А для безопасности сети возможно использование лишь WEP. А wep - это одна большая дырка, если вы используете WEP - то можете ждать незванных гостей в своей сети. Я планировал пустить через wi-fi интернет, но раздавать его на соседние квартиры как то не хотелось. Поэтому я и решил себя обезопасить. И так, в голове уже созрел адский план как усложнить нериально хакерам жизнь.

Начальные параметры
И так, для начала проверьте, защищено у вас соединение, или нет(у меня адаптер на сервере носит имя wlan0, поэтому я буду приводить листинг для него). И так, добавим WEP защиту по ключевой фразе:

linuxserver:~ # mcedit /etc/sysconfig/network/ifcfg-wlan0

Заполняем такие параметры:

WIRELESS_AUTH_MODE='sharedkey'
WIRELESS_DEFAULT_KEY='0'
WIRELESS_KEY_0='h:ВАШАКОНТРОЛЬНАЯФРАЗА'

То же самое проделываем на всех машинах, после этого запускайте wi-fi и теперь он защищен WEP по ключу. Но этого было явно недостаточно, и я решил поднять openVPN сервер, для соединения 2х компьютеров. Весь плюс этого метода заключается в том, что, допустим WEP рано или поздно хакер сможет взломать, попадет в мою сеть. Наша задача не позволить ему обнаружить компьютеры в сети, или хотя бы затруднить это сделать :)

openVPN сервер

Теперь необходимо поднять openVPN сервер. IP адрес моего сервера в wi-fi сети был 192.168.0.1, ноутбука - 192.168.0.3. Нужно настроить NAT для ноутбка, чтобы на нем был интернет.
Устанавливаем openVPN:

linuxserver:~ # zypper install openvpn

То же самое я сделал и на ноутбуке. В сети к сожалению я не нашел толкового, подробного манула по настройке и изрядно намучился.
Поэтому я приведу здесь полную последовательность команд:

linuxserver:/tmp/build # cp -rfd /usr/share/openvpn/easy-rsa . #необходимо для настройки сервера и создания сертификатов
linuxserver:/tmp/build # cd easy-rsa/2.0/

Теперь выполяем нужные нам действия:

linuxserver:/tmp/build/easy-rsa/2.0 # ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /tmp/build/easy-rsa/2.0/keys
linuxserver:/tmp/build/easy-rsa/2.0 # source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /tmp/build/easy-rsa/2.0/keys
linuxserver:/tmp/build/easy-rsa /2.0 # ./clean-all
#генерация сертификата для сервера(X.509)
linuxserver:/tmp/build/easy-rsa /2.0 # ./build-key-server server
#настройка параметров Diffie-Helman'а.
linuxserver:/tmp/build/easy-rsa /2.0 # ./build-dh
# генерация сертификата для клиента( в моем случае я назвал его laptop)
linuxserver:/tmp/build/easy-rsa /2.0 # ./build-key laptop
# генерируем общий ключ:
linuxserver:/tmp/build/easy-rsa /2.0 # openvpn --genkey --secret ta.key

Теперь необходимо скормить клиенту нужные ему файлы с ключами, т.е. вот эти файлы: ca.crt, laptop.crt, laptop.key и ta.key.
Конфиг openvpn здесь нет смысла я думаю приводить, есть куча примеров в интернете.
Хочу заметить, что я запускал на ноутбуке openvpn c правами nobody, поэтому я не мог выставлять defaultroute автоматически, vpn сервером. Поэтому я добавил в скрипт автозагрузки openvpn пару строчек:

#сразу после этой строчки в start
rc_status -v
#добавил задержку, пока установиться vpn соединение и установку default роутинга.
sleep 4;
/sbin/route add default dev tun0

И так, в SuSEfirewall2 нет возможности запретить пинг для конкретного интерфейса, поиск по гуглу какие конфиги можно редактировать кроме /etc/sysconfig/SuSEfirewall2 ничего не дал. На официальном канале меня в мирке меня отправили куда подальше. Кстати, я ни разу не получил на их канале внятного ответа, конечно, проще сказать новичку, почему не устанавливается пакет или что-то подобное, чем ответить на действительно сложный вопрос. Так вот, поэтому я не стал особо напрягаться по этому поводу и просто написал простой скрипт в три строчки:

linuxserver:~ # mcedit /usr/sbin/iptables.sh

Со следующим содержимым:

#!/bin/bash
# порт для будующего VPN:
iptables -I INPUT 1 -d 192.168.0.1 -p UDP --destination-port 1194 -j ACCEPT
# здесь у меня крутится ssh(я решил его оставить на всякий случай, если вдруг упадет openVPN):
iptables -I INPUT 1 -d 192.168.0.1 -p TCP --destination-port 8765 -j ACCEPT
#выбрасываем все остальные пакеты приходящие на интерфейс
iptables -I INPUT 3 -s 192.168.0.0/24 -j DROP

Я добавил его в автозагрузку в файл /etc/init.d/SuSEfirewall2_setup, что бы не мучиться(частичный листинг):

case "$1" in
start)
echo -n "Starting Firewall Initialization "
echo -n '(phase 2 of 2) '
$SUSEFWALL -q --bootunlock start
/usr/sbin/iptables.sh
rc_status -v
;;

По аналогии, я сделал тоже самое с ноутбуком:

iptables -I INPUT 1 -d 192.168.0.3 -s 192.168.0.1 -p UDP --source-port 1194 -j ACCEPT
iptables -I INPUT 1 -d 192.168.0.3 -s 192.168.0.1 -p TCP --source-port 8765 -j ACCEPT
iptables -I INPUT 3 -s 192.168.0.0/24 -j DROP

После этого оба компьютера не пингуются, и во всей сети есть только 2 открытых порта - 1194(vpn) и 8765(ssh). Как показало исследование nmap'ом сервер в сети не обнаружить можно если сканировать так:

Starting Nmap 4.75 ( http://nmap.org ) at 2009-05-04 10:40 MSD
Stats: 0:00:05 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 2.00% done; ETC: 10:44 (0:04:05 remaining)

Как видно, 4 часа сидеть и ждать ради скана одного компьютера, ну что же, посмотрел бы я на этого терпеливого хакера :)

GD Star Rating
loading...
Настройка безопасного WI-FI, 10.0 out of 10 based on 3 ratings

30.05.2009 · Сергей · 2 комментария (-ев)
Метки: ,  · Рубрики: Linux/SuSE

2 комментария (-ев)

  1. Max - 14.12.2009

    Спасибо за статью, правда немного сложновато для новичка.
    Я настроил раздачу через yast-squid так как пока не дружу с командной строкой.
    Вы в ifcfg-wlan0 прописали WIRELESS_AUTH_MODE=’sharedkey’, что есть WEP-Общий ключ в Yast. Я же настроил WEP-Открытый. Как написано в помощи Yast:
    Некоторые сети могут требовать аутентификацию WEP-Общий ключ. ПРИМЕЧАНИЕ: Аутентификация общим ключом делает более легкой потенциальную атаку вашей сети. Если у вас нет особых требований использования аутентификации общим ключом, используйте Открытый режим.
    Так что безопаснее?

  2. Сергей - 16.12.2009

    WEP — шифрование само по себе ненадежно. Поэтому его вобще не рекомендую использовать(это мнение специалистов). Сейчас нужно использовать WPA2. Но он работает только при использовании АП. Так что я измудрялся тут по этой причине. Сейчас я купил себе роутер от Asus и никаких проблем не испытываю с шифрованием. Использую WPA2.