iptables blokuje dostęp do portu 8000 z wyjątkiem adresu IP
80
Nigdy nie używałem iptables, a dokumentacja online wydaje się nieco niejasna.
Chciałbym zablokować wszystkie żądania do portu 8000 na moim serwerze z wyjątkiem tych pochodzących z określonego adresu IP. Jak to zrobić używając iptables?
//, Czy byłbyś tak uprzejmy, aby udostępnić link do niejasnej dokumentacji?
Nathan Basanese
Odpowiedzi:
149
To pytanie powinno dotyczyć błędu serwera . Niemniej jednak poniższe czynności powinny załatwić sprawę, zakładając, że mówisz o TCP, a adres IP, na który chcesz zezwolić, to 1.2.3.4:
iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
Wiem, że to jest stosunkowo stare i to całkowicie przybite, czego potrzebowałem. A skoro i tak odpowiedź została zaakceptowana, jak zrobić to samo z określonym zakresem adresów IP? Dzięki! :)
jagc
1
@JiegoCordoviz Możesz dodać maskę do adresu źródłowego: „-s 1.2.3.0/24” będzie akceptować wszystko, co zaczyna się od „1.2.3.”. Wyszukaj „kalkulator maski sieci”, jeśli masz zakres i chcesz obliczyć maskę sieci.
Jon Bright,
17
Inną alternatywą jest;
sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
Miałem podobny problem, że wirtualna maszyna z mostkiem 3 po prostu potrzebuje dostępu do siebie z inną kombinacją, więc przetestowałem to polecenie i działa dobrze.
Edytować**
Zgodnie z komentarzem Fernando i ten link wykrzyknik ( !) zostanie umieszczony przed -sparametrem niż :
sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
Wykrzyknik ( !) musi teraz zostać umieszczony przed -sparametrem: sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP.
Fernando Silveira
Nie jestem pewien, co robi tutaj wykrzyknik. Czy to lepsze niż zaakceptowana odpowiedź?
aexl
@aexl prawie to samo, z wyjątkiem pojedynczej linii
HRgiger
5
Zawsze możesz użyć iptables, aby usunąć reguły. Jeśli masz wiele reguł, po prostu wyślij je za pomocą następującego polecenia.
iptables-save > myfile
viedytować je z wiersza komend. Po prostu użyj „dd”, aby usunąć linie, których już nie potrzebujesz.
iptables-restore < myfile and you're good to go.
PAMIĘTAJ, ŻE JEŚLI NIE SKONFIGURUJESZ SWOJEGO SYSTEMU OPERACYJNEGO, ABY ZAPISAĆ REGULAMIN W PLIKU, A NASTĘPNIE ZAŁADUJ PLIK PODCZAS URUCHAMIANIA, TWOJE REGUŁY ZOSTANĄ UTRACONE.
Odpowiedzi:
To pytanie powinno dotyczyć błędu serwera . Niemniej jednak poniższe czynności powinny załatwić sprawę, zakładając, że mówisz o TCP, a adres IP, na który chcesz zezwolić, to 1.2.3.4:
źródło
Inną alternatywą jest;
Miałem podobny problem, że wirtualna maszyna z mostkiem 3 po prostu potrzebuje dostępu do siebie z inną kombinacją, więc przetestowałem to polecenie i działa dobrze.
Edytować**
źródło
!
) musi teraz zostać umieszczony przed-s
parametrem:sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
.Zawsze możesz użyć iptables, aby usunąć reguły. Jeśli masz wiele reguł, po prostu wyślij je za pomocą następującego polecenia.
vi
edytować je z wiersza komend. Po prostu użyj „dd”, aby usunąć linie, których już nie potrzebujesz.PAMIĘTAJ, ŻE JEŚLI NIE SKONFIGURUJESZ SWOJEGO SYSTEMU OPERACYJNEGO, ABY ZAPISAĆ REGULAMIN W PLIKU, A NASTĘPNIE ZAŁADUJ PLIK PODCZAS URUCHAMIANIA, TWOJE REGUŁY ZOSTANĄ UTRACONE.
źródło
iptables-restore < myfile
// wiki.debian.org/iptables