LINUX-BG   Адрес : http://www.linux-bg.org
Проста защитна стена.
От: Yordan Georgiev
Публикувана на: 26-10-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=366268001
Как да си направим защитна стена за по малко от пет минути !

ВНИМАНИЕ: Статията е предназначена за начинаещи !




На дадения момент чета една много интересна книга – Сърварни хакове за Линукс, с автор Роб Фликенджър и издателство O’Reilly. Четейки си тази увлекателна книга (препоръчвам на всички, имащи възможността, да си я закупят – преведена е на български и издадена от издателство ЗеСТ Прес) стигнах до Хак #45 “Създаване на защитна стена от команден ред на всеки сървар”.

На кратко е описан един шел скрипт, с чиято помощ можем за раздавам достъп до машината си. Използват се три основни “групи” потребители:
1.Потребители от който ще приемем всичкия трафик. Тези машини и мрежи ще запишем в whitelist.
2.Потребители на които ще откажем достъпа до машината ни. Въвеждаме ги в blacklist.
3.И третата група са всички останали. На тези потребители ще дадем достъп, но само н определени портове, които ще запишем в allowed.

Преди да продължа искам да спомена как ще записваме потребителите. За всяка една група създаваме текстови файл. Аз го права така:
•Създавам директорията /etc/myfirewall
•Съответно за всяка група по един текстови файл със съответното има.
В резултат на което трябва да имаме:
/etc/myfirewall/witelist.txt
/etc/myfirewall/blacklist.txt
/etc/myfirewall/allowed.txt

И последно преди да покажа самия скрипт, нека да видим, как ще използваме тези текстови (конфигурационни) файлове. В първите два ще ни се налови да въвеждаме машини и мрежи. Това става като на всеки ред, въвеждаме дадената машина или мрежа
Пример:
#192.168.0.1
192.168.10.5
192.168.5.0/26
В този пример виждаме следното. Първия ред започва с #, което означава, че няма да играе в настройките. Всеки такъв ред в “коментар”. Втория показва, как се въвежда машина и последни как става това с мрежа.
Във файла allowed въвеждаме портовете, който трябва да са достъпни от потребителите, не участващи в горните два файла.

Ето и самия скрипт, който използва iptables:


#!/bin/sh
whitelist=/etc/myfirewall/witelist.txt
blacklist=/etc/myfirewall/blacklist.txt
allowed=/etc/myfirewall/allowed.txt

# iztriwame predi6nite nastroiki

iptables –F

#obhojadme whitelist, priemaiki celiqt trafik ot mrejite i ma6inite w spisaka
for white in `grep –v ^# $whitelist | awk ‘{print $1}’`; do
echo “Permitting $white…”
iptables –A INPUT –t filter –s $white –j ACCEPT
done

#obhojadme blacklist, othwarlqiki celiqt trafik ot mrejite i ma6inite w spisaka
for black in `grep –v ^# $blacklist | awk ‘{print $1}’`; do
echo “Blocking $black…”
iptables –A INPUT –t filter –s $black –j DROP
done

# i nakraq portowete pozwoleni za ma6inite koito ne sa w spisaka na lo6ite mom4eta
for port in `grep –v ^# $allowed | awk ‘{print $1}’`; do
echo “Accepting port $port…”
iptables –A INPUT –t filter –p tcp --dport $port –j ACCEPT
done

#oswen ako ne se spomenawa po-gore I stawa wapros
#za whodq6ta zaqwka za startirane na wrazka, prosto q otkazwame.
iptables –A INPUT –t filter –p tcp --syn –j DROP

Е това е скрипта, състой се само от 18 реда – какво по лесно от това. Става за домашна употреба и не само.
Искам да обърна внимание и на още някои неща:
1.За използването на iptables са необходими root права. Ако искате да стартирате скрипта от друг потребител се консултирайте с “man sudo”
2.Обърнете внимание и кой има достъп и какъв до конфигурационните файлове.
3.Както се казва в книгата, от която е цитата, прилагайте въображение и променяйте хаковете. Моят принос за този хак е използването на файл за портовете (преди това бяха в променлива и ми се стори, че по-удачно е да са във файл).

И накрая искам да ви дам една задачка. Какво ще стане , ако прибавим в скрипта
iptables –t nat –A POSTROUTING –o $EXT_IFACE –j MASQUERADE
Отговора е ШЛЮЗ.

Очаквам въпроси, обиди и каквото ви дойде на ум.



Йордан Георгиев – GigaVolt


E-mail: gigavolt@abv.bg
WEB:http://gigavolt.hit.bg

<< САГА ЗА POSIX или УВОД В POSIX'ИВИЗМА | Slackware и Promise FastTrak 378 RAID контролер >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.18 usr + 0.02 sys = 0.20 CPU)