Четверг, 25.04.2024, 10:18
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Настраиваем Iptables для защиты веб-сервера LINUX
Как известно безопасность сервера дело нелегкое, но крайне необходимое, а тем паче если речь идет о веб сервера, который постоянно находится под «обстрелом» извне.Для защиты нашего сервера будем использовать  Iptables (как вы поняли речь в статье пойдет о ОС Linux).

Принципы работы iptables, а равно и все ключи,  я здесь описывать не буду,  статей на эту тему в интернете море. То есть подразумевается, что вы знакомы с iptables, хотя бы минимально. Но, не знание темы, не помешает вам настроить защиту, так как все команды протестированы на реальной системы и успешно работают.

Приступим к написанию правил:

1. Первым делом очистим существующую таблицу правил:

# iptables  -F

2. Добавляем первое правило которое позволит нам не потерять удаленный контроль на сервером (по умолчанию порт SSH  – 22, у вас может быть другой):

# iptables  -A INPUT  -p  tcp  -i  eth0  --dport 22  -j  ACCEPT

3. Прописываем политики по умолчанию:

# iptables  -P  INPUT DROP

# iptables  -P  FORWARD ACCEPT

# iptables  -P  OUTPUT ACCEPT

Итак, цепочкой DROP, мы режем все входящии соединения, иными словами политику мы будем настраивать по принципу – запрещено все, кроме явно разрешенного. Так мне кажется более правильно, и более контролируемо. Но никто не запрещает вам делать и наоборот.

Политики FORWARD и OUTPUT я оставляю открытыми, так как на мой взгляд они менее опасны в плане безопасности , хотя никто не мешает порезать и их. Да, и не забудте, если вы хотите все политики поставить в цепочки DROP, то добавьте к правилу разрешающему входящий доступ по ssh, правило разрешающие исходящий трафик по 22 порту,  иначе вы потеряете удаленной доступ. (iptables  -A OUTPUT  -p  tcp  -i  eth0  –dport 22  -j  ACCEPT)

4. Теперь приступаем к прописыванию основных правил для нашего веб-сервера.

Разрешаем хождение трафика по  localhost:

# iptables  -A INPUT  -i lo  -j ACCEPT

Делаем защиту от Dos атак:

# iptables  -A  INPUT  -p  tcp -m tcp  --tcp-flags  SYN,ACK,FIN,RST RST  -m limit  --limit  1/s  -j ACCEPT

Разрешаем пакеты по протоколам tcp\udp создающие новые подключения (например у меня без этих правил некорректно работала админка Вордпресса и не открывался один из виртуальных сайтов).

# iptables   -A  INPUT  -p  tcp  -m state  --state  RELATED,ESTABLISHED  -j  ACCEPT

# iptables   -A  INPUT  -p  udp  -m state  --state  RELATED,ESTABLISHED  -j  ACCEPT 

Разрешаем трафик для необходимых служб

# iptables  -A  INPUT  -i  eth0  -p  tcp  --dport  21  -j ACCEPT

# iptables  -A  INPUT  -i  eth0 -p  tcp  --dport  80  -j ACCEPT

# iptables  -A  INPUT  -i  eth0  -p  tcp  --dport  443  -j ACCEPT

# iptables  -A  INPUT  -i  eth0  -p  tcp  --dport  25  -j ACCEPT

# iptables   -A  INPUT  -i eth0  -p  udp  --sport 53  -j  ACCEPT

# iptables  -A INPUT  -i  eth0 -p  icmp  -m  icmp  --icmp-type  3  -j ACCEPT

# iptables  -A INPUT  -i  eth0  -p  icmp  -m  icmp  --icmp-type 11  -j ACCEPT

# iptables  -A INPUT  -i  eth0  -p  icmp  -m  icmp  --icmp-type 12  -j ACCEPT

Итак что я разрешил:

порт 21 – ftp

порт 80 – http

порт 443 – https

порт 25 – smtp

порт 53 – dns

И плюс необходимые типы icmp пакетов. Так же не забываем что открыт ssh порт 22.

Далее пропишем правила защищаюшее наш ssh порт от брутфорса (подбора паролей роботами):

# iptables  -A  INPUT  -p  tcp  --syn  --dport  22  -m  recent  --name  radiator  --set

# iptables  -A  INPUT  -p  tcp  --syn  --dport  22  -m   recent  --name  radiator  --update  --seconds 30  --hitcount  3  -j  DROP

Теперь робот после трех попыток в течении 30 секунд подобрать пароль – отваливается.

Если вам необходимо установить полностью доверительные отношения между двумя серверами то делаем так:

# iptables  -A  INPUT  -p  tcp  --source {ip-адрес удаленного сервера} -j ACCEPT

# iptables  -A  INPUT  -p  udp  --source  {ip-адрес удаленного сервера}  -j ACCEPT

На этом с основными правилами все, хотя шаманить можно и дальше.

5. Сохраняем наши новые правила и прописываем их в конфигурационный файл, дабы они не потерлись после перезагрузки системы.

# iptables-save

# iptables-save  >  /etc/sysconfig/iptables

Посмотреть текущую таблицу фильтрации можно так:

# iptables  -L

Удаление определенных правил.

При помощи следующей команды смотрим номер правила, которое нам необходимо удалить:

# iptables  -L  INPUT  --line-number

Запомним номер и удалим правило под номером 2:

# iptables  -D  INPUT  2

Если возникли проблемы и режется то что не должно резаться включаем логирование

# iptables  -A  INPUT  -m limit  --limit  3/minute  --limit-burst  3  -j  LOG  --log-level  DEBUG  --log-prefix  "INPUT packet:  "

Как вы видите я выставил лимит в 3 минуты, дабы логи не забили все пространство на жестком диске

Теперь пропишем следующую строчку  kern.=debug  -/var/log/messages в syslog.conf

Смотрим ссыпающиеся логи /var/log/messages

Теперь наш веб сервер защищен фаерволлом на основе iptables.

Примечание:

апперанд A -добававляет правило в конец указанной цепочки.

апперанд I – добававляет правило в начало цепочки

Категория: Мои статьи | Добавил: Admin (08.11.2011)
Просмотров: 11715 | Комментарии: 63 | Рейтинг: 0.0/0
Всего комментариев: 1
1 SergeyZit  
0
Минут десять разглядывал материалы сети, и к своему восторгу увидел четкий сайт. Гляньте: http://kinogolos.ru/news/agenty_shh_i_t_smotret_onlajn/1-0-44 - Агенты ЩИТ 4 сезон . Для меня этот сайт произвел незабываемое впечатление. Успехов всем!

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz