PDA

Показать полную графическую версию : Настройка IPTABLES


AndreySin
16-09-2003, 12:20
Админы. Помогите плз настроить Linux RH9. Задача такого плана: У меня в сети 2-а сервера.
1. Linux RH9. 2.Novell 6.0.
На обоих серверах по две сетевые карты. Linux смотрит в инет (eth0), eth1 смотрит на Novell (eth3), eth4 смотрит в локалку. Пинги с локалки доходят до eth0. Пинги с Linux доходят до локалки. Тут все нормально. В интернет имеет доступ только Linux сервер. С локалки доступа в инет нету.
Как мне настроить Linux, чтобы (для начала) из локалки все имели доступ в инет? (т.е чтобы Linux форвордил все запросы и туда и обратно)

sergleo
16-09-2003, 13:28
1. Почитай книгу "Брандмауры в Linux" Роберта Л. Зиглера
2. Iptables Tutorial 1.1.19 на http://iptables-tutorial.frozentux.net/iptables-tutorial.html

Вопросы
1. как настоен роутинг? на сервере Novell
2. Настройки iptables по умолчанию? или свои?

PS книга для ipchains - но после корректировки правил все прекрасно работает и для iptables.(во всяком случае у меня)
Я использую новел только как файл сервер и в раздаче инета он не работает... ибо лучше его как файл сервера нету, а как сервер для инета он немного сыроват...

AndreySin
16-09-2003, 14:05
Я не согласен насчет Novellа. Novell на мой взгляд самая лучшая ОС для сервака. Просто с софтом под него трудновато. Я бы и не заморачивался с Linux-ом если бы смог купить почтовый сервер под Novell.

Настройки iptables по умолчанию.
ip адреса
Linux
eth0 - x.x.x.x netmask 255.255.255.252
eth1 - 10.0.0.254 netmask 255.255.255.0
Novell
eth3 - 10.0.0.1 netmask 255.255.255.0
eth4 - 192.168.0.1 netmask 255.255.255.0
локалка 192.168.0.0/24
Роутинг на сервере Novell через eth1 (default gateway 10.0.0.254)


Добавлено:

Еще можно добавить вопрос куда запихивать script, чтобы он инициализировался при старте? Или можно ли его как-нить запустить после старта машины из коммандной строки? И что для этого надо сделать?

sergleo
16-09-2003, 14:46
ну... насчет новелла 6 не знаю, у меня 4.12 летает и в инет не лазит... не надо ему это...
По роутингу:
на новелле роутинг должен быти типа например:
если eth0 локальная сеть за сервером
eth0 net 192.168.0.0 netmask 0.0.0.0 gw 192.168.0.1
если eth1 - DMZ
eth1 net default gw 10.0.0.254
на Linux: gw для dmz должен быть 10.0.0.1(eth1 новелла) а default на прова
По IPTables: мои правила занимают ~24K (переписанные из книги) все пишется в файло /etc/sysconfig/iptables
Если нужно подробнее: кусок начальных установок
#------------------------------------------------------------------
# Default
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#------------------------------------------------------------------
# LOOPBACK Inteface
# Unlimited traffic on the loopback interface
-A INPUT  -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#Я доверяю внутренней сети DMZ
#------------------------------------------------------------------
# Unlimited traffic within the local network.
# All internal machines have access to the fireall machine.
-A INPUT  -i eth0 -s x.x.x.0/24 -d any/0 -j ACCEPT
-A OUTPUT -o eth0 -s any/0 -d x.x.x.0/24 -j ACCEPT

<поцокано>
Здесь идут основные правила iptables
<поцокано>

#------------------------------------------------------------------
# Masquerade internal traffic.
# All internal traffic is masqueraded externally.
*nat
-A POSTROUTING -o eth1 -j MASQUERADE

COMMIT

PS В начальных установках:

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

- Лучше DROP - НО у меня плохо это работало... поэтому я оставил так как есть а все остальное убиваю... по правилам...

PSS Если нужно подробнее пиши ... Поможем...

AndreySin
16-09-2003, 15:37
Насчет Novella 4.хх.
4.хх не сравнится с 6.0 или с 5.1 (но 5.0) Совершенно другие технологии.
Администрится проще некуда, удобна во всех случаях.(За исключением халявного софта на рынке)
Неговоря о том (как ты заметил), что как FS и его привязки к NDS, его еще ни кто не переплюнул (даже мелкософт, который пытается подражать Novell-у аля ActiveDirectory и т.д.)
Отвлекся немного.
Этого хватит, чтобы Linux заработал?
Конечно хотелось бы иметь весь спектр конфигурационных файлов для Linux, чтобы не мучаться с прописью вручную (т.к. я в пингвинах, как свинья в апельсинах). И еще вопрос как запустить скрипт с консоли (как не пытался выдает какую ту фигню, типа не может наити файлы , каталоги и т.д.).

sergleo
16-09-2003, 16:17
По первому вопросу: нет этого не хватит - это только начало и конец скриптов чтобы небыло проблем с LO - интерфейса обратной петли 127.0.0.1 в линуксе и доступ всеи DMZ-внутренней сети между двумя серверами- сети. Плюс маскарадинг сети... скрываем внутреннюю сеть от посторонних глаз...
Где стоит <поцокано> идут твои правила на сервисы машины.. например www ftp и тд что должно работать...
Обязатьльно нужно разрешить и icmp протокол например:
#------------------------------------------------------------------
# ICMP
#------------------------------------------------------------------

#------------------------------------------------------------------
# (4) *Source_Quench
# * * *incoming & outgoing requests to slow down (flow control)
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 4 -d 10.0.0.254 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 4 -d any/0 -j ACCEPT
# ISP
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 4 -d XXX.XXX.XXX.XXX -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 4 -d any/0 -j ACCEPT

#------------------------------------------------------------------
# (12) Parameter_Problem
# * * *incoming & outgoing error messages
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 12 -d 10.0.0.254 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 12 -d any/0 -j ACCEPT
# ISP
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 12 -d XXX.XXX.XXX.XXX -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 12 -d any/0 -j ACCEPT

#------------------------------------------------------------------
# (3) *Dest_Unreachable, Service_Unavailable
# * * *incoming & outgoing size negotiation, service or
# * * *destination unavailability, final traceroute response
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 3 -d 10.0.0.254 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 3 -d any/0 -j ACCEPT
# ISP
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 3 -d XXX.XXX.XXX.XXX -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 3 -d any/0 -j ACCEPT

#------------------------------------------------------------------
# (11) Time_Exceeded
# * * *incoming & outgoing time out conditions,
# * * *also intermediate TTL response to traceroutes
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 11 -d 10.0.0.254 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 11 -d any/0 -j ACCEPT
# ISP
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 11 -d XXX.XXX.XXX.XXX -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 11 -d any/0 -j ACCEPT

#------------------------------------------------------------------
# (8) Echo Request
# (0) Echo Reply

# allow outgoing pings to anywhere
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 8 -d any/0 -j ACCEPT
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 0 -d 10.0.0.254 -j ACCEPT
# allow incoming pings from trusted hosts
-A INPUT *-i eth0 -p icmp -s any/0 --icmp-type 8 -d 10.0.0.254 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -s 10.0.0.254 --icmp-type 0 -d any/0 -j ACCEPT
# ISP
# allow outgoing pings to anywhere
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 8 -d any/0 -j ACCEPT
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 0 -d XXX.XXX.XXX.XXX -j ACCEPT
# allow incoming pings from trusted hosts
-A INPUT *-i eth1 -p icmp -s any/0 --icmp-type 8 -d XXX.XXX.XXX.XXX -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s XXX.XXX.XXX.XXX --icmp-type 0 -d any/0 -j ACCEPT

Чтобы ходили пинги и т.д были ответы твоего сервера...
Это встовляешь где <поцокано> - потом все вместе в файл
/etc/sysconfig/iptables
и перезапускаешь ipTables
/etc/rc.d/init.d/iptables restart

1. Где стоит XXX.XXX... - напиши свои IP и 10.0.0..... ip внутренней сети DMZ...
2. Учти что данный кусок дает права доступа только lo, внутренней сети на твою машину и ответам сервака на пинг и тд на управляющую часть протокола tcp/ip - icmp.
А тебе еще необходимо разрешить как минимум ходить telnet(или SSH что предпочтительней), DNS,WWW, FTP... и тд...
Иначе не будет доступа в инет основных служб и вашей сети к ним... Т.Е доступа к ресурсам инета...
PS

Если необходимо подробнее стучись в асю... ибо это и так много... и далее приватный разговор по настройке Linux

Или пости сюда будем делать по шагам... с перерывами...


Исправлено: sergleo, 17:31 16-09-2003

AndreySin
16-09-2003, 16:47
Спасибо sergleo

sergleo
16-09-2003, 17:40
Пиши поможем...

Barracuda
16-09-2003, 21:39
sergleo
:up:

AndreySin
17-09-2003, 12:03
Sergleo Проблемы

sergleo
17-09-2003, 13:10
Ок, если вы уже набрали этот кусок кода то лучше по порядку - структура:
1. начинаем с подготовки iptables - 1-й кусок скриптов отправленный 15:46 16-09-2003 . ВНИМАНИЕ! Все остальное вставляется в участок где стоят теги <поцокано>
2. вставляем участок скриптов отправленный 17:17 16-09-2003.
3. следующим идет кусок скрипта для работы с AUTH и DNS т.к. к ним идет наибольший трафик(проверено iptraf`ом)
#------------------------------------------------------------------
# Required Services
#------------------------------------------------------------------

#------------------------------------------------------------------
# AUTH (113) - Allowing Your Outgoing AUTH Requests as a Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX *--sport 1024:65535 -d any/0 --dport 113 -j ACCEPT
-A INPUT *-i eth1 -p tcp ! --syn -s any/0 --sport 113 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#---------------------------------
# AUTH server (113)
# Accepting Incoming AUTH Requests
-A INPUT *-i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX *--dport 113 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 113 -d any/0 --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# OR Rejecting Incoming AUTH Requests
#-A INPUT -i eth0 -p tcp -d 10.0.0.254 --dport 113 -j REJECT
#-A INPUT -i eth1 -p tcp -d XXX.XXX.XXX.XXX --dport 113 -j REJECT

#------------------------------------------------------------------
# DNS (53)
# ---------------------

#------------------------------------------------------------------
# DNS client modes (53)
# ---------------------
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d a.a.a.a --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p udp -s a.a.a.a *--sport 53 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d b.b.b.b --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p udp -s b.b.b.b --sport 53 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# TCP client to server requests are allowed by the protocol
# if UDP requests fail. This is rarely seen. Usually, clients
# use TCP as a secondary nameserver for zone transfers from
# their primary nameservers, and as hackers.
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d a.a.a.a --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p tcp ! --syn -s a.a.a.a --sport 53 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d b.b.b.b --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p tcp ! --syn -s b.b.b.b --sport 53 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# DNS server modes (53)
# ---------------------
# DNS caching & forwarding nameserver
# -----------------------------------
# server to server query or response
# Caching only name server uses UDP, not TCP
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 53 -d a.a.a.a --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p udp -s a.a.a.a *--sport 53 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 53 -d b.b.b.b --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p udp -s b.b.b.b --sport 53 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
#------------------------------------------------------------------
# DNS full nameserver
# -------------------
# client to server DNS transaction
-A INPUT *-i eth1 -p udp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 53 -d any/0 --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# peer-to-peer server DNS transaction
-A INPUT *-i eth1 -p udp -s a.a.a.a *--sport 53 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 53 -d a.a.a.a --dport 53 -j ACCEPT
-A INPUT *-i eth1 -p udp -s b.b.b.b --sport 53 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 53 -d b.b.b.b --dport 53 -j ACCEPT
#------------------------------------------------------------------
# Zone Transfers
# due to the potential danger of zone transfers,
# only allow TCP traffic to specific secondaries.
-A INPUT *-i eth1 -p tcp -s a.a.a.a --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 53 -d a.a.a.a --dport 1024:65535 -j ACCEPT
-A INPUT *-i eth1 -p tcp -s b.b.b.b --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 53 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 53 -d b.b.b.b --dport 1024:65535 -j ACCEPT

Учти что это ты вставляешь после описания протокола icmp меду тегами поцокано... Блин повторяюсь...
Это и все остальное вставляем до описания:

#------------------------------------------------------------------
# Masquerade internal traffic.
# All internal traffic is masqueraded externally.
*nat
-A POSTROUTING -o eth1 -j MASQUERADE

т.к. используем по умолчанию таблицу *filter, а таблица *nat нужна несколько для других целей например для маскарадинга и переброса портов.

Учти что ххх.ххх.ххх.ххх - IP адрес внешнего интерфейса,
а.а.а.а - ip адрес 1-го DNS сервера провайдера *а b.b.b.b второй соответственно

PS. далее стандартно /etc/rc.d/init.d/iptables restart *перезапускаем iptables он должен написать что у тебя все OK

Вопросы?
следующим рассмотри например www...


Добавлено:

Продолжаем...
#------------------------------------------------------------------
# TCP services on selected ports
#------------------------------------------------------------------

#------------------------------------------------------------------
# HTTP (80)
#------------------------------------------------------------------
# Accessing Remote Web Sites as a Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 80 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Allowing Remote Access to a Local Web Server
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 80 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 80 -d any/0 --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------------
# HTTPS (443)
#------------------------------------------------------------------
# Accessing Remote Web Sites Over SSL as a Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 443 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 443 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Allowing Remote Access to a Local SSL Web Server
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX  --dport 443 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 443 -d any/0 --dport 1024:65535 -j ACCEPT

где xxx.xxx.xxx.xxx - IP адрес внешней сетевой карты... смотрящей на провайдера...

Добавлено:

раздаем ftp

#------------------------------------------------------------------
# FTP (20, 21) - Allowing Outgoing Client Access to Remote FTP Servers
# --------------------------------------------------------------------
# outgoing request
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 21 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Normal Port Mode FTP Data Channels
-A INPUT  -i eth1 -p tcp -s any/0 --sport 20 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT
#------------------------------------------------------------------
# Passive Mode FTP Data Channels
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------------
# FTP (20, 21) - Allowing Incoming Access to Your Local FTP Server
# ----------------------------------------------------------------
# incoming request
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 21 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 21 -d any/0 --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Normal Port Mode FTP Data Channel Responses
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 20 -d any/0 --dport 1024:65535 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 20 -j ACCEPT
#------------------------------------------------------------------
# Passive Mode FTP Data Channel Responses
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT
продолжение следует....

Добавлено:

Остальные сервисы...

#------------------------------------------------------------------
# SSH client (22)
#------------------------------------------------------------------
# Allowing Client Access to Remote SSH Servers
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 22 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1020:1023 -d any/0  --dport 22 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 22 -d XXX.XXX.XXX.XXX  --dport 1020:1023 -j ACCEPT
#------------------------------------------------------------------
# Allowing Remote Client Access to Your Local SSH Server
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 22 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 22 -d any/0 --dport 1024:65535 -j DROP
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1020:1023 -d XXX.XXX.XXX.XXX  --dport 22 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 22 -d any/0 --dport 1020:1023 -j DROP

#------------------------------------------------------------------
# Sending Mail through a remote SMTP gateway (25)
# -----------------------------------------------
# SMTP client to an ISP account without a local server
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 25 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Receiving Mail as a Local SMTP server (25)
# ------------------------------------------
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 25 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------------
# POP (110)
#------------------------------------------------------------------
# Retrieving Mail as a POP Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn -s any/0 --sport 110 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Hosting a POP Server for Remote Clients
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX  --dport 110 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 110 -d any/0 --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# IMAP (143)
#------------------------------------------------------------------
# Retrieving Mail as an IMAP Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 143 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 143 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Hosting an IMAP Server for Remote Clients
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX  --dport 143 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 143 -d any/0 --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# TELNET (23)
#------------------------------------------------------------------
# Allowing Outgoing Client Access to Remote Sites
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 23 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Allowing Incoming Access to Your Local Server
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 23 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 23 -d any/0 --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# NNTP (119)
#------------------------------------------------------------------
# Reading and Posting News as a Usenet Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 119 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 119 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Hosting a Usenet News Server for Remote Clients
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX  --dport 119 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 119 -d any/0 --dport 1024:65535 -j DROP
#------------------------------------------------------------------
# Allowing Peer News Feeds for a Local Usenet Server
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX --sport 1024:65535 -d any/0 --dport 119 -j DROP
-A INPUT -i eth1 -p tcp ! --syn -s any/0 --sport 119 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# FINGER (79)
#------------------------------------------------------------------
# Accessing Remote finger Servers as a Client
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 79 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 79 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j ACCEPT
#------------------------------------------------------------------
# Allowing Remote Client Access to a Local finger Server
-A INPUT  -i eth1 -p tcp -s any/0 --sport 1024:65535 -d XXX.XXX.XXX.XXX --dport 79 -j DROP
-A OUTPUT -o eth1 -p tcp ! --syn -s XXX.XXX.XXX.XXX --sport 79 -d any/0 --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# WHOIS client (43)
# -----------------
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 43 -j DROP
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 43 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# Gopher client (70)
# ------------------
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 70 -j DROP
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 70 -d XXX.XXX.XXX.XXX  --dport 1024:65535 -j DROP

#------------------------------------------------------------------
# WAIS client (210)
# -----------------
-A OUTPUT -o eth1 -p tcp -s XXX.XXX.XXX.XXX  --sport 1024:65535 -d any/0 --dport 210 -j ACCEPT
-A INPUT  -i eth1 -p tcp ! --syn -s any/0 --sport 210 -d XXX.XXX.XXX.XXX --dport 1024:65535 -j ACCEPT
далеее....

Добавлено:

Разрешаем traceroute (tracert в винде...)
#------------------------------------------------------------------
# UDP accept only on selected ports
#------------------------------------------------------------------

#------------------------------------------------------------------
# TRACEROUTE
# traceroute usually uses -S 32769:65535 -D 33434:33523
#------------------------------------------------------------------
# Enabling Outgoing traceroute Requests
-A OUTPUT -o eth1 -p udp -s XXX.XXX.XXX.XXX --sport 32769:65535 -d any/0 --dport 33434:33523 -j ACCEPT
#------------------------------------------------------------------
# incoming query from the ISP. All others are denied by default.
-A INPUT -i eth1 -p udp -s any/0 --sport 32769:65535 -d XXX.XXX.XXX.XXX --dport 33434:33523 -j ACCEPT

остались только правила запрета....

Добавлено:

#------------------------------------------------------------------
# SPOOFING & BAD ADDRESSES
# Refuse spoofed packets.
# Ignore blatantly illegal source addresses.
# Protect yourself from sending to bad addresses.
#------------------------------------------------------------------

#------------------------------------------------------------------
# Refuse packets claiming to be to or from a Class A private network
-A INPUT  -i eth1 -s 10.0.0.0/8 -j DROP
-A INPUT  -i eth1 -d 10.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -s 10.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -d 10.0.0.0/8 -j DROP
#------------------------------------------------------------------
# Refuse packets claiming to be to or from a Class B private network
-A INPUT  -i eth1 -s 172.16.0.0/12 -j DROP
-A INPUT  -i eth1 -d 172.16.0.0/12 -j DROP
-A OUTPUT -o eth1 -s 172.16.0.0/12 -j DROP
-A OUTPUT -o eth1 -d 172.16.0.0/12 -j DROP
#------------------------------------------------------------------
# Refuse packets claiming to be to or from a Class C private network
-A INPUT  -i eth1 -s 192.168.0.0/16 -j DROP
-A INPUT  -i eth1 -d 192.168.0.0/16 -j DROP
-A OUTPUT -o eth1 -s 192.168.0.0/16 -j DROP
-A OUTPUT -o eth1 -d 192.168.0.0/16 -j DROP
#------------------------------------------------------------------
# Refuse Class D multicast addresses
# Multicast is only illegal as a source address.
# Multicast uses UDP
-A INPUT  -i eth1 -s 224.0.0.0/4 -j DROP
-A OUTPUT -o eth1 -s 224.0.0.0/4 -j DROP
#------------------------------------------------------------------
# Refuse Class E reserved IP addresses
-A INPUT  -i eth1 -s 240.0.0.0/5 -j DROP
-A OUTPUT -o eth1 -d 240.0.0.0/5 -j DROP
#------------------------------------------------------------------
# Refuse packets claiming to be from the loopback interface
-A INPUT  -i eth1 -s 127.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -s 127.0.0.0/8 -j DROP
#------------------------------------------------------------------
# Refuse spoofed packets pretending to be from
# the external interface's IP address
-A INPUT -i eth1 -s XXX.XXX.XXX.XXX -j DROP
#------------------------------------------------------------------
# Refuse malformed broadcast packets
-A INPUT  -i eth1 -s 255.255.255.255 -j DROP
-A INPUT  -i eth1 -d 0.0.0.0 -j DROP

#------------------------------------------------------------------
# UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.
#------------------------------------------------------------------

#------------------------------------------------------------------
# Open Windows:
#------------------------------------------------------------------
# establishing a connection
-A OUTPUT -o eth1 -p tcp --syn -s XXX.XXX.XXX.XXX -d any/0 --dport 2000 -j DROP
#------------------------------------------------------------------
# incoming connection
-A INPUT -i eth1 -p tcp --syn -d XXX.XXX.XXX.XXX --dport 2000 -j DROP

#------------------------------------------------------------------
# X Windows:
#------------------------------------------------------------------
# establishing a remote connection
-A OUTPUT -o eth1 -p tcp --syn -s XXX.XXX.XXX.XXX -d any/0 --dport 6000:6063 -j DROP
#------------------------------------------------------------------
# incoming connection attempt
-A INPUT  -i eth1 -p tcp --syn -d XXX.XXX.XXX.XXX --dport 6000:6063 -j DROP

#------------------------------------------------------------------
# SOCKS:
#------------------------------------------------------------------
# establishing a connection
-A OUTPUT -o eth1 -p tcp --syn -s XXX.XXX.XXX.XXX -d any/0 --dport 1080 -j DROP
#------------------------------------------------------------------
# incoming connection
-A INPUT  -i eth1 -p tcp --syn -d XXX.XXX.XXX.XXX --dport 1080 -j DROP

#------------------------------------------------------------------
# NFS:
#------------------------------------------------------------------
# TCP connections
-A INPUT  -i eth1 -p tcp --syn -d XXX.XXX.XXX.XXX --dport 2049 -j DROP
-A OUTPUT -o eth1 -p tcp --syn -d any/0 --dport 2049 -j DROP
#------------------------------------------------------------------
# UDP connections
-A INPUT -i eth1 -p udp -d XXX.XXX.XXX.XXX --dport 2049 -j DROP
#------------------------------------------------------------------
# NFS incoming request  (normal UDP mode)
-A OUTPUT -o eth1 -p udp -d any/0 --dport 2049 -j DROP


Добавлено:

Ну вот вроде и все.... теперь маленькие пояснения...

1. Это должно работать... во всяком случае у меня работает без проблем...
2. Правила запрета идут в конце скрипта что не совсем корректно для безопастности.... лучше их вставлять после описания протокола icmp. Но таким образом я несколько разгружаю сетевые средства iptables для увеличения быстродействия... ведь они все равно работают... и ловят...
3. Правила не оптимизированы те неспользуется механизм встроенных пользовательских обьявлений цепочек...
4. нет правил для SQUID`да и всяких там конференций и RealAudio

Ну вот вроде и все... Пишите... Вопросы... Замечания... добавления...

Да прибудет с тобой силя Linux :)

Gorza
20-09-2003, 15:43
Круто, SergLeo - нафлудил, а как полезно!

Я тож для себя нужного почерпнул.

Пасиба.

Barracuda
20-09-2003, 18:42
Gorza
С чего ты взял, что жт флуд - просто развёрнутый ответ на вопрос :)

Gorza
22-09-2003, 11:52
флуд - \буквально\ - затопление
и никакого негативного смысла я не вкладывал в это слово.

Gorza
08-10-2003, 10:28
Я стартовал изучение iptables c доки
"Использование iptables на автономной dual-up машине" -> google
Грамотная дока, показывающая что брандмауэр нужен даже на домашней машине..

Добавлено:

Там, допустим, файл /etc/sysconfig/iptables не редактируется напрямую. Вначале создается промежуточный скрипт со списком команд iptables, уже после загрузки которого делается сохранение полученного ruleset в /etc/sysconfig/iptables (iptables-save)
..что по-моему более грамотно и понятней для новичка, ведь с утилитами iptables-save -restore все равно будет нужно работать.
А Серглео все равно маладец!

Добавлено:

Там, допустим, файл /etc/sysconfig/iptables не редактируется напрямую. Вначале создается промежуточный скрипт со списком команд iptables, уже после загрузки которого делается сохранение полученного ruleset в /etc/sysconfig/iptables (iptables-save)
..что по-моему более грамотно и понятней для новичка, ведь с утилитами iptables-save -restore все равно будет нужно работать.
А Серглео все равно маладец!

Gorza
08-10-2003, 13:27
http://devzone.stealthp.org/iptables-control/

Это скрипт для быстрой настройки ip-tables

Добавлено:

http://devzone.stealthp.org/iptables-control/

Это скрипт для быстрой настройки ip-tables

Добавлено:

Очень полезная штука
************************************
http://devzone.stealthp.org/iptables-control/
      (Linux 2.4.x iptables configurator)
************************************

Guest
03-02-2004, 16:31
Народ а зачем вы ставите запреты в цепочки?
Наверное проще поставить default policy DROP на INPUT и OUTPUT
все что нужно разрешил и все. И можешь быть уверен что ни одна зараза (пакет) не прорвется.


Добавлено:

"Наверное проще поставить default policy DROP на INPUT и OUTPUT"
т.е. на INPUT и FORWARD



Добавлено:

для iptables работает

Guest
04-02-2004, 16:29
т.к превоночально данные правила работали под ipchains - а он все же некорректно обрабатывал default ценочки(те были явные "тормаза")... Вот и осталось все как есть... Плюс по тексту если читать сообщения там идут пояснения почему так...

А далее дело вашего вкуса, что и как использовать... Это всего-лиш руководство к действию, а не ман или ховту... И не обязательно на него операться...

Добавлено:

Мой пост
________________
by sergleo

Guest
04-02-2004, 17:41
Народ подскажите как в iptables (RH конфиг) реализовать сложную логику типа
"если source ИЛИ distanation адрес ххх.ххх.ххх.ххх то принять"
или
"если трафик не между локальными сетками, а наружу то переслать на на gateway чтобы он его SNATнул "
Думаю что это надо делать с помощью набора пользовательских цепочек, но вот как именно не допру.

спасибо

Guest
09-02-2004, 10:26
Любую, сложную логику можно реализовать разбив на более простую
"если source ИЛИ distanation адрес ххх.ххх.ххх.ххх то принять"

-A INPUT  -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT  -d XXX.XXX.XXX.XXX -j ACCEPT
или
-A INPUT -s XXX.XXX.XXX.XXX -d XXX.XXX.XXX.XXX -j ACCEPT

Учитывая что неспользуется все остальное например: интерфейс и порт назначения

Лучше если сложную логику реализовывать с помощью определяемых пользователем цепочек более подробно почитайте HOWTO по iptables на русском например 1.1.19 на сайте www.opennet.ru
_______________________________
by sergleo




© OSzone.net 2001-2012