[HOW-TO] firehol + moblock

Damian
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 02 kwie 2007, 11:18
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: XFCE
Architektura: x86_64
Kontakt:

[HOW-TO] firehol + moblock

Post autor: Damian » 15 sie 2007, 09:58

Ostatnio postawiłem sobie za zadanie skonfigurowanie firewalla FireHOL i narzędzia do blokowania niechcianych ip o nazwie MoBlock. Mały problem się pojawił, gdy się okazało, że w repozytorium jest tylko stara wersja FireHOL (a na stronie projektu paczka rpm), a MoBlock trzeba ściągnąć z repo debiana. Ale nic nie jest niemożliwe :smile: Ponieważ chciałem załatwić sprawę raz na zawsze, powstał mały skrypcik. Automatycznie zmienia wpisy w odpowiednich plikach, jednakże konfiguracja firewalla jest sprawą indywidualną, zaproponowana przeze mnie zapewnia ochronę od razu po instalacji, ale niektórzy (większość?) będą chcieli ją dostosować do swoich potrzeb. Skrypt powstał na szybko, nie sprawdza poprawności wykonywanych operacji, dlatego należy przyglądać się konsoli podczas pracy.

Kod: Zaznacz cały

#! /bin/bash
#
# by dmn
#
# !!! należy odblokować repozytorium universe !!!

# utworzenie tymczasowego folderu
mkdir fireholtemp
cd fireholtemp

##alien:##
sudo apt-get install --yes alien

##gawk:##
sudo apt-get install gawk

##firehol:##
# pobranie paczki z sourceforge w najnowszej wersji
paczka=`w3m -dump_source http://sourceforge.net/project/showfiles.php?group_id=58425 | grep -i noarch\.rpm | grep -i href | head -1`
paczka=`echo $paczka | awk '{k=$0; k=substr(k,index(k,"href=")+6); k=substr(k,1,index(k,"rpm")+2); print(k); }'`
echo $paczka
wget $paczka
# konwersja na *.deb
sudo alien -d firehol*.rpm
# instalacja i usunięcie pozostałości
sudo dpkg --install firehol*.deb
rm firehol*.rpm
rm -f firehol*.deb
# dodanie do automatycznego startu
# usunięcie automatycznego startu: sudo update-rc.d -f firehol remove
sudo update-rc.d firehol start 41 S . start 36 0 6 .

##firehol - konfiguracja podstawowa:##
sudo sh -c 'cat > /etc/firehol/firehol.conf << "EOF"
version 5

# Accept all client traffic on any interface
#interface any world
#	client all accept

# Moblock chain
iptables --new MOBLOCK_IN
iptables --new MOBLOCK_OUT
iptables --new MOBLOCK_FW
iptables -A MOBLOCK_IN -j NFQUEUE
iptables -A MOBLOCK_OUT -j NFQUEUE
iptables -A MOBLOCK_FW -j NFQUEUE

# Bittorrent. tcp ports 6881 to 6999
server_torrent_ports="tcp/6881:6999"
client_torrent_ports="default"

# "any" means any interface, you can substitute it
# for eth0 or whatever.

interface any world

	protection strong
	policy drop

	# Let torrent and exampleport through, and
	# filter them in moblock.
	server "torrent" MOBLOCK_IN

	# This will send http traffic directly
	# to accept instead of moblock
	# thus whitelisting it...
	client http accept
	client pop3 accept
	client pop3s accept

	# Filter all outgoing connections, and their replies.
	client all MOBLOCK_OUT
EOF'

##moblock:##
# pobranie paczki z sourceforge w najnowszej wersji
paczka=`w3m -dump_source http://moblock-deb.sourceforge.net/debian/dists/unstable/main/binary-i386/net/ | grep moblock-nfq | awk '{k=$0; k=substr(k,index(k,"HREF=")+6); k=substr(k,1,index(k,"\">")-1); print(k); }'`
paczka="http://moblock-deb.sourceforge.net/debian/dists/unstable/main/binary-i386/net/${paczka}"
echo $paczka
wget $paczka
# instalacja zależności i pobranej paczki
sudo apt-get install libnetfilter-queue1 libnfnetlink1
sudo dpkg --install moblock-nfq*.deb
# usunięcie pozostałości
rm moblock-nfq*.deb
# zatrzymanie moblock, będziemy edytować konfigurację
sudo /etc/init.d/moblock-nfq stop

# edycja pliku /etc/moblock/MoBlock-nfq.sh, zmiana "ACTIVATE_CHAINS=1" na "ACTIVATE_CHAINS=0"
pushd /etc/moblock/
# numer linijki, w której jest "ACTIVATE_CHAINS="
n=`cat MoBlock-nfq.sh | grep "ACTIVATE_CHAINS=" --line-number --only-matching | awk '{ k=$0; print(substr(k,1,length(k)-17)); }'`
# skopiowanie nagłówka pliku
sudo sh -c "head -$(( $n - 1 )) MoBlock-nfq.sh > tmp-2"
# dodanie linijki
sudo sh -c "echo 'ACTIVATE_CHAINS=0' >> tmp-2"
n2=`cat MoBlock-nfq.sh | wc -l`
n2=$(( $n2 - $n))
# dodanie wszystkiego poniżej zamienianej linijki z oryginalnego pliku
sudo sh -c "tail -$n2 MoBlock-nfq.sh >> tmp-2"
#zastąpienie pliku
sudo mv -f tmp-2 MoBlock-nfq.sh
sudo chmod 744 MoBlock-nfq.sh
popd

# uruchomienie usług
sudo /etc/init.d/firehol start
sudo /etc/init.d/moblock-nfq start

# usunięcie tymczasowego folderu
cd ..
rm -rv fireholtemp
Skrypt zapisujemy do dowolnego pliku, nadajemy mu prawa do wykonywania (chmod +x nazwaskryptu) i uruchamiamy.
Strony z których korzystałem:
Strona projektu FireHOL
Strona projektu MoBlock
Wątek na ubuntuforums.org
Opis instalacji MoBlock i FireHOL (uwaga - tylko dla starszych wersji)
ODPOWIEDZ

Wróć do „Software-Sieć”