Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: kalifi в Nov 04, 2005, 14:50



Титла: iptables rules
Публикувано от: kalifi в Nov 04, 2005, 14:50
Здравейте,

Чета от скоро за iptables, защото ми се наложи.
Не съм много сигурен какво ми влезна в главата, а времето ме притиска.

Ще Ви помоля да видите тези правила по-долу и моята интерпретация на това как действат и при каквато и да била грешка от моя страна да ме поправяте.
Примерен код
# Generated by iptables-save v1.3.1 on Fri Jul  1 14:43:50 2005
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m mark --mark 0x1 -j ACCEPT
-A INPUT -d 127.0.0.1/255.0.0.0 -i eth0 -j DROP
-A INPUT -d 192.168.3.0/255.255.255.0 -i eth0 -j DROP
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p udp --dport 68 --sport 67 -j ACCEPT
-A INPUT -i eth0 -j DROP
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 21 -j ACCEPT
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp - 20 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp --dport 53 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.2.0/24 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.4.0/24 -j ACCEPT
-A FORWARD -m mark --mark 0x1 -j ACCEPT
COMMIT
# Completed on Fri Jul  1 14:43:50 2005
# Generated by iptables-save v1.3.1 on Fri Jul  1 14:43:50 2005
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A INPUT -p esp -j MARK --set-mark 0x1
COMMIT
# Completed on Fri Jul  1 14:43:50 2005
# Generated by iptables-save v1.3.3 on Tue Aug 23 19:53:57 2005
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.3.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT


Според мен:
Идва пакета и с това правило
Примерен код
-A INPUT -p esp -j MARK --set-mark 0x1
ако протокола е esp се маркира с 0x1

Следва първото правило INPUT в таблицата filter, което е:
Примерен код
-A INPUT -m mark --mark 0x1 -j ACCEPT
то казва, че ако пакетът е маркиран с 0х1 (чрез предишното правило) той се приема.

Примерен код
-A INPUT -d 127.0.0.1/255.0.0.0 -i eth0 -j DROP
Всички пакети предназначени за 127.0.0.1/255.0.0.0 идващи от eth0 да отиват в DROP - да се отхвърлят.

Примерен код
-A INPUT -d 192.168.3.0/255.255.255.0 -i eth0 -j DROP
Същото като горното, само че ако пакетите са предназначени за 192.168.3.0/255.255.255.0 и ако идват от eth0.

Примерен код
-A INPUT -p icmp -j ACCEPT
Всички пакети с протокол icmp се приемат.

Примерен код
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Пакети, чийто state е един от RELATED,ESTABLISHED се приемат.

Примерен код
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
Пакетите идващи през eth0 с tcp протокол, предназначени за порт 22 - се приемат.

Примерен код
-A INPUT -i eth0 -p udp -m udp --dport 500 -j ACCEPT
Васички пакети идващи през eth0 с udp протокол, предназначени за порт 500 - се приемат

Примерен код
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
Васички пакети идващи през eth0 с tcp протокол, предназначени за порт 80 - се приемат
Примерен код
-A INPUT -i eth0 -p udp --dport 68 --sport 67 -j ACCEPT
Васички пакети идващи през eth0 с udp протокол, предназначени за порт 68 - се приемат ако са пратени от порт 67.
Примерен код
-A INPUT -i eth0 -j DROP
Всички пакети идващи през eth0 не се приемат. Разбирам го като ако до сега пакета не е бил притет значи не е трябвало да идва.

Примерен код
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 80 -j ACCEPT
Пакетите идващи от 192.168.3.6 с протокол tcp предназначени за порт 80 се препращат.

Примерен код
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 443 -j ACCEPT
Пакетите идващи от 192.168.3.6 с протокол tcp предназначени за порт 443 се препращат.

Примерен код
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp --dport 21 -j ACCEPT
Пакетите идващи от 192.168.3.6 с протокол tcp предназначени за порт 21 се препращат.

Примерен код
-A FORWARD -i eth1 -s 192.168.3.6 -p tcp -m tcp - 20 -j ACCEPT
Да сега виждам че тука явно -dport е изпуснато и има грешка, но ако приемем, че си е там:Пакетите идващи от 192.168.3.6 с протокол tcp предназначени за порт 20 се препращат.

Примерен код
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Пакетите със state  RELATED или ESTABLISHED се препращат.

Примерен код
-A FORWARD -p udp --dport 53 -j ACCEPT
Пакетите с протокол udp предназначени за порт 53 се препращат.

Примерен код
-A FORWARD -i eth1 -d 192.168.2.0/24 -j ACCEPT

Пакетите идващи през eth1 и предназначени за 192.168.2.0/24  се препращат.
Примерен код
-A FORWARD -i eth1 -d 192.168.4.0/24 -j ACCEP
Пакетите идващи през eth1 и предназначени за 192.168.4.0/24  се препращат.

Примерен код
-A FORWARD -m mark --mark 0x1 -j ACCEPT
Пакетите маркирани с 0х1 се препращат.

Примерен код
-A POSTROUTING -s 192.168.3.0/255.255.255.0 -o eth0 -j MASQUERADE
С това правило мисля, че се рутира интернета към вътрешната мрежа.

Дистрибуцията е Debian. Този файл се намира /etc/iptables/ и се казва start-eth0 и се вика от скрипта намиращ се в този файл: /etc/network/if-pre-up.d/firewall. Надявам се това да е О.К.

Та целта до колкото знам е от 192.168.3.10 например, чрез real vnc viewer-a да се види real vnc server-a намиращ се на 192.168.2.4.

Благодаря Ви предварително!

Миро

П.П. Не претендирам за точност на изказа, термини и др., по-скоро като преразказано с мои думи.


Титла: iptables rules
Публикувано от: VladSun в Nov 04, 2005, 15:30
Първо, според това ,което виждам, трябва политиката на INPUT да ти е DROP, а чак след отва да ACCEPT-ваш (прим. порт 22)

Второ, преди да правиш какъвто и да е "глобален" ACCEPT (прим. -A INPUT -m mark --mark 0x1 -j ACCEPT) е добре първо да минеш през правила изграждащи някаква защита - прим. за сканиране на портове, лоши пакети и т.н. (пример)


Титла: iptables rules
Публикувано от: kalifi в Nov 05, 2005, 18:03
VladSun, благодаря за полезната връзка.
До която чрез търсачката на форума нямаше да достигна, но това е друга тема.

Разбирам, че тази защитна стена е елементарна и неефективна. Просто трябва да направя така, че от 192.168.3.6 да се свързва с VNC servera на 192.168.2.10. Предполагам, тълкуванията ми относно правилата не се отклоняват драстично от истината... или бъркам??

Миро


Титла: iptables rules
Публикувано от: VladSun в Nov 06, 2005, 14:19
Мисля, че не си си изяснил докрай какво е default policy на chain. Прим.:

iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

е напълно достатъчно за да пуснеш САМО 22, 80 портове, а всичко останало да дропиш. Няма нужда от експлицитно задаване на правило -A INPUT -j DROP най-накрая.