|
[+] firewall do wglądu i ewentualnie poprawy
timmy666 - 26-06-2009 11:04
Witam.
Chciałbym abyście sprawdzili mój firewall nie jestem jeszcze super rozeznany w iptables, jednak firewall całkiem dobrze działa tylko mimo wszystko nie potrafię sobie poradzić z odblokowaniem portu dla SSH na zewnątrz i CS-a. Wydaje mi się że o czymś zapomniałem bo udało mi się tak zrobić że np. w putty wpisuję swoje zewnętrzne IP i port i mogę się logować ale z zewnątrz już to nie wychodzi. Tak samo jest z csem wcześniej nie mogłem się połączyć przez zewnętrzne IP ze swojego komputera, teraz mogę ale dla ludzi spoza mojej sieci i tak jest nie widoczny i już naprawdę nie wiem co robię źle. Moja sieć wygląda tak:
DSL--->Ruter---->Serwer Linux z firewallem
na ruterze wydaje mi się że dobrze odblokowałem porty bo korzystałem z instrukcji podanej na www.portforward.com. Prosiłbym jeszcze żeby ktoś napisał co ewentualnie wyrzucić i co dodać aby było całkiem bezpiecznie. Z góry dziękuję za zainteresowanie. #!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
modprobe ip_conntrack_ftp modprobe ip_nat_ftp
iptables -F iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t nat iptables -F -t filter iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t filter
iptables -A INPUT -i ! eth0 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 3128 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 59184 -m state --state NEW -j ACCEPT iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.1.0/24 -d 0/0 -j ACCEPT iptables -t filter -A FORWARD -s 0/0 -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -t nat -A PRETOUTING -i eth0 -p tcp --dport 22 -j REDIRECT --to-port 59184
iptables -t nat -A PREROUTING -p udp -d xx.xx.xx.xx --dport 27010:27020 -j DNAT --to-destination 10.0.2.2:27015
iptables -t nat -A PREROUTING -p tcp -d xx.xx.xx.xx --dport 27010:27039 -j DNAT --to-destination 10.0.2.2:27015 iptables -t nat -A PREROUTING -p udp -d xx.xx.xx.xx --dport 1200 -j DNAT --to-destination 10.0.2.2:27015 iptables -A OUTPUT -p tcp --dport 27010:27039 -j ACCEPT iptables -A INPUT -p udp --dport 27015 -j ACCEPT iptables -A OUTPUT -p udp --dport 27010:27015 -j ACCEPT iptables -A OUTPUT -p udp --sport 26900 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp -d xx.xx.xx.xx --destination-port 27015 -j DNAT --to-destination 10.0.2.2:27015 iptables -t nat -I PREROUTING -p tcp --destination-port 27015 -j DNAT --to-destination 10.0.2.2:27015 iptables -t nat -I PREROUTING -p tcp --destination-port 59184 -j DNAT --to-destination 10.0.2.2:59184 iptables -t nat -I PREROUTING -p udp --destination-port 1200 -j DNAT --to-destination 10.0.2.2:27015 iptables -A INPUT -i eth0 -p tcp --dport 27015 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A PREROUTING -p tcp -d xx.xx.xx.xx --dport 59184 -j DNAT --to-destination 10.0.2.2:59184
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 27015:27016 -j DNAT --to-destination 10.0.2.2 iptables -A INPUT -p udp --dport 27015:27016 -j ACCEPT iptables -A FORWARD -p udp --dport 27015:27016 -j ACCEPT
echo "Firewall jest teraz uruchomiony"
mariaczi - 26-06-2009 11:26
Witam iptables -F iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t filter iptables -F -t filter iptables -X -t nat iptables -F -t filter iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t filter
To pierwsze co rzuciło mi się w oczy. Aż tyle razy musisz robić to samo? Pewnie, nie jest to jakiś poważny błąd, no ale... nieładnie wygląda ;)
timmy666 - 26-06-2009 11:47
To tak dla pewności żeby na pewno wyczyścił wszystkie regułki, ale to chyba nic nie szkodzi tak mi się wydaje.
xmaster - 26-06-2009 11:49
Może prościej zamiast wpisów, które robisz napisać tak ja ja mam u siebie
najpierw podajesz porty udostępnione - łatwiej jest potem dodawać kolejne, wystarczy dopisać port i wsio #serwisy udostepnione - zobacz /etc/services SERWISY_TCP="6881 6882 22 80 domain rsync" SERWISY_UDP="domain 5060 5061"
a potem # akceptuje wszystkie pakiety z sieci wewnetrznej iptables -A INPUT -i ! ${INTERNET} -j ACCEPT
# akceptuje wszystkie pakiety nalezace do istniejacych polaczen # wraz z polaczeniami powiazanymi iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# akceptuje wszystkie pakiety skierowane do portów (uslug) # zdefiniowanych w naglowku jako udostepnione
for x in ${SERWISY_TCP} do iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (TCP) " done
for x in ${SERWISY_UDP} do iptables -A INPUT -p udp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (UDP) " done
Zobacz może moja wersja zadziała.
Tu masz całego firewalla #!/bin/bash
#zmienne srodowiskowe INTERNET="eth1" ROUTING="yes" INTERFEJSY="lo eth0 eth1" NAT="dynamic" IP0="eth1"
#serwisy udostepnione - zobacz /etc/services SERWISY_TCP="6881 6882 22 80 domain rsync" SERWISY_UDP="domain 5060 5061"
if [ "$1" = "start" ]; then echo "Start Firewalla..." iptables -P INPUT ACCEPT
# akceptuje wszystkie pakiety z sieci wewnetrznej iptables -A INPUT -i ! ${INTERNET} -j ACCEPT
# akceptuje wszystkie pakiety nalezace do istniejacych polaczen # wraz z polaczeniami powiazanymi iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# akceptuje wszystkie pakiety skierowane do portów (uslug) # zdefiniowanych w naglowku jako udostepnione
for x in ${SERWISY_TCP} do iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (TCP) " done
for x in ${SERWISY_UDP} do iptables -A INPUT -p udp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (UDP) " done
# ukrycie firewalla iptables -A INPUT -p tcp -i ${INTERNET} -j REJECT --reject-with tcp-reset iptables -A INPUT -p udp -i ${INTERNET} -j REJECT --reject-with icmp-port-unreachable
# Wylaczenie ECN (explicit congestion notification) if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then echo 0 > /proc/sys/net/ipv4/tcp_ecn fi
# Blokada podszywania for x in ${INTERFEJSY} do echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter done
#Transparent proxy #iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
# MASKARADA, SNAT, NAT if [ "$ROUTING" = "yes" ]; then echo 1 > /proc/sys/net/ipv4/ip_forward if [ "$NAT" = "dynamic" ]; then echo "Udostepnianie maskarady - dynamiczne IP..." iptables -t nat -A POSTROUTING -o ${INTERNET} -j MASQUERADE elif [ "$NAT" != "" ]; then echo "Odblokowywanie SNAT - statyczny IP..." # Tu wlasciwa maskarada dla adresow lokalnych iptables -t nat -A POSTROUTING -o ${INTERNET} -s 192.168.200.0/255.255.255.0 -j SNAT --to ${IP0}
fi fi
# Zatrzymanie Firewalla elif [ "$1" = "stop" ]; then echo "Zatrzymanie Firewalla..." iptables -F INPUT iptables -P INPUT ACCEPT iptables -t nat -F POSTROUTING iptables -t nat -F PREROUTING fi
timmy666 - 26-06-2009 12:17
Do xmaster Wrzuciłem tego Twojego, wydaje mi się że dobrze skonfigurowałem bo internet działa. Wrzuciłem porty tutaj:
#serwisy udostepnione - zobacz /etc/services SERWISY_TCP="22 80 59184 27010:27030" SERWISY_UDP="7130 59184 1200 27010:27030"
I jeszcze zmieniłem tak, to że mam stałe IP to zrobiłem aby ustawił SNAT:
#zmienne srodowiskowe INTERNET="eth0" ROUTING="yes" INTERFEJSY="lo eth0 eth1" NAT="" IP0="eth0"
Dalej chyba nic nie trzeba zmieniać o ile czegoś nie przeoczyłem no i jeszcze włączyłem proxy i zmieniłem port 8080 na mój 3128 i działa to ok
O ile dobrze zrozumiałem, to u Ciebie było eth1 czyli sieciówka która łączy się z netem więc zmieniłem bo u mnie to eth0 a eth1 to lan
Tylko teraz tak odpalam csa i żaden serwer mi nie działa, czyli chyba coś teraz blokuje, tylko co? Tak samo z putty, już przez swoje zew ip nie mogę się zalogować i np. program do podglądu serwerów csa HLSW nie może się w ogóle połączyć: dostaje ,,timeout'' Port tego programu to ,,udp 7130'' i niby jest odblokowany, no ale nie działa, no chyba nic się nie łączy nawet spojrzałem czy Outlook się łączy i tez nie chce.
xmaster - 26-06-2009 12:34
taki (podobny lekko zmienione porty) firewall mam na serwerku gdzie stoją serwery gier właśnie CS (3 szt) www.misioo.eu i wszystko ładnie biega. Wczoraj kumpel dodał tylko jakiś inny port bo instalował inną grę i też bangla. Teraz pytanie czy wrzuciłeś TYLKO mojego firewalla czy może dopisałeś jakieś części do siebie. Jeśli coś podopisywałeś to może wklej tylko mojego - zrestartuj IPtables z odpowiednimi portami i sprawdź potem. Czemu nie działa to nie wiem, u mnie chodzi ładnie.
timmy666 - 26-06-2009 12:38
Teraz tak wygląda Twoj firewall i tylko jego odpalam net chodzi cacy tylko czemu nic się łączyć niechce ani outlook etc :]
#!/bin/bash
#zmienne srodowiskowe INTERNET="eth0" ROUTING="yes" INTERFEJSY="lo eth0 eth1" NAT="" IP0="eth0"
#serwisy udostepnione - zobacz /etc/services SERWISY_TCP="22 80 7130 59184 27010 27015 27030" SERWISY_UDP="7130 59184 1200 27010 27030 27015 "
if [ "$1" = "start" ]; then echo "Start Firewalla..." iptables -P INPUT ACCEPT
# akceptuje wszystkie pakiety z sieci wewnetrznej iptables -A INPUT -i ! ${INTERNET} -j ACCEPT
# akceptuje wszystkie pakiety nalezace do istniejacych polaczen # wraz z polaczeniami powiazanymi iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# akceptuje wszystkie pakiety skierowane do portw (uslug) # zdefiniowanych w naglowku jako udostepnione
for x in ${SERWISY_TCP} do iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (TCP) " done
for x in ${SERWISY_UDP} do iptables -A INPUT -p udp --dport ${x} -m state --state NEW -j ACCEPT echo " Akceptuje ${x} (UDP) " done
# ukrycie firewalla iptables -A INPUT -p tcp -i ${INTERNET} -j REJECT --reject-with tcp-reset iptables -A INPUT -p udp -i ${INTERNET} -j REJECT --reject-with icmp-port-unreachable
# Wylaczenie ECN (explicit congestion notification) if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then echo 0 > /proc/sys/net/ipv4/tcp_ecn fi
# Blokada podszywania for x in ${INTERFEJSY} do echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter done
#Transparent proxy iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# MASKARADA, SNAT, NAT if [ "$ROUTING" = "yes" ]; then echo 1 > /proc/sys/net/ipv4/ip_forward if [ "$NAT" = "dynamic" ]; then echo "Udostepnianie maskarady - dynamiczne IP..." iptables -t nat -A POSTROUTING -o ${INTERNET} -j MASQUERADE elif [ "$NAT" != "" ]; then echo "Odblokowywanie SNAT - statyczny IP..." # Tu wlasciwa maskarada dla adresow lokalnych iptables -t nat -A POSTROUTING -o ${INTERNET} -s 192.168.1.0/255.255.255.0 -j SNAT --to ${IP0}
fi fi
# Zatrzymanie Firewalla elif [ "$1" = "stop" ]; then echo "Zatrzymanie Firewalla..." iptables -F INPUT iptables -P INPUT ACCEPT iptables -t nat -F POSTROUTING iptables -t nat -F PREROUTING fi
xmaster - 26-06-2009 12:51
www też nie działa? Co do poczty to porty musisz odblokować. Zaraz go wkleją do swojego komputera i zobaczymy czy to coś w firewallu (na jednej maszynie śmiga elegancko), czy też może u Ciebie coś jest skaszanione?
timmy666 - 26-06-2009 12:55
www działa tylko hlsw się nie może połączyć etc
bo na moim firewallu to jak odpalam cs'a to mam tak ./hlds_run -game cstrike +ip (zew ip) +port 27015 +maxplayers 22 +map de_dust2 -insecure -pingboost 1 -nomaster +sv_lan 1 +exec server.cfg
to mi wywala więc musze odpalic z ./hlds_run -game cstrike +ip 10.0.2.2 +port 27015 +maxplayers 22 +map de_dust2 -insecure -pingboost 1 -nomaster +sv_lan 1 +exec server.cfg
wtedy ładnie leci i na moim firewallu mogę się połączyć z zew.ip:27015 ale tylko ze swojego kompa i mój hlsw tez go widzi ale jak ktoś jest spoza sieci to już go nie widzi i nie wiem ocb
xmaster - 26-06-2009 13:45
Teraz dopiero doczytałem początek Twojego topiku. Jeśli masz router przed swoim komputerem z CS`em to tam musisz przekierować odpowiednie porty na swój komputer. Jeśli to router pudełkowy i masz więcej niż jedno IP od providera to przekieruj cały ruch z danego IP zew na swój wew. Jeśli masz jedno IP to przekieruj cały ruch na portach do CSa i SSH ale na routerze tym co stoi zaraz za DSLem. Jeśli możesz to załącz screeny z konfiguracji routera, najprawdopodobniej tam siedzi babol.
timmy666 - 26-06-2009 14:11
Wina leżała w ruterze, tak się domyślałem, poszło na moim firewallu bo ten ruter jest nie najlepszy, SMC stary. Za jakiś czas zamierzam go zmienić tylko kupię nowy serwer to będę całą sieć od nowa składał bez rutera. Za ruter będzie służył Debian.
Bardzo dziękuję za pomoc. Miło że ktoś jeszcze ma chęci do pomocy.
Można zamknąć.
xmaster - 26-06-2009 15:27
Dodaj + do nazwy topiku - tak aby potomni wiedzieli że problem został rozwiązany. [+] firewall do wglądu i ew. poprawy
gielo - 26-06-2009 15:38
Przydałaby się jeszcze filtracja ,,bogon''.
Zapraszam do linka w stopce może coś Ci się dodatkowo przyda.
mariaczi - 26-06-2009 19:52
@xmaster: Po co Ci te wszystkie regułki ACCEPT w łańcuchu INPUT skoro na samej górze firewalla i tak masz ustawioną politykę tego łańcucha na ACCEPT @timmy666: W listingu Twojego firewalla (przerobionego pod siebie) masz baboła. Parametr IP0 to ma być adres IP, a Ty wpisałeś tam interfejs.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|