Инструменты пользователя

Инструменты сайта


iptables

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
iptables [2015/03/16 07:40]
81.222.241.194 создано
iptables [2015/03/16 17:48] (текущий)
Строка 1: Строка 1:
                                      Основы работы с iptables                                      Основы работы с iptables
-A. Теория.+A. Теория. \\ 
 +https://ru.wikibooks.org/wiki/Iptables  \\ 
 +http://www.opennet.ru/man.shtml?topic=iptables&category=8&russian=0 \\ 
 +P.S. По этим линкам найдёте <del>ОЧЕНЬ МНОГА БУКАВ</del>много подробной полезной информации, вам понадобится много <del>сигарет и кофе</del>времени на обдумывания и размышления, но это полезно :-) \\ 
  
 +Для ipv6 используются аналогичные тулзы, как и для ipv6 (**ip6tables**,**ip6tables-restore**,**ip6tables-apply**) \\
  
 +Если <del>вам было лень читать многа букав</del>говорить коротко, то основные таблицы, с которыми мы будем работать, это **filter** и **nat** (с таблицей **mangle**, которая используется для модификации полей __TTL__,__TOS__,__TCP MSS__ и __MARK__пакетов, мы практически не будем работать, так как в работе она вам редко когда понадобится ) и их основными цепочками: **INPUT**,**OUTPUT**,**FORWARD**, **POSTROUTING** и **PREROUTING** \\
  
-B. Пишем правила.                             +Цепочки: \\ 
 +1. **INPUT**  <- используется для фильтрации входящих пакетов \\ 
 +2. **OUTPUT** <- используется для фильтрации исходящих пакетов \\ 
 +3. **FORWARD** <- используется для фильтрации проходящих через наш хост пакетов \\ 
 +4. **PREROUTING** <- в эту цепочку пакеты сначала попадают, перед тем как отправиться на обработку в другие цепочки. Часто используется для перенаправления на другой порт, либо пробросов портов \\ 
 +5. **POSTROUTING** <- используется для натирования и обработки исходящего через нас пакетов \\ 
 + 
 +Таблицы: \\ 
 +1. **filter** <- основная таблица, которая отвечает за фильтрацию трафика по критериям: разрешить, отклонить, залогировать и т.п.\\ 
 +2. **nat** <- собственно отвечает за натирование и обработку проходящего и входящего трафика. Задействуется перед таблицей **filter**\\ 
 +3. **mangle** <- используется для модификации полей в пакете \\ 
 + 
 +Действия: \\ 
 +1. **ACCEPT** <- разрешить\\ 
 +2. **DROP** <- строгое запрещение\\ 
 +3. **REJECT** <- запретить дальнейшую обработку пакета и "отрыгнуть" icmp сообщение о том, что порт закрыт (может использоваться для отладки)\\ 
 +4. **LOG** <- логировать пакет стандартным средством syslog (крайне не рекомендуется, если вы конечно не хотите засрать все логи срабатываниями фаервола)\\ 
 +5. **ULOG** <- более <del>кошерный,правильный</del>продвинутый вариант **LOG** (не гадит в syslog а будет писать только в нужный вам текстовый файл, бинарный файл или даже БД. Требует установленного пакета ulogd )\\ 
 +6. **MASQUERADE** <- маскарадинг\\ 
 +7. **DNAT** <- подмена IP назначения, используется для проброса портов\\ 
 +8. **SNAT** <- подмена исходящего IP, используется для натирования \\ 
 +9. **REDIRECT** <- перенаправить на другой порт \\ 
 + 
 +Модули и параметры: \\ 
 +1. **-p** <- выбор протокола (tcp, udp, icmp, esp, sctp, ah, udplite и all) \\ 
 +2. **-i** <- входящий интерфейс \\ 
 +3. **-o** <- исходящий интерфейс \\ 
 +4. **-m** <- выбор модуля (tcp, udp, icmp, state, comment, limit, multiport, owner, string, conntrack, mac)\\ 
 +5. **-j** <- действие (см. сноску "Действия")\\ 
 +6. **-s** <- исходящий адрес/сеть\\ 
 +7. **-d** <- адрес/сеть назначения \\ 
 +8. **-A** <- указать цепочку\\ 
 + 
 +Мы рассмотрим правила iptables на примере пограничного фаервола, между офисом и внешним миром. \\ 
 +\\ 
 +Легенда: \\ 
 + 
 +1. eth0 <- это наш внешних интерфейс, который смотрит в "мир" у него будет IP 188.67.53.23\\ 
 +2. eth1 <- интерфейс смотрит в офисную сеть 172.16.5.0/24 \\ 
 +3. eth2 <- интерфейс смотрит в сеть где находятся тестовые веб-сервера, сеть 172.17.1.0/28\\ 
 +4. eth3 <- интерфейс за которым находятся наши боевые сервера, будут иметь сеть 188.67.13.0/24 \\ 
 +5. 172.17.1.10 <- IP нашего почтового сервера \\ 
 +6. 188.251.148.31 <- внешний IP нашего админа \\ 
 +7. 172.16.5.7 <- рабочий комп <del>мудака</del>директора\\ 
 + 
 +B. Пишем правила.   \\                          
 1. Для начала создадим наш файл с конфигом для загрузки правил в iptables \\ 1. Для начала создадим наш файл с конфигом для загрузки правил в iptables \\
 **cd /etc && mkdir firewall && chmod 0700 firewall && cd firewall && touch rc.firewall && chmod 0600 firewall** \\ **cd /etc && mkdir firewall && chmod 0700 firewall && cd firewall && touch rc.firewall && chmod 0600 firewall** \\
Строка 14: Строка 64:
  
 4. Теперь нам необходимо написать правила в основную таблицу **filter**\\ 4. Теперь нам необходимо написать правила в основную таблицу **filter**\\
 +
 +''*nat  \\                                                                                                
 +:PREROUTING ACCEPT [0:0] \\
 +:INPUT ACCEPT [0:0] \\
 +:OUTPUT ACCEPT [0:0] \\
 +:POSTROUTING ACCEPT [0:0] \\
 +-A PREROUTING -p tcp -m state --state NEW -m tcp --dport 443 -j REDIRECT --to-ports 9001 \\
 +-A PREROUTING -p tcp -m state --state NEW -m tcp --dport 80 -j REDIRECT --to-ports 9030 \\
 +COMMIT'' \\
  
 ''*filter\\ ''*filter\\
Строка 22: Строка 81:
 -INPUT -i lo -j ACCEPT \\ -INPUT -i lo -j ACCEPT \\
 -A INPUT -m state --state INVALID -j DROP\\ -A INPUT -m state --state INVALID -j DROP\\
 +-A INPUT -s 54.214.49.70/32 -j DROP -m comment --comment "rapid7 scan network" \\
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j DROP \\ -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j DROP \\
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP \\ -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP \\
Строка 28: Строка 88:
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP \\ -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP \\
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP \\ -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP \\
--A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP \\+-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP'' <- В этих правилах мы запрещаем проход новых пакетов с указанной последовательностью флагов \\  
 +''-A INPUT -i eth0 -s 188.251.148.31/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT \\
 -OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT \\ -OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT \\
 -OUTPUT -o lo -j ACCEPT\\ -OUTPUT -o lo -j ACCEPT\\
 -A OUTPUT -m state --state INVALID -j DROP \\ -A OUTPUT -m state --state INVALID -j DROP \\
 -A OUTPUT -o eth0 -p udp -m state --state NEW -m owner --uid-owner 0 -m udp --dport 33434:33524 -j ACCEPT -m comment --comment "traceroute"\\ -A OUTPUT -o eth0 -p udp -m state --state NEW -m owner --uid-owner 0 -m udp --dport 33434:33524 -j ACCEPT -m comment --comment "traceroute"\\
 +-A OUTPUT -o eth1 -p icmp -m owner --gid-owner 4 -m icmp --icmp-type 8 -m state --state NEW -j ACCEPT \\
 -A OUTPUT -p icmp -m owner --uid-owner 0 -m icmp --icmp-type 8 -m state --state NEW -j ACCEPT -m comment --comment "just ping"\\ -A OUTPUT -p icmp -m owner --uid-owner 0 -m icmp --icmp-type 8 -m state --state NEW -j ACCEPT -m comment --comment "just ping"\\
 COMMIT '' \\ COMMIT '' \\
iptables.1426491645.txt.gz · Последнее изменение: 2015/03/16 10:40 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux