Войти

Показать полную графическую версию : IPTABLES!!! RULES, Разгавор о iptables


BuuG
20-02-2006, 12:59
Доброе время суток. Хотелбы поднять вопрос по iptable. Я новичёк и мануал читал, но не савсем понял. Есть шлюз Fedora Core4, eth1-смотрит в инет ip=194.44.x.x, eth0=локалка ip=192.168.0.1. На шлюзе как-же стоит squid, apache(их с трудом сам настроил), Нада помоч мне с написанием правил по защите шлюза.

BlackEric
20-02-2006, 14:15
Это зависит от того, что шлюз должен роутить, только интернет, почту, доступ к веб-серверу, ICQ и т.д.
Если в общем, то сначала запрещаешь все, а потом открываешь только те порты, которые нужны.

XPurple
21-02-2006, 14:02
сначала запрещаешь все, а потом открываешь только те порты, которые нужны.
Этого мало, требуется еще настроить маршрутизацию и, возможно, NAT

sergleo
21-02-2006, 19:16
поищите на форуме - тут давались настройки для нужных вам функций, причем, и конкретно, подходит для Федора. если не найдете - то в личку или будем вместе через форум настраивать.

sergleo
24-02-2006, 10:52
Добрый день, вечер ALL! (нужное подчеркнуть)

По личной просьбе BuuG и для всех заново подымаем тему IpTables. Может кто нормальную статью напишет? Ибо, то что есть в нете, дает минимальные данные по настройке без полных примеров, аля вставил - подправил и работает. Ведь не всем дано разбираться в тонкостях применения, да и многим это просто не надо. Вот так заново и подымается вопрос обычными пользователями.
Благодаря книге "Брандмауры в Линукс" первое издание, мной уже было рассказано, как переделать правила с ipchains на iptables. К сожалению второе издание, применительно к iptables, у нас не издавалось(или я этот момент пропустил). Именно с этой книги я понял некоторые аспекты функционирования netfilter. И уже сам настраивал свои правила.

Ну что ALL? Может совместно напишем статью для oszone.ru из цикла для начинающих?
До скорого.

Начинаем.

sergleo
24-02-2006, 11:16
Для начала некоторые условия:

1. Мои правила не оптимизированы.
2. Рассмотрение идет только для RH (RH9, Fedora Core 1,2,3,4)
3. В соответствии с пунктом 2 все настройки iptables располагаются в /etc/sysconfig/iptables и в них не нужно явно указывать команду iptables ибо за нас это делает старт скрипт /etc/rc.d/init.d/iptables
4. Все замечания исправления принимаются.
5. Условия сети – внутренняя сеть eth0 - 10.10.10.0/24, внешняя eth1 x.x.x.x, ДНС1 x1.x1.x1.x1, ДНС2 x2.x2.x2.x2 .
6. Правила по умолчанию созданные при установке системы я удаляю.

sergleo
24-02-2006, 11:21
# Linux Firewalls - host myhost.mydomain.ru
# Starting firewalling...

#------------------------------------------------------------------
# Default
*filter

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

:admin-in - [0:0]
:dep-in - [0:0]
:wifi-in - [0:0]

#------------------------------------------------------------
# Unlimited traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#------------------------------------------------------------
# Stealth Scans and TCP State Flags

# All of the bits are cleared
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

# SYN and FIN are both set
-A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# SYN and RST are both set
-A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# FIN and RST are both set
-A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

# FIN is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
-A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP

# PSH is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
-A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP

# URG is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
-A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP

#------------------------------------------------------------
# Using Connection State to By-pass Rule Checking

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Using the state module alone, INVALID will break protocols that use
# bi-directional connections or multiple connections or exchanges,
# unless an ALG is provided for the protocol. At this time, FTP and is
# IRC are the only protocols with ALG support.

-A INPUT -m state --state INVALID -j LOG --log-prefix "INVALID input: "
-A INPUT -m state --state INVALID -j DROP

-A OUTPUT -m state --state INVALID -j LOG --log-prefix "INVALID ouput: "
-A OUTPUT -m state --state INVALID -j DROP

-A FORWARD -m state --state INVALID -j LOG --log-prefix "INVALID forward: "
-A FORWARD -m state --state INVALID -j DROP

#------------------------------------------------------------
# Source Address Spoofing and Other Bad Addresses

# Refuse spoofed packets pretending to be from the external interface's IP address
-A INPUT -i eth1 -s x.x.x.x -j DROP

# Refuse packets claiming to be from a Class A private network
#-A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

# Refuse packets claiming to be from a Class B private network
-A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

# Refuse packets claiming to be from a Class C private network
-A INPUT -i eth1 -s 192.168.0.0/16 -j DROP

# Refuse packets claiming to be from the loopback interface
-A INPUT -i eth1 -s 127.0.0.0/8 -j DROP

# Refuse malformed broadcast packets
-A INPUT -i eth1 -s 255.255.255.255 -j LOG --log-prefix "Malformed broadcast: "
-A INPUT -i eth1 -s 255.255.255.255 -j DROP
-A INPUT -i eth1 -d 0.0.0.0 -j LOG --log-prefix "Malformed broadcast: "
-A INPUT -i eth1 -d 0.0.0.0 -j DROP

# Refuse directed broadcasts
# Used to map networks and in Denial of Service attacks
#$SUBNET_BASE="network.address" # ISP network segment base address
#$SUBNET_BROADCAST="directed.broadcast" # network segment broadcast address
#-A INPUT -i eth1 -d $SUBNET_BASE -j DROP
#-A INPUT -i eth1 -d $SUBNET_BROADCAST -j DROP

# Refuse limited broadcasts
-A INPUT -i eth1 -d 255.255.255.255 -j DROP

# Refuse Class D multicast addresses
# illegal as a source address
-A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
-A INPUT -i eth1 -p ! udp -d 224.0.0.0/4 -j DROP
-A INPUT -i eth1 -p udp -d 224.0.0.0/4 -j ACCEPT

# Refuse Class E reserved IP addresses
-A INPUT -i eth1 -s 240.0.0.0/5 -j DROP

# refuse addresses defined as reserved by the IANA
# 0.*.*.* - Can`t be blocked unilaterally with DHCP
# 169.254.0.0/16 - Link Local Networks
# 192.0.2.0/24 - TEST-NET

-A INPUT -i eth1 -s 0.0.0.0/8 -j DROP
-A INPUT -i eth1 -s 169.254.0.0/16 -j DROP
-A INPUT -i eth1 -s 192.0.2.0/24 -j DROP

#------------------------------------------------------------
# Disallowing Connections to Common TCP Unprivileged Server Ports

# X Window connection establishment
-A OUTPUT -o eth1 -p tcp --syn --destination-port 6000:6063 -j REJECT
# X Window: incoming connection attempt
-A INPUT -i eth1 -p tcp --syn --destination-port 6000:6063 -j DROP

# Establishing a connection over TCP to NFS, OpenWindows, SOCKS or squid
-A OUTPUT -o eth1 -p tcp -m multiport --destination-port 2049,2000,1080,3128,8080 --syn -j REJECT
-A INPUT -i eth1 -p tcp -m multiport --destination-port 2049,2000,1080,3128,8080 --syn -j DROP

#------------------------------------------------------------
# Disallowing Connections to Common UDP Unprivileged Server Ports
# NFS and lockd
-A OUTPUT -o eth1 -p udp -m multiport --destination-port 2049,4045 -j REJECT
-A INPUT -i eth1 -p udp -m multiport --destination-port 2049,4045 -j DROP

sergleo
24-02-2006, 11:28
Пояснения

1. По умолчанию я разрешаю все… Это не правильно, но так оно работает ибо по другому появляется незначительная на первый взгляд задежка.

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

2. Создаю свои цепочки для блоков рабочих станций.

:admin-in - [0:0]
:dep-in - [0:0]
:wifi-in - [0:0]

3. Условие закоментарено т.к наша сеть 10.10.10.0

# Refuse packets claiming to be from a Class A private network
#-A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

sergleo
24-02-2006, 11:54
#------------------------------------------------------------
# DNS Name Server
# DNS Fowarding Name Server or client requests
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport 1024:65535 -d x1.x1.x1.x1 --dport domain -j ACCEPT
-A INPUT -i eth1 -p udp -s x1.x1.x1.x1 --sport domain -d x.x.x.x --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport 1024:65535 -d x2.x2.x2.x2 --dport domain -j ACCEPT
-A INPUT -i eth1 -p udp -s x2.x2.x2.x2 --sport domain -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# TCP is used for large responses
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 -d x1.x1.x1.x1 --dport domain -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn -s x1.x1.x1.x1 --sport domain -d x.x.x.x --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 -d x2.x2.x2.x2 --dport domain -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn -s x2.x2.x2.x2 --sport domain -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# DNS Caching Name Server (local server to primary server)
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport domain -d x1.x1.x1.x1 --dport domain -j ACCEPT
-A INPUT -i eth1 -p udp -s x1.x1.x1.x1 --sport domain -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport domain -d x2.x2.x2.x2 --dport domain -j ACCEPT
-A INPUT -i eth1 -p udp -s x2.x2.x2.x2 --sport domain -d x.x.x.x --dport domain -j ACCEPT
#...............................................................
# DNS full nameserver - client to server DNS transaction
-A INPUT -i eth1 -p udp --sport 1024:65535 -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport domain --dport 1024:65535 -j ACCEPT
#...............................................................
# peer-to-peer server DNS transaction
-A INPUT -i eth1 -p udp -s x1.x1.x1.x1 --sport domain -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport domain -d x1.x1.x1.x1 --dport domain -j ACCEPT
-A INPUT -i eth1 -p udp -s x2.x2.x2.x2 --sport domain -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport domain -d x2.x2.x2.x2 --dport domain -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 x1.x1.x1.x1 --sport 1024:65535 -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport domain -d x1.x1.x1.x1 --dport 1024:65535 -j ACCEPT
-A INPUT -i eth1 -p tcp -s x2.x2.x2.x2 --sport 1024:65535 -d x.x.x.x --dport domain -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport domain -d x2.x2.x2.x2 --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# Filtering the AUTH User Identification Service (TCP Port 113)
# Outgoing Local Client Requests to Remote Servers
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport auth -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport auth -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Incoming Remote Client Requests to Local Servers
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport auth -j REJECT --reject-with tcp-reset
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport auth --dport 1024:65535 -j REJECT --reject-with tcp-reset

#------------------------------------------------------------
# Sending Mail to Any External Mail Server
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport smtp -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport smtp -d x.x.x.x --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 x.x.x.x --dport smtp -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport smtp -d any/0 --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# Retrieving Mail as a POP Client (TCP Port 110)
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport pop3 -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport pop3 -d x.x.x.x --dport 1024:65535 -j ACCEPT
#............................................................
# Hosting a Server for Remote Clients
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport pop3 -j REJECT --reject-with tcp-reset
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport pop3 --dport 1024:65535 -j REJECT --reject-with tcp-reset

#------------------------------------------------------------
# Retrieving Mail as a IMAP Client (TCP Port 143)
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport imap -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport imap -d x.x.x.x --dport 1024:65535 -j ACCEPT
#............................................................
# Hosting a Server for Remote Clients
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport imap -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport imap --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# ssh (TCP Port 22)
# Outgoing Local Client Requests to Remote Servers
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport ssh -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --source-port ssh -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Incoming Remote Client Requests to Local Servers
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport ssh -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport ssh --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# HTTP Web Traffic (TCP Port 80)
# Outgoing Local Client Requests to Remote Servers
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport http -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport http -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Incoming Remote Client Requests to Local Servers
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport http -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport http --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# SSL Web Traffic (TCP Port 443)
# Outgoing Local Client Requests to Remote Servers
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport https -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport https -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Incoming Remote Client Requests to Local Servers
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport https -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport https --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# TELNET (23) Allowing Outgoing Client Access to Remote Sites
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport telnet -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport telnet -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Allowing Incoming Access to Your Local Server
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport telnet -j REJECT --reject-with tcp-reset
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport telnet --dport 1024:65535 -j REJECT --reject-with tcp-reset

#------------------------------------------------------------
# FINGER (79) Accessing Remote finger Servers as a Client
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport finger -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport finger -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Allowing Remote Client Access to a Local finger Server
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport finger -j REJECT --reject-with tcp-reset
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport finger --dport 1024:65535 -j REJECT --reject-with tcp-reset

#------------------------------------------------------------
# whois (TCP Port 43)
# Outgoing Local Client Requests to Remote Servers
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport nicname -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport nicname -d x.x.x.x --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# Gopher client (70)
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport gopher -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport gopher -d x.x.x.x --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# WAIS client (210)
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport 210 -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport 210 -d x.x.x.x --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# MySQL server (3306)
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport mysql -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport mysql --dport 1024:65535 -j ACCEPT

sergleo
24-02-2006, 11:55
#------------------------------------------------------------
# ftp (TCP Ports 21, 20)
# Outgoing Local Client Requests to Remote Servers
# Outgoing Control Connection to Port 21
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport ftp -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport ftp -d x.x.x.x --dport 1024:65535 -j ACCEPT
# Incoming Port Mode Data Channel Connection from Port 20
-A INPUT -i eth1 -p tcp --sport ftp-data -d x.x.x.x --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport 1024:65535 --dport ftp-data -j ACCEPT
# Outgoing Passive Mode Data Channel Connection Between Unprivileveg Ports
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport 1024:65535 -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Incoming Remote Client Requests to Local Servers
# Incoming Control Connection to Port 21
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport ftp -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport ftp --dport 1024:65535 -j ACCEPT
# Outgoing Port Mode Data Channel Connection to Port 20
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport ftp-data --dport 1024:65535 -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport 1024:65535 -d x.x.x.x --dport ftp-data -j ACCEPT
# Incoming Passive Mode Data Channel Connection Between Unprivileved Ports
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -j ACCEPT
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport 1024:65535 --dport 1024:65535 -j ACCEPT

#------------------------------------------------------------
# Accessing Usenet News Services (TCP NNTP Port 119)
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport nntp -j ACCEPT
-A INPUT -i eth1 -p tcp ! --syn --sport nntp -d x.x.x.x --dport 1024:65535 -j ACCEPT
#............................................................
# Hosting a Usenet News Server for Remote Clients
-A INPUT -i eth1 -p tcp --sport 1024:65535 -d x.x.x.x --dport nntp -j REJECT --reject-with tcp-reset
-A OUTPUT -o eth1 -p tcp ! --syn -s x.x.x.x --sport nntp --dport 1024:65535 -j REJECT --reject-with tcp-reset
#............................................................
# Allowing Peer News Feeds for a Local Usenet Server
-A OUTPUT -o eth1 -p tcp -s x.x.x.x --sport 1024:65535 --dport nntp -j REJECT --reject-with tcp-reset
-A INPUT -i eth1 -p tcp ! --syn --sport nntp -d x.x.x.x --dport 1024:65535 -j REJECT --reject-with tcp-reset

#------------------------------------------------------------
# Accessing Remote Network Time Servers (UDP 123)
# Note: some client and servers use source port 123
# when querying a remote server on destination port 123.
# Use $TIME_SERVER x.x.x.x only MY net
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport 1024:65535 -d any/0 --dport ntp -j ACCEPT
-A INPUT -i eth1 -p udp -s any/0 --sport ntp -d x.x.x.x --dport 1024:65535 -j ACCEPT
#...............................................................
# Accessing a Remote Client to Local Time Server
-A INPUT -i eth1 -p udp --sport 1024:65535 -d x.x.x.x --dport ntp -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport ntp --dport 1024:65535 -j ACCEPT
-A INPUT -i eth1 -p udp --sport ntp -d x.x.x.x --dport ntp -j ACCEPT
-A OUTPUT -o eth1 -p udp -s x.x.x.x --sport ntp --dport ntp -j ACCEPT

#------------------------------------------------------------
# SYSLOG client (514)
# Use $SYSLOG_SERVER = x.x.x.x
-A OUTPUT -o eth1 -p udp -s x.x.x.x --source-port 514 -d y.y.y.y --destination-port 1024:65535 -j ACCEPT
#...............................................................
# Accessing a Remote Client to SYSLOG Server
-A INPUT -i eth0 -p udp --sport 1024:65535 -d x.x.x.x --dport 514 -j ACCEPT
-A INPUT -i eth0 -p udp --sport 514 -d x.x.x.x --dport 514 -j ACCEPT

#------------------------------------------------------------
# TRACEROUTE - usually uses -S 32769:65535 -D 33434:33523
# Enabling Outgoing traceroute Requests
-A OUTPUT -o eth1 -p udp -s x.x.x.x --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 x.x.x.x --dport 33434:33523 -j ACCEPT

sergleo
24-02-2006, 11:56
#------------------------------------------------------------
# ICMP Control and Status Messages
# Log and drop initial ICMP fragments
-A INPUT -i eth1 --fragment -p icmp -j LOG --log-prefix "Fragmented incoming ICMP: "
-A INPUT -i eth1 --fragment -p icmp -j DROP
-A OUTPUT -o eth1 --fragment -p icmp -j LOG --log-prefix "Fragmented outgoing ICMP: "
-A OUTPUT -o eth1 --fragment -p icmp -j DROP
-A FORWARD -o eth1 --fragment -p icmp -j LOG --log-prefix "Fragmented forwarded ICMP: "
-A FORWARD -o eth1 --fragment -p icmp -j DROP

-A INPUT -i eth1 -p icmp --icmp-type source-quench -d x.x.x.x -j ACCEPT
-A OUTPUT -o eth1 -p icmp --icmp-type source-quench -j ACCEPT
-A FORWARD -o eth1 -p icmp --icmp-type source-quench -j ACCEPT

-A INPUT -i eth1 -p icmp --icmp-type parameter-problem -d x.x.x.x -j ACCEPT
-A OUTPUT -o eth1 -p icmp --icmp-type parameter-problem -j ACCEPT
-A FORWARD -o eth1 -p icmp --icmp-type parameter-problem -j ACCEPT

-A INPUT -i eth1 -p icmp --icmp-type destination-unreachable -j ACCEPT

#Use $LAN_INTERFACE = eth0 $LAN_ADDRESSES = 10.10.10.0/25
-A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable -d 10.10.10.0/25 -j ACCEPT
-A FORWARD -o eth0 -p icmp --icmp-type destination-unreachable -d 10.10.10.0/25 -j ACCEPT

-A OUTPUT -o eth1 -p icmp --icmp-type fragmentation-needed -j ACCEPT
-A FORWARD -o eth1 -p icmp --icmp-type fragmentation-needed -j ACCEPT

# Dont log dropped outgoing ICMP error messages
-A OUTPUT -o eth1 -p icmp --icmp-type destination-unreachable -j DROP
-A FORWARD -o eth1 -p icmp --icmp-type destination-unreachable -j DROP

# Intermediate traceroute responses
-A INPUT -i eth1 -p icmp --icmp-type time-exceeded -d x.x.x.x -j ACCEPT

#Use $LAN_INTERFACE = eth0 $LAN_ADDRESSES = 10.10.10.0/25
-A OUTPUT -o eth0 -p icmp --icmp-type time-exceeded -d 10.10.10.0/25 -j ACCEPT
-A FORWARD -o eth0 -p icmp --icmp-type time-exceeded -d 10.10.10.0/25 -j ACCEPT

# allow outgoing pings to anywhere
-A OUTPUT -o eth1 -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -i eth1 -p icmp --icmp-type echo-reply -j ACCEPT

#-A FORWARD -o $DMZ_INTERFACE -p icmp --icmp-type echo-request -s $LAN_ADDRESSES -j ACCEPT

# allow incoming pings from trusted hosts
# Use $MY_ISP = any/0
-A INPUT -i eth1 -p icmp -s any/0 --icmp-type echo-request -d x.x.x.x -j ACCEPT
-A OUTPUT -o eth1 -p icmp -s x.x.x.x --icmp-type echo-reply -d any/0 -j ACCEPT

#-A INPUT -i $LAN_INTERFACE -p icmp -s $LAN_ADDRESSES --icmp-type echo-request -d $LAN_IPADDR -j ACCEPT

#------------------------------------------------------------
# Logging Dropped Packets

# Don't log dropped incoming echo-requests
-A INPUT -i eth1 -p icmp --icmp-type ! 8 -d x.x.x.x -j LOG
#
-A INPUT -i eth1 -p tcp -d x.x.x.x -j LOG
#
-A OUTPUT -o eth1 -j LOG

sergleo
24-02-2006, 11:58
#------------------------------------------------------------------
# Workstation:
#
# admin
-A admin-in -s 10.10.10.2 -i eth0 -j ACCEPT
-A admin-in -s 10.10.10.3 -i eth0 -j ACCEPT
-A admin-in -s 10.10.10.4 -i eth0 -j ACCEPT
-A admin-in -s 10.10.10.5 -i eth0 -j ACCEPT
-A admin-in -s 10.10.10.6 -i eth0 -j ACCEPT
# departments
-A dep-in -s 10.10.10.7 -i eth0 -j DROP
-A dep-in -s 10.10.10.8 -i eth0 -j DROP
-A dep-in -s 10.10.10.9 -i eth0 -j DROP
-A dep-in -s 10.10.10.10 -i eth0 -j DROP
-A dep-in -s 10.10.10.11 -i eth0 -j DROP
# wifi
-A wifi-in -s 10.10.10.12 -i eth0 -j DROP
-A wifi-in -s 10.10.10.13 -i eth0 -j DROP
-A wifi-in -s 10.10.10.14 -i eth0 -j DROP
-A wifi-in -s 10.10.10.15 -i eth0 -j DROP
-A wifi-in -s 10.10.10.16 -i eth0 -j DROP
-A wifi-in -s 10.10.10.17 -i eth0 -j DROP
#other

# end ip adress list

#------------------------------------------------------------------
# Traffic within the local network:
# admin
-A INPUT -i eth0 -p ALL -d any/0 -j admin-in
-A OUTPUT -o eth0 -p ALL -d any/0 -j admin-in
-A FORWARD -i eth0 -p ALL -d any/0 -j admin-in
# dep
-A INPUT -i eth0 -p ALL -d any/0 -j dep-in
-A OUTPUT -o eth0 -p ALL -d any/0 -j dep-in
-A FORWARD -i eth0 -p ALL -d any/0 -j dep-in
# wifi workstation
-A INPUT -i eth0 -p ALL -d any/0 -j wifi-in
-A OUTPUT -o eth0 -p ALL -d any/0 -j wifi-in
-A FORWARD -i eth0 -p ALL -d any/0 -j wifi-in

COMMIT

sergleo
24-02-2006, 12:03
#------------------------------------------------------------------
# NAT
*nat

:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

#------------------------------------------------------------------
# Forward all trafic www to Squid.
# Port 80
-A PREROUTING -i eth0 -p tcp -s 10.10.10.0/25 --dport 80 -j REDIRECT --to-port 8080
-A PREROUTING -i eth0 -p udp -s 10.10.10.0/25 --dport 80 -j REDIRECT --to-port 8080

-A PREROUTING -i eth0 -p tcp -s 10.10.10.0/25 --dport 3128 -j REDIRECT --to-port 8080
-A PREROUTING -i eth0 -p udp -s 10.10.10.0/25 --dport 3128 -j REDIRECT --to-port 8080

#------------------------------------------------------------------
# Masquerade internal traffic.
-A POSTROUTING -o eth1 -j MASQUERADE

COMMIT

sergleo
24-02-2006, 12:07
Маленькое пояснение

#------------------------------------------------------------------
# Forward all trafic www to Squid.
# Port 80
-A PREROUTING -i eth0 -p tcp -s 10.10.10.0/25 --dport 80 -j REDIRECT --to-port 8080
-A PREROUTING -i eth0 -p udp -s 10.10.10.0/25 --dport 80 -j REDIRECT --to-port 8080

-A PREROUTING -i eth0 -p tcp -s 10.10.10.0/25 --dport 3128 -j REDIRECT --to-port 8080
-A PREROUTING -i eth0 -p udp -s 10.10.10.0/25 --dport 3128 -j REDIRECT --to-port 8080


Я перенаправляю весь трафик с 80-го и 3128-го (www squid) портов на систему управления контентом DansGuardian.

sergleo
24-02-2006, 12:23
Теперь по моим цепочкам

:admin-in - [0:0]
:dep-in - [0:0]
:wifi-in - [0:0]


запись в /etc/crontab

# Work Station
# Accept scripts
52 8 * * * root /opt/script/ip-a-dep.sh
54 8 * * * root /opt/script/ip-a-wf.sh
# Deny scripts
52 20 * * * root /opt/script/ip-d-dep.sh
54 20 * * * root /opt/script/ip-d-wf.sh

И сами скрипты

#!/bin/sh
echo "Starting firewalling... Accept Departmets..."
/sbin/iptables -R dep-in 1 -s 10.10.10.7 -i eth0 -j ACCEPT
/sbin/iptables -R dep-in 2 -s 10.10.10.8 -i eth0 -j ACCEPT
/sbin/iptables -R dep-in 3 -s 10.10.10.9 -i eth0 -j ACCEPT
/sbin/iptables -R dep-in 4 -s 10.10.10.10 -i eth0 -j ACCEPT
/sbin/iptables -R dep-in 5 -s 10.10.10.11 -i eth0 -j ACCEPT
echo "Done........"


#!/bin/sh
echo "Starting firewalling... Accept Wifi Clients..."
/sbin/iptables -R wifi-in 1 -s 10.10.10.12 -i eth0 -j ACCEPT
/sbin/iptables -R wifi-in 2 -s 10.10.10.13 -i eth0 -j ACCEPT
/sbin/iptables -R wifi-in 3 -s 10.10.10.14 -i eth0 -j ACCEPT
/sbin/iptables -R wifi-in 4 -s 10.10.10.15 -i eth0 -j ACCEPT
/sbin/iptables -R wifi-in 5 -s 10.10.10.16 -i eth0 -j ACCEPT
/sbin/iptables -R wifi-in 6 -s 10.10.10.17 -i eth0 -j ACCEPT
echo "Done........"

Аналогично удаляем

#!/bin/sh
echo "Starting firewalling... DROP Departmets..."
/sbin/iptables -R dep-in 1 -s 10.10.10.7 -i eth0 -j DROP
/sbin/iptables -R dep-in 2 -s 10.10.10.8 -i eth0 -j DROP
/sbin/iptables -R dep-in 3 -s 10.10.10.9 -i eth0 -j DROP
/sbin/iptables -R dep-in 4 -s 10.10.10.10 -i eth0 -j DROP
/sbin/iptables -R dep-in 5 -s 10.10.10.11 -i eth0 -j DROP
echo "Done........"


#!/bin/sh
echo "Starting firewalling... DROP Wifi Clients..."
/sbin/iptables -R wifi-in 1 -s 10.10.10.12 -i eth0 -j DROP
/sbin/iptables -R wifi-in 2 -s 10.10.10.13 -i eth0 -j DROP
/sbin/iptables -R wifi-in 3 -s 10.10.10.14 -i eth0 -j DROP
/sbin/iptables -R wifi-in 4 -s 10.10.10.15 -i eth0 -j DROP
/sbin/iptables -R wifi-in 5 -s 10.10.10.16 -i eth0 -j DROP
/sbin/iptables -R wifi-in 6 -s 10.10.10.17 -i eth0 -j DROP
echo "Done........"

sergleo
24-02-2006, 12:39
СМ. пост 12 и 15 пояснения
Это сделано чтоб был минимаальный контроль(например ночью не качали.) Т.Е админы(руководство) постоянный доступ в нет а вот для остальных только по рассписанию с 8-50 до 20-50.

Ну вот и все удачи.
Напишите кто нить статью..., до скорого SergLeo.

BuuG
03-03-2006, 12:06
А если расмотреть политику поумолчанию которая все запрещяет, просто надо прикрутить еще старгазера.

sergleo
03-03-2006, 16:00
просто надо прикрутить еще старгазера - Что Это?
А если расмотреть политику поумолчанию которая все запрещяет Вы можете все запретить по умолчанию... Что и рекомендуется всевозможными FAQ и Howto. Просто в моей старой версии RH9 это не работало - появлялись огромные задержки и внутренний прокси просто отваливался... по таймауту.




© OSzone.net 2001-2012