Особенности IPTables
Различие «BSD» и «Linux» подхода к разработке
- «Linux»: upstream → пакет → хранилище → дистрибутив. Все пакеты примерно равноправны и подчиняются дисциплине разработки. Приоритет пакетов выбирается при формировании дистрибутива
- «BSD»: базовый дистрибутив + upstream → пакеты. Больше ответственности за базовый дистрибутив, меньше — за пакеты.
IPTables extensios
Базовая статья: iptables-extensions
Модуль |
Тип |
ah |
ipsec |
esp |
ipsec |
policy |
ipsec |
conntrack |
базовые функции, классификация |
cpu |
балансировка нагрузки |
statistic |
балансировка нагрузки |
addrtype |
классификация |
connmark |
классификация |
devgroup |
классификация |
length |
классификация |
mac |
классификация |
mark |
классификация |
owner |
классификация |
physdev |
классификация |
pkttype |
классификация |
realm |
классификация |
recent |
классификация |
rpfilter |
классификация |
socket |
классификация |
state |
классификация |
string |
классификация |
tcpmss |
классификация |
time |
классификация |
tos |
классификация |
ttl |
классификация |
u32 |
классификация |
unclean |
классификация |
iprange |
классификация, таблицы |
multiport |
классификация, таблицы |
set |
классификация, таблицы, userspace |
connlimit |
ограничение |
hashlimit |
ограничение |
limit |
ограничение |
quota |
ограничение |
dccp |
протоколы |
dscp |
протоколы |
ecn |
протоколы |
icmp |
протоколы |
ipvs |
протоколы |
sctp |
протоколы |
tcp |
протоколы |
udp |
протоколы |
connbytes |
статистика |
rateest |
статистика |
nfacct |
статистика, userspace |
osf |
статистика, userspace |
cluster |
топология сети, балансировка нагрузки |
comment |
удобство |
-j Цель |
Тип |
AUDIT |
userspace |
IDLETIMER |
userspace |
LED |
userspace |
LOG |
userspace |
NFQUEUE |
userspace |
DNAT |
базовые функции |
MASQUERADE |
базовые функции |
NETMAP |
базовые функции |
REDIRECT |
базовые функции |
REJECT |
базовые функции |
SNAT |
базовые функции |
CONNMARK |
классификация |
CONNSECMARK |
классификация |
HMARK |
классификация |
MARK |
классификация |
CT |
настройки |
CLASSIFY |
ограничение, очереди |
CHECKSUM |
протоколы |
DSCP |
протоколы |
ECN |
протоколы |
TCPMSS |
протоколы |
TOS |
протоколы |
TTL |
протоколы |
RATEEST |
статистика |
TRACE |
статистика |
NFLOG |
статистика, userspace |
ULOG |
статистика, userspace |
SET |
таблицы, userspace |
CLUSTERIP |
топология сети |
TEE |
топология сети |
MIRROR |
экспериментальные возможности |
TCPOPTSTRIP |
экспериментальные возможности |
Разбор примера
ALT Linux Centaurus Server 7.0.3 по умолчанию+проброс порта):
[root@srv ~]# iptables-save # Generated by iptables-save v1.4.18 on Fri Apr 4 14:38:01 2014 *mangle :PREROUTING ACCEPT [27:2118] :INPUT ACCEPT [27:2118] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [20:2782] :POSTROUTING ACCEPT [20:2782] COMMIT # Completed on Fri Apr 4 14:38:01 2014 # Generated by iptables-save v1.4.18 on Fri Apr 4 14:38:01 2014 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -d 10.0.2.15/32 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.62.2:22 -A OUTPUT -d 10.0.2.15/32 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.62.2:22 -A POSTROUTING -o enp0s3 -j MASQUERADE COMMIT # Completed on Fri Apr 4 14:38:01 2014 # Generated by iptables-save v1.4.18 on Fri Apr 4 14:38:01 2014 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -f -j DROP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -j ULOG --ulog-prefix icount --ulog-cprange 48 --ulog-qthreshold 50 -A INPUT -i enp0s3 -p tcp -m tcp --dport 8080 -j ACCEPT -A INPUT -i enp0s3 -p udp -m udp --dport 1194 -j ACCEPT -A INPUT -i enp0s3 -p tcp -m tcp --dport 1194 -j ACCEPT -A INPUT -i enp0s3 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i enp0s3 -p udp -m udp --dport 22 -j ACCEPT -A INPUT -i enp0s3 -p icmp -j ACCEPT -A INPUT -i enp0s3 -j DROP -A FORWARD -f -j DROP -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -j ULOG --ulog-prefix fcount --ulog-cprange 48 --ulog-qthreshold 50 -A FORWARD -d 192.168.62.2/32 -p tcp -m tcp --dport 22 -j ACCEPT -A FORWARD -d 10.0.2.0/24 -i enp0s3 -j ACCEPT -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT -A FORWARD -i enp0s3 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i enp0s3 -j DROP -A OUTPUT -f -j DROP -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -j ULOG --ulog-prefix ocount --ulog-cprange 48 --ulog-qthreshold 50 COMMIT # Completed on Fri Apr 4 14:38:01 2014
Д/З
Пронаблюдать свод правил на Linux-стенде (машина FW-Centaurus). Можно установить самостоятельно (например, отсюда); в настройках машины надо задать два сетевых интерфейса, а при установке выбрать «установку сервера».
- 22 порт → 2204
8080 порт (веб-конфигуратор) → 8084 (точнее, https://localhost:8084 )
- Зайти в веб-конфигуратор, раздел «Внешние сети» и пр. Поменять настройки, посмотреть, что изменилось