Действия

Road to sysadmin: различия между версиями

Материал из lulzette's wiki

Нет описания правки
 
(не показано 17 промежуточных версий этого же участника)
Строка 1: Строка 1:
Что надо знать?
= iptables =
= iptables =


Практически копипаст статьи: https://losst.ru/nastrojka-iptables-dlya-chajnikov
[[Iptables]]
 
Годно: https://www.opennet.ru/docs/RUS/iptables/
 
Годный видик: https://youtu.be/SYM5MvV4VIk
 
[[Файл:Netfilter-diagram-rus.png|300px|thumb|right|netfilter dia]]
 
== Цепочки ==
 
Есть несколько цепочек: Input, forward, output, prerouting и postrouting. В каждой цепочке есть таблицы:
 
* prerouting - пакет только вышел из интерфейса и направляется в систему (raw, conntrack, mangle, nat)
* input - пакет на пути из системы в приложение (mangle, filter, conntrack)
* forward - пакет проходит через систему (обычно маршрутизация) (mangle, filter)
* output - пакет вышел из приложения и подходит к выходу из системы (raw, conntrack, mangle, nat, filter)
* postrouting - конечная станция, пакет выходит из системы в интерфейс (mangle, nat, conntrack)
 
Нагляднее будет на картинке справа.
 
== Таблицы ==
* raw - предназначена для работы с сырыми пакетами, пока они еще не прошли обработку; (маркировка пакетов) - output, prerouting
* mangle - предназначена для модификации пакетов; (модификация TTL или TOS, например)
* nat - обеспечивает работу nat, если вы хотите использовать компьютер в качестве маршрутизатора; ()
* filter - основная таблица для фильтрации пакетов, используется по умолчанию. (ограничение или разрешение доступа, собсна правила, которые ниже)
 
== ПРАВИЛА И ДЕЙСТВИЯ ==
 
* ACCEPT - разрешить прохождение пакета дальше по цепочке правил;
* DROP - удалить пакет;
* REJECT - отклонить пакет, отправителю будет отправлено сообщение, что пакет был отклонен;
* LOG - сделать запись о пакете в лог файл;
* QUEUE - отправить пакет пользовательскому приложению.
 
== syntax ==
 
Осталось рассмотреть основные действия, которые позволяет выполнить iptables:
<source>
-A - добавить правило в цепочку; <code>-A, --append chain rule-specification</code>
-С - проверить все правила;
-D - удалить правило;
-I - вставить правило с нужным номером;
-L - вывести все правила в текущей цепочке;
-S - вывести все правила;
-F - очистить все правила;
-N - создать цепочку;
-X - удалить цепочку;
-P - установить действие по умолчанию.
 
-p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh;
-s - указать ip адрес устройства-отправителя пакета;
-d - указать ip адрес получателя;
-i - входной сетевой интерфейс;
-o - исходящий сетевой интерфейс;
-j - выбрать действие, если правило подошло.
--dport - указать порт
-m - совпадение, т.е. multiports (диапазон портов), tcp (tcp порт) и т.д.
</source>
 
== примеры ==
 
Вот так будет выглядеть команда, которая позволяет добавить правило iptables для блокировки всех входящих пакетов от 10.10.10.10:
 
<code>sudo iptables -A INPUT -s 10.10.10.10 -j DROP</code>
 
=== INPUT policy (-P) DROP ===
 
Дропаем входящие:
 
<code>iptables -P INPUT -j DROP</code>
 
Но ведь тогда не придут ping echo! Так как ответный ping пакет приходит на INPUT, а INPUT закрыт. Решение есть:
 
<code>iptables -A INPUT -m conntrack --cstate RELATED,ESTABLISHED -j ACCEPT</code>
 
Вуаля! RELATED,ESTABLISHED пакеты приниматься на INPUT'е, остальные входящие (NEW, INVALID и т.д.) будут отклонены. Однако, пинг локалхоста не доходит! Добавим правило на прием пакетов в INPUT со входящим интерфейсом lo:
 
<code>iptables -A INPUT -i lo -j ACCEPT</code>


Теперь все что придет на lo - будет отвечено.
= ip =
[[IP utility (Linux)]]


= TCP и сети =
= сети =
 
* New – Новое соединение. Пакет, открывающий новое соединение, никак не связанное с уже имеющимися сетевыми соединениями, обрабатываемыми в данный момент маршрутизатором.
* Established – Существующее соединение. Пакет относится у уже установленному соединению, обрабатываемому в данный момент маршрутизатором.
* Related – Связанное соединение. Пакет, который связан с существующим соединением, но не является его частью. Например, пакет, который начинает соединение передачи данных в FTP-сессии (он будет связан с управляющим соединением FTP), или пакет ICMP, содержащий ошибку, отправляемый в ответ на другое соединение.
* Invalid – Маршрутизатор не может соотнести пакет ни с одним из вышеперечисленных состояний соединения.


[[сети]]


= tcpdump =
= tcpdump =


Простая штука с помощью которой можно анализировать трафик.
[[Tcpdump (Linux)]]


<code>-n</code> - IP вместо DNS
= strace =


* src/dst/host - хост
[[Strace (Linux)]]
* [src/dst] port - порт
* ether broadcast - бродкасты
* icmp - icmp


cool stuff: https://hackertarget.com/tcpdump-examples/
= SQL =
 
= strace =


* <code>strace -e *syscall*</code> - вывести только вызовы определенного syscall
[[SQL]]

Текущая версия от 12:54, 16 февраля 2021

Что надо знать?

iptables

Iptables

ip

IP utility (Linux)

сети

сети

tcpdump

Tcpdump (Linux)

strace

Strace (Linux)

SQL

SQL