Автор Тема: Iptables с drop по дефолт - отворени портове  (Прочетена 10331 пъти)

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Здравейте.
Опитвам се да напиша правила за IPTABLES на едно малко сървърче. Инсталирал съм си Fedora Core 4, и IPTABLES 1.3.0, на сървъра работят Apache, MySQL, SSH, FTP, Postfix. Искам да направя следното:
1. Да има безусловен достъп от Интернет до Apache, Postfix и FTP
2. Само аз (конкретно IP) да имам достъп през Интернет до SSH и MySQL
За целта съм избрал политиката "Забрана на всичко, и след това разрешаване само на необходимото"
Ето и самите правила на IPTABLES:
Примерен код

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Enable full access from my home IP
-A INPUT -s xx.xx.xx.xx/32 -i eth0 -j ACCEPT
-A INPUT -p all -s localhost -i eth0 -j DROP
-A INPUT -p all -s localhost -i eth1 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT

# PROTECTION SYN flood
-A INPUT -i eth0 -p tcp --syn -m limit --limit 25/s --limit-burst 35 -j ACCEPT
# PROTECTION port scanner
-A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 3/s --limit-burst 5 -j ACCEPT
# PROTECTION Ping of Death
-A INPUT -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT

# Drop hijackers !!!
-A INPUT -i eth0 -s 81.169.186.45/32 -j DROP
-A INPUT -i eth0 -s 84.170.202.66/32 -j DROP
-A INPUT -i eth0 -s 203.172.213.122/32 -j DROP
-A INPUT -i eth0 -s 194.242.112.72/32 -j ACCEPT
-A INPUT -i eth0 -s 212.241.246.148/32 -j ACCEPT
-A INPUT -i eth0 -s 204.13.82.60/32 -j DROP
-A INPUT -i eth0 -s 85.140.156.23/32 -j DROP
-A INPUT -i eth0 -s 213.234.30.79/32 -j DROP
-A INPUT -i eth0 -s 87.106.12.174/28 -j DROP
-A INPUT -i eth0 -s 213.91.242.188/32 -j DROP
-A INPUT -i eth0 -s 87.126.147.86/32 -j DROP
-A INPUT -i eth0 -s 217.160.23.161/32 -j DROP

-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 2120 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 909 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 30000:30024 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

COMMIT


Използвах един On-line скенер за отворени портове и установих, че въпреки политиката по подразбиране DROP за веригата INPUT, и че не съм обявил никъде порт 3306 - той все пак е отворен за външния свят.

Някой може ли да ми даде съвет или да подскаже къде бъркам ?
Активен

KPETEH

  • Напреднали
  • *****
  • Публикации: 584
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #1 -: May 31, 2007, 16:49 »
Добре нали имаш стартиран MySQL вероятно ти е отворен порта заради самата услуга.
Активен

Най-добрата страна на алчността е способността и да стопява коефициента на интелигентност дори на най-умния човек.

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #2 -: May 31, 2007, 16:51 »
Здрасти колега '<img'>
Можеш да пробваш това:

// Приема всички tcp на порт 3306 от localhost
iptables -A INPUT -i lo -p tcp --dport mysql -j ACCEPT
// Приема всички udp на порт 3306 от localhost
iptables -A INPUT -i lo -p udp --dport mysql -j ACCEPT
// Приема tcp на порт 3306 от allowed_ip
iptables -A INPUT -i eth0 -p tcp --dport mysql -s allowed_ip -j ACCEPT
// Приема udp на порт 3306 от allowed_ip
iptables -A INPUT -i eth0 -p udp --dport mysql -s allowed_ip -j ACCEPT
[...] всички други правила нататък...
// drop-ване на всички други пакети
iptables -A INPUT -j DROP

Пиши ми, ако съм ти помогнал '<img'>



Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #3 -: May 31, 2007, 17:42 »
Като гледам не би трябвало да е отворен този порт. Единствено ми прави впечатление, че имаш два адреса в бан списъка, които са с ACCEPT, а не DROP ...

# Drop hijackers !!!
....
-A INPUT -i eth0 -s 194.242.112.72/32 -j ACCEPT
-A INPUT -i eth0 -s 212.241.246.148/32 -j ACCEPT
....
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #4 -: May 31, 2007, 17:48 »
Написал съм ги по инерция тези двамата в бан-списъка да са ACCEPT :-) Благодаря за напомнянето.
Обаче все още не мога да си обясня защо порта ми стои отворен ?! Каква е тази магия ...
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #5 -: May 31, 2007, 17:51 »
Какво имаш на тези портове?

-A INPUT -i eth0 -p tcp -m tcp --dport 2120 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 909 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 30000:30024 -j ACCEPT

И пробвай да махнеш
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

и да кажеш дали порта е отворен тогава.



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #6 -: May 31, 2007, 18:28 »
На 2120 - FTP, на 909 - Webmin, 30000-30024 са ми за data-каналите на FTP-то (за да може да се връзват хора, които седят зад NAT и им се налага да ползват PASV режим на трансфер)

Като махна
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

се получават тайм-аути. Например като се опитам да заредя уеб-страница, се появява бял екран, и чак след 5-6 секунди се зарежда съдържанието. Или пък ако пробвам с TELNET да се вържа към порт 25, получавам отговора
220 Greeting Postfix
пак след 5-6 секунди.
А ако го върна обратно, всичко си е наред - няма таймаут-и.

И в двата случая обаче порт 3306 си остава достъпен отвън ...



Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #7 -: May 31, 2007, 18:49 »
А като спреш напълно mysqld пак ли ти дава този тест, че е отворен порта?
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #8 -: May 31, 2007, 18:57 »
Е, не разбира се - нали като го спра, никой не отваря порта - няма LISTEN. Въпроса е, че като съм го пуснал, трябва да е достъпен само за мен - а не за всички, както е с останалите услуги. Демек трябва да дропи всички пакети, които не идват от моето IP.
Активен

daxen

  • Напреднали
  • *****
  • Публикации: 31
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #9 -: May 31, 2007, 19:12 »
Примерен код
iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0 -d ip.to.na.servera --dport 3306 -j DROP
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #10 -: May 31, 2007, 19:33 »
Цитат (tmcdos @ Май 31 2007,18:57)
Е, не разбира се - нали като го спра, никой не отваря порта - няма LISTEN. Въпроса е, че като съм го пуснал, трябва да е достъпен само за мен - а не за всички, както е с останалите услуги. Демек трябва да дропи всички пакети, които не идват от моето IP.

Идеята ми беше да видим до колко са достоверни резултатите от този тест ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Iptables с drop по дефолт - отворени портове
« Отговор #11 -: May 31, 2007, 19:35 »
Цитат (daxen @ Май 31 2007,19:12)
Примерен код
iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0 -d ip.to.na.servera --dport 3306 -j DROP

Това със сигурност ще работи (както и другите предишни подобни предложения), но въпросът е, че не би трябвало да се прави това при такова построяване на защитната стена...

Все пак - пробвай, да видим дали няма пак да се получи някакво такова чудо '<img'>



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #12 -: May 31, 2007, 19:35 »
Този код ще спре изцяло достъпа до MySQL - на мен ми трябва да реже всички, освен мен ;-)

Цитат
iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0 -d ip.to.na.servera --dport 3306 -j DROP


В ръководството на IPTABLES изрично се указва, че таблица NAT се използва само за промяна на адресите и/или портовете на източника/получателя на пакета - а за филтрация на пакетите да се използва таблица FILTER.



Активен

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #13 -: May 31, 2007, 19:40 »
Цитат (VladSun @ Май 31 2007,19:33)
Идеята ми беше да видим до колко са достоверни резултатите от този тест ...

Теста си работи както трябва - на портовете, на които няма услуга, се бави по 1 минута и накрая изплюва, че порта е затворен.
Ето му адреса Online Port Scanner
Активен

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Iptables с drop по дефолт - отворени портове
« Отговор #14 -: May 31, 2007, 19:48 »
Сетих се нещо.
Може би проблема идва от това, че имам няколко виртуални интерфейса на един физически. И тъй като в правилата съм написал -i eth0, може би не се получава съвпадение.
Но пак няма логика - защото нали ако нито едно правило не съвпадне, трябва да се приложи политиката по подразбиране - която е указана като DROP.
Хм ....

Пробвах да махна
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT

и скенера пак показа, че порта е отворен ...



Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
SpamAssassin drop SPAM messages?
Настройка на програми
kiroffbg 0 1533 Последна публикация Jan 12, 2004, 09:51
от kiroffbg
drop-down from location bar in Konqueror
Настройка на програми
jojopara 1 2082 Последна публикация Jul 16, 2004, 23:46
от XaugyTuH
Irc drop при load balancing
Настройка на програми
bombe 5 4114 Последна публикация Jul 05, 2008, 11:33
от bombe
Drop line На Slackware 13.0 не иска да се инсталира ?
Настройка на хардуер
Pavlik 6 3428 Последна публикация Nov 24, 2009, 10:42
от bazu
Iptables Mac drop
Настройка на програми
Breakfist 1 2285 Последна публикация Nov 18, 2010, 13:28
от tolostoi