Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
iptables [2015/03/16 07:40] 81.222.241.194 создано |
iptables [2015/03/16 17:48] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
| | ||
- | A. Теория. | + | A. Теория. |
+ | https:// | ||
+ | http:// | ||
+ | P.S. По этим линкам найдёте < | ||
+ | Для ipv6 используются аналогичные тулзы, как и для ipv6 (**ip6tables**, | ||
+ | Если < | ||
- | B. Пишем правила. | + | Цепочки: |
+ | 1. **INPUT** | ||
+ | 2. **OUTPUT** <- используется для фильтрации исходящих пакетов \\ | ||
+ | 3. **FORWARD** <- используется для фильтрации проходящих через наш хост пакетов \\ | ||
+ | 4. **PREROUTING** <- в эту цепочку пакеты сначала попадают, | ||
+ | 5. **POSTROUTING** <- используется для натирования и обработки исходящего через нас пакетов \\ | ||
+ | |||
+ | Таблицы: | ||
+ | 1. **filter** <- основная таблица, | ||
+ | 2. **nat** <- собственно отвечает за натирование и обработку проходящего и входящего трафика. Задействуется перед таблицей **filter**\\ | ||
+ | 3. **mangle** <- используется для модификации полей в пакете \\ | ||
+ | |||
+ | Действия: | ||
+ | 1. **ACCEPT** <- разрешить\\ | ||
+ | 2. **DROP** <- строгое запрещение\\ | ||
+ | 3. **REJECT** <- запретить дальнейшую обработку пакета и " | ||
+ | 4. **LOG** <- логировать пакет стандартным средством syslog (крайне не рекомендуется, | ||
+ | 5. **ULOG** <- более < | ||
+ | 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 <- это наш внешних интерфейс, | ||
+ | 2. eth1 <- интерфейс смотрит в офисную сеть 172.16.5.0/ | ||
+ | 3. eth2 <- интерфейс смотрит в сеть где находятся тестовые веб-сервера, | ||
+ | 4. eth3 <- интерфейс за которым находятся наши боевые сервера, | ||
+ | 5. 172.17.1.10 <- IP нашего почтового сервера \\ | ||
+ | 6. 188.251.148.31 <- внешний IP нашего админа \\ | ||
+ | 7. 172.16.5.7 <- рабочий комп < | ||
+ | |||
+ | 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**\\ | ||
+ | |||
+ | '' | ||
+ | :PREROUTING ACCEPT [0:0] \\ | ||
+ | :INPUT ACCEPT [0:0] \\ | ||
+ | :OUTPUT 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'' | ||
'' | '' | ||
Строка 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/ | ||
-A INPUT -p tcp -m tcp --tcp-flags FIN, | -A INPUT -p tcp -m tcp --tcp-flags FIN, | ||
-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, | -A INPUT -p tcp -m tcp --tcp-flags FIN, | ||
-A INPUT -p tcp -m tcp --tcp-flags FIN, | -A INPUT -p tcp -m tcp --tcp-flags FIN, | ||
- | -A INPUT -p tcp -m tcp --tcp-flags FIN, | + | -A INPUT -p tcp -m tcp --tcp-flags FIN, |
+ | '' | ||
-OUTPUT -m state --state ESTABLISHED, | -OUTPUT -m state --state ESTABLISHED, | ||
-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 " | -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 " | ||
+ | -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 '' |