Iptables Tomato
|
susser |
Dodano 30-11-2014 15:22
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
Dzien dobry,
chcialbym sie dowiedziec, czy jest mozliwosc zablokowania za pomoca iptables calego kraju i jak napisac taka regulke?
Pozdrawiam |
|
|
|
cross |
Dodano 30-11-2014 19:29
|
User
Posty: 62
Dołączył: 09/08/2014 02:39
|
całego kraju? Musisz znać adresację klas IP dla tego kraju. (jakie adresy IP są w danym kraju a to może być mozolna sprawa) - to jest rozwiązanie dla hostów bez resolv'a czyli zmiany domeny odwrotnej w skrócie bez domeny w adresie. A co do pozostałości. Każdy kraj ma swoją uniwersalną domenę zazwyczaj jest to *.de *.pl itd wystarczy zablokować ruch przez router FORWARD do danej domeny. |
|
|
|
susser |
Dodano 30-11-2014 20:33
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
Witam,
dzieki za odpowiedz,
tylko ze jak dam cos takiego iptables -A INPUT -m geoip --src-cc CN,UA,TW -j DROP
to tomato mowi, ze nie ma takiej paczki... |
|
|
|
cross |
Dodano 01-12-2014 00:19
|
User
Posty: 62
Dołączył: 09/08/2014 02:39
|
http://man.sethuper.com/iptables-blokowanie-adresow-ip-wedlug-krajow
Bo ją trzeba pobrać pierw. |
|
|
|
susser |
Dodano 01-12-2014 11:26
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
wiec sciagnalem paczke, tylko jakos nie chce ruszyc moglbys prosze napisac jak dokladnie moglbym to zrobic, paczke sciagnalem pod optware... |
|
|
|
shibby |
Dodano 01-12-2014 12:39
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
w moim tomato masz moduł ipset, użyj go
przykład
http://blog.laimbock.com/2013/09/22/how-to-block-countries-with-ipdeny-ip-country-blocks-ipset-and-iptables-on-el6/
interesuje cię od "Really big hammer R11; block an entire country"
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
susser |
Dodano 01-12-2014 16:53
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
jakos to nie chce dzialac shibby...
robie tak:
root@SerVer:/tmp/home/root# for IP in $(wget -O R11; http://www.ipdeny.com/ipblocks
/data/countries/ru.zone{RU}.zone)
> do
> ipset -A geoblock $IP
> done
Connecting to www.ipdeny.com (192.241.240.22:80)
wget: server returned error: HTTP/1.1 404 Not Found
i lipa... |
|
|
|
kamilj |
Dodano 01-12-2014 17:07
|
Moderator
Posty: 982
Dołączył: 28/12/2011 12:24
|
for IP in $(wget -O - http://www.ipdeny.com/ipblocks/data/countries/ru.zone)
do
# really big hammer - block countryX, period
sudo ipset add geoblock $IP
done
zobacz tak
------------------------------------------------------------------------------
[b] RegulaminOpenlinksys.info v0.1
[url=http://openlinksys.info/forum/viewthread.p
|
|
|
|
susser |
Dodano 01-12-2014 17:24
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
teraz jest takie cos:
-sh: sudo: not found
-sh: sudo: not found
-sh: sudo: not found
-sh: sudo: not found
-sh: sudo: not found
-sh: sudo: not found
Połączony z 01 December 2014 17:29:22:
a bez sudo wyglada to tak:
Try `ipset -H' or 'ipset --help' for more information.
Bad argument `add'
Połączony z 01 December 2014 17:53:17:
ogolnie juz przy wydaniu pierwszej komendy jest lipa, bo nie moze znalezc modulu
modprobe -v ipset
modprobe: module ipset not found in modules.dep
Edytowany przez susser dnia 01-12-2014 17:53
|
|
|
|
sapcio2 |
Dodano 01-12-2014 19:54
|
Power User
Posty: 352
Dołączył: 21/11/2012 19:45
|
A czy czasem ten moduł w tomato nie nazywa się ip_set ??
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Asus RT-N16 - tomato-K26USB-1.28.RT-N5x-MIPSR2-115-NEWDRIVER
|
|
|
|
susser |
Dodano 01-12-2014 20:17
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
racja nazywa sie ip_set, tylko, ze to i tak nic nie daje, jak wpisze to:
ipset create geoblock hash:net
to dostaje:
Bad argument `create'
Try `ipset -H' or 'ipset --help' for more information.
a u was to dziala?
Połączony z 03 December 2014 11:04:22:
ogolnie nic nie dziala, czy mielibyscie moze jakies propozycje, jest to dla mnie bardzo wazne...
Z gory dziekuje i pozdrawiam
Edytowany przez susser dnia 03-12-2014 11:04
|
|
|
|
kamilj |
Dodano 03-12-2014 11:41
|
Moderator
Posty: 982
Dołączył: 28/12/2011 12:24
|
Tyle że nadal wpisujesz ipset zamiast ip_set
sudo ip_set add geoblock $IP
Takie wpisanie też nic nie daje ??
------------------------------------------------------------------------------
[b] RegulaminOpenlinksys.info v0.1
[url=http://openlinksys.info/forum/viewthread.p
|
|
|
|
susser |
Dodano 03-12-2014 12:39
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
niestety pokazuje sie to:
-sh: ip_set: not found |
|
|
|
kamilj |
Dodano 03-12-2014 14:53
|
Moderator
Posty: 982
Dołączył: 28/12/2011 12:24
|
Może ten link coś ci podpowie
http://www.varlog.pl/2010/03/ipset-zn...-nieznany/
------------------------------------------------------------------------------
[b] RegulaminOpenlinksys.info v0.1
[url=http://openlinksys.info/forum/viewthread.p
|
|
|
|
shibby |
Dodano 03-12-2014 16:01
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
eh to była tylko wskazówka a nie tutorial kopiuj/wklej dla tomato :/
tu jest dobrze opisane:
https://github.com/RMerl/asuswrt-merlin/wiki/Using-ipset
oczywiście jest to dla rmerlin mod więc pamiętajcie o zmianie ścieżek. Nie mniej jednak widać jakie moduły trzeba załadować i jak wygląda składnia poleceń.
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
susser |
Dodano 06-12-2014 11:02
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
mam pytanie, gdzie mam zapisac ten skrypt w tomato, w init czy firewall? |
|
|
|
shibby |
Dodano 06-12-2014 13:08
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
init wykonuje się tylko raz przy starcie routera. Firewall każdorazowo przy przeładowaniu usługi iptables. Tak więc firewall jak najbardziej
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
susser |
Dodano 06-12-2014 14:22
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
wszystko zaladowane iptables --list wskazuje ze regula dziala iptables -I INPUT -m set --match-set BlockedCountries src -j DROP, ale nic nie blokuje, co robic ?
Połączony z 06 December 2014 14:26:33:
sorry dziala, cofam pytanie. Zablokowalem Polske, czyli sam siebie...
Połączony z 06 December 2014 18:58:53:
Dziekuje wszystkim za wspaniala pomoc w osiagnieciu celu!
Na koniec chcialbym pokazac jak trzeba to zrobic i sie przy tym nie narobic...
Zacznijmy:
1. Utworzcie prosze najpierw dokument tekstowy i nazwijcie go np: firewall-start
2. Nastepnie wklejcie prosze do nowo utworzonego dokumentu ten skrypt:
#!/bin/sh
# Loading ipset modules
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_nethash ip_set_iphash ipt_set
do
insmod $module
done
# Preparing folder to cache downloaded files
IPSET_LISTS_DIR=/opt/ipset_lists
[ -d "$IPSET_LISTS_DIR" ] || mkdir -p $IPSET_LISTS_DIR
# Block incoming traffic from some countries. cn and pk is for Russia #and Kazakhstan. See other countries code at http://www.ipdeny.com/#ipblocks/
if [ "$(ipset --swap BlockedCountries BlockedCountries 2>&1 | grep 'Unknown set')" != "" ]
then
ipset -N BlockedCountries nethash
for country in ru kz
do
[ -e $IPSET_LISTS_DIR/$country.lst ] || wget -q -O $IPSET_LISTS_DIR/$country.lst http://www.ipdeny.com/ipblocks/data/countries/$country.zone
for IP in $(cat $IPSET_LISTS_DIR/$country.lst)
do
ipset -A BlockedCountries $IP
done
done
fi
iptables -I INPUT -m set --match-set BlockedCountries src -j DROP
3. We wklejonym skrypcie odszukajcie polecenie "for country in" , jak widzicie ja blokuje 2 kraje Rosje oraz Kazahstan.
Nastepna czynnosc to zmiana sciezki w IPSET_LISTS_DIR=/opt/ipset_lists, ja mam np: opt, do tego katalogu beda sciagniete wszystkie ip danego kraju, ktory chcecie zablokowac.
4. Zapiszcie skrypt i przeniescie go do katalogu, np: Nie zapomnijcie utworzyc katalogu scripts.
5. To juz ostatnia czynnosc: Wklejcie nastepujaca sciezke do Scripts Firewall w Tomato i zapiszcie. Oczywiscie na samym koncu restartujecie wasz router.
Połączony z 06 December 2014 19:00:37:
Cytat susser napisał(a):
wszystko zaladowane iptables --list wskazuje ze regula dziala iptables -I INPUT -m set --match-set BlockedCountries src -j DROP, ale nic nie blokuje, co robic ?
Połączony z 06 December 2014 14:26:33:
sorry dziala, cofam pytanie. Zablokowalem Polske, czyli sam siebie...
Połączony z 06 December 2014 18:58:53:
Dziekuje wszystkim za wspaniala pomoc w osiagnieciu celu!
Na koniec chcialbym pokazac jak trzeba to zrobic i sie przy tym nie narobic...
Zacznijmy:
1. Utworzcie prosze najpierw dokument tekstowy i nazwijcie go np: firewall-start
2. Nastepnie wklejcie prosze do nowo utworzonego dokumentu ten skrypt:
#!/bin/sh
# Loading ipset modules
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_nethash ip_set_iphash ipt_set
do
insmod $module
done
# Preparing folder to cache downloaded files
IPSET_LISTS_DIR=/opt/ipset_lists
[ -d "$IPSET_LISTS_DIR" ] || mkdir -p $IPSET_LISTS_DIR
# Block incoming traffic from some countries. ru and kz is for Russia #and Kazakhstan. See other countries code at http://www.ipdeny.com/#ipblocks/
if [ "$(ipset --swap BlockedCountries BlockedCountries 2>&1 | grep 'Unknown set')" != "" ]
then
ipset -N BlockedCountries nethash
for country in ru kz
do
[ -e $IPSET_LISTS_DIR/$country.lst ] || wget -q -O $IPSET_LISTS_DIR/$country.lst http://www.ipdeny.com/ipblocks/data/countries/$country.zone
for IP in $(cat $IPSET_LISTS_DIR/$country.lst)
do
ipset -A BlockedCountries $IP
done
done
fi
iptables -I INPUT -m set --match-set BlockedCountries src -j DROP
3. We wklejonym skrypcie odszukajcie polecenie "for country in" , jak widzicie ja blokuje 2 kraje Rosje oraz Kazahstan.
Nastepna czynnosc to zmiana sciezki w IPSET_LISTS_DIR=/opt/ipset_lists, ja mam np: opt, do tego katalogu beda sciagniete wszystkie ip danego kraju, ktory chcecie zablokowac.
4. Zapiszcie skrypt i przeniescie go do katalogu, np: Nie zapomnijcie utworzyc katalogu scripts.
5. To juz ostatnia czynnosc: Wklejcie nastepujaca sciezke do Scripts Firewall w Tomato i zapiszcie. Oczywiscie na samym koncu restartujecie wasz router.
Połączony z 14 December 2014 23:09:06:
Witam wszystkich,
chcialbym jeszcze dodac, ze w jednym skrypcie mozecie zablokowac max 5 krajow. Zeby blokowac wiecej musicie dodac nowy skrypt i pozmieniac sciezki.
Jak sprawdzic czy Tomato naprawde blokuje te kraje:
Wpisujecie w System Commands: iptables --list i sprawdzacie czy jest podwojny wpis w chain INPUT( match-set BlockedCountrie src) , jak jest pojedynczy to znaczy, ze nie blokuje. Dlaczego tak sie dzieje, nie pytajcie... :)
Jezeli to co napisalem okaze sie u was nie prawda, to zablokujcie pl, wtedy bedziecie wiedziec czy blokuje.
Pozdrawiam
Edytowany przez susser dnia 14-12-2014 23:09
|
|
|
|
b3rok |
Dodano 15-12-2014 13:39
|
Administrator
Posty: 621
Dołączył: 10/01/2008 18:40
|
Hmmm, a czy założenie nie jest błędne? IMHO lepiej zrobić "blokuj wszystkich" a "wpuszczaj tylko polske".
Bo co z Chinami, Bialorusia, USA (z tych krajow bylo sporo prob wlamu) itp. itd.
Założenie jak Twoje miałem kiedyś, ale zostało zweryfikowane przy konfiguracji firewalla na Synology.
I. Huawei HG8240 + 1x Netgear r7000 @FreshTomato + Synology DS1512+
II. TP-Link TL-WDR4300 @Obsy OpenWRT Gargoyle
III. TP-Link TL-WDR3600 @Obsy OpenWRT Gargyle
|
|
|
|
susser |
Dodano 15-12-2014 19:41
|
User
Posty: 114
Dołączył: 05/09/2014 11:42
|
Dla moich rozwiazan nie jest to bledne, nie widzialem na swoim serwerze jeszcze kogos z Chin albo Usa, takze nie bede blokowal tych krajow.
Moze podzielibys sie swoim zalozeniem, zeby inni mogli tez z tego skorzystac?
Jak w takim razie zablokowac wszystko oprocz Polski, mowimy o Tomato by Shibby oczywiscie...
Pozdrawiam |
|
|