Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest czwartek, 28 marca 2024, 22:22

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 4 ] 
Autor Wiadomość
Post: niedziela, 10 maja 2015, 10:59 
Offline
Użytkownik

Rejestracja: poniedziałek, 4 lipca 2005, 11:37
Posty: 118
Lokalizacja: Gdynia
Panowie, jak to jest?
Skorzystałem z pewnego rozwiązania i nie jestem przekonany, że działa tak jak powinno.
Zrobiłem sobie plik "rc.firewall", który ładuje mi się przy stracie systemu i wszystko byłoby super, gdyby nie to, że z zewnątrz nie można wyświetlić stron serwowanych z tej właśnie maszyny.

Plik wygląda następująco:
: [/] [] ()
#!/bin/bash
echo -e "Ładowanie reguł iptables...\n\n"
#Nazwa interfejsu LAN
INTIF="eth1"
# Adres sieci LAN
INTNET="192.168.0.0/24"
# Adres IP interfejsu LAN
INTIP="192.168.0.1"

# Nazwa interfejsu WAN
EXTIF="eth0"
# Adres IP interfejsu WAN (wykryty)
#EXTIP="`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
# Adres IP interfejsu WAN (wpisany)
EXTIP="111.222.333.444"
#EXTIP="111.222.333.444"

UNIVERSE="0.0.0.0/0"

# Odkomentowana opcja w /etc/sysctl.conf, więc tu może być zakomentowane
echo 1 > /proc/sys/net/ipv4/ip_forward

# Wyczyszczenie wszystkich łańcuchów i reguł, określenie domyślnej polityki odrzucania pakietów (DROP).
iptables -P INPUT DROP
iptables -F INPUT
iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -F -t nat
if [ "`iptables -L | grep drop-and-log-it`" ]; then
 iptables -F drop-and-log-it
fi
 iptables -X
 iptables -Z

# Utworzenie łańcucha DROP.
 iptables -N drop-and-log-it
 iptables -A drop-and-log-it -j LOG --log-level info
 iptables -A drop-and-log-it -j REJECT

# Reguły INPUT
# Wszystkie połączenia z localhost
 iptables -A INPUT -i lo -j ACCEPT
# Odrzucenie połączeń podszywających się pod lokalne
 iptables -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
# Protokół ICMP
 iptables -A INPUT -i $INTIF -p icmp -s $INTNET -d $UNIVERSE -j ACCEPT
 iptables -A INPUT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP -j ACCEPT
# Połączeń zwrotne do serwera maskarady na interfejsie LAN
 iptables -A INPUT -i $INTIF -s $INTNET -d $INTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Komunikaty ICMP: ping i echo
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT
 iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT
# Zapytania DNS
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT
 iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT
# Usługi Samby
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 135 -j ACCEPT
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 139 -j ACCEPT
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 445 -j ACCEPT
 iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 137 -j ACCEPT
 iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 138 -j ACCEPT
# Protokół SSH
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 1551 -j ACCEPT
# Wyświetlanie stron WWW z serwera
 iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 80 -j ACCEPT

# Serwer proxy Squid na interfejsie LAN, port 3128
# iptables -A INPUT -i $INTIF -p tcp --dport 3128 -j ACCEPT
# Squid3 transparent bez Dansguardiana - trzeba wtedy odkomentować
# iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 3128
# Dansguardian + Squid3 transparent proxy
# iptables -A INPUT -i $INTIF -p tcp --dport 8080 -j ACCEPT
# iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 8080

# Połączenia przychodzące na interfejs WAN
# Połączenia zwrotne do serwera maskarady na interfejsie WAN
 iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Komunikaty ICMP: ping i echo.
 iptables -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT
 iptables -A INPUT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT

# Odrzucanie i logowanie wszystkich innych połączeń przychodzących
# iptables -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it

# Przekierowanie portów do komputerów za NATem
# eMule TCP
# iptables -I FORWARD -p tcp -d 192.168.0.10 --dport 9009 -j ACCEPT
# iptables -t nat -I PREROUTING -p tcp -i eth0 -s 0/0 -d 0/0 --dport 9009 -j DNAT --to 192.168.0.10
# eMule UDP
# iptables -I FORWARD -p udp -d 192.168.0.10 --dport 9009 -j ACCEPT
# iptables -t nat -I PREROUTING -p udp -i eth0 -s 0/0 -d 0/0 --dport 9009 -j DNAT --to 192.168.0.10
# RDP
# iptables -I FORWARD -p tcp -d 192.168.0.10 --dport 3389 -j ACCEPT
# iptables -t nat -I PREROUTING -p tcp -i eth0 -s 0/0 -d 0/0 --dport 3389 -j DNAT --to 192.168.0.10

# Reguły OUTPUT
# Odrzucanie połączeń do sieci LAN z WAN
 iptables -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
# Wszystkie połączenia localhost
 iptables -A OUTPUT -o lo -j ACCEPT
# Zezwolenie dla LAN
 iptables -A OUTPUT -o $INTIF -d $INTNET -j ACCEPT
# Zezwolenie na DHCP reply typu broadcast - dla MS Visty
iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT
# Zezwolenie dla WAN
 iptables -A OUTPUT -o $EXTIF -j ACCEPT
# Odrzucanie i logowanie wszystkie innych połączeń wychodzących
 iptables -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
# FORWARD: Włączenie routowania, tj. usługi NAT, zwanej maskaradą, czyli IMPASQ.
# Routing na interfejsie WAN
#iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# Routowanie ustanowionych połączeń
 iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Odblokowanie poszczególnych usług
# Protokół ICMP
 iptables -A FORWARD -i $INTIF -p icmp -j ACCEPT
# Porty wysokie
# iptables -A FORWARD -i $INTIF -p tcp --dport 1024:65535 -j ACCEPT
# iptables -A FORWARD -i $INTIF -p udp --dport 1024:65535 -j ACCEPT
# Komunikaty ICMP: ping, echo
 iptables -A FORWARD -i $INTIF -p tcp --dport 7 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 7 -j ACCEPT
# Usługa DNS
 iptables -A FORWARD -i $INTIF -p tcp --dport 53 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 53 -j ACCEPT
# Protokół SSH
 iptables -A FORWARD -i $INTIF -p tcp --dport 1551 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 1551 -j ACCEPT
# HTTP-FORWARD-OK
# HTTP -- jeśli wyłączony jest squid i dansguardian, poniższe trzeba odkomentować
 iptables -A FORWARD -i $INTIF -p tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 80 -j ACCEPT
# HTTPS
 iptables -A FORWARD -i $INTIF -p tcp --dport 443 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 443 -j ACCEPT
# FTP
 iptables -A FORWARD -i $INTIF -p tcp --dport 20:21 -j ACCEPT
 iptables -A FORWARD -i $INTIF -p udp --dport 21 -j ACCEPT
# Poczta
 iptables -A FORWARD -i $INTIF -p tcp --dport 25 -j ACCEPT # smtp
 iptables -A FORWARD -i $INTIF -p tcp --dport 110 -j ACCEPT # pop3
 iptables -A FORWARD -i $INTIF -p tcp --dport 143 -j ACCEPT # imap
 iptables -A FORWARD -i $INTIF -p tcp --dport 465 -j ACCEPT # legacy secure SMTP
 iptables -A FORWARD -i $INTIF -p tcp --dport 587 -j ACCEPT # smtp Submission
 iptables -A FORWARD -i $INTIF -p tcp --dport 993 -j ACCEPT # imap ssl
 iptables -A FORWARD -i $INTIF -p tcp --dport 995 -j ACCEPT # pop3s
# Odrzucanie i logowanie wszystkich pozostałych połączeń.
 iptables -A FORWARD -j drop-and-log-it
echo -e "Ładowanie reguł iptables zakończone!\n\n"

Co zrobiłem nie tak jak powinienem?
Może kolejność ładowania reguł, czy może jest coś, co wyklucza się nawzajem ?
Nie znam dokładnie szczegółów iptables i może własnie w tym leży cały szkopuł... Może czas się nauczyć :twisted:

Przepraszam za to dość lamerskie pytanie, ale bardzo podobne rozwiązanie śmigało mi na NND i innych distro.
Fakt, że zmieniałem trochę ten pliczek i mogłem coś popientrolić :oops:
Specjalnie zostawiłem wszystkie komentarze i opcje konfiguracji, żeby było widać co można zmienić.

Łącze mam ze stałym adresem IP (jak widać) przydzielanym przez DHCP od ISP.
Wpisane mam statycznie i to działa.

Zapewne po udzielonej podpowiedzi usunę adresy.

_________________
1.) NND 0.2.4 -> PC PIII 800 MHz, 512 MB RAM, 120 GB IDE UDMA 4 [Jest awaryjnie]
2.) Ubuntu 14... -> HP Proliant ML350 G3, Pentium D 3.2 GHz, 4GB RAM, 500GB + 2x500GB@HW Raid I [żarł za dużo prądu]
3.) Debian 8... -> w obudowie po HP NetServer E800, i5-2500K, 16GB RAM, 1+1TB soft RAID1 + 3+3TB soft RAID1


Ostatnio zmieniony wtorek, 12 maja 2015, 04:59 przez 4Tech, łącznie zmieniany 1 raz

Na górę
 Wyświetl profil  
 
Post: niedziela, 10 maja 2015, 17:30 
Offline
Honorowy Admin

Rejestracja: piątek, 5 lipca 2002, 17:30
Posty: 7800
Lokalizacja: Słupsk
Złamana została zasada KISS (Keep It Simple Stupid).
Prosta i działająca reguła:
iptables -A INPUT -p tcp -i $EXTIF --dport 80 -j ACCEPT gdzie $EXTIF to interfejs zewnętrzny (najczęsciej eth0)/
Co ona robi?
Działa na wejściu (INPUT) dotyczy pakietów tcp, które przychodzą na interfejs zewnętrzny na port 80 i są akceptowane.

Twoja reguła:
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 80 -j ACCEPT
Działa na wejściu (INPUT) interfejsu LAN i dotyczy pakietów tcp przesyłanych z 192.168.0.0/24 kierowanych na adres 0.0.0.0/0 na porcie 80 i to jest akceptowane.
Nie wydaje ci się że masz tę regułkę cokolwiek idiotyczną?
Prawdę powiedziawszy wątpię, żeby którakolwiek z tych regułek wejścia (INPUT) w powyższym pliku mogła działać. Chyba, że właśnie reguły iptables zmieniły diametralnie swoje działanie.
Iptables jest jak matematyka, tu nie ma opcji "bardzo podobne rozwiązanie".
Niewątpliwie warto się tego nauczyć, bo w przeciwnym razie nie będziesz adminem tylko małpą z brzytwą. Oczywiście można tak egzystować, sam prowadziłem kilka serwerów przez cztery lata jako małpa z brzytwą (tzn. z firewallem Zciecha dla NND), ale przynajmniej nie próbowałem tej brzytwy ostrzyć po swojemu. ;)

_________________
Obrazek Belfer.one.PL
Obrazek Audio Cafe


Na górę
 Wyświetl profil  
 
Post: niedziela, 10 maja 2015, 19:09 
Offline
Użytkownik

Rejestracja: poniedziałek, 4 lipca 2005, 11:37
Posty: 118
Lokalizacja: Gdynia
Dziękuję.
Przyjąłem do wiadomości 8O
Czas się nauczyć choćby właśnie tych podstaw :P

_________________
1.) NND 0.2.4 -> PC PIII 800 MHz, 512 MB RAM, 120 GB IDE UDMA 4 [Jest awaryjnie]
2.) Ubuntu 14... -> HP Proliant ML350 G3, Pentium D 3.2 GHz, 4GB RAM, 500GB + 2x500GB@HW Raid I [żarł za dużo prądu]
3.) Debian 8... -> w obudowie po HP NetServer E800, i5-2500K, 16GB RAM, 1+1TB soft RAID1 + 3+3TB soft RAID1


Na górę
 Wyświetl profil  
 
Post: poniedziałek, 11 maja 2015, 22:31 
Offline
Honorowy Admin

Rejestracja: piątek, 5 lipca 2002, 17:30
Posty: 7800
Lokalizacja: Słupsk
Zdecydowanie polecam. Ja sam załapałem się na szkolenie UE, które większość informatyków zawodowych określiła jako trudniejsze niż ich studia.
Fakt, nie było łatwe. A na dodatek nie było płatne, więc nie było zasady "płacę, więc wymagam" i nie wszyscy zdali końcowy egzamin.

_________________
Obrazek Belfer.one.PL
Obrazek Audio Cafe


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 4 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl