Category Archives: Брандмауэр

3D визуализация и дизайн

Использование ufw кратко

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

ufw enable|disable — вкл. выкл. брендмауэр
ufw logging on|off — вкл. выкл. логи
ufw default allow|deny — правило по умолчанию
ufw allow|deny [service] — вкл. выкл. порт
ufw status — статус брендмауэра.
ufw allow 21 — статус порта в брендмауэре.
ufw delete allow 21 — удаление правила.
ufw allow 53/tcp — разрешить 53 порт tcp.
ufw allow from 10.123.192.199 — разрешение входа с определенного ip-адреса.
ufw deny proto tcp to 72.55.148.21
ufw deny proto tcp from 72.55.148.21
ufw deny 80 from 72.55.148.21
ufw allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

ufw deny proto udp to any — запрет udp-протокола
ufw allow in on eth0 to any port 80 proto tcp
ufw delete 3 — удаление правила по номеру
ufw status numbered — получение нумерованного списка правил

ufw reload — перезагрузка сетевого экрана

ufw insert 2 deny proto udp to any

Автор: Рудюк С . А. https://corp2.net

Предметная визуализация

Настройка шлюза в Linux Ubuntu с помощью iptables

Как я только не настраивал шлюз в Linux Ubuntu и с помощью ufw, squid, с помощью различных программных файерволов. Но, практика показала, что наиболее эффективный способ — это настройка с помощью встроенных средств — с помощью iptables. Самое главное в данной настройке — написание предопределенного скрипта и его использование в различных проектах.

В интернете огромное количество программных реализаций подобных скриптов. Я же использую скрипт, который опишу ниже и который тоже когда-то нашел в интернет :).

Для начала, необходимо отметить, что если необходимо, чтоб работал шлюз внутри сети, то необходимо установить программу для «маскарадинга»:
aptitude install dnsmasq

iptables же обычно уже установлен в Linux Ubuntu последних версий, поэтому, его нет необходимости дополнительно устанавливать.

Если же Вам необходимо, чтоб работали одновременно bind9 и dnsmasq, то необходимо вначале запускать dnsmasq, а потом — bind9. Т.к. иначе, они начнут ругаться на занятость портов.
Вот как я делаю в rc.local:

service bind9 stop
service dnsmasq restart
service bind9 start

Теперь, собственно скрипт. В моем случае, данный скрипт работает для шлюза, который висит на одном сетевом интерфейсе — для виртуальных серверов на сервере. В случае же обычной сети — необходимо просто указать сетевой интерефейс внутренней сети.

#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
echo «1» > /proc/sys/net/ipv4/ip_forward
echo «1» > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT=»iptables»

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть (в моем случае, все висит на одном интерфейсе. Чеще всего же тут заменяете на eth1)
export LAN=eth0:1
export LAN_IP_RANGE=10.0.2.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено — запрещено):
###$IPT -P INPUT DROP
###$IPT -P OUTPUT DROP
###$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state —state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state —state INVALID -j DROP
$IPT -A FORWARD -m state —state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! —syn -m state —state NEW -j DROP
$IPT -A OUTPUT -p tcp ! —syn -m state —state NEW -j DROP

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE

# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp —dport 22,220 -j ACCEPT

# Открытие портов для торрентов (такие же указать в torrent-клиенте)
# $IPT -A INPUT -i $WAN -p tcp -m multiport —ports 49152:65535 -j ACCEPT

# Открытие 443 порта
$IPT -A INPUT -p tcp —dport 443 -j ACCEPT

# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p tcp —dport 80 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp —dport 80 -j ACCEPT

# Открытие портов для игровых серверов
# $IPT -A INPUT -i $WAN -p tcp —dport 27010:27030 -j ACCEPT
# $IPT -A INPUT -i $WAN -p udp —dport 27010:27030 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
# $IPT -A INPUT -i $WAN -p tcp —dport 9987 -j ACCEPT
# $IPT -A INPUT -i $WAN -p udp —dport 9987 -j ACCEPT
# **********************************************************************
.
# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat

Можно записать данный скрипт, как fw.sh и потом его вызывать из rc.local в момент загрузки. Например, так:
/usr/fw/fw.sh

Дизайн интерьеров