Не так давно попросили меня написать о первых мерах безопасности во FreeBSD. Я конечно протянул время, но статью всетаки публику, авось кому пригодиться.
Закрываем SSH
Отредактируйте в файле /etc/ssh/sshd_config следующие строки:
VersionAddendum SuperPuperSSH-9.8.7
# Указываем порт который будем слушать, главное чтобы он отличался от 22-го,
# так как много тупых ботов подбирающих пароли на 22 порт
Port 2244
# Внешний адрес моей машины
ListenAddress 82.146.63.195
И еще рекомендую закрыть доступ для пользователя root, все в том же sshd_config закомментируйте строку:
От перебора паролей по SSH вам может помочь DenyHost.
Закрываем порты
Теперь запустим файрволл IPFW:
firewall_script="/etc/fw.sh"
firewall_logging="YES"
И напишем инициализирующий скрипт /etc/fw.sh
FwCMD="/sbin/ipfw"
${FwCMD} -f flush
${FwCMD} 10 add check-state
# закрываем sendmail
${FwCMD} 15 add allow tcp from me to me 25
${FwCMD} 20 add deny tcp from any to me 25
${FwCMD} 30 add deny tcp from any to me 587
# закрываем mysql
${FwCMD} 40 add deny tcp from any to me 3306
# закрываем sphinx
${FwCMD} 45 add allow tcp from me to me 3312
${FwCMD} 50 add deny tcp from any to me 3312
# закрываем apache
${FwCMD} 55 add allow tcp from me to me 88
${FwCMD} 60 add deny tcp from any to me 88
# закрываем tornado web server
${FwCMD} 75 add allow tcp from me to me 8001
${FwCMD} 80 add deny tcp from any to me 8001
# закрываем tracd
${FwCMD} 105 add allow tcp from me to me 3050
${FwCMD} 110 add deny tcp from any to me 3050
# разрешаем все остальное
${FwCMD} 1000 add allow ip from any to any
Делаем его выполняемым:
Далее .
На 88, 8001, 3050 я проксирую с помощью Nginx, поэтому доступа с внешки мне к ним не надо.
На сегодняшний момент у меня отсутствует Apache, а с PHP-FPM я работаю через unix-сокет, поэтому закрывать порт не имеет смысла.
Еще рекомендую прочитать Боремся с HTTP-флудом средствами IPFW.
Закрываем DNS-рекурсию и меняем версию Bind
Для DNS-сервера Bind меняем в named.conf атрибуты allow-recursion и version:
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
allow-recursion { localnets; localhost; };
version "SuperPuperDNS-9.8.7";
Вкратце это когда DNS сервер по запросу пользователя выполняет сам все запросы для поиска нужной информации во всей системе DNS. А нам лишнюю работу выполнять не хочется, поэтому мы отключаем рекурсию.
Проверить версию DNS-сервера Bind можно так:
Sendmail только для внутреннего использования
Отредактируем /etc/rc.conf:
В общем то и все, это минимум, который вам поможет защититься от мелких атак и всяких скрипткидесов. Главное следите за обновлениями ПО, которое вы используете и все будет хорошо!



Щас набегут бить за ipfw, и правильно, потому что последнее правило должно быть deny ip from any to any, а перед ним несколько разрешающих.
Опа!
Яндекс.директ! :-D
bappoy, спасибо, исправлюсь :)
epsyl, зато :P
Мелочь, а приятно :)
а полотенце с мылом не дали? :-D
2bappoy
deny ip from any to any
ставится по умолчанию, если вы конечно специально не пересобирали ядро
за ipfw бить не будут, правильно и так, и так, все зависит от того что у вас установлено в net.inet.ip.fw.one_pass
При установке значения 1 пакет, выходящий из канала dummynet не проходит снова через брандмауэр. В противном случае, после выполнения действия канала, пакет повторно попадает на брандмауэр и проверяется, начиная со следующего правила,
...
а вобще я бы слово port в правилах все ж таки указал бы так как то красивей
Много споров о том что фаер должен быть по умолчанию закрыт, или по умолчанию открыт,Я для себя решил так, все что смотрит в мир закрыто по умолчанию, все что внурти открыто. мне так проще живется.
а еще можно использовать вложенные списки
:)
«И еще рекомендую закрыть доступ для пользователя root, все в том же sshd_config закомментируйте строку:»
По умолчанию во фре , удаленный доступ к ssh, руту противопоказан настройками безопасности :). Наверняка вы используете FirstVDS.
mich, ага, знаю. И пользуюсь FirstVDS :)
Спасибо Эд! :)
Всегда пожалуста! )
Отличная подборка. Я раньше такое делал по разрозненным статьям с OpenNet.
А что, DNS-рекурсия действительно такое затратное занятие?
Kuroki Kaze, ну как сказать, достаточно затратная. Все лучше не использовать её, чем через себя прогонять запросы