Автор Тема: И един идиот наглася iptables...  (Прочетена 1310 пъти)

Mayvena

  • Новаци
  • *
  • Публикации: 2
    • Профил
Здравейте, пълен нууб съм по отношение на линукс, но реших, че ми трябва девелопмент сървърче на RHEL. Беше ходене по мъките докато го инсталирам и наглася, но с iptables не успях да се справя. Машинката ще се ползва за уеб сървър с Apache, PHP, MySQL и VSFTPD, евентуално може да и сложа и мейл сървър някакъв, но това евентуално нататък. Проблемът ми е, че с включени iptables не мога да се свържа с машината през http или ftp. Ето какво ползвам:

Код:
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

Отчайващо се нуждая от помощ, защото вече съм на път да си заблъскам главата в бюрото.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: И един идиот наглася iptables...
« Отговор #1 -: Jul 26, 2013, 14:47 »
Правилата в iptables се четат отгоре надолу, като първото съвпадение има приоритет над следващите. В момента си сложил REJECT правилото над ACCEPT правилата, то взема приоритет и въпросните ACCEPT-и отдолу за портове 80, 443, 25 и 21 не се вземат предвид. Размени им местата ;)

Между другото, относно позволенията, от които имаш нужда. Ако при FTP ще ползваш активни (не пасивни) връзки, ще ти е нужно да дадеш позволение и на порт 20. Ако ще имаш нужда да се връзваш към MySQL и от други машини (не само от localhost), ще ти е нужно и позволение на порт 3306. Ако от този сървър само ще изпращаш поща (например, ще ползваш само mail() функцията в PHP за пращане на нещо от сайта) и няма да получаваш поща на тази машина, не ти е нужно позволението на порт 25 в INPUT веригата.
« Последна редакция: Jul 26, 2013, 14:59 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Naka

  • Напреднали
  • *****
  • Публикации: 3397
    • Профил
Re: И един идиот наглася iptables...
« Отговор #2 -: Jul 26, 2013, 15:11 »
Сега това е файл, който си е вътрешен формат за РедХат и затова мисля, че не е правилно да се редактира. Като стартира сървера като стигне до iptable-ите, то сървиса чете този файл, разбира си го по негов си начин и го изпълнява.


Затова се прави така:

пишеш си правилата по стандартният начин (така като навсякъде се дават примери) в обикновеният шел:
iptables ...... нещо си
тестваш
пишеш още нещо
iptables ...... ....
теставаш
от време на време може да пишеш iptablel -L да видиш какво си направил.

като тръгне както трябва пишеш

Код:
service iptables save

това си чиста работа Редхатска и това ще запише правилата които си нагласил от шела във въпросният файл. При следващият рестарт на сървера вече ще имаш новите правила.
другите полезни команди са:
Код:
service iptables restart
Код:
service iptables stop
Код:
service iptables start

общо взето след всяка промяна ако искаш промените да се запазят трябва да изпълняваш по едно  service iptables save

------------------------------------------------------------------------------------
Ако са много правила аз го правя така:
Правя си един шелски скрипт iptables-rules.sh
вътре пиша всичките правила iptables ...... нещо си
едно след друго.

след това:
изпълнявам скрипта:
Код:
./iptables-rules.sh
и записвам правилата:
Код:
service iptables save
и мога да го пробвам за всеки случай
Код:
service iptables restart


 


« Последна редакция: Jul 26, 2013, 15:17 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

Mayvena

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: И един идиот наглася iptables...
« Отговор #3 -: Jul 26, 2013, 15:29 »
Благодаря за съветите :) Редактирах файла във вида:

Код:
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

-A INPUT -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

и тръгна :) Сега остана да доконфигурирам и другите услуги, за да тествам и тях. Благодаря много :)
Активен

v13

  • Гост
Re: И един идиот наглася iptables...
« Отговор #4 -: Jul 26, 2013, 16:03 »
Ето при мен как е:     / Ползван е наръчника за създаване на защитна стена от този адрес: https://wiki.archlinux.org/index.php/Simple_Stateful_Firewall /
Код
GeSHi (Bash):
  1. # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013
  2. *filter
  3. :INPUT DROP [0:0] #Политика по подразбиране за всички входящи - забрана
  4. :FORWARD DROP [0:0]
  5. :OUTPUT ACCEPT [0:0] #Политика по подразбиране за всички изходящи -разрешена
  6. :TCP - [0:0] # Създавам отделма верига за TCP връзките
  7. :UDP - [0:0] # Създавам отделма верига за UDP връзките
  8. -A INPUT -i lo -j ACCEPT # Задължително правило, разрешаващо всички входащи за 127.0.0.1
  9. -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Задължително правило, което приема връзки със статус RELATED,ESTABLISHED
  10. -A INPUT -m conntrack --ctstate INVALID -j DROP # Забрана за INVALID пакети.
  11. -A INPUT -f -j DROP # Забрана за фрагментирани пакети.
  12. -A INPUT -d 224.0.0.0/4 -j DROP # Предварителна забрана за MULTICAST пакети с цел да не влизат в логовете.
  13.  
  14. -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # Пренасочване на UDP трафика към веригата UDP.
  15. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP # Същото съответно и за TCP.
  16.  
  17. # Това се прави с цел допълнителна защита и по удобно разграничаване на трафика. Отделно важен момент е, че неподходящите пакети и опитите за връзка, за които
  18. # няма разрешаващи правила се отхрвърлят а не се забраняват. За TCP и UDP и тазлични от тях пакети има различни съобщения за отхвърлените пакети, като съответно
  19. # всяко отхвърляне се логва със съответният лимит.
  20.  
  21. -A INPUT -p udp -m limit --limit 10/min -j LOG --log-prefix "ipt UDP REJECT:  " --log-level 6
  22. -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
  23. -A INPUT -p tcp -m limit --limit 10/min -j LOG --log-prefix "ipt TCP REJECT:  " --log-level 6
  24. -A INPUT -p tcp -j REJECT --reject-with tcp-reset
  25. -A INPUT -m limit --limit 10/min -j LOG --log-prefix "ipt REJECT:  " --log-level 6
  26. -A INPUT -j REJECT --reject-with icmp-proto-unreachable
  27.  
  28. -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 30/min --limit-burst 8 -j ACCEPT #Лимит на пинга и логване.
  29. -A INPUT -p icmp -m limit --limit 10/min -j LOG --log-prefix "ipt PING DROP:  " --log-level 6
  30. -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
  31. # Отваряне на съответните необходими портове за TCP и UDP.
  32. # Важен момент е, че тук вече няма значение поредността на правилата.
  33. -A TCP -p tcp -m tcp --dport 51413 -j ACCEPT
  34. -A UDP -p udp -m udp --dport 51413 -j ACCEPT
  35. COMMIT
  36. # Completed on Fri Jul 26 15:35:49 2013
  37. # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013
  38. *nat
  39. :PREROUTING ACCEPT [0:0]
  40. :INPUT ACCEPT [0:0]
  41. :OUTPUT ACCEPT [0:0]
  42. :POSTROUTING ACCEPT [0:0]
  43. COMMIT
  44. # Completed on Fri Jul 26 15:35:49 2013
  45. # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013
  46. *mangle
  47. :PREROUTING ACCEPT [0:0]
  48. :INPUT ACCEPT [0:0]
  49. :FORWARD ACCEPT [0:0]
  50. :OUTPUT ACCEPT [0:0]
  51. :POSTROUTING ACCEPT [0:0]
  52. COMMIT
  53. # Completed on Fri Jul 26 15:35:49 2013
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: И един идиот наглася iptables...
« Отговор #5 -: Jul 26, 2013, 23:43 »
Моята политика е друга:
Общото правило го слагам REJECT за всичко в последствие разрешавам каквото ми е нужно и където е нужно. Иначе се дупчи без проблеми ако общото правило е ACCEPT. Както го е направил V13 само че и за изход ми е REJECT.
DROP правилото е за съвсем параноично изпълнение, с REJECT поне знаеш че си нежелан
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
iptables
Настройка на програми
ivanatora 16 10025 Последна публикация May 25, 2003, 11:34
от mtab
iptables
Настройка на програми
Danakich 1 3776 Последна публикация Jul 30, 2003, 14:50
от ShAnTaV
iptables???
Настройка на програми
spooky 0 2659 Последна публикация Nov 15, 2003, 15:10
от spooky
za iptables
Хардуерни и софтуерни проблеми
Slavnik 3 3830 Последна публикация Jan 10, 2004, 22:56
от frinko
Лимит на връзки със iptables
Настройка на програми
saturn_vk 15 5901 Последна публикация Feb 10, 2004, 14:28
от