01 мая 2024, 18:44:20

Новости:

Чтобы использовать все возможности форума на смартфоне или планшете необходимо в браузере выбрать настройку "Версия для ПК".


D

iptables

Автор Dark_Elf, 31 июля 2006, 14:50:45

0 Пользователей и 1 гость просматривают эту тему.

Dark_Elf

кто-нить! помогите! скинте мне рабочую цепь iptables (файл конфигурации) заранее очнь благодарен.

Melenki

Слишком размыто вопрос поставлен, поточнее бы  :)
Тебе нужно простой переброс адресов из локалки в и-нет сделать (NAT)? Нужна фильтрация портов? Нужны какие-то особенности, есть какие-то специфические пожелания?

Dark_Elf

нужен простой шлюз, НАТ. просто чтобы компы из локалки могли выходить и инет, по одному АйПи

Melenki

Ну раз простой NAT нужен, то примерно так:

#!/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


Можно конечно многое повыкидывать из этого сценария и сильно его укоротить, особенно избавившись от переменных, но это не круто  ;)  А так получается более-менее универсально!

Dark_Elf

Спасибо! Разобрался :)

Salagin

Тема все таки про Линукс, переношу.
P.S. Не забудь включить ip_forward
Если к власти не придут красно-коричневые, потому что им помешают зеленые, то власть захватят голубые.

Летят N самолетов, нет N мало -- К и оба реактивные...

Melenki

ЦитироватьP.S. Не забудь включить ip_forward

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



По всем вопросам пишите по адресу gratispp@mail.ru