 |
PLD Linux Forum
Oficjalne forum dystrybucji PLD Linux
|
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, 09: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 |
|
|
|
 |
|
|