Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Настройка защиты dedicated веб-сервера  (Прочитано 1787 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aa_dav

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Здравствуйте. Я на форуме впервые и как раз зарегистрировался так как будут возникать вопросы, которые нахрапом не гуглятся.
Расстановка сил такая, что взяли недавно на одном хостинге dedicated сервер с Ubutnu 11.10 на борту. И хотя написали в заявке чтобы там была привычная связка mysql+apache+php, однако когда нам его всучили кроме SSH там в общем то ничего настроено не было.
Однако сразу скажу - в linux я не такой уж и новичок, даже можно сказать уверенный пользователь и неуверенный администратор, и связку apache2+mysql5+php5 настроил сам без особых сложностей.
Встал вопрос файреволла. Тут надо сделать лирическое отступление - до того мы на том же хостинге брали виртуальный выделенный сервер с CentOS на борту. Так вот видимо т.к. его ставили сразу из образа VM, то он был умеренно настроен. Потыкавшись там я уже знаю что самый встроенный файрволл - это iptables.
Что тут следует сказать про сам сервер - у него одна сетевая плата, которая сразу торчит в интернет, т.е. там роутером-мостом он не является, просто надо ограничить возможность сетевых атак на всё что потенциально может быть и не быть, а разрешить только для нужных вещей - SSH, HTTP и FTP ну и пинги.
Начав курить мануалы по iptables я понял что углубится можно не только с головой, а еще глубже, поэтому поскакав во основным вещам родил такое решение:
с вышеупомянутого сервера CentOS взял файл с настройками iptables, тот, который как оказалось суть формат iptables-restore и тупо перенес его на сервер с Ubuntu.
Выглядит он следующим образом:
Цитировать
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Вопрос 1:
Насколько я понимаю строчки с портами 5353 и 631 - лишние для моей задачи? Гугление говорит что второе это про принтеры, а первое - вообще что-то невразумительное. Так что собираюсь смело грохнуть - не зря ли?

Вопрос 2:
Описанная конфигурация действительно прикрывает всё что возможно, кроме icmp, веб, ссш и фтп? Нет ли каких "пробоин"? Не стоит ли запретить всё что связано с FORWARD?

Вопрос 3:
Если на CentOS данный файл хранился в определенном файле (где-то в чём то наподобие /etc/sysparams/), то на Ubuntu я не смог найти аналога. Хотя везде пишется что iptables хранит записи в трёх файлах (filter и сотоварищи), но если я задаю эти правила через ту же iptables-restore, то после перезагрузки iptables -L опять выдаёт девственно чистые таблицы.
Потыкавшись в инете я обошел это так - в /etc/rc.local прописал вызов iptables-restore /путь-к-этому-файлу. Вроде работает. Но нет ли более корректного или "native"-ного решения?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #1 : 12 Ноябрь 2011, 04:30:15 »
1. Брандмауэром является netfilter. iptables - всего лишь средство управления им.
2. Бардак. Полный. Вы хотя бы в тему "iptables для новичков" заглянули для начала. И не надо говорить, что она не гуглится.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн aa_dav

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #2 : 12 Ноябрь 2011, 08:52:27 »
Вы хотя бы в тему "iptables для новичков" заглянули для начала. И не надо говорить, что она не гуглится.

До до до, про iptables-restore я догадался конечно же сам, без гугла. И про то чтобы поместить его в запуск rc.local мне одна сорока нашептала.

2. Бардак. Полный.

С этого места поподробнее.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13750
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #3 : 12 Ноябрь 2011, 10:20:35 »
Да какие могут быть подробности?
1. rc.local отмирает, и на данный момент, его использование считается костылём
2. Показанный Вами набор правил дыряв на столько, на сколько может быть дырявым файервол: в наборе нет НИ ОДНОГО запрещающего правила. Исправить ситуацию можно сменив дефолтное правило цепочки INPUT с ACCEPT на DROP
По открытым портам:
631 - Вы совершенно правы, этот порт зарезервирован за cups - сервером печати *nix-систем
5353 - не знаю, что у Вас за гугл, но я проверил себя и мой гугл подтвердил мою память, что этот порт зарегестрирован за Multicast DNS

И про то чтобы поместить его в запуск rc.local мне одна сорока нашептала.
ГонИте эту сороку от себя и впредь читайте статьи убунто(дебиано)водов по принятым "стандартам".
На этом форуме есть пара основных вариантов загрузки правил при старте системы. Читайте.
Принимаю благодарности в WMR и WMZ на кошельки:
R158160676909 и Z313280060764

Оффлайн aa_dav

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #4 : 12 Ноябрь 2011, 11:23:14 »
Хех, приём с rc.local написан даже на этом самом же форуме в той же самой теме "iptables для новичков", куда меня сразу послали на второй же странице в самом низу. И никто, замечу, сразу там не возразил что мол устаревает или что. Так что спасибо что предупредили что способ устаревает.
Однако хотелось бы кроме констатации факта хоть бы ключевые слова для поиска иметь, а то "правила при старте системы" по форуму выдает не то.

Далее - весьма странно что вы там не увидели запрещающих правил, ведь предпоследняя строка как я понял ей и является. Экспериментально подтверждается, что оно работает, если например закомментить строчку с 80-ым портом - браузер зависает на подключении к серверу.
Или речь еще про что-то?

Заранее спасибо.

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #5 : 12 Ноябрь 2011, 12:20:26 »
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Красное в топку.
Желтое - насколько помнится порт 20 используется на стороне клиента, а не сервера. Если хотите чтоб Ваш сервер позволял пассивные подключения, то нужно добавить еще портов(см. настройки конкретного фтп-сервера).

P.S. Запрещающее правило действительно с ходу не заметно :D
P.S.S. Лично я не вижу смысла городить дополнительную цепочку.

Оффлайн aa_dav

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #6 : 12 Ноябрь 2011, 12:42:57 »
Желтое - насколько помнится порт 20 используется на стороне клиента, а не сервера. Если хотите чтоб Ваш сервер позволял пассивные подключения, то нужно добавить еще портов(см. настройки конкретного фтп-сервера).
Спасибо.

Цитировать
P.S.S. Лично я не вижу смысла городить дополнительную цепочку.

Ну я просто скопировал данный файл, видимо в CentOS её был смысл городить. Но это уже непринципиально, мне главное чтобы оно реально блокировало всё кроме мною обозначнного.

Насколько я понял вопрос с rc.local тоже непринципиален - концепция может и устаревает, но еще работает, а мне этого вполне достаточно. Я просто волновался про то что может какая утилита автоконфигурации какой может тереть этот файл своими соображениями, но, насколько понял, нет, и то хорошо.

P.S.
Кстати, как новичок на этом форуме могу лишний раз отметить справедливость закона обрыдливания закоренившихся форумчан. Чем больше времяпровождения на форуме, тем менее информативен и груб ответ. :)

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #7 : 12 Ноябрь 2011, 13:52:41 »
P.S.
Кстати, как новичок на этом форуме могу лишний раз отметить справедливость закона обрыдливания закоренившихся форумчан. Чем больше времяпровождения на форуме, тем менее информативен и груб ответ. :)
Не совсем корректно отозвались о завсегдатаях(хотя некоторые личности и правда того заслуживают), да еще и с ошибкой :) , просто все дело в человеческой психологии.

Оффлайн aa_dav

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #8 : 12 Ноябрь 2011, 14:13:32 »
P.S.
Кстати, как новичок на этом форуме могу лишний раз отметить справедливость закона обрыдливания закоренившихся форумчан. Чем больше времяпровождения на форуме, тем менее информативен и груб ответ. :)
Не совсем корректно отозвались о завсегдатаях(хотя некоторые личности и правда того заслуживают), да еще и с ошибкой :) , просто все дело в человеческой психологии.
Я забыл добавить важную концовку "...ответ на нубские темы.". Я в принципе никого не виню, т.к. сам "старичок" на другом тематическом форуме.

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Настройка защиты dedicated веб-сервера
« Ответ #9 : 12 Ноябрь 2011, 16:16:07 »
правила МЭ
$ sudo iptables-save -t filter
Цитировать
# Generated by iptables-save v1.4.2 on Sat Nov 12 16:06:07 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -i ! lo -m addrtype --src-type LOCAL -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp -m multiport --dports 80,22,21 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Nov 12 16:06:07 2011

При загрузке системы

Цитировать
/sbin/modprobe -a -v nf_conntrack_ftp
/sbin/sysctl -w net.ipv4.ip_local_port_range="16384    61000"
/sbin/sysctl -w net.netfilter.nf_conntrack_generic_timeout=120
/sbin/sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=300

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Настройка защиты dedicated веб-сервера
« Ответ #10 : 12 Ноябрь 2011, 19:49:05 »
Вы хотя бы в тему "iptables для новичков" заглянули для начала. И не надо говорить, что она не гуглится.

До до до, про iptables-restore я догадался конечно же сам, без гугла. И про то чтобы поместить его в запуск rc.local мне одна сорока нашептала.
При чём тут iptables-restore ?
Не надо перекраивать мои ответы под ваши нужды. Комментарий про "iptables для новичков" относился к комментарию о полном бардаке в правилах.
В упомянутой мною теме практически все примеры правил (независимо от способа загрузки) начинаются с трёх строк, которых у вас просто нет.


Пользователь решил продолжить мысль 12 Ноябрь 2011, 19:50:35:
@Unreg: Со второго блока помедленнее, пожалуйста. Что делает что и зачем это делается? (conntrack_ftp я уже понял, про него не надо.)
« Последнее редактирование: 12 Ноябрь 2011, 19:52:52 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Настройка защиты dedicated веб-сервера
« Ответ #11 : 12 Ноябрь 2011, 20:27:26 »
net.ipv4.ip_local_port_range
Раз на машинке крутиться сетевой сервис, то имеет смысл увеличить диапазон портов, который ОС используется в качество портов источника для исходящих TCP сегментов

net.netfilter.nf_conntrack_generic_timeout
net.netfilter.nf_conntrack_tcp_timeout_established
что - легкий тюнинг сетевой подсистемы
для чего - кой какая защита от DOS, борьба с ошибкой nf_conntrack: table full, dropping packet
По дефолту выставлены довольно большие значения тайм аутов для TCP
net.netfilter.nf_conntrack_tcp_timeout_established - пять дней!
netfilter будет помнить о TCP соединении в состоянии ESTABLISHED, если по этой сессия раз в пять дней хоть хоть какое то количество байт пробежит.

 

Страница сгенерирована за 0.099 секунд. Запросов: 25.