iptables управляют сценарием советника

В ldap Вы сделаете что-то как:

ldapsearch -x -Z  uid=$1 pwdChangedTime | \
          grep -vE '^#|^$' | grep pwdChangedTime | awk '{print $2}'
9
08.07.2014, 18:01
7 ответов

Запустить tcpdump на машине на неделю или около того, чтобы перехватить средний трафик. Затем вы можете просмотреть трафик с помощью wireshark позже, чтобы посмотреть, какие порты используются.

Командой для этого будет tcpdump -i -s 65535 -w

Вы можете затем сопоставить это обратно, используя netstat -tuanp, чтобы посмотреть, какие PID/приложения используют какие порты.

Теоретически это может быть скриптовано.

.
1
27.01.2020, 20:07

Используйте правила iptable для регистрации новых соединений, которые также будут регистрировать udp .

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New inbound connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New outbound connection: "

Вы можете указать другой --log-уровень, чтобы журналы находились в другом файле, а не в /var/log/messages (вам придется настроить syslog daemon).

Я думаю, что вы должны читать журналы основных приложений, так как некоторые серверы имеют очень периодическую активность, например, полдень, конец недели, конец месяца (квартала, года), так что вы не пропустите важную сетевую активность сервера.

Так как сервер является критически важным, делает матрицу сетевого потока сервера в красивой электронной таблице (ip источник, ip пункт назначения, протокол, порт, приложение), которая поможет вам построить правила.

0
27.01.2020, 20:07
[

] Я знаю, что это не сценарий и [] это не ответ[] на вопрос OP, но это моя идея, которой я хочу поделиться с OP.[

] [

] У меня есть все прослушивающие порты с:[

] [
netstat -an | egrep 'tcp .*LISTEN' | awk -F" " '{print $4}' | awk -F":" '{print $NF}'
] [

]Может быть, это поможет вам приблизиться к написанию собственного сценария. :)[

]
0
27.01.2020, 20:07
[

]К сожалению, нет такого скрипта, который мог бы работать в режиме обучения или пассивном режиме, регистрируя все использование вашей сети, беря его результаты и генерируя реальный брандмауэр, используя []iptables[] из своих журналов.[

] [

]Лучшим вариантом будет начать простой и непрерывный процесс добавления различных частей по мере того, как вы начнете полностью понимать, какие сервисы предоставляет ваша система. Вам нужно будет использовать такие инструменты, как []netstat[], чтобы увидеть, какие порты используются для различных служб, которые вы хостируете, а также какие IP-адреса обращаются к ним.[

] [
$ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      26292/sendmail      
tcp        0      0 0.0.0.0:890                 0.0.0.0:*                   LISTEN      26149/ypbind        
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      26321/smbd          
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      26226/python        
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      26221/./hpiod       
tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN      26237/snmpd         
tcp        0      0 0.0.0.0:809                 0.0.0.0:*                   LISTEN      26067/rpc.statd     
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      26321/smbd          
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN      26292/sendmail      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      26038/portmap       
tcp        0      0 0.0.0.0:35604               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      26249/sshd          
tcp        0      0 0.0.0.0:631                 0.0.0.0:*                   LISTEN      26257/cupsd         
tcp        0      0 :::22                       :::*                        LISTEN      26249/sshd          
tcp        0      0 :::631                      :::*                        LISTEN      26257/cupsd         
] [

][]ПРИМЕЧАНИЕ:[] В вышеприведенном разделе вы можете увидеть, какие службы у меня запущены на сервере, который принимает TCP-соединения, i. e. они "прослушивают" соединения на различных портах.[

] [

]Это бессмысленно начинать с таких вещей, как SSH (порт 22) и HTTP (порт 80), если они типичны для вашей системы, поэтому я бы делал эти типы сервисов в массовом порядке одновременно. Для других служб, таких как LDAP или NIS, вы можете захотеть сделать это более контролируемым способом, убедившись, что все не сломается по мере того, как вы их вводите. [

] [

] Такие инструменты как []FireHOL[], []Firewall Builder[] (fwbuilder), и []eztables[] могут быть полезны при атаке на этот проект, так как они обеспечивают хороший уровень абстракции от необходимости вручную создавать пользовательские []iptable[] правила, что может быть непросто. [

] [][]FireHOL[][] [
] [

]FireHOL - это язык (и программа для его запуска), который собирает безопасные брандмауэры любой сложности, от простых до понятных человекочитабельных конфигураций.[

] [
] [

][]пример[][

] [
transparent_squid 8080 "squid root" inface eth0

interface eth0 mylan
    policy accept

interface ppp+ internet
    server smtp accept
    server http accept
    server ftp  accept
    server ssh  accept src example.firehol.org

    client all  accept

router mylan2internet inface eth0 outface ppp+
    masquerade
    route all accept
] [][]fwbuilder[][] [
] [

]Fwbuilder - это уникальный графический инструмент брандмауэра, который позволяет пользователю создавать объекты, а затем перетаскивать их в брандмауэры, чтобы построить мощную систему безопасности для одного ПК или сети ПК. Fwbuilder поддерживает широкий спектр брандмауэров (Cisco ASA/PIX, Linux iptables, ipfilter FreeBSD, OpenBSD's pf и другие), поэтому его правила могут быть развернуты на нескольких платформах. Давайте взглянем на использование Fwbuilder под Linux, который может стать пожизненным романом с мощной системой безопасности. Пример [

] [
] [

][] [][

] [

] [ss fwbuilder][

] [][]eztables[][] [
] [

]Eztables позволяет быстро настроить брандмауэр, не касаясь iptables. Синтаксис правила брандмауэра разработан так, чтобы его было легко читать и применять.[

] [

]Так вы разрешаете всему Интернету получить доступ к вашему веб серверу на TCP-порте 80:[

] [
][] allow_in any $eth0 any 80/tcp
[][
] [

] Eztables разработаны, чтобы быть простыми, но мощными. Не имеет значения, хотите ли вы защитить свой ноутбук, настроить домашний маршрутизатор или построить брандмауэр компании.[

] [
] [

]Используя Fail2Ban[

] [

]С помощью рудиментарного []iptables[] брандмауэра вы, скорее всего, захотите дополнить его с помощью такого инструмента, как []Fail2Ban[]. [

] []excerpt[] [
] [

]Fail2ban сканирует лог-файлы (например, /var/log/apache/error_log) и запрещает IP-адреса, показывающие вредоносные знаки -- слишком много ошибок при вводе паролей, поиск эксплойтов и т.д. Обычно Fail2Ban используется для обновления правил брандмауэра с целью отклонения IP-адресов на определенное время, хотя любые другие произвольные действия (например, отправка сообщения электронной почты) также могут быть настроены. В комплект поставки Fail2Ban входят фильтры для различных служб (apache, курьерская служба, ssh и т.д.)[

] [
] [

]Использование таких инструментов, как этот, поможет ограничить экспозицию, которую вашей системе придется выдержать, так как вы продолжаете ее укреплять. Даже после того, как вы убедились, что ваша система была закалена, вы все равно можете продолжать использовать Fail2Ban как часть мер безопасности. [

] [

]Ссылки[

] []
1
27.01.2020, 20:07

Вы можете начать с очень базового шаблона типа- https://gist.github.com/jirutka/3742890, который разрешает только ssh и ping, и добавить любую другую вещь вручную.

быстрый взлом скрипта для генерации правил iptables для прослушивания вашего приложения на публичном интерфейсе (0.0.0.0) /tcp

netstat -lnpt | egrep '0.0.0.0:[0-9]+' | awk '{print $4,$7}' | \
sed -E -e 's/0.0.0.0://g' -e 's|[0-9]+/||' | \
awk '{printf ("iptables -A INPUT -p tcp --dport %5d --syn -m conntrack --ctstate NEW -m comment %s \n", $1,$2) }'

вы также можете использовать iptables -I INPUT <номер> для введения правил в определенном месте, которое вы можете перечислить с помощью iptables -nvL --line-номеров INPUT

1
27.01.2020, 20:07

Сделайте это вручную

sudo ss -tuanp

или

sudo netstat -tuanp

Объяснение:

-t - show tcp sockets
-u - show udp sockets
-a - show all sockets
-n - show numeric, don't resolve 
-p - show process name
2
27.01.2020, 20:07

Вы можете начать с чего-то вроде этого:

netstat -n -l -p | egrep "^(tcp|tcp6|udp)" | grep LISTEN | sed -r 's!^(tcp|tcp6|udp)\s.*:([0-9]+).*LISTEN\s+.*/(.*)!iptables -A INPUT -p \1 --dport \2 -j ACCEPT # \3!'

, а затем продолжить

iptables -P INPUT DROP

или

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

. Первая строка использует netstat для вывода списка прослушивающих процессов и их портов. Затем он сгенерирует строки «iptables», чтобы разрешить каждое из этих входящих подключений. Небольшая подстановка регулярных выражений sed была настроена для вывода netstat на моем сервере, поэтому вам может потребоваться некоторая настройка. Когда это сработает, вы должны получить что-то вроде:

iptables -A INPUT -p tcp --dport 111 -j ACCEPT # rpcbind       
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # sshd          
iptables -A INPUT -p tcp --dport 25 -j ACCEPT # master        
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # mysqld        
iptables -A INPUT -p tcp --dport 49476 -j ACCEPT # rpc.statd     
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT # postgres.bin  
iptables -A INPUT -p tcp --dport 55371 -j ACCEPT # rpc.statd

Две важные вещи, на которые следует обратить внимание:

1) Эти правила ничего для вас не делают, пока вы не поместите строку DROP или REJECT в конце. или сделайте это политикой по умолчанию для несовпадающих пакетов. Эти правила разрешают пакеты, что спорно, если политика по умолчанию разрешает все, что не совпадает.

2) Эти правила неоднозначны в отношении исходного IP. Судя по вашему исходному сообщению, вы хотите разрешить всем своим клиентам использовать сервер, а затем изучить журналы, чтобы получить исходные IP-адреса для портов назначения. Я не знаю, как это сделать, поэтому этот скрипт не позволит людям создавать новые сервисы на вашем сервере, которые прослушивают другие порты... что что-то.

0
27.01.2020, 20:07

Теги

Похожие вопросы