Blokowanie stron poza wybranymi


#1

Witam.

Opisów jak blokować wybrane strony jest cała masa, a mnie interesuje sytuacja odwrotna. Muszę zablokować dostęp do wszystkich stron, poza 2,3 wybranymi. Jak to zrobić w najprostszy sposób?


(Drobok) #2

http://www.linuxquestions.org/questions ... me-128024/


#3

Dzięki, ale coś mi nie działa.

Do squid.conf dopisałem

acl whitelist dstdomain "/etc/squid/whitelist"

http_access deny !whitelist

stworzyłem plik /etc/squid/whitelist, dodałem adresy wg wzoru i nic. Bez zmian. Coś przegapiłem?


(Drobok) #4

sqid to proxy, trzeba je ustawić (/etc/sysconfig/proxy)

HTTP_PROXY="localhost"

HTTPS_PROXY="localhost"
  • dodać do autostartu

    chkconfig –level 3 squid

. Może się trochę zapędziłem z tą poradą (to bardziej by pasowało pod serwer), niestety nie mam tego na czym przetestować. Spróbuj ustawić iptables (zamiast tego proxy), oc jeśli nie masz serwera

#Flush existing rules

iptables -F

# Set up default DROP rule for eth0

iptables -P INPUT DROP

# Allow existing connections to continue

iptables -A INPUT -i eth0 -m state EXISTING,RELATED -j ACCEPT

# Accept everything from the 192.168.1.x network

iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT

# Allow connections from this host to 192.168.2.10

iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT

Gdzie powtarzasz ip stron mających mieć dostęp ostatnią linią (zmieniając ip)

Mógłby się udzielić, ktoś kto na linuxie siedzi na co dzień :slight_smile:


(roobal) #5

Mógłby :slight_smile:

Sam myślałem właśnie nad zaciągnięciem do tego zapory, z tym, że musiałbyś znać adresy IP tych stron, najlepiej znać cały zakres, pingując np. domenę należącą do FB, widać, że IP się zmienia co jakiś czas.

Nie wiem jak masz skonfigurowaną zaporę, najwyżej dopasujesz to pod swoje potrzeby.

iptables -F


# Polityka bezpieczeństwa (blokuje cały ruch sieciowy)


iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP


# Reguły podstawowe


iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i lo -j ACCEPT

iptables -A OUTPUT -m state --state NEW -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT


# Reguły dla adresów, które nie będą blokowane


iptables -A OUTPUT -p tcp -d adres_ip_domeny --dport 80 -j ACCEPT

Pozdrawiam!


#6

Dzięki panowie.

Jak znajdę chwilkę, to przetestuję na wirtualu i sprawdzę jak to działa.


(roobal) #7

Zapomniałem jeszcze wyjaśnić, ta reguła

iptables -A OUTPUT -p tcp -d adres_ip_domeny --dport 80 -j ACCEPT

zezwala na nawiązanie połączenia tylko dla protokołu tcp i tylko na port docelowy 80, jeśli chciałbyś zezwalać na wszystko dla tego adresu, wystarczy skrócić regułkę

iptables -A OUTPUT -d adres_ip_domeny -j ACCEPT

Pozdrawiam!


#8

Dzięki, działa.

Niestety, do reguł musiałem dodać jeszcze te wszystkie google-analytics, gemiusy i inne śmieci, ale działa.

Edit:

Dział, ale tylko do restartu systemu. Niby wykonałem iptables-save, ale po restarcie reguł brak.


(Drobok) #9

Niestety taki jest urok blokowania wszystkiego poza :slight_smile:

To coś w stylu cis i jego domyślnego blokowania (czasami boli).

Zapisałeś, ale musisz też przywracać przy starcie. Możesz to zrobić autouruchamiając restore przy starcie systemu:

echo "#!/bin/sh" > /etc/network/if-up.d/iptables 

echo "iptables-restore < /etc/firewall.conf" >> /etc/network/if-up.d/iptables 

chmod +x /etc/network/if-up.d/iptables

Albo wrzucając przywracanie do uruchamiania interfejsu (/etc/network/interface):

pre-up iptables-restore < /etc/iptables.conf

Lub instalując iptables-persistent

apt-get install iptables-persistent

(roobal) #10

Iptables-save zapisuje reguły do pliku, możesz to zrobić, np. tak:

iptables-save > rules

iptables-restore rules

lub stworzyć skrypt Basha z regułami i wrzucić go do skryptów startowych, lub tak, jak opisał drobok.

Pozdrawiam!


#11

Zrobiłem to w ten sposób i w końcu wszystko działa jak należy.

Jeszcze raz dzięki Panowie za pomoc.


(Powerfeniks) #12

Tak z ciekawosci panowie, moze sie myle ale czy przypadkiem wyedytowanie "hostow" nie bylo by prostsze?


(Drobok) #13

Rzeczywiście szybciej by było ALL: ALL w /etc/hosts.deny postawić, a dodać wszystko do /etc/hosts.allow (nie używałem tego nigdy, nie wpadłem na to)


#14

Ha, najprostsze rozwiązania czasami umykają. Ale nic straconego. Wszystko działa jak miało działać, a ja przynajmniej czegoś o iptables się nauczyłem.


(roobal) #15

Owszem można edytować hosty i jest to z pewnością łatwiejsze rozwiązanie, ale zapora odrzuca od razu zbędne pakiety.

Pozdrawiam!