Config iptables

Zagadnienia bezpieczeństwa w systemie
pawelekm
Posty: 6
Rejestracja: 16 marca 2011, 14:51

Config iptables

Post autor: pawelekm »

Witam
Jestem nowym na tym forum i trochę początkującym (nie aż takim zielonym ;) ). Postawiłem sobie serwerek na debianie 7.7 i chcę uczyć się więcej. Docelowo strona www. Zanim przejdę dalej w nauce chciałbym zacząć od bezpieczeństwa a pierwsze co wg mnie jest firewall. Nie chciałem by był skomplikowany a jednocześnie by spełniał swoje zadanie. Strumień wejściowy i pakiety przechodzące między interfejsami ustawiłem na drop (przycięte) a pakiety wychodzące przepuściłem.
Prosiłbym (o ile to możliwe) o sprawdzenie i ewentualne podpowiedzi na temat mego iptables za co z góry dziękuję :)

Kod:

Kod: Zaznacz cały

# Blokada przed atakiem DOS  Teardrop
iptables -A INPUT -p UDP -f -j DROP

# Blokada przed atakiem DOS  Jolt
iptables -A INPUT -p ICMP -f -j DROP

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

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

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

# Nie akceptujemy datagramu IP z opcja "source route"
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# Zabezpieczenie przed powodzia pakietów SYN (ang. Syn-flood)
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Skaner portow Furtive
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Ping of death
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward


# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X

# ustawienie domyslnej polityki
iptables -P INPUT DROP      #input   -strumien wchodzacy; drop-blokada
iptables -P FORWARD DROP    #forward -pakiety przechodzace miedzy interfejsami
iptables -P OUTPUT ACCEPT   #output  -wychodzace pakiety przepuszczamy

# lo - nie wiem czy to potrzebne bo i bez tego tez dziala
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A FORWARD -o lo -j ACCEPT

# utrzymanie polaczen nawiazanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

# udostepnianie internetu w sieci lokalnej MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT

# telnet
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT


################################################################
######################       POCZTA         ##############################

# SMTP (wychodzaca)
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

# POP3 (odbieramy emaile)
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT

#IMAP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT

#SSMTP - SMTP - SSL
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT

# SMTP (poczta wychodzaca)
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT

# IMAP SSL
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT

# POP3 SSL
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT

################################################################


# www - 80
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# https
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# DHCP - nie wiem czy to potrzebne bo i bez tego tez dziala
# iptables -A INPUT -p tcp --dport 67 -j ACCEPT
# iptables -A INPUT -p udp --dport 67 -j ACCEPT

# ssh przekierowanie
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 15142  -j ACCEPT

# webmin-20000
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000 -j ACCEPT

# ISP Config
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

# ISP Config - Mailman
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT


################################################################
#######################           SQUID                ##########################

# 3128
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT

# squid
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#################################################################
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Popraw Post. Używaj znaczników

Kod: Zaznacz cały

. 
[url=http://www.debian.pl/threads/5676-Przeczytaj-zanim-cokolwiek-napiszesz%21][color=#0000cd]Przeczytaj-zanim-cokolwiek-napiszesz![/color][/url][/color]

Piszesz że na serwerze ma być strona www. Więc generalnie otwarte porty 80 i 443. 
Po co Ci inne np telnet,squid czy smtp imap pop3
Serwer ma być bramą do Internetu (Maskarada)?
Forward loopback - bez sensu.
pawelekm
Posty: 6
Rejestracja: 16 marca 2011, 14:51

Post autor: pawelekm »

Wiem, że źle wpisałem (chodziło mi głównie o poprawność kodu) na początku do czego i co chcę wykorzystywać. Wiem też, że im mniej otwartych portów tym lepiej. Chciałem wiedzieć czy kod jest poprawny. Ogólnie ma być strona, lecz jak widać w kodzie- nie tylko. Maskarada to przygotowanie do serwera na kilka komputerków. Squid do kontroli, na jakie stronki użytkownicy w sieci będą wchodzili. Będzie też dhcp. Smtp, imap, pop3 to jak będzie stała stronka (wordpress) to i poczta by się przydała. Telnet do sprawdzenia z linii komend poprawności działania poczty. Loopback-tego jak było napisane- nie jestem pewien. Ogólnie chciałem zapytać czy w ten sposób uzupełniania kodu firewalla jest poprawny i czy usłyszę jakieś wskazówki... ;)
Dziękuję za wszelkie podpowiedzi i cierpliwość :)
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Po usunięciu nadmiarowych reguł:

Kod: Zaznacz cały



# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X


# Ochrona przed atakami typu Smurf
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Wlaczamy ochrone przed komunikacja ICMP error
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Wlacza logowanie dziwnych pakietow (spoofed. source routed. redirects)
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
# Nie akceptujemy datagramu IP z opcja "source route"
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route


# ustawienie domyslnej polityki
iptables -P INPUT DROP      #input   -strumien wchodzacy; drop-blokada
iptables -P FORWARD DROP    #forward -pakiety przechodzace miedzy interfejsami
iptables -P OUTPUT ACCEPT   #output  -wychodzace pakiety przepuszczamy

# lo - nie wiem czy to potrzebne bo i bez tego tez dziala
iptables -A INPUT -i lo -j ACCEPT

# utrzymanie polaczen nawiazanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED


# www - 80
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# https
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

Awatar użytkownika
Yampress
Administrator
Posty: 6367
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

A jak ma tym zarządzać?

trzeba jeszcze ssh wpuścić na 22 porcie tcp
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Fakt. Umknęło mi:-)
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

trzeba jeszcze ssh wpuścić na 22 porcie tcp
Nie trzeba - wystarczy monitor, klawiatura i mysz bezpośrednio do serwerka :) .

A jeśli już trzeba SSH to najlepiej w /etc/ssh/sshd_config ustawić inny port i wtedy go odblokować.

Kod: Zaznacz cały

(...)# What ports, IPs and protocols we listen for
Port 9563
# Use these options to restrict which interfaces/protocols sshd will bind to
(...)
ODPOWIEDZ