Базирана на FreeBSD настройка на защитна стена, администраторски блог

Блог за технологиите, технокрацията и методите за справяне с гребла

Настройка на софтуерна защитна стена, базирана на FreeBSD

настройка

Най-после успяхме да пресъздадем ръководството за настройка на защитна стена, базирана на системата FreeBSD, която освен със стабилност, надеждност и сигурност се отличава и с още едно качество, което е важно за много компании - това е безплатната защитна стена. Повечето от настройките са разработени през годините на пробна експлоатация, така че вече е доста трудно да ги запомните и освен това ще отнеме още половин статия, така че най-вероятно ще опиша някои от настройките, които не разгледах в тази статия малко по-късно.

Нека преведем това събитие незабавно в равнината на икономическите ползи за системния администратор, тъй като според мен настройката на софтуерна защитна стена е на второ място след лечението на компютъра за вируси и преди възстановяването на данни по отношение на съотношението на спечелените средства към изразходваното време. Тъй като настройката на софтуерна защитна стена, базирана на FreeBSD, отнема от 6 до 10 часа, от момента, в който включите празна машина до момента, в който вече можете да превърнете този сървър в мрежова секция. Естествено, ще отнеме поне час и половина до два часа, за да се повдигне самата защитна стена, за да се създадат и тестват правилата: по-голямата част от времето се отнема от възстановяването и надграждането на системата.

Трябва също да се отбележи, че тази публикация е само за настройка на защитна стена, а не за унифициран инструмент за защита с поточно антивирусен софтуер и IPS, за който може да говоря по-късно.

И така, създадохме софтуерна защитна стена, базирана на FreeBSD.

Ще инсталирам ipfilter, единствено поради идеологическите причини ipfw да работи с NAT и факта, че самата функционалност на ipfilter е по-опростена и отдавна е изучавана за мен (отново ще ви разкажа за инсталирането на PF като нишка по-късно, ноСъмнявах се да го поставя на защитната стена на офиса, тъй като има проблеми с многопоточността). Няма да описвам изцяло процедурите, тъй като вече съм писал за част от работата преди, така че просто ще се позова на тези публикации.

Като начало вдигаме FreeBSD сървъра (за последен път избрах системата FreeBSD 8.2), на който актуализираме системата и дървото на портовете, след което дразним нашата система, за да подобрим сигурността. След това възстановяваме ядрото на системата, като деактивираме дървата за огрев, от които не се нуждаем (тук няма да е излишно да лопатим dmesg за наличието на устройства, за да не забраним нещо архивно - например IPv4 вместо IPv6), и след като активираме поддръжката на ipfilter в ядрото:опции IPFILTER # IPFilter supportопции IPFILTER_LOG # log поддръжка на ging IPFilterопции IPFILTER_DEFAULT_BLOCK # блокиране на всички пакети по подразбиранеопции IPFILTER_LOOKUP също така, ако не е добавено при настройка на заздравена система, тогава задайте следните опции на ядротоопции IPSTEALTH # не увеличава TTL брояча при предаване на пакетопции TCP_DROP_SYN FIN # пускане на SYN/F IN пакети, но изглежда не работи с клон 7опции SC_DISABLE_REBOOT # деактивиране на рестартиране на сървъра чрез Ctrl+Alt+Delопции SOFTUPDATES # активиране на технологията за софтуерно обновяване за настройка на работата на системата

За добра бележка, преди да редактирате ядрото, за всеки случай, трябва да прочетете следните файлове, поне за да увеличите личната си образованост, и ако има грешки при изграждането на ядрото, определено:/usr/sys/UPDATING /usr/src/sys/conf/NOTES

Възстановяваме ядрото с активирани ops, само в случай на локална инсталация, в случай на отдалечена инсталация, от sin - първо настройваме ipf правилата и включваме поддръжката на защитната стена вrc.conf, чак след това ребилдваме ядрото, така че да няма заключване на защитната стена в отдалечения офис, което е класически гаф на отдалечения админ.

След това активираме поддръжката на защитна стена в системата, като добавим следните операнди към файла/etc/rc.conf : ###################################### ipf.rules” ipnat_rules=”/etc/ipnat.rules” gateway_enable=”YES” icmp _bmcastecho=”ДА” ipmon_enable=”ДА” ipmon_flags=”-D /var/log/ipmon.log &” ##########################################

Създайте гореспоменатите файловеipf.rules иipnat.rules, направете ги собственост на root и задайте разрешения на 644. След това създайте правило за пълен достъп за всички във файла/etc/ipf.rules. Естествено, освен lo0, добавяме всички интерфейси, налични в системата, и най-вече тези, чрез които конфигурираме сървъра - в моя случай това е вътрешният интерфейс rl0. ####################################### припаднете бързо на lo0 всички припаднете бързо на lo0 всички припаднете бързо на rl0 всички предайте бързо на rl0 всички ################################## #

След това можем да възстановим ядрото и да рестартираме машината, за да инсталираме ново ядро, и след това, след като изсвирим печелившото соло на тамбурината, след като машината се зареди правилно, продължете да настройвате останалите опции.

След това леко променяме ядрото чрез файла с настройки/etc/sysctl.conf, за да добавим всякакви функции за противодействие на DoS и DDoS атаки, както и да подобрим сигурността на системата, които се запазват благодарение на файла в системата дори след рестартиране. Няма да ги описвам подробно тук, но като тема по-късно ще дам пълен разбор - засега просто въведете следните стойности в посочения файл (ние създаваме файла, когатоотсъствие):

net.inet6.ip6.redirect=0 kern.ipc.somaxconn=32768 net.inet.tcp.blackhole=1 net.inet.udp.blackhole=1 net.inet.tcp.msl=7500 net.inet.tcp.sendspace=32768 net.inet.tcp .recvspace= 32768 net.inet.tcp.syncookies=1 net.inet.tcp.log_in_vain=1 net.inet.udp.log_in_vain=1 net.inet.tcp.sack.enable=1 net.link.ether.inet.max_age=1200 net.inet.ip.redirect=0 net.inet.ip .sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.ip.ttl=64 net.inet.ip.random_id=1 net.inet.ip.forwarding=1 net.inet.ip.check_interface=1 net.inet.icmp.bmcastecho=0 net.i net.icmp.maskrepl=0 net.inet.icmp.maskrepl=0 net.inet.icmp.icmplim=30 net.inet.icmp.icmplim_output=0 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=1

net.inet.tcp.drop_synfin=1 # ако опцията TCP_DROP_SYNFIN е разрешена в ядрото

След това настройваме ротацията на журналите на защитната стена, като инсталираме пакета logrotate:# cd /usr/ports/sysutils/logrotate/ # make && направете инсталиране && make clean Създаване и конфигуриране на конфигурация за ротация на регистрационни файлове:# cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf добавете следните редове към файла logrotate.conf ################logrotate.conf/var/log /ipmon .logЕжедневно # колко често да се редуват регистрационни файловеrotate 14 # колко регистрационни файлове да се пазятmissingok # игнориране на липсващ файл ipmon.lognotifempty # не се обработва лог файл, ако е празенnoolddir # съхранява всички лог файлове в една директорияcompress # компресиране на обработени регистрационни файловеpostrotate # описание какво да се прави с ipmon след ротация/sbin/killall -HUP ipmon # рестартиране на ipmon в нашия случайendscript # край на описанието на действието след ротация> # край на описанието на ротацията на лог файла ipfilter ############################

Добавете нашия ротатор на cron log:0 1 * * * /usr/local/sbin/logrotate -s /var/lib/logrotate.status /usr/local/etc/logrotate.conf

Тук също завършваме правилата, необходими за вашата локална мрежа, например клиентски банки, специфични програми за играчки, и ги добавяме към секцията с разрешени пакети. Само моят съвет е да опишете отделно всички портове, които се различават от стандартните, защото в голяма мрежа, след шест месеца пробна работа на защитната стена, ще бъде възможно да погледнете правилата на защитната стена само през сълзи и въоръжени с бутилка коняк. Ако нещо не работи или не разбирате какTHIS трябва да бъде разрешено, тогава погледнете логовете - обикновено има достатъчно информация за заключванията от тях, за да разберете какво точно трябва да бъде разрешено.

Бих искал също да отбележа следната точка - за всякакви редакции на правилата, въведени в таблицата, създайте ревизия и след това в случай на грешка можете да се върнете към предишната версия възможно най-бързо и след това вече да търсите произволно зададен или, обратно, забравен символ, защото правилата също се четат от началото на файла и веднага щом пакетът срещне неразрешим символ или израз, прилагането на правилата приключва и получавате само набора от правила, които успяха да бъдат засмукани в системата.