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

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Mayvena в Jul 26, 2013, 14:03



Титла: И един идиот наглася iptables...
Публикувано от: Mayvena в Jul 26, 2013, 14:03
Здравейте, пълен нууб съм по отношение на линукс, но реших, че ми трябва девелопмент сървърче на 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

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


Титла: Re: И един идиот наглася iptables...
Публикувано от: neter в Jul 26, 2013, 14:47
Правилата в iptables се четат отгоре надолу, като първото съвпадение има приоритет над следващите. В момента си сложил REJECT правилото над ACCEPT правилата, то взема приоритет и въпросните ACCEPT-и отдолу за портове 80, 443, 25 и 21 не се вземат предвид. Размени им местата ;)

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


Титла: Re: И един идиот наглася iptables...
Публикувано от: Naka в 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


 




Титла: Re: И един идиот наглася iptables...
Публикувано от: Mayvena в 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

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


Титла: Re: И един идиот наглася iptables...
Публикувано от: v13 в 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


Титла: Re: И един идиот наглася iptables...
Публикувано от: victim70 в Jul 26, 2013, 23:43
Моята политика е друга:
Общото правило го слагам REJECT за всичко в последствие разрешавам каквото ми е нужно и където е нужно. Иначе се дупчи без проблеми ако общото правило е ACCEPT. Както го е направил V13 само че и за изход ми е REJECT.
DROP правилото е за съвсем параноично изпълнение, с REJECT поне знаеш че си нежелан