Глава 3
3. Създаване и управление на защитна стена.
3.1 Системни изисквания
Поради факта, че защитната стена ще бъде стартирана върху основният сървър изискванията към хардуера са завишени.
Процесор : минимум Pentium II 500 Mhz
Системна памет : минимум 128 Mb
Операционна система : Linux Slackware 9.1 kernel 2.4.22 или по-висока версия
Хард дисково пространство : минимум 5 Gb
Кеш диск на Linux : минимум 300 Mb
Мрежова платка : минимум 100 Мbit
3.2. Проверка и инсталиране на скриптовете за защитната стена
За да се стартира автоматично след зареждане на операционната система скрипта трябва да се намира в /etc/rc.d/rc.firewall (в тази директория се намират всички стартови скриптове).След като скрипта е преименуван и преместен в директорията /etc/rc.d тои може да бъде стартиран с командата ./etc/rc.d/rc.firewall start|stop|restart.Ако няма съобштения за грешка можем с командата iptables –L –n –v да визуализираме въведените от скрипта правила в iptables.
#iptables – L –n –v
с командата
iptables –I 1 FORWARD –s 10.100.100.99 –j DROP
спираме трафика на хост с IP 10.100.100.99 (може да се замени
с произволно IP от нашата подмрежа)
Възстановяването на трафика към хоста става с командата
iptables –D FORWARD –s 10.100.100.99 –j DROP
Спирането на трафика на цялата подмрежа става с командата
iptables –I 1 FORWARD –i eth1 –j DROP
Възстановяването на трафика към подмрежата става с командата
iptables –D FORWARD –i eth1 –j DROP
Приложение 1
Скриптове
#!/bin/bash
# iptables, by DreamTeam
# description: Script for setting IPTABLES rules
# processname: iptables
#========================================================
# Network information you will need to adjust
MYDEV="eth1"
MYNET="10.100.100.0/24"
MYBCAST="10.100.100.255"
DKDEV="eth0"
# Pathnames
DMESG="/bin/dmesg"
IPTABLES="iptables"
MODPROBE="/sbin/modprobe"
#========================================================
# start stop restart menu
case "$1" in
'stop')
echo "Stop the Firewall"
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
exit 0
;;
'restart')
echo "Restart firewall"
$0 stop
exec $0 start
exit 0
;;
'start')
echo "Start FIREWALL"
;;
*)
echo "usage $0 start|stop|restart" ;;
esac
#========================================================
# Insert modules- should be done automatically if needed
dmesg -n 1 #Kill copyright display on module load
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
#
## Flush everything, start from scratch
#
# Incoming packets from the outside network
$IPTABLES -F INPUT
# Outgoing packets from the internal network
$IPTABLES -F OUTPUT
# Forwarding/masquerading
$IPTABLES -F FORWARD
$IPTABLES -F FORWARD2
#Nat table
$IPTABLES -t nat -F
##Setup sysctl controls which affect tcp/ip
#
#Disabling IP Spoofing attacks.
#Comment this line out when using IPSEC
echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
#Don't respond to broadcast pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Defragment all Packets
#Default now
#Enable forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward
#Block source routing
echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route
#Kill timestamps. These have been the subject of a recent bugtraq thread
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
#Enable SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#Kill redirects
echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
#Enable bad error message protection
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#Allow dynamic ip addresses
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#Log martians (packets with impossible addresses)
#RiVaL said that certain NICs don't like this. Comment #out if necessary.
echo 1 >/proc/sys/net/ipv4/conf/all/log_martians
#Set out local port range
echo "32768 61000" >/proc/sys/net/ipv4/ip_local_port_range
#Reduce DoS'ing ability by reducing timeouts
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
#========================================================
##Set basic rules
#Kill ANY stupid packets, including
#-Packets that are too short to have a full ICMP/UDP/TCP #header
#-TCP and UDP packets with zero (illegal) source and #destination ports
#-Illegal combinations of TCP flags
#-Zero-length (illegal) or over-length TCP and IP #options,
#or options after the END-OF-OPTIONS option
#-Fragments of illegal length or offset (e.g., Ping of #Death).
#Tuk se deklarira novat veriga Forward2
$IPTABLES -N FORWARD2
#This has been found to be a little buggy. Removed for #now.
$IPTABLES -A INPUT -m unclean -j DROP
$IPTABLES -A FORWARD2 -m unclean -j DROP
#Kill invalid packets (illegal combinations of flags)
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A FORWARD2 -m state --state INVALID -j DROP
# Allow all connections on the internal interface
$IPTABLES -A INPUT -i lo -j ACCEPT
#Kill connections to the local interface from the outside #world.
$IPTABLES -A INPUT -d 127.0.0.0/8 -j REJECT
#Allow unlimited traffic from internal network using #legit addresses
$IPTABLES -A INPUT -i $MYDEV -s $MYNET -j ACCEPT
#Razre6ava unlimited trafik na vhoda za UDP
$IPTABLES -A INPUT -i $DKDEV -p udp -j ACCEPT
#Kill anything from outside claiming to be from internal #network
$IPTABLES -A INPUT -i $DKDEV -s $MYNET -j REJECT
##ICMP
#ping don't forward pings going inside
$IPTABLES -A FORWARD2 -p icmp --icmp-type echo-request -o $MYDEV -j REJECT
#ping flood protection
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
#Deny icmp to broadcast address
$IPTABLES -A INPUT -p icmp -d $MYBCAST -j DROP
#Allow all other icmp
$IPTABLES -A INPUT -p icmp -j ACCEPT
##Allow established connections
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Samba Share
$IPTABLES -A INPUT -p tcp --dport 137 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 137 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 138 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 138 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 139 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 139 -j ACCEPT
#Allow ALL other forwarding going out
$IPTABLES -A FORWARD2 -o $DKDEV -i $MYDEV -j ACCEPT
#Allow replies coming in
$IPTABLES -A FORWARD2 -i $DKDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
#Allow nameserver packets. Different versions of #iptables seem to error here.
$IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT
#FRom here on, we're dealing with connection attempts.
#The -m limit is a DoS protection on connects
#First we allow a certain amount of connections per #second
#DROP the rest (so we don't DoS ourself with rejections)
#We don't limit normal packets (!syn) by allowing the #rest
##Basic services. Uncomment to allow in.
# ftp-data
$IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT
# ftp
$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT
# ssh
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
#telnet
$IPTABLES -A INPUT -p tcp -i $MYDEV --dport 23 -j ACCEPT
# DNS
$IPTABLES -A INPUT -p tcp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 53 -j ACCEPT
# http
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
#Traceroutes depend on finding a rejected port. DROP the #ones it uses
$IPTABLES -A INPUT -p udp --dport 33434:33523 -j DROP
#Don't log ident because it gets hit all the time eg #connecting to an irc server
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT
#Don't log igmp. Some people get too many of these
$IPTABLES -A INPUT -p igmp -j REJECT
#Don't log web or ssl because people surfing for long #times lose connection
#tracking and cause the system to create a new one, #flooding logs.
$IPTABLES -A INPUT -p tcp --dport 80 -j REJECT
$IPTABLES -A INPUT -p tcp --dport 443 -j REJECT
##Catch all rules.
#iptables reverts to these if it hasn't matched any of #the previous rules.
#Log. There's no point logging noise. There's too much #of it.
#Just log connection requests
$IPTABLES -A INPUT -p tcp --syn -m limit --limit 5/minute -j LOG \
--log-prefix "Firewalled packet:"
$IPTABLES -A FORWARD2 -p tcp --syn -m limit --limit 5/minute -j LOG \
--log-prefix "Firewalled packet:"
#Reject
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p all -j DROP
$IPTABLES -A FORWARD2 -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD2 -p all -j DROP
#Accept it anyway if it's only output
$IPTABLES -A OUTPUT -j ACCEPT
#tova sa pravila za hostovete koito suotvetstvat #na verigata FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.99 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.99 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.100 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.100 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.101 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.101 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.102 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.102 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.103 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.103 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.104 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.104 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.105 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.105 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.106 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.106 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.107 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.107 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.108 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.108 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.109 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.109 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.110 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.110 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.111 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.111 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.112 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.112 -j FORWARD2
$IPTABLES -A FORWARD -s 10.100.100.113 -j FORWARD2
$IPTABLES -A FORWARD -d 10.100.100.113 -j FORWARD2
#====================================================
#Masquerade internal connections going out.
$IPTABLES -A POSTROUTING -t nat -o $DKDEV -j SNAT --to-source 10.100.12.57
exit 0
Използвана литература
-
A Guide to Networking for The OSI Seven-Layer Model – Марк Грънч – изд. Penwin 2001
-
Firewall - Webopedia Definition and Links – Internet източник– Internet източник-www.webopedia.com/firewalls
-
Firewall and Ргоxу Server HOWTO Advanced Configurations– Internet източник – www.linux.org/how-to’s
-
Firewall and Ргоxу Server HOWTO APPENDEX A - Example Scripts– Internet източник - www.linux.org/how-to’s
-
Firewall and Ргоxу Server HOWTO Firewall Architecture– Internet източник - www.linux.org/how-to’s
-
Firewall and Ргоxу Server HOWTO IP filtering setup (IPFWADM) – Internet източник www.xos.de
-
Firewall and Ргоxу Server HOWTO Preparing the Linux system– Internet източник - www.linux.org/how-to’s
-
Firewall and Ргоxу Server HOWTO Setting up the Linux Filtering Firewall– Internet източник - www.linux.org/how-to’s
-
Firewall and Ргоxу Server HOWTO Understanding Firewalls– Internet източник - www.linux.org/how-to’s
-
FishNet Security - Security Information - Firewall - Types– Internet източник - www.linux.org/how-to’s
-
Internet Firewalls Frequently Asked Questions– Internet източник - www.linux.org/how-to’s
-
Linux ръководство на межовия администратор- O’REILLY
-
Linux мрежови сървъри – Craig Hunt
13.www.linux-bg.org – internet източник
СЪДЪРЖАНИЕ
Увод 3
ПЪРВА ГЛАВА
1. Основи на мрежите. Протоколен стек TCP/IP. 7
1.1. Седемслоен мрежов модел ISO/OSI 7
1.1.1 Определяне на слоевете 7
1.1.2 Последователност на съобщенията 8
1.1.3. Дефиниция на седемслойният мрежов модел 9
1.1.4 Увеличаване на пропускливостта 13
1.1.5 Управление на потока от данни 14
1.2. TCP/IP протоколен стек. 17
1.2.1 Набор от протоколи TCP/IP 18
1.2.2. Протоколен стек TCP/IP 20
1.2.3. Адресиране на пакети в TCP/IP 22
1.2.4. Термини за ТСР/IР 23
1.2.5. Протоколите и работата им с данните 25
1.2.6. Протоколи на транспортния слой 26
1.2.7. Протоколи на мрежовия слой 27
1.2.8. Протоколи на каналния слой 31
1.2.9. Други важни протоколи 32
ВТОРА ГЛАВА
2. Методи за анализ и контрол на IP трафика 35
2.1. Хардуерен метод за анализ и контрол на
IP трафика 35
2.1.1. Определение за маршрутизация 35
2.1.2. Методи за маршрутизация 37
2.1.3. Маршрутизатор 38
2.2 Софтуерни методи за анализ и контрол на IP трафика 40
2.2.1 Защитни стени в Internet 40
2.2.2 Видове защитни стени 40
2.2.2.1 Защитна стена с филтриране на пакетите 40
2.2.2.2 Цикличен гейтуей. 42
2.2.2.3 Гейтуей на приложно ниво. 44
2.2.2.4 Защитна стена с проверка на състоянието 46
2.3 Налични средства в операционна система
Linux за управление и анализ на IP трафика 47
ГЛАВА 3
3. Създаване и управление на защитна стена. 81
3.1 Системни изисквания 81
-
Проверка и инсталиране на скриптовете
за защитната стена 81
Приложение 1 84
Използвана литература 90
Съдържание 91
Сподели с приятели: |