PLD Linux Forum Strona Główna PLD Linux Forum
Oficjalne forum dystrybucji PLD Linux

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj

Poprzedni temat «» Następny temat
Problem z firewallem
Autor Wiadomość
dgpx 

Dołączył: 22 Sie 2007
Posty: 128
Skąd: Gorzów Wlkp.
Wysłany: 18 Listopad 2011, 14:39   Problem z firewallem

Witam,
Ponizej firewall z jednej z maszyn, która obsługuje dużą sieć WiFi. Firewall działa,
ale jest w nim jakaś sprzeczność, której nie moge odszukać.
Nie mogę zablokować dostępu komputerowi: 192.168.1.254 po porcie 80 do statystyk lstata. Chciałbym mieć sytuację, aby dostęp był tylko dla okreslonego adresu IP.
Tymczasem jest odwrotnie:
wszyscy mają, a ja mogę wybranemu adresowi IP zabronic dostępu (jak accept zamienię na drop). Jak to przebudować ?
Ponadto może ktos zauwazy, że niektóre wpisy są niepotrzebne, zbędne lub sprzeczne.

Dziekuję za podpowiedź. Konstruktywna krytyka mile widziana
dgpx



# !/bin/bash

case "$1" in
start)
echo "Startuje Firewall"
iptables -F
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -X

#ustawienie domyslnej polityki, blokujemy wszystko
iptables -P INPUT DROP
iptables -P FORWARD DROP

#Limit polaczen
iptables -I FORWARD -p tcp --syn -s '192.168.1.0/24' -m connlimit --connlimit-above 30 -j REJECT --reject-with tcp-reset
iptables -I FORWARD -p tcp --syn -d '192.168.1.0/24' -m connlimit --connlimit-above 30 -j REJECT --reject-with tcp-reset

#odblokowanie loopback - przepuszczamy wszystkie pakiety generowane lokalnie
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# zezwolenie na polaczenia nawiazane i powiazane
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#zezwolenie na polaczenie SSH do serwera z okreslonego adresu IP publicznego
iptables -A INPUT -p tcp -m state --state NEW --source a.b.c.d --dport 1034 -j ACCEPT

#odrzuca polaczenia z pozostalych adresow
iptables -A INPUT -p tcp --dport 1222 -j DROP

#zezwolenie na poleaczenie HTTP do serwera z wybranych adresow IP
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT
(to nie działa, jak dam DROP to blokuję dostęp)

#zezwolenie na pingowanie serwera
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#odrzucenie polaczenia na port 113
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable

#odrzucanie pakietow z puli adresow nierutowalnych na eth0
iptables -A FORWARD -s '192.168.1.0/24' -i eth0 -j DROP

iptables -t nat -A PREROUTING -d a.b.c.d -j DNAT --to 192.168.1.35
iptables -t nat -A POSTROUTING -s 192.168.1.35 -j SNAT --to-source=a.b.c.d
(kilka wpisów o takiej składni)

#odblokowanie ruchu zwiazanego z DHCP
iptables -A INPUT -i eth1 -p tcp --dport 67 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --dport 67 -j ACCEPT

#ustawienie TTL i przekierowania
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 5
iptables -t mangle -A POSTROUTING -o eth0 -j TTL --ttl-set 128

#usuwa zepsute pakiety
iptables -A INPUT -m state --state INVALID -j DROP

# ------------------ Zabezpieczenia ------------------

# Wlaczenie mechanizmu wykrywania oczywistych falszerstw
echo "1" >/proc/sys/net/ipv4/conf/all/rp_filter

# Ochrona przed atakiem typu Smurf
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Nie aktceptujemy pakietow "source route"
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# Nie przyjmujemy pakietow ICMP rediect, ktore moga zmienic tablice routingu
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Wlaczamy ochrone przed blednymi komunikatami ICMP error
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Wlacza logowanie dziwnych (spoofed, source routed, redirects) pakietow
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# Limitowanie sesji tcp
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "2400" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "0" > /proc/sys/net/ipv4/tcp_window_scaling
echo "0" > /proc/sys/net/ipv4/tcp_sack
echo "20480" > /proc/sys/net/ipv4/ip_conntrack_max
echo "20" > /proc/sys/net/ipv4/ipfrag_time
echo "1280" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "43200"> /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo "60" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait
echo "60" > /proc/sys/net/ipv4/netfilter/ip_conntrack_generic_timeout
echo "20" > /proc/sys/net/ipv4/netfilter/ip_conntrack_icmp_timeout
echo "1" > /proc/sys/net/ipv4/igmp_max_memberships
echo "5" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close
echo "20" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
echo "30" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_last_ack
echo "10240" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo "40" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait
echo "30" > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
echo "180" > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream

# TCP timestamps protection
echo "1" > /proc/sys/net/ipv4/tcp_timestamps

# Ignore redirected packets
echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects

# Uruchomienie przekazywania pakietow
# echo "1" > /proc/sys/net/ipv4/ip_forward

# Ochrona przed portscan - ograniczenie odpowiedzi na pakiety
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/S -j ACCEPT

# Ochrona przed Ping of death - nie ogranicza odpowiedzi na pingi
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Ochrona przed synflood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Ochrona przed skanowaniem portow Furtive
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST --match limit --limit 1/s --limit-burst 5 -j ACCEPT

# Ochrona przed skanowaniem SYN
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP

# Ochrona przed skanowaniem ACK
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP

# Ochrona przed skanowaniem FIN
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP

# Ochrona przed skanowaniem Xmas
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP

# Ochrona przed skanowaniem Null
iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH,URG SYN,RST,ACK,FIN,PSH,URG -j DROP

#Ochrona przed virusami Saser,Blaster,MyDoom
iptables -A INPUT -i eth1 -p tcp --destination-port 135 -j DROP
iptables -A INPUT -i eth1 -p tcp --destination-port 139 -j DROP
iptables -A INPUT -i eth1 -p tcp --destination-port 445 -j DROP
iptables -A OUTPUT -o eth1 -p tcp --destination-port 135 -j DROP
iptables -A OUTPUT -o eth1 -p tcp --destination-port 139 -j DROP
iptables -A OUTPUT -o eth1 -p tcp --destination-port 445 -j DROP
iptables -A INPUT -p tcp --dport 1080 -j DROP
iptables -A OUTPUT -p tcp --dport 1080 -j DROP
iptables -A FORWARD -p tcp --dport 1080 -j DROP


#Logowanie
iptables -t mangle -I FORWARD -p tcp --syn -s 192.168.1.0/24 -j LOG

;;
stop)
echo "Firewall STOP"
#Czyszczenie tablic
iptables -F
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -X


;;
restart)
echo "Firewall RESTART"
$0 stop
$0 start
;;

*)
echo "usage $0 start|stop|restart"
exit 1
esac
exit 0
Ostatnio zmieniony przez dgpx 20 Listopad 2011, 19:18, w całości zmieniany 1 raz  
 
 
KrystianT 

Distro: PLD 3.0
Pomógł: 189 razy
Dołączył: 26 Paź 2005
Posty: 1920
Skąd: Kamionek
Wysłany: 18 Listopad 2011, 22:08   

Napisz coś więcej o konfiguracji sieci - co to eth1 eth0 i jakie mają adresy
i co znaczy nie działa - jak dajesz accept to nie ma dostępu, a jak dasz drop to też nie?
Nie do końca rozumiem czy chcesz jednemu zablokować, czy wszystkim, a jednemu pozwolić (różnie to piszesz)
_________________
Krystian T.
"Errare humanum est."
 
 
dgpx 

Dołączył: 22 Sie 2007
Posty: 128
Skąd: Gorzów Wlkp.
Wysłany: 20 Listopad 2011, 19:13   

Witam,
eth0 - to WAN a.b.c.d - 6 adresów publicznych
eth1 - to LAN 192.168.1.0/24

chciałbym zablokować wszystkim hostom na eth1 dostep do lstata a dać dostep tylko jednemu
Problem w tym, że jak w linii:
#zezwolenie na poleaczenie HTTP do serwera z wybranych adresow IP
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT

zmienię ACCEPT na DROP to ten jeden host nie ma dostępu a pozostali mają
chciałbym, żeby było odwrotnie: wszyscy nie mają (domyslnie) a tylko wybrany host np:
192.168.1.254 ma.

Na to wyglada, że w tej chwili linia:
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT
jest bez sensu, bo kłóci się z czymś -tylko nie wiem z czym i nie wiem jak to przebudować

dgpx
 
 
rkolasie 

Pomógł: 1 raz
Dołączył: 16 Gru 2005
Posty: 6
Wysłany: 21 Listopad 2011, 10:41   

dgpx napisał/a:
Witam,
eth0 - to WAN a.b.c.d - 6 adresów publicznych
eth1 - to LAN 192.168.1.0/24

chciałbym zablokować wszystkim hostom na eth1 dostep do lstata a dać dostep tylko jednemu
Problem w tym, że jak w linii:
#zezwolenie na poleaczenie HTTP do serwera z wybranych adresow IP
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT

zmienię ACCEPT na DROP to ten jeden host nie ma dostępu a pozostali mają
chciałbym, żeby było odwrotnie: wszyscy nie mają (domyslnie) a tylko wybrany host np:
192.168.1.254 ma.

Na to wyglada, że w tej chwili linia:
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT
jest bez sensu, bo kłóci się z czymś -tylko nie wiem z czym i nie wiem jak to przebudować

dgpx

Kod:
#zezwolenie na poleaczenie HTTP do serwera z wybranych adresow IP
iptables -A INPUT -p tcp -s 192.168.1.254 --dport 80 -j ACCEPT
# Blokada polaczen dla reszty
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 80 -j REJECT
 
 
dgpx 

Dołączył: 22 Sie 2007
Posty: 128
Skąd: Gorzów Wlkp.
Wysłany: 30 Listopad 2011, 23:50   

Dziękuje za podpowiedź.
Już zastosowałem te regułki. Działają.

A co sądzicie w temacie uproszczenia tego firewalla?
Obawiam się, że są w nim sprzeczne regułki i że mozna to uprościć, napisać inaczej np:
może można zastąpić kilka linii kodu jakąś jedną ?

dgpx
 
 
Janusz 

Dołączył: 06 Maj 2014
Posty: 1
Skąd: Szczecin
Wysłany: 6 Maj 2014, 10:25   Re: Problem z firewallem

Witam mam pytanie jak zablokować określone IP z dostępu do określonego portu via tcp
ja wpisałem do iptables:

-A INPUT -s 159.224.160.42 -j DROP

A on i tak wchodzi do mojego BBS dostępny tylko via port 8088 napisałem dodatkowo:
-A INPUT -s 159.224.160.42 -p tcp --dport 8088 -j DROP

Czy teraz mam szanse że już się do mojego BBS nie dostanie ???
_________________
Janusz Szczecin
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać 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 głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group