Титла: firewall -> iptables Публикувано от: anakinn в Nov 30, 2005, 16:37 Здравейте !
Искам да си настроя някакъв прост firewall. Използвам Linux Gentoo 2005.1 Linux kernel 2-6.12 iptables. Идеята, която искам да постигна е нещо от рода на ...отказ на всичко, освен на някои нужни портове - 80,443.. Прегледах man iptables,малко из гугъл и много из форума ![]() Пробвах с нещо, което беше обявено като просто и работещо: iptables -P INPUT DROP iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT След всичко това...направо загубих връзка към машината си ![]() Имам само една мрежова карта, не искам правя някакви пренасочвания и т.н. (не е рутер). Тъй като машината ще се вижда през интернет, искам да е поне малко засигурен. Дори пробвам неща от типа на фтп да не е на 21 порт а на 3321 например. Може ли някой да ми помогне с помощен скрипт, или поне да ме насочи някъде, където е по... по за прости хора написано така да се каже ![]() Благодаря! Титла: firewall -> iptables Публикувано от: vlad73 в Nov 30, 2005, 17:31 iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT Титла: firewall -> iptables Публикувано от: в Nov 30, 2005, 21:22
Аз също се боря със същия проблем. При мен се получава, че скрипта работи, защитава машината, но не отваря нужните ми портове. Смятам да пусна ftp server на порт 21000, но като пусна скрипта ми дава грешка 425. Ето моя скрипт, ако с нещо може да ти е полезен и ако се сетиш нещо за решение пиши: #!/bin/bash IPTABLES='/sbin/iptables' # Set interface values EXTIF='eth0' # flush rules and delete chains $IPTABLES -F $IPTABLES -X $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT #echo -e " - Allowing access to the Skype" $IPTABLES -A INPUT --protocol tcp --dport 48420 -j ACCEPT #echo -e " - Allowing access to the Webmin" $IPTABLES -A INPUT --protocol tcp --dport 10000 -j ACCEPT #echo -e " - Allowing access to the FTP server" $IPTABLES -A INPUT --protocol tcp --dport 21000 -j ACCEPT #echo -e " - Allowing access to the FTP server" $IPTABLES -A INPUT --protocol tcp --dport 21 -j ACCEPT #echo -e " - Allowing access to the SSH server" $IPTABLES -A INPUT --protocol tcp --dport 22 -j ACCEPT #echo -e " - Allowing access to the SSH server" $IPTABLES -A INPUT --protocol tcp --dport 22000 -j ACCEPT #echo -e " - Allowing access to the HTTP server" $IPTABLES -A INPUT --protocol tcp --dport 80 -j ACCEPT # block out all other Internet access on $EXTIF $IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP $IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j DROP Титла: firewall -> iptables Публикувано от: anakinn в Dec 01, 2005, 12:56 vlad73:
Перфектно ![]() Благодаря много явно този ред, които си маркирал оправя нещата iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Само един проблем имам пуснал сум proftpd na 2221 порт и от ftp клиента взимам следното съобщение: Connecting to 192.168.1.99:2221 ... Status: Connected with 192.168.1.99:2221. Waiting for welcome message... Response: 220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [192.168.1.99] Command: USER simo Response: 331 Password required for simo. Command: PASS ******* Response: 230 User simo logged in. Command: FEAT Response: 211-Features: Response: MDTM Response: REST STREAM Response: SIZE Response: 211 End Command: SYST Response: 215 UNIX Type: L8 Status: Connected Status: Retrieving directory listing... Command: PWD Response: 257 "/" is current directory. Command: TYPE A Response: 200 Type set to A Command: PASV Response: 227 Entering Passive Mode (192,168,1,99,129,247). Command: LIST Error: Transfer channel can't be opened. Reason: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. Error: Could not retrieve directory listing В man iptables намерих: string can be "ftp" for packets related to a ftp-session on default port. For other ports append -portnr to the value, ie. "ftp-2121". Но нещо не успях да го добавя На какво може да се дължи? ftp-то бачка, щото като спра iptables-restore /etc/iptables.bak и няма проблем Титла: firewall -> iptables Публикувано от: NaDa в Dec 01, 2005, 13:20 От твойта си машина ли се връзваш? Защото ако е така, трябва да отвориш 20 (фтп-дата) порт, предполагам?
Титла: firewall -> iptables Публикувано от: Hapkoc в Dec 01, 2005, 13:21 доколкото ми е известно ftp протокола използва два порта (по подразбиране 20 и 21). порт 21 се използва за логин и изпращане на команди и получаване на резултат от командите. порт 20 се използва за трансфер на данни.
в случая ми се струва, че в момента, в който подадеш get (или в случая list) командата клиента се опитва да се свърже на порт 20, който предполагам е затворен. с ftp сървъри не съм си играл много, но вероятно или трябва да отвориш 20-ти порт през iptables или да го прехвърлиш (от конфигурацията на ftp сървъра) на друг порт и да укажеш на клиента кой му е ftp-data порт-а, или да укажеш на клиента да използва passive mode за файлови трансфери. последното мисля, че в command-line ftp клиента се прави с командата passive и указва ,че при поискване на файл от сървъра същия трябва да инициира връзката към клиента. ако съм допуснал някоя неточност моля да бъда коригиран. поздрави п.с.: поради дължината на моя отговор и лаконичността на NaDa последния ме е изпреварил/а ![]() Титла: firewall -> iptables Публикувано от: anakinn в Dec 01, 2005, 13:31 ftp-то ще се ползва само от локалната мрежа
аз разрешавам 1 Ip iptables - D INPUT -p tcp --dport 2221 -s 192.168.1.200 -j ACCEPT iptables - D INPUT -p tcp --dport 20 -s 192.168.1.200 -j ACCEPT клиента е настроен в passive mode пробвах, но пак не става.... В FileZilla виждам следното 227 Entering Passive Mode (192,168,1,99,130,19) като дам нова връзка 227 Entering Passive Mode (192,168,1,99,130,21) пак нова връзка 227 Entering Passive Mode (192,168,1,99,130,23) и т.н. Титла: firewall -> iptables Публикувано от: Hapkoc в Dec 01, 2005, 13:56 Добре, какво става при опит за download на файл?
В смисъл, това съобщение по моите разбирания идва да покаже, че клиента влиза в passive mode. Титла: firewall -> iptables Публикувано от: vlad73 в Dec 01, 2005, 14:02 Aми има един модул: ip_conntrack_ftp, негова работа е да се грижи общо взето далаверките по ftp-то, най-вече да разпознае пакетите по втория канал като "Related" към първия. Зареди го с "modprobe ip_conntrack_ftp" и виж дали ще има промяна. В man-a на iptables се говори и за helpers, не съм го ползвал, но се споменаваше, че можеш да заредиш ftp-helper с конкретен порт на който да следи контролната връзка, може би трябва да се провери и това.
Аз си реших малко хамалски този въпрос - просто разреших порта, който ми трябваше за data-connection в output-a на filter, фиксирах изходящия порт на сървъра и забраних passv ![]() Успех на всички борещи ftp-то! ![]() Титла: firewall -> iptables Публикувано от: anakinn в Dec 01, 2005, 14:17 Hapkoc:
не се стига до там. Точно преди командата /list спира... и след малк изкарва гореспоменатата грешка. vlad73: Ще пробвам с ip_conntrack_ftp... А как точно си го направил? В смисъл допуснал си 20порт, аз пробвах така, но уви ![]() Титла: firewall -> iptables Публикувано от: vlad73 в Dec 01, 2005, 14:33 Ами не точно: във vsftpd.conf указах, че искам фиксиран порт за data-connection и кой е този порт, при мен е от нерпивелигированите - 2120 в случая, просто с 21 и 20 имах проблем с един Вин - имаше firewall, a човека на него твърдеше, че няма и отказваше да коригира каквото и да е, оказа се, че като минах на "горни портове" (след 1023) нещата си станаха, изглежда win-a преживява по-лесно връзка от непривелигирован порт, отколкото от привелигирован.
![]() Титла: firewall -> iptables Публикувано от: anakinn в Dec 01, 2005, 15:20 И мене ме устройва да го направя по този начин.
Нещо се затруднявам да намеря в proftpd такава секция... Титла: firewall -> iptables Публикувано от: vlad73 в Dec 01, 2005, 15:38 ами може и да няма смисъл от такава опция, трябва да се пробва, просто data-connection почти винаги е на порт с 1 по-малък от този на control connection, при vsftpd това явно не е задължително, та затова си има опция, при proftpd може да си фиксиран порта
netstat ще ти свърши работа в случая Титла: firewall -> iptables Публикувано от: anakinn в Dec 01, 2005, 15:56 33325
33327 33329 при всеки следващ опит нарастват значи са на рандом порт... отвратителна работа ![]() Титла: firewall -> iptables Публикувано от: vlad73 в Dec 01, 2005, 17:31 Зареждането на ip_conntrack_ftp не помага ли?
A това чудо, наречено helper? виж какво пише в man-a за него:
И виж дали ако свалиш firewall-a на "клиента" няма да се променят нещата, не е казано, че само сървъра прецаква нещата. Титла: firewall -> iptables Публикувано от: phantomlord в Dec 02, 2005, 00:19
Ами виж Firestarter. Титла: firewall -> iptables Публикувано от: NaDa в Dec 02, 2005, 10:49 Титла: firewall -> iptables Публикувано от: anakinn в Dec 02, 2005, 15:08 vlad73:
Това не можах да разбера как да го добавя в iptables. Иначе го прочетох. Клиента няма firewall. От моя Уиндоус, от друг и от още едно fbsd съм пробвал. Уиндоусите нямат файруол. Машините са от локалната мрежа, в която е и въпросния линукс генту. Иначе firewall-a заприлича на това #!bin/sh ipt=/sbin/iptables $ipt -F $ipt -X $ipt -t nat -X $ipt -t nat -F echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts $ipt -t mangle -X $ipt -t mangle -F $ipt -P INPUT DROP $ipt -P OUTPUT ACCEPT $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ipt -A INPUT -i lo -j ACCEPT $ipt -A INPUT -p tcp -s 192.168.1.200 --dport 22 -j ACCEPT $ipt -A INPUT -p tcp -s 192.168.1.200 --dport 2221 -j ACCEPT $ipt -A INPUT -p tcp -s 192.168.1.12 --dport 2221 -j ACCEPT $ipt -A INPUT -p tcp --dport 443 -j ACCEPT $ipt -A INPUT -p tcp --dport 80 -j ACCEPT $ipt -A INPUT -p tcp -s localhost -j ACCEPT 10x to dr-who ![]() Титла: firewall -> iptables Публикувано от: vlad73 в Dec 02, 2005, 16:09 ами гледам, че става така:
iptables -A INPUT -m helper --helper ftp-2221 но резултата ми е неизвестен ![]() никаква промяна ли не настъпи с "modprobe ip_conntrack_ftp"? Титла: firewall -> iptables Публикувано от: anakinn в Dec 02, 2005, 17:09 Значи пробвах с
ptables -A INPUT -m helper --helper ftp-2221 после с ptables -A INPUT -m helper --helper ftp-2221 -j ACCEPT но пак се достига до същото положение. Този модул трябва от кернела да го добавя нали? Къде по-точно мога да го намеря? Титла: firewall -> iptables Публикувано от: в Dec 02, 2005, 17:13 От ситуацията която виждам момчета правите странни работи които са излишни, във firewall-a се описва порт-а на който слуща ftp-to и няма нищо общо това на кой порт прави data-connection-a другия комютър от който се закачате, проблема е във фтп сървърите ви, а не във firewall-a
Поздрави dr-who Титла: firewall -> iptables Публикувано от: в Dec 02, 2005, 17:16 с този firewall който си дал ти anakinn, ти е разрешен порт 2221
ако фтп-то слуша и работи без проблем на този порт, ип-тата: 192.168.1.200 и 1.12 както и локалхоста ти нямат проблем да влизат и да ползват фтп-то. Проблема ти е във фтп даемона, ако не можеш и локално да го ползваш. помисли вариантите за сменяне на даемона с друг такъв Титла: firewall -> iptables Публикувано от: в Dec 02, 2005, 17:21 $ipt -P INPUT DROP
$ipt -A INPUT -i lo -j ACCEPT $ipt -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT - излишно в случая ----- DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 ACCEPT all -- 192.168.0.0/24 0.0.0.0/0 ----- root@mail:~# ftp localhost Connected to localhost. 220 mail.knackery.net NcFTPd Server (licensed copy) ready. Name (localhost:antov): ----- root@mail:~# ftp mail.knackery.net Connected to mail.knackery.net. 220 mail.knackery.net NcFTPd Server (licensed copy) ready. Name (mail.knackery.net:antov): ----- Поздрави dr-who Титла: firewall -> iptables Публикувано от: zeridon в Dec 02, 2005, 18:56 Така пичове всички изтървахте един много тънък момент ftp клиента минава във passive пасивните портове са съвсем други и те трябва да са отворени на firewall-а
Виж кои са портовете които са описани за passive mode и ги отвори. Титла: firewall -> iptables Публикувано от: anakinn в Dec 05, 2005, 09:34 zeridon:
кои портове да гледам - тези в netstat на линукса или тези, които виждам от фтп клиента (например FileZilla например - 33325,33327,33329) В netstat виждам това tcp 0 0 192.168.1.99:2221 192.168.1.200:2802 TIME_WAIT tcp 0 0 192.168.1.99:5995 192.168.1.200:2803 ESTABLISHED tcp 1 0 192.168.1.99:2221 192.168.1.200:2794 CLOSE_WAIT Титла: firewall -> iptables Публикувано от: anakinn в Dec 05, 2005, 13:30 Най-накрая
![]() в proftpd.conf PassivePorts 2222 2222 и още нещо ако може да питам... като пусна nmap -v -A -T4 -P0 -p1-60000 192.168.1.99 открива само 443 порт - което е хубаво, но показва много детайли за кернела и ОС-а. Това с iptables ли се скрива или нещо в kernela? Всичко върви чудесно ![]() Много Благодаря на всички, които помогнаха !!! Титла: firewall -> iptables Публикувано от: в Dec 05, 2005, 15:24 Не знам дали ще можеш да скриеш нещо, но може поне да затрудниш нещата с iptables - направи си port-scan защита - примерно с PSD пача на POM, или добави правила за SYN, FIN, RST port-scan чрез ограничаване на тези пакети с --limit match-a
Титла: firewall -> iptables Публикувано от: anakinn в Dec 05, 2005, 16:48 Нещо от типа на iptables -A INPUT -p -tcp-flags SYN,FIN RST -j DROP (или REJECT)
Обаче си помислих че е добра идея сървъра да "работи" Т.е. Например ако има проблем с него, как мога да разбера дали е пуснат - най-лесно с пинг ![]() Не е лесна работа това Титла: firewall -> iptables Публикувано от: VladSun в Dec 05, 2005, 17:01 |