Представляю четвертую статью из серии, ориентированных на «продолжающих» системных администраторов, для опытных я вряд ли открою что-то новое.
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
А в первой части были рассмотрены:
А во второй:
А в третьей:
Тут все и просто, и сложно. Для интереса, рассмотрим PortKnocking.
Тут мы просто объявили наше действие на событие.
Тут мы делаем обработку события, идея такая:
Если пришел запрос на порт 1600, открыть порт 22 для того же адреса источника на 60 сек. Если пришел запрос на порт 1599 или 1601, закрыть 22 порт.
А здесь мы включили работу с PortKnoking на соответствующих соединениях.
Тема обработки событий обширна, поэтому стоит внимательно читать мануалы.
Позволяют эффективно писать правила (о макросах мы немножко уже упоминали).
Применим в правилах:
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
- Автоматические события
- Макросы
А в первой части были рассмотрены:
- Простейшая настройка Shorewall
- Ужасно сложная настройка dnsmasq
- Не менее сложная настройка OpenVPN
- И для многих продолжающих админов нетипичная, динамическая маршрутизация, на примере OSPF
А во второй:
- Более подробная настройка Shorewall
- Страшный и не понятный QoS
- Балансировка нагрузки и резервирование
А в третьей:
- QoS во всю ширь в Shorewall
- Более подробная настройка Shorewall
- Раскидывание трафика по каналам в соответствии с протоколами
- Костыли, без них, никуда
События
Тут все и просто, и сложно. Для интереса, рассмотрим PortKnocking.
/etc/shorewall/actions
#ACTION OPTION DESCRIPTION
Knock #Port Knocking
Тут мы просто объявили наше действие на событие.
/etc/shorewall/action.Knock
#
# Shorewall version 4 - SSH_BLACKLIST Action
#
?format 2
###############################################################################
#ACTION SOURCE DEST PROTO DPORT
IfEvent(SSH,ACCEPT:info,60,1,src,reset)\
- - tcp 22
SetEvent(SSH,ACCEPT) - - tcp 1600
ResetEvent(SSH,DROP:info)
Тут мы делаем обработку события, идея такая:
Если пришел запрос на порт 1600, открыть порт 22 для того же адреса источника на 60 сек. Если пришел запрос на порт 1599 или 1601, закрыть 22 порт.
/etc/shorewall/rules
#ACTION SOURCE DEST PROTO DPORT
Knock net $FW tcp 22,1599-1601
А здесь мы включили работу с PortKnoking на соответствующих соединениях.
Тема обработки событий обширна, поэтому стоит внимательно читать мануалы.
Макросы
Позволяют эффективно писать правила (о макросах мы немножко уже упоминали).
/etc/shorewall/macto.TEST
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
PARAM - - udp 6745
PARAM DEST SOURCE tcp 35067
Применим в правилах:
/etc/shorewall/rules
#ACTION SOURCE DEST PROTO DPORT
TEST(ACCEPT) loc $FW
#Что идентично этому:
#ACTION SOURCE DEST PROTO DPORT SPORT
ACCEPT loc $FW udp 6745
ACCEPT $FW loc tcp 35067