форумы  рассылка  download Перейти на новую версию сайта:
www.slackware.ru
Искать    где:    






    
slackware.ru > Сети > Файерволы > Простой firewall/nat с использованием iptables. ID:2784
 
2005-07-12 hunter
Простой firewall/nat с использованием iptables.
Preface.
надо-же какой ответ получился ..., надо его в статьи вставить:-)
Замечания и предложения поощряются.

Firewall script.
Самый простой (минималистский:-) скрипт построения firewall с использованием SNAT для доступа к internet из внутренней сети.

! предполагается, что INT_NET принадлежит к какому-либо из
! выделеных private сегментов ip адресов
!! внешний адрес должен быть статическим
!!! доступа извне к сервисам самого шлюза отсутствует,
!!! только из внутренней сети
!!!! никаких гарантий от DoS/DDoS !!!!


#!/bin/bash

# config section
# !!! insert your own parameters for int/ext interfaces

LO_IFACE="lo"
LO_NET="127.0.0.0/8"

INT_NET="192.168.0.0/24" # put your internal netaddr here
INT_IFACE="eth1"
EXT_IP="xxx.xxx.xxx.xxx" # put your external interface ip here
EXT_IFACE="eth0"

# Remove any existing rules from all chains
iptables -F
iptables -F -t nat
iptables -F -t mangle

# Set the default policy to drop
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Allow unlimited traffic on the loopback interface
iptables -A INPUT -i $LO_IFACE -j ACCEPT
iptables -A OUTPUT -o $LO_IFACE -j ACCEPT

# Remove any pre-existing user-defined chains
iptables -X
iptables -X -t nat
iptables -X -t mangle

# Enable IP Forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward

# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done

# Don't send Redirect Messages
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done

# Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done

# Drop Spoofed Packets
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

# Log packets with impossible addresses.
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done

# Masquerade internal traffic
iptables -t nat -A POSTROUTING -s $INT_NET \
-o $EXT_IFACE -j SNAT --to $EXT_IP

# Forward traffic from internal hosts
iptables -A FORWARD -i $INT_IFACE -s $INT_NET -j ACCEPT

# All internal machines have access to the firewall machine
iptables -A INPUT -i $INT_IFACE -s $INT_NET -j ACCEPT
iptables -A OUTPUT -o $INT_IFACE -d $INT_NET -j ACCEPT

последние два правила необязательны, если нет необходимости в доступе к шлюзу из внутренней сети (но тогда работы на шлюзе придётся осуществлять только с локальной консоли).

SNAT vs MASQUERADE

Действие MASQUERADE использует получение ip адреса непосредственно от интерфейса, в отличие от SNAT, которое использует прямое указание ip адреса. Поэтому, MASQUERADE является единственной возможностью построить правила для интерфейса с динамическим адресом, поскольку SNAT ипеет свойство "помнить" адрес сетевого интерфейса в течение длительного времени.
Однако, по заявлению разработчика iptables, MASQUERADE создает дополнительную нагрузку на систему (что не удивительно, т.к. для каждого исходящего пакета нужно выполнять процедуру вычисления адреса внешнего интерфейса). По этой причине рекомендуется для статических адресов использовать действие SNAT.

Conclusion

1. Должен сразу предупредить, что предложенный firewall примитивно пересылает весь трафик наружу (даже к узлам с из private сегментов за исключением сети $INT_NET). Для элегантного firewall'а (ограничение доступа по port/protocol, DMZ, etc.) требуется набор более изощрённых правил и bash script, соответственно.
2. Для защиты от DoS/DDoS необходимо вводить пользовательские правила с использованием критерия limit.



оставить комментарий
Как Вы оцениваете эту статью? 
коментарии к статье

 развернуть комментарии (всего 0,персональных 0)