Титла: И един идиот наглася 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 ------------------------------------------------------------------------------------ Ако са много правила аз го правя така: Правя си един шелски скрипт iptables-rules.sh вътре пиша всичките правила iptables ...... нещо си едно след друго. след това: изпълнявам скрипта: и записвам правилата: и мога да го пробвам за всеки случай
Титла: 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): # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013 *filter :INPUT DROP [0:0] #Политика по подразбиране за всички входящи - забрана :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] #Политика по подразбиране за всички изходящи -разрешена :TCP - [0:0] # Създавам отделма верига за TCP връзките :UDP - [0:0] # Създавам отделма верига за UDP връзките -A INPUT -i lo -j ACCEPT # Задължително правило, разрешаващо всички входащи за 127.0.0.1 -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Задължително правило, което приема връзки със статус RELATED,ESTABLISHED -A INPUT -m conntrack --ctstate INVALID -j DROP # Забрана за INVALID пакети. -A INPUT -f -j DROP # Забрана за фрагментирани пакети. -A INPUT -d 224.0.0.0/4 -j DROP # Предварителна забрана за MULTICAST пакети с цел да не влизат в логовете. -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # Пренасочване на UDP трафика към веригата UDP. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP # Същото съответно и за TCP. # Това се прави с цел допълнителна защита и по удобно разграничаване на трафика. Отделно важен момент е, че неподходящите пакети и опитите за връзка, за които # няма разрешаващи правила се отхрвърлят а не се забраняват. За TCP и UDP и тазлични от тях пакети има различни съобщения за отхвърлените пакети, като съответно # всяко отхвърляне се логва със съответният лимит. -A INPUT -p udp -m limit --limit 10/min -j LOG --log-prefix "ipt UDP REJECT: " --log-level 6 -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -m limit --limit 10/min -j LOG --log-prefix "ipt TCP REJECT: " --log-level 6 -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -m limit --limit 10/min -j LOG --log-prefix "ipt REJECT: " --log-level 6 -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 30/min --limit-burst 8 -j ACCEPT #Лимит на пинга и логване. -A INPUT -p icmp -m limit --limit 10/min -j LOG --log-prefix "ipt PING DROP: " --log-level 6 -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP # Отваряне на съответните необходими портове за TCP и UDP. # Важен момент е, че тук вече няма значение поредността на правилата. -A TCP -p tcp -m tcp --dport 51413 -j ACCEPT -A UDP -p udp -m udp --dport 51413 -j ACCEPT COMMIT # Completed on Fri Jul 26 15:35:49 2013 # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Fri Jul 26 15:35:49 2013 # Generated by iptables-save v1.4.12 on Fri Jul 26 15:35:49 2013 *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Fri Jul 26 15:35:49 2013
Титла: Re: И един идиот наглася iptables...
Публикувано от: victim70 в Jul 26, 2013, 23:43
Моята политика е друга: Общото правило го слагам REJECT за всичко в последствие разрешавам каквото ми е нужно и където е нужно. Иначе се дупчи без проблеми ако общото правило е ACCEPT. Както го е направил V13 само че и за изход ми е REJECT. DROP правилото е за съвсем параноично изпълнение, с REJECT поне знаеш че си нежелан
|