iptables

Регистрация на сайте
GRATIS форум > Архивы > ** Компьютер
Dark_Elf
кто-нить! помогите! скинте мне рабочую цепь iptables (файл конфигурации) заранее очнь благодарен.
Melenki
Слишком размыто вопрос поставлен, поточнее бы smile.gif
Тебе нужно простой переброс адресов из локалки в и-нет сделать (NAT)? Нужна фильтрация портов? Нужны какие-то особенности, есть какие-то специфические пожелания?
Dark_Elf
нужен простой шлюз, НАТ. просто чтобы компы из локалки могли выходить и инет, по одному АйПи
Melenki
Ну раз простой NAT нужен, то примерно так:
CODE

#!/bin/bash

# Пути к файлам
FW="/usr/sbin/iptables"
LSMODE="/sbin/lsmod"
MODPROBE="/sbin/modprobe"

# Сетевые интерфейсы (IF_INT "смотрит" в и-нет, IF_LAN - в локалку)
IF_INT="eth1"
IF_LAN="eth0"
IF_LO="lo"

# IP-адрес на "внешнем" интерфейсе  
IP_INT="83.222.31.168"

# --- Загрузка модулей ---
RESULTS='$LSMOD | grep ip_conntrack_ftp'
if [ -z ${RESULTS} ]; then
   ${MODPROBE} ip_conntrack_ftp
fi
RESULTS='$LSMOD | grep ip_nat_ftp'
if [ -z ${RESULTS} ]; then
   ${MODPROBE} ip_nat_ftp
fi
RESULTS='$LSMOD | grep ip_conntrack_irc'
if [ -z ${RESULTS} ]; then
   ${MODPROBE} ip_conntrack_irc
fi
RESULTS='$LSMOD | grep ip_nat_irc'
if [ -z ${RESULTS} ]; then
   ${MODPROBE} ip_nat_irc
fi

# --- Очистка цепочек ---
${FW} -t filter --flush
${FW} -t filter --delete-chain
${FW} -t nat --flush
${FW} -t nat --delete-chain
# ... и установка правил по умолчанию
${FW} -t filter -P INPUT DROP
${FW} -t filter -P OUTPUT DROP
${FW} -t filter -P FORWARD DROP

# Запреты от SYN-атак, флуд-атак и прочей бяки
for ip in ${IP_INT} ${IP_WWW} ${IP_LAN}; do
    ${FW} -t filter -A INPUT -p tcp --syn -d ${ip} --dport ident -j REJECT
done
for ethX in ${IF_INT} ${IF_LAN}; do
   ${FW} -t filter -A INPUT -f -p tcp -i ${ethX} -j REJECT
done

# --- Разрешающие правила ---
for ethX in ${IF_LO} ${IF_LAN} ${IF_INT}; do
   for proto in tcp udp icmp; do
       ${FW} -t filter -A INPUT   -i ${ethX} -p ${proto} -j ACCEPT
       ${FW} -t filter -A OUTPUT  -o ${ethX} -p ${proto} -j ACCEPT
       ${FW} -t filter -A FORWARD -i ${ethX} -p ${proto} -j ACCEPT
       ${FW} -t filter -A FORWARD -o ${ethX} -p ${proto} -j ACCEPT
   done
done

# --- NAT ---
for proto in tcp udp icmp; do
  ${FW} -t nat -A POSTROUTING -o ${IF_INT} -p ${proto} -j SNAT --to-source ${IP_INT}
done

# --- Правила для разрешенных пакетов ---
for rule in INPUT OUTPUT FORWARD; do
   ${FW} -t filter -A ${rule} -m state --state ESTABLISHED,RELATED -j ACCEPT
done

# ...и на последок  :)
$FW -t filter -A INPUT -j REJECT
$FW -t filter -A OUTPUT -j REJECT
$FW -t filter -A FORWARD -j REJECT


Можно конечно многое повыкидывать из этого сценария и сильно его укоротить, особенно избавившись от переменных, но это не круто wink.gif А так получается более-менее универсально!
Dark_Elf
Спасибо! Разобрался smile.gif
Salagin
Тема все таки про Линукс, переношу.
P.S. Не забудь включить ip_forward
Melenki
QUOTE
P.S. Не забудь включить ip_forward

Ядра версий 2.6.хх (и старшие подверсии в 2.4.хх) автоматически загружают модуль ip_forward, если в цепочке filter используется правило FORWARD.