Online video hd

Смотреть русский видео

Официальный сайт toppromotion 24/7/365

Смотреть видео бесплатно

in1t 19.02.2011 22:15

Я рекомендуюНастройка шлюза с помощью FireHOL

FireHOL это мощный построитель конфигураций iptables, невероятно гибкий и простой в использовании.

Пример как быстро и легко настроить шлюз.


# установим
sudo apt-get install firehol

# разрешим его запускать, меняем START_FIREHOL=NO на YES
sudo nano /etc/default/firehol

# редактируем конфигурацию
sudo nano /etc/firehol/firehol.conf

# пример простого шлюза
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# определяем настройки брандмауэра для eth0, он у нас смотрит в глобал
# включаем защиту от всех нехороших пакетов,
# разрешаем входящии ping и соединения к серверу sshd,
# разрешаем все исходящие и запрещаем остальные входящие соединения
interface eth0 internet
protection strong
server "ping ssh" accept
client all accept
server all deny

# для локальной сети меняем политику на reject и разрешаем все
interface eth1 home
policy reject
server all accept
client all accept

# определяем настройки брандмауэра для переброса трафика с eth1 на eth0
# включаем masquerade для eth0 и разрешаем перебрасывать все пакеты
router home2internet inface eth1 outface eth0
masquerade
route all accept


# запускаем
sudo invoke-rc.d firehol start


Файл конфигурации представляет из себя bash скрипт.
В нем также можно создавать любые правила iptables, объявлять переменные, ветвления, циклы и т.д.
Подробную документацию можно найти на сайте http://firehol.sourceforge.net/


Некоторые моменты на которые нужно обратить внимание при написании конфигурации
В описании interface нужно добавлять правила server/client all, иначе все пакеты дошедшие до действия по умолчанию будут записываются в лог.

Порядок правил server/client all особенно важен, просто запомните как правильно
1
2
server all accept
client all accept

но
1
2
client all accept
server all deny



Добавлять свои службы можно так
1
2
server_icq_ports="tcp/5190"
client_icq_ports="default"


Преопределить существующие
1
server_ssh_ports="tcp/8022"


Еще можно использовать custom
1
2
interface eth0 internet
server custom transmission "tcp/51413 udp/51413" default accept



Немного про настройку логов
Чтобы вывести логи в отдельный файл, нужно добавить FIREHOL_LOG_PREFIX="FIREHOL " в firehol.conf
и создать настройку для rsyslog.d и logrotate.d, скопировал настройки из ufw

sudo nano /etc/rsyslog.d/20-firehol.conf
1
2
:msg,contains,"FIREHOL " /var/log/firehol.log
& ~


sudo nano /etc/logrotate.d/firehol
 1
2
3
4
5
6
7
8
9
10
11
12
13
/var/log/firehol.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}



А еще при запуске демон выдает предупреждение, что нужно обновить файл /etc/firehol/RESERVED_IPS
Скрипт обновления списка не работает, отключить предупреждение можно так:
sudo touch -t 202001010000 /etc/firehol/RESERVED_IPS


И напоследок пример конфигурации посложнее
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
version 5

WAN_IF="eth0"
WAN_IP="*.*.*.*"

LAN_IF="eth1"
LAN_IP="192.168.100.1"
LAN_NET="192.168.100.0/24"
LAN_ADM="192.168.100.9"

TUN_IF="tun0"

FIREHOL_LOG_MODE="LOG"
FIREHOL_LOG_FREQUENCY="10/minute"
FIREHOL_LOG_BURST="2"
FIREHOL_LOG_PREFIX="FIREHOL "
# will drop all TCP connections with ACK FIN set without logging them.
FIREHOL_DROP_ORPHAN_TCP_ACK_FIN=1

server_openvpn_ports="tcp/28778 udp/28778"
client_openvpn_ports="default"

server_icq_ports="tcp/5190"
client_icq_ports="default"

# cкрываем присутствие NAT от провайдера
iptables -t mangle -I POSTROUTING -o "${WAN_IF}" -j TTL --ttl-set 128
# приоритет трафика
iptables -t mangle -I INPUT -i "${WAN_IF}" -p tcp --dport 80 -m tos --tos Minimize-Delay
iptables -t mangle -I OUTPUT -o "${WAN_IF}" -p tcp --sport 80 -m tos --tos Minimize-Delay

snat to "${WAN_IP}" outface "${WAN_IF}"
snat to "${LAN_IP}" outface "${LAN_IF}"

interface "${WAN_IF}" inet
protection strong
server "ping openvpn" accept
client all accept
server all deny

interface "${LAN_IF}" lan
policy reject
server all accept
client all accept

interface "${TUN_IF}" vpn
policy reject
server all accept
client all accept

router vpn2lan inface "${TUN_IF}" outface "${LAN_IF}" dst "${LAN_NET}"
route all accept

router lan2vpn inface "${LAN_IF}" outface "${TUN_IF}" src "${LAN_NET}"
masquerade
route all accept

router lan2inet inface "${LAN_IF}" outface "${WAN_IF}" src "${LAN_NET}"
route "ping http https jabber icq time" accept
group with src "${LAN_ADM}"
route all accept
group end
route all deny




Тэги: FireHOL iptables nat ubuntu
+ 15 -
Похожие Поделиться

derfenix 19.02.2011 23:37 #
+ 3 -
Интересная и полезная статья, но, имхо, не хватает подробностей :)

Объяснил бы хоть, что значат правила в приведённых примерах, для чего и что делает каждое из них... А то вот я, например, хоть и не чайник, но половину понять не могу, не со всем сталкивался. Можно, конечно, загуглить каждый непонятный момент, но мне кажется, раз уж взялся написать статью - разжуй, не поленись. :) А то несколько примеров и "разбирайтесь дальше сами"...
in1t 20.02.2011 01:35 #
+ 0 -
Добавил немного комментариев в пример :)
Sas 21.02.2011 17:49 #
+ 0 -
а можно еще выложить
iptables -L -n
и
iptables -L -n -t nat
после выполнения скрипта firehol'а?
некоторым типа меня наверное будет легче понять, что произошло после запуска этого скрипта)
in1t 21.02.2011 18:30 #
+ 0 -
iptables -L -n
http://pastebin.com/GkpCC6YF

iptables -L -n -t nat
http://pastebin.com/E8W5hVEn

iptables-save
http://pastebin.com/SU5Ug7Gt
Sas 22.02.2011 17:17 #
+ 0 -
Жесть)
Я думал у меня много строк но там..
Правда мои понятней ибо нет столько таблиц)
Elvis 20.02.2011 08:06 #
+ 0 -
Спасибо, интересный фронтенд к iptables, а то я до этого только про shorewall слышал.
Bkmz 20.02.2011 20:41 #
+ -1 -
Я, хоть убей, не понимаю смысла в этих надстройках над настройками...
iptables -t nat -A POSTROUTING -j MASQUARADE #включили нат
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.00 # пробросили порт из мира
# Если вы параноики, то
iptables -P INPUT DROP # блокируем прием любых пакетов, тоесть не существует этого компьютера для внешнего мира
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # пускаем траффик который инициализирован локальными приложениями, нам ведь нада както принимать данные, которыем мы сами запросили.
Bkmz 20.02.2011 20:41 #
+ 0 -
PS не проверял работоспособность, так как только что писал все отруки, если косяки поправьте
in1t 20.02.2011 23:20 #
+ 0 -
А что такой простой пример, давай посложнее)
На iptables правила выглядят громоздка, много их не напишешь, когда будет больше ста запутаешься, а через полгода разбираться долго будешь что к чему.
Возможно ты и не используешь сложных конфигураций, но это только потому что у тебя нет хорошего инструмента чтобы их легко сопровождать потом.
Bkmz 21.02.2011 06:28 #
+ 0 -
Давайте простой пример, Нужно выкидывать более 5 одновременных соединений на 80ый порт с 1 ип адреса. Как вы это рализуете в вашем фаерхоле?
in1t 21.02.2011 17:08 #
+ 0 -
Я незнаю почему нет подержки правил модуля connlimit, но все равно в конфиге можно прописывать любые правила
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 5 -j DROP
Bkmz 21.02.2011 17:49 #
+ 0 -
У меня стартовый скрипт есть. Разнесенный по блокам. И коментарии есть, проблем не будет =) я не доверяю надстойкам, так как не знаю что они делают, я знаю что я делаю
in1t 21.02.2011 18:02 #
+ 0 -
Вы собственно молодец и я в этом уверен )
Но не у всех есть время полностью разобраться с iptables,
а безопасную и правильно настроенную систему охота уже сейчас.
Если вы не каждый день работаете с iptables и раз в полгода туда заглядываете, то лучшее используйте готовые решения, сэкономите время и меньше ошибок наделаете..
cppmm 22.02.2011 01:25 #
+ -2 -
Обычному пользователю достаточно знать две строки:
iptables -t filter -P INPUT -j DROP
и
iptables -t filter -P FORWARD -j DROP
cppmm 22.02.2011 01:29 #
+ -1 -
Если хочется настроить сервер - в любом случае придётся изучать и iptables и многое другое.
Я бы не рекомендовал эту прогу в качестве ознакомления. Это ложная защищённость. Это набор шаблонов, которые в сложных случаях не помогут.
cppmm 22.02.2011 01:29 #
+ 0 -
Ну и как по мне, лучше один раз прочитать хотя бы простой и понятный до невозможности Iptables Tutorial(хотя бы) и сделать более-менее нормальный фаер, чем читать сотни мануалов на подобные проги и получить в итоге стандартизированный недофаер.
Респект за старания, но имхо, в в плане фаера они бессмысленны. Это всё равно, что пытаться автоматизировать tc. Толку не будет.
cppmm 22.02.2011 01:30 #
+ 0 -
P.S. Извиняюсь, за три коммента. Ограничение в 900 байт заставило разрезать. Читайте это всё, как одно сообщение.
in1t 22.02.2011 16:08 #
+ 0 -
Согласен, что нужно изучать iptables/netfilter.
На счет автоматизации вообще не понял, что такое tc.?
И чем этот билдер хуже bash скрипта который также генерирует правила пачками.
Там другой netfilter?
mult 21.02.2011 07:45 #
+ 0 -
офтоп, конечно, но стоит придумать разрабам нормальный интерфейс к своей поделке - и никаких фронтендов не потребуется. посмотрите на pf, который от OpenBSD, отличный функционал при человеческом синтаксисе.
cppmm 22.02.2011 00:53 #
+ 0 -
Ну, не факт. Я лично предпочитаю синтаксис айпистолов. :) Он удобнее, чем pf или ipfw, имхо. Мой знакомый админ-фряшник утверждает иное. Так что скорее всего - на любителя.
mult 22.02.2011 16:50 #
+ 0 -
на вкус и цвет, как говорится... ;-)
Alx 22.02.2011 12:11 #
+ 0 -
Э-эх... Шлюзовать так шлюзовать! А попробую ка я эту штуковину!
kstep 22.02.2011 17:16 #
+ 1 -
Я на перле себе сделал либу для контроля за иптаблес. Получается что-то вроде этого:

http://pastebin.com/SLKihGf3

Кстати, пример того, как на перле свой декларативный язык написать можно.
kstep 22.02.2011 17:31 #
+ 0 -
Только сейчас заметил, что комментарий старый в скрипте остался. У меня до этого была руби-либа написала со схожим функционалом, но потом для тренировки решил переписать на перле, да так и осталось =)
in1t 22.02.2011 17:32 #
+ 0 -
Описание правил выглядит зачетно) хотя я с perl и на Вы),
кстати мне эта идея даже больше нравится, интересно для python есть чтото подобное)
kstep 22.02.2011 17:37 #
+ 0 -
Для питона доже хотел подобное написать, но не сложилось. Не смог придумать, как конфиг должен выглядеть в итоге.

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн