Strona 1 z 1
IPTables firewall - sprawdzenie działania
: 31 lipca 2009, 18:21
autor: giver
Kod: Zaznacz cały
#!/bin/sh
#########################################
#sudo chmod 700 firewall.sh #
#sudo cp firewall.sh /etc/init.d/ #
#sudo update-rc.d firewall.sh default #
#########################################
#czyszczenie firewalla
iptables -F
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo "Konfiguracja firewalla rozpoczeta"
# czyscimy wszystko
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
################
# blokujemy #
################
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
######################
# ustawienia wstepne #
######################
# ochrona przed atakiem typu Smurf
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# wlaczamy ochrone przed blednymi pakietami 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
#Blokada przed atakami typu SYN FLOODING
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#Blokowanie błędnych pakietow
iptables -A INPUT -j DROP -m unclean
#### wlaczenie loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
# Dodanie do tablicy INPUT reguł wpuszczających pakiety należące do
#już nawiązanych (ESTABLISHED) połączeń.
iptables -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p icmp -j ACCEPT -m state --state RELATED
# www i DNS
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 22 -j ACCEPT
# http i https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 443 -j ACCEPT
# ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p udp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p udp --dport 21 -j ACCEPT
# smtp oraz pop3 - oba z ssl
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p udp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 465 -j ACCEPT
iptables -A INPUT -p udp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p udp --dport 995 -j ACCEPT
#Ograniczenie maksymalnej liczby przychodzacych pingow do jednego na sekunde
iptables -A INPUT -p icmp -i eth0 -m limit --limit 1/s -j ACCEPT
#zapisywanie do logow pakietow nie wpuszczonych
iptables -A INPUT -j LOG -m limit --limit 10/hour
echo "Konfiguracja firewalla zakonczona"
Po dodaniu takich reguł serwer zamiera, ping - zero reakcji; brak połączenia przez FTP, SSH, DNS nie odpowiada, itp.
Prosiłbym o sprawdzenie powyższych reguł.
: 31 lipca 2009, 19:39
autor: grzesiek
Witam
Sam to pisałeś? Czy tylko kopiowałeś?
Wywal to:
Kod: Zaznacz cały
#Blokowanie błędnych pakietow
iptables -A INPUT -j DROP -m unclean
to nie tak się robi.
Natomiast to
Kod: Zaznacz cały
#zapisywanie do logow pakietow nie wpuszczonych
iptables -A INPUT -j LOG -m limit --limit 10/hour
to już jest szczyt ochrony

ochrony przed czymś czego nie używasz.
Natomiast początek jest bez sensu.
Przepraszam za krytyczne uwagi.
: 31 lipca 2009, 19:43
autor: giver
Dobrze, każda konstruktywna uwaga jest mile widziana.
Czyli ma zostać tak:
Kod: Zaznacz cały
#########################################
#sudo chmod 700 firewall.sh #
#sudo cp firewall.sh /etc/init.d/ #
#sudo update-rc.d firewall.sh default #
#########################################
echo "Konfiguracja firewalla rozpoczeta"
# czyscimy wszystko
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
################
# blokujemy #
################
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#### wlaczenie loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
# Dodanie do tablicy INPUT reguł wpuszczających pakiety należące do
#już nawiązanych (ESTABLISHED) połączeń.
iptables -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p icmp -j ACCEPT -m state --state RELATED
# www i DNS
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 22 -j ACCEPT
# http i https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 443 -j ACCEPT
# ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p udp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p udp --dport 21 -j ACCEPT
# smtp oraz pop3 - oba z ssl
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p udp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 465 -j ACCEPT
iptables -A INPUT -p udp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p udp --dport 995 -j ACCEPT
#Ograniczenie maksymalnej liczby przychodzacych pingow do jednego na sekunde
iptables -A INPUT -p icmp -i eth0 -m limit --limit 1/s -j ACCEPT
echo "Konfiguracja firewalla zakonczona"
Część skopiowana, część zmodyfikowana i część dopisana.
: 31 lipca 2009, 20:47
autor: grzesiek
"ma zostać" ma być do póki nie nauczysz się lepszych pisać to niech będzie, ale to bardzo prymitywna konstrukcja, lecz jak na początek wystarczy. Np. dziwi mnie fakt, że w wielu miejscach podaje się regułkę:
z czego np. wynika, że:
Kod: Zaznacz cały
iptables -A INPUT -p udp --sport 53 -j ACCEPT
jest niepotrzebne, bo Twój komputer wysyła zapytanie, a wychodzić może wszystko, ktoś powie no tak ale serwer DNS musi odpowiedzieć, i tu mamy przecież:
Kod: Zaznacz cały
iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED
Takich przykładów jest dużo. Chodzi mi o to, że firewall to nie pisanie (ich znajomość) regułek, one tylko wyrażają to co trzeba opisać. Natomiast rzeczą nad którą trzeba się naprawdę skoncentrować to usługi, ich charakterystyka. Pisanie profesjonalnych firewalli wymaga bardzo dobrej znajomości protokołów oraz usług jakie przepuszczamy. Twój skrypt opisuje jedynie porty ale od czegoś trzeba zacząć i wszystko wymaga czasu :-)
: 01 sierpnia 2009, 09:50
autor: giver
Pozostaje mi tylko podziękować za odpowiedź. Na pewno takie uwagi mobilizują niż tylko "tak, może tak być" czy "to się nie nadaje do niczego".