Системный Администратор (Сисадмин)
13.9K subscribers
1.7K photos
1.55K videos
87 files
1.73K links
Настройка серверов Windows, Linux, сетевое оборудование Cisco Systems, D-Link, HP, Huawei, Juniper, MikroTik. Книги и мануалы для сисадминов.
По всем вопросам @evgenycarter

РКН clck.ru/3KoGJ3
Download Telegram
iptables

Управление iptables
service iptables stop - Остановка
service iptables start - Запуск
service iptables restart - Перезагрузка
service iptables save - Сохранить правила брандмауэра (CentOS / RHEL / Fedora Linux)
iptables-save - Сохранить правила
iptables-save > /root/my.active.firewall.rules - Сохранить правила (в других дистрибутивах)


Включение ip forward (трафик меджу интерфейсами):
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p

tools:
iptables -L - вывести список правил
iptables -S - вывести список правил
iptables -L -n -v - вывести список правил (-n не резолвить IP) (-v Отображение подробной информации)
iptables -L -n -v --line-numbers - просмотр правил с номером строки
iptables -L INPUT -n -v - просмотра INPUT
iptables -L OUTPUT -n -v --line-numbers - просмотра OUTPUT
iptables -L INPUT -n --line-numbers - просмотр правил с номером строки в INPUT
iptables -L OUTPUT -n --line-numbers - просмотр правил с номером строки в OUTPUT
iptables -L OUTPUT -n --line-numbers | less - просмотр правил с номером строки в OUTPUT перенаправив вывод в less
iptables -L OUTPUT -n --line-numbers | grep 8.8.8.8 - просмотр правил с номером строки в OUTPUT грепаем 8.8.8.8

Очистка таблицы filter:
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

Очистка таблицы nat:
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING

Очистка таблицы mangle:
iptables -t mangle -F PREROUTING

Очистка правил подробно:
iptables -F - Удаление всех правил (flushing)
iptables -X - Удаление цепочки
iptables -t nat -F - Выбрать таблицу и удалить правила
iptables -t nat -X - Выбрать таблицу и удалить правила
iptables -t mangle -F - Выбрать таблицу и удалить правила
iptables -t mangle -X - Выбрать таблицу и удалить правила
iptables -P INPUT ACCEPT - Установить политику по умолчанию
iptables -P OUTPUT ACCEPT - Установить политику по умолчанию
iptables -P FORWARD ACCEPT - Установить политику по умолчанию

Чистим ветки логов:
iptables -F undef_in
iptables -F undef_out
iptables -F undef_fw
iptables -X undef_in
iptables -X undef_out
iptables -X undef_fw

Закрываем всё:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Включаем NAT:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Разрешаем принимать трафик на loopback-интерфейсе:
iptables -A INPUT eth2 -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i lo -o eth1 -j ACCEPT$IPT -A FORWARD -i eth2 -o lo -j ACCEPT
iptables -A FORWARD -i lo -o eth2 -j ACCEPT$IPT -A FORWARD -i eth1 -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Разрешение исходящего трафика:
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT

Разрешить соединения, которые инициированы изнутри
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Следующими правилами разрешаем коннекты на наш сервер из вне:
iptables -A INPUT -p udp --dport 33434:33523 -j ACCEPT - Разрешить traceroute
iptables -A INPUT -p tcp --dport 22 -j ACCEPT - Разрешаем SSH
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT - Разрешаем webmin
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT - Доступ на http

Проброс RDP на сервер терминалов:
iptables -t nat -A PREROUTING -p tcp --dport 3389 -i eth0 -j DNAT --to 192.168.0.100
iptables -A FORWARD -i eth0 -d 192.168.0.100 -p tcp --dport 3389 -j ACCEPT

Выход из локалки на почтовые сервера
iptables -A FORWARD -d smtp.mail.ru -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A FORWARD -d smtp.masterhost.ru -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT

👉 @sysadminof
👍132
У тебя случайно нет windows 10
Держи disk #1 of 2639

Подписывайтесь на канал 👉@tipsysdmin
😁13👍1
iptables

Заворачиваем трафик на порт сквида:
iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081,3128,9090 -s 0/0 -d 0/0 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -p udp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081,3128,9090 -s 0/0 -d 0/0 -j REDIRECT --to-port 3128

Если прокси не установлена,либо нет нужды в использовании SQUID, то просто форвардим нужные порты:
iptables -A FORWARD -o eth0 -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081,3128,9090 -j ACCEPT

Прячем NAT:
iptables -t mangle -A PREROUTING -j TTL --ttl-set 64
iptables -t mangle -A PREROUTING -j RETURN

Все что не разрешено, но ломится отправим в цепочку undef:
iptables -N undef_in
iptables -N undef_out
iptables -N undef_fw
iptables -A INPUT -i vlan2 -j undef_in
iptables -A OUTPUT -j undef_out
iptables -A FORWARD -j undef_fw

Логировать все из цепочки undef:
iptables -A undef_in -j LOG --log-level info --log-prefix "--- IN --- DROP "
iptables -A undef_in -j DROP
iptables -A undef_out -j LOG --log-level info --log-prefix " --- OUT --- DROP "
iptables -A undef_out -j DROP
iptables -A undef_fw -j LOG --log-level info --log-prefix "--- FW --- DROP "
iptables -A undef_fw -j DROP

Антибрут ssh:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
После этого хосты, пытающиеся перебирать пароль, будут блокироваться:
все IP из черного списка будут фиксироваться в файле /proc/net/ipt_recent/SSH

Разрешаем некоторые ICMP-сообщения
https://ru.wikipedia.org/wiki/ICMP - icmp-type
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 12 -j ACCEPT

open firewall:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # Небольшая защита от DoS
iptables -A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT # Разрешаем уже установленные соединения
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT # Разрешаем 22 порт
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT # Разрешаем 80 порт
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT # Разрешаем некоторые ICMP-сообщения
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT # Разрешаем некоторые ICMP-сообщения
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 12 -j ACCEPT # Разрешаем некоторые ICMP-сообщения
iptables -A INPUT DROP


👉 @sysadminof
👍7
Tipi - персональный домашний сервер для всех

Настройка одной командой, установка любимых приложений одним щелчком мыши.

https://github.com/meienberger/runtipi

👉 @Githublib
🔥5👍2
Погрузитесь в мир 🐳 DevOps и станьте devops-инженером за рекордные 4 месяца с курсом от Merion Academy!

Все, кому интересно, получат 🚀 2 бесплатных урока, где расскажут, кто такой DevOps-инженер, какие инструменты использует, куда и как развивает карьеру. Познакомитесь с Docker и контейнирезацией и закрепите знания.

🎁 Бонус – интенсив по развитию карьеры, где HR-эксперты расскажут как создавать сильные резюме и проходить собеседования.
📜 Плюс гайд по командам Docker.

🕺У ребят одна из самых доступных цен, которая в разы ниже, чем в других онлайн-школах, а еще есть рассрочка для тех, кто хочет учиться сейчас и платить по чуть-чуть ежемесячно.

👉 Регистрируйтесь по ссылке чтобы забирать бесплатные уроки, интенсив по карьере и гайд.

Merion Academy – это экосистема доступного образования, которая включает в себя:

📍IT-базу знаний с полезными статьями.
📍Youtube-канал ,где простыми словами говорят о сложных вещах.
📍 IT-академию, где обучат востребованным направлениям по самым доступным ценам.
👍3👎1
Полезные советы для написания bash скриптов в Linux

Всегда используйте комментарии в скриптах
Комментарии начинаются со знака решетки — #.

Настраивайте завершение выполнения скрипта при ошибке
Так бывает, что bash может продолжать выполнять скрипт, несмотря на сбои в выполнении определенной команды.
Можно использовать следующую команду для выхода из скрипта в случае ошибке:
# let script exit if a command fails
set -o errexit
# OR
set -e
ls -xyz # command with error
echo "you will not see this message"

Настраивайте завершение выполнения скрипта при обнаружении необъявленной переменной
Также bash может попытаться использовать переменную, не объявленную ранее в коде сценария. Чтобы bash завершал выполнение скрипта в такой ситуации — добавьте в код следующую команду:
#let script exit if an unsed variable is used
set -o nounset
# OR
set -u
echo $ThisVariableAreNotDefined
echo "you will not see this message"

Используйте двойные кавычки для ссылки на переменные
Использование двойных кавычек при обращении к переменным предотвращает разбиение строк при наличии в них пробелов на слова, а также — другие возможные сбои.

Используйте функции в скриптах
Скрипт, который разбит на функции, становится более модульным. Такой код проще прочитать и понять, чем длинную последовательность предписаний.

Используйте знак = для сравнения строк
Во многих популярных языках программирования сравнение на равенство проверяется двойным знаком «равно» ==. Однако в сценариях командной строки Линукс для этого используется одинарное равно =.

Используйте знак $ вместо знаков “
Существует несколько способов подстановки команд. Вы можете использовать обратные апострофы command для заключения команды в них, либо же использовать конструкцию $(command). На сегодняшний день рекомендуется использовать именно второй вариант с использованием $, что подтверждается рекомендациями shellcheck, инструментом для анализа кода скриптов. Например:
user=`echo “qwerty” `
user1=$(echo “abcde”)

Объявляйте статические переменные с опцией readonly
Статическая переменная — это переменная, которая не меняется. Встроенная команда readonly используется для пометки переменных, доступных только для чтения (то есть — неизменяемых). Это подразумевает, что изменить ее в будущем уже будет нельзя.

Используйте верхний регистр для названий переменных среды, нижний — для названий пользовательских переменных
Все переменные среды bash, такие как HOSTNAME, BASH, GROUPS и другие — следует писать заглавными буквами. Тогда как для именования пользовательских переменных лучше использовать строчные буквы. В коде большого скрипта при использовании множества различных переменных высок риск назвать некоторые из них одинаково, что может привести к неожиданным или даже критическим ошибка.

Выполняйте отладку скриптов

👉 @sysadminof
👍7
Как настроить сеть в Ubuntu: пошаговая инструкция

Как только вы установили операционную систему, нужно подключить компьютер или сервер к интернету. В Ubuntu настройки сети нужно задавать самостоятельно. Пользователи, которые делают это впервые, часто сталкиваются с трудностями. В этой статье мы рассмотрим несколько способов подключения и основные параметры.

https://telegra.ph/Kak-nastroit-set-v-Ubuntu-poshagovaya-instrukciya-09-13

👉 @sysadminof
5👍4
ssh — sshfs монтирование шары

SSHFS - монтирование файловых систем средствами ssh
apt-get install sshfs - установка
mkdir /mnt/docs - создаем папку для монтирования
sshfs user@server.com:/var/docs /mnt/docs - монтируем фс используя sshfs
fusermount -u /var/docs - демонтируем удаленную папку

монтирование шары sshfs /etc/fstab:
ИМЯ@ИП:/REMOTE/DIR /LOCAL/MOUNT fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/ИМЯ/.ssh/id_rsa,allow_other,default_permissions,uid=ИД,gid=ИД 0 0


sshfs для windows:
Dokan SSHFS - монтирование удаленного сетевого хранилища при помощи ssh для Windows
https://github.com/dokan-dev/dokany/releases/tag/v1.1.0.2000

sshfs — монтирование удаленной папки подробней:

Fuse - это модуль ядра (недавно он был принят в официальную ветку 2.6), позволяющий непривилегированным пользователям монтировать различные файловые системы.
Sshfs - это программа, созданная самим автором fuse, которая позволяет монтировать удаленные папки или файловые системы, используя ssh.
Суть проста - удаленная папка монтируются в папку локальной файловой системы.
После этого все операции над этой папкой производятся, как если бы это была обычная локальная папка, с той только разницей, что файлы перемещаются через ssh в фоновом режиме.
После установки программы остается только добавить пользователя, которому мы хотим предоставить право на монтирование файловых систем через ssh, в группу fuse

# usermod -G -a fuse user1
или
# adduser user1 fuse
или вручную отредактировав файл /etc/group.

Также необходимо, чтобы был загружен модуль fuse:
# modprobe fuse
Если мы планируем использовать fuse и sshfs регулярно, то нужно добавить fuse в файл /etc/modules.

sshfs user1@remote_server:/tmp ~/remote_folder - смонтировать удаленную папку с помощью sshfs
fusermount -u ~/remote_folder - мы можем отмантировать ее

Если мы постоянно работаем с этой папкой, то можно добавить ее в таблицу /etc/fstab.
При этом она будет автоматически монтироваться при загрузки системы,
/tmp /home/user1/remote_folder/ fuse defaults,auto 0 0

👉 @sysadminof
👍81
Cron — лучшие практики

Планировщик задач cron(8) существует с 7 версии Unix, а его синтаксис crontab(5) знаком даже тем, кто нечасто сталкивается с системным администрированием Unix. Это стандартизированный, довольно гибкий, простой в настройке и надёжно работающий планировщик, которому пользователи и системные пакеты доверяют управление важными задачами. Материалом о лучших практиках работы с cron делимся к старту курса по Fullstack-разработке на Python.

Rus https://habr.com/ru/companies/skillfactory/articles/656423/

Original https://blog.sanctum.geek.nz/cron-best-practices/

👉 @sysadminof
👍5
Выставление/изменение полномочий на файлы \ chmod \ chown \

ls -lh - просмотр полномочий на файлы и директории в текущей директории

chmod go-rwx directory1 - отобрать у группы и всех остальных все полномочия на директорию directory1.
chown user1 file1 - назначить владельцем файла file1 пользователя user1
chown -R user1 directory1 - назначить рекурсивно владельцем директории directory1 пользователя user1
chgrp group1 file1 - сменить группу-владельца файла file1 на group1
chown user1:group1 file1 - сменить владельца и группу владельца файла file1

find / -perm -u+s - найти, начиная от корня, все файлы с выставленным SUID

chmod u+s /bin/binary_file - назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
chmod u-s /bin/binary_file - снять SUID-бит с файла /bin/binary_file.
chmod g+s /home/public - назначить SGID-бит директории /home/public.
chmod g-s /home/public - снять SGID-бит с директории /home/public.
chmod o+t /home/public - назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
chmod o-t /home/public - снять STIKY-бит с директории /home/public

👉 @sysadminof
👍1
Подборка облачных хранилищ и файлообменников

Передача больших файлов другим пользователям чаще всего осуществляется через облачные хранилища и файлообменники. Принцип работы прост: вы загружаете необходимые данные на один из таких сервисов и предоставляете получателям доступ к ним, предоставив ссылку. Далее представлена подборка известных инструментов для передачи крупных файлов.

https://bookflow.ru/podborka-oblachnyh-hranilishh-i-fajloobmennikov/

👉 @sysadminof
👍2
Очистка системы \ временные файлы \ кеш обновлений \

!!! Будь осторожен можно сломать дистрибутив
sudo apt-get autoremove -y - удаление не нужных файлов после установки ПО
sudo apt-get autoclean -y - удалить скачанные файлы архивов
sudo apt-get clean -y - удалить старые скачанные файлы архивов
sudo apt-get install -f -y - решение проблем с установкой по

👉 @sysadminof
👍7
Авторизация на базе ключей SSH

Рассматриваем процесс настройки SSH-авторизации по ключу и разбираем некоторые ошибки.

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

https://telegra.ph/Avtorizaciya-na-baze-klyuchej-SSH-09-17

👉 @sysadminof
👍7
linuxcourse.pdf
227.6 KB
Подробный справочник команд Linux (основан на CentOS)

👉 @sysadminof
👍6
USERS \ GROUP \ ПОЛЬЗОВАТЕЛИ \ ГРУППЫ \ ПРАВА

chattr +a file1 - позволить открывать файл на запись только в режиме добавления
chattr +c file1 - позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr +d file1 - указывает утилите dump игнорировать данный файл во время выполнения backup'а
chattr +i file1 - делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr +s file1 - позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращает возможность восстановления данных.
chattr +S file1 - указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr +u file1 - данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr - показать атрибуты файлов

👉 @sysadminof
👍6
Linux

​Настройка DoubleVPN-OpenVPN серверов на Ubuntu 17.10/14.04
Fail2ban для защиты от брута всего что есть на сервере Linux Debian 9.1
Универсальный прокси сервер Shadowsock на Debian 9.1 🛠 Установка, настройка на все платформы.
Настройка firewall iptables на linux это не сложно. Linux Tutorial.

Автор: Иван Глазков

👉 @sysadminof
👍6🔥3
Поиск rootkit / руткитов

apt-get install rkhunter - ставим прогу для поиска руткитов
rkhunter -c --sk - запуск поиска
rkhunter --update - апгрейд базы
apt-get install tiger - ставим еще одну прогу для поиска руткитов
tiger - запуск проверки
apt-get install lynis - ставим еще одну прогу для поиска руткитов
lynis -c - запуск проверки

Взломщики, которым успешно удалось проникнуть в систему,
часто заменяют некоторые системные бинарные файлы (например, Is или ps)
поврежденными версиями и делают их не отключаемыми.
Поэтому полезно иногда проверять атрибуты,
назначенные исполняемым файлам (например, в каталогах /bin, /usr/bin, /sbin и /usr/sbin).

👉 @sysadminof
👍10