Установка и настройка Fail2ban

Команда установки Fail2ban в Ubuntu:

sudo apt-get install fail2ban

После установки настраиваем конфигурационные файлы которые находятся по адресу:
/etc/fail2ban/fail2ban.conf (основной)
/etc/fail2ban/jail.conf (настройки защиты конкретных сервисов)
/etc/fail2ban/jail.local (дополнительный файл с более высоким приоритетом для настройки защиты конкретных сервисов)
Защита SSH по умолчанию после установки включена.
В конфигурации присутствует уже много готовых настроек, например для apache2, nginx, named, pure-ftpd, proftpd, postfix и т.д., которые можно активировать указав «true» вместо «false».

Сразу можно указать IP которые нельзя блокировать, например локальные свои сети:

ignoreip = 127.0.0.1/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

Фильтры по которым определяется неудачная попытка ввода пароля и другие не желаемые действия находятся в директории /etc/fail2ban/filter.d и включаются естественно в файле конфигурации /etc/fail2ban/jail.conf и /etc/fail2ban/jail.local. А правила реагирования находятся в /etc/fail2ban/action.d.
Логи стандартно пишутся в /var/log/fail2ban.log

Просмотр правил в iptables:

sudo iptables -S | grep fail2ban

Просмотр статуса:

sudo fail2ban-client status

Для перезапуска fail2ban нужно набрать:

sudo service fail2ban restart

Смотрите также:
Настройка Fail2Ban под ProFTPd
Настройка Fail2Ban под Asterisk
Настройка Fail2Ban под Bind9

Установка и настройка SSH

SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).

Устанавливаем в Ubuntu:

sudo apt-get install ssh

В CentOS так (вторая команда включает автозапуск SSH сервера при запуске системы):

yum install openssh-server
chkconfig sshd on
service sshd start

Для проверки можно набрать:

ssh localhost

Команда для подключения с сервера на сервер:

ssh -l ИМЯПОЛЬЗОВАТЕЛЯ ip -pПОРТ

либо

ssh user@ip -pПОРТ

Копирование файла на сервер в директорию польователя:

scp -P порт /home/user/file.zip user@192.168.1.1:/

Для отключения от ssh сервера служит команда exit, чтобы ее не набирать можно нажать комбинацию клавиш Ctrl+D.

Редактируем стандартный конфиг:

nano /etc/ssh/sshd_config

Опишу несколько параметров:
Port — порт на который сервер будет принимать подключения. Нужно писать в самом начале конфига.
Protocol — версия протокола по которой можно подключатся, стандартное значение = 2, можно указать несколько через запятую. Версия 2 более безопасная чем 1.
HostKey — файл с частными ключами хоста. sshd не будет принимать файлы с атрибутами чтения для всех.
UsePrivilegeSeparation — предпочитаемое значение yes. В целях безопасности при прохождении аутентификации на сервер создается дочерний процес с наинизшими правами, при успешной — пользователь получает соответствующие ему права.
KeyRegenerationInterval — время регенерации ключа, необходимо для того чтобы злоумышленник перехвативший ключ не успел его расшифровать. Значение 0 отключает регенерацию.
ServerKeyBits — длинна ключа сервера.
SyslogFacility — код сообщения для syslog сервера. Стандартное значение AUTH, в этом случает сервер логов будет заносить информацию выдаваемую сервером sshd в файл /var/log/auth.log.
LogLevel — уровень выдаваемой информации в логи. Возможные значения: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3. Стандартное — INFO.
LoginGraceTime — время ожидания в секундах аутентификация пользователя в системе. Если пользователь не успел ввести логин и пароль — соединение обрывается.
PermitRootLogin — в целях безопасности предпочитаемое значение — no. Параметр позволяющий или запрещающий вход на сервер пользователем root.
StrictModes — параметр позволяет проверять серверу sshd атрибуты и владельца файлов конфигурации и директории пользователя перед тем как разрешить доступ к серверу. Стандартное значение — yes.
RSAAuthentication — разрешает поключение к серверу только по ключу RSA, используется для протокола 1.
PubkeyAuthentication — разрешает поключение к серверу по открытому ключу, используется для протокола 2.
IgnoreRhosts — игнорирование содержания файлов .rhosts и .shosts, при аутентификации RhostsRSAAuthentication и HostbasedAuthentication. Учитываться будут только /etc/hosts.equiv и /etc/shosts.equiv.
RhostsRSAAuthentication — параметр разрешающий аутентификацию по файлам .rhosts или /etc/hosts.equiv, используется для протокола 1.
HostbasedAuthentication

Немного дополнительных параметров которых нет в стандартном конфиге:
ListenAddress — параметр указывает порт конкретно для каждого интерфейса. Пример:
ListenAddress 10.0.0.1
ListenAddress 10.0.0.2
PermitEmptyPasswords — параметр запрещает или разрешает подключатся к серверу пользователям с пустыми паролями.
PasswordAuthentication — разрешает либо запрещает аутентификацию по паролю. В случае отключения нужно включить аутентификацию по публичному ключу (PubkeyAuthentication yes) и указать параметром AuthorizedKeysFile путь к файлу с ключами, это метод позволяет защититься от прямого перебора паролей злоумышленниками.
MaxStartups 10:30:60 — установка максимального числа одновременных не авторизованных подключений. Если число превышает указанное, то все следующие подключения будут отброшены.

Параметры разрешают или запрещают подключаться к серверу только указанным через пробел пользователям или группам:
DenyUsers
AllowUsers
DenyGroups
AllowGroups

Например

AllowUsers user1 user2 user3@192.168.1.105

AddressFamily — Укажите какое семейство ip адресов вы используете. Возможные параметры: any (любое), inet (только IPv4), inet6 (только IPv6).
TCPKeepAlive — Возможные значения yes/no. Посылает TCP сообщения клиенту, тем самым поддерживая соединение. В случае плохого интернет соединения пакеты могут не дойти и клиент будет отсоединен от сервера.
PrintMotd no — Указывает, должен ли выводиться на экран текст файла /etc/motd.
Banner — указывает путь к текстовому файлу, содержимое которого показывается на экране в момент аутентификации.
Subsystem sftp /usr/lib/openssh/sftp-server — включение протокола передачи файлов. По умолчанию он включен.

Перезагружаем SSH сервер чтобы изменения вступили в силу:

sudo /etc/init.d/ssh restart

Для подключения к ssh серверу из среды Windows можно использовать программу Putty.

Смотрите также мои статьи:
IPTables правила для SSH
Как изменить порт SSH в Ubuntu
Подключение к SSH с использованием ключей
Настройка тайм-аута SSH сессий
Как отсоединить SSH пользователя

Linux snmp OIDs

Пример для проверки:

snmpget -v 1 -c "public" localhost .1.3.6.1.2.1.1.3.0

Загруженность системы:
В 1 минуту: .1.3.6.1.4.1.2021.10.1.3.1
В 5 минут: .1.3.6.1.4.1.2021.10.1.3.2
В 15 минут: .1.3.6.1.4.1.2021.10.1.3.3

CPU:
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

Статистика памяти:
Размер Swap раздела: .1.3.6.1.4.1.2021.4.3.0
Свободно Swap пространства: .1.3.6.1.4.1.2021.4.4.0
Общий размер оперативной памяти: .1.3.6.1.4.1.2021.4.5.0
Использовано оперативной памяти: .1.3.6.1.4.1.2021.4.6.0
Свободно оперативной памяти: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
Точка монтирования диска: .1.3.6.1.4.1.2021.9.1.2.1
Точка монтирования устройства для раздела: .1.3.6.1.4.1.2021.9.1.3.1
Общий размер диска/раздела в килобайтах: .1.3.6.1.4.1.2021.9.1.6.1
Свободно места на диске: .1.3.6.1.4.1.2021.9.1.7.1
Использовано места на диске: .1.3.6.1.4.1.2021.9.1.8.1
Использовано места на диске в процентах: .1.3.6.1.4.1.2021.9.1.9.1

Uptime системы: .1.3.6.1.2.1.25.1.1.0
SNMP uptime: .1.3.6.1.2.1.1.3.0

Смотрите также:
Список SNMP OID и MIB для интерфейсов

Установка и настройка Aircrack-ng

Aircrack-ng — набор программ, предназначенных для обнаружения беспроводных сетей, перехвата передаваемого через беспроводные сети трафика, аудита WEP и WPA/WPA2-PSK ключей шифрования (проверка стойкости).
Официальный сайт: www.aircrack-ng.org

Устанавливается в Ubuntu так:

sudo apt-get install aircrack-ng

Смотрим имя беспроводного сетевого интерфейса (стандартно он называется wlan0):

sudo iwconfig

Сканируем существующие Wi-Fi сети и смотрим их тип шифрования, канал и т.д.

sudo iwlist scanning

Смотрим запущенные сетевые сервисы:

sudo airmon-ng check

Останавливаем мешающие:

sudo stop network-manager
sudo stop avahi-daemon
sudo killall wpa_supplicant

Запускаем монитор с именем mon0:

sudo airmon-ng start wlan0

Для удобства открываем новый терминал (чтобы можно было в любое время вернутся к предыдущему со списком сетей) и перехватываем все пакеты в файл (стандартно он создается в директории пользователя):

sudo airodump-ng --channel номерканала -w wep -i --bssid макадресточки mon0

Подбираем ключ из файла:

sudo aircrack-ng -a 1 -0 wep-01.ivs

Запускаем обратно сетевую службу network-manager чтобы можно было подключится к беспроводной сети:

sudo start network-manager

Подключаемся к беспроводной точке и вводим уже известный нам ключ безопасности.

Установка и настройка Icecast & Ices

Icecast — свободное ПО для организации потокового цифрового аудиовещания.
Официальный сайт http://www.icecast.org
Краткая информация:
Устанавливаем:

sudo apt-get install icecast2 ices2
Редактируем конфиг:  /etc/icecast2/icecast.xml
Запускаем: sudo /etc/init.d/icecast2 start

Открываем в браузере: хост:8000

Смотрим логи, все ли нормально: /var/log/icecast2
www файлы хранятся по адресу: /usr/share/icecast2
Icecast используем порт tcp 8000, поэтому если есть фаервол, то он должен быть открыт.

Копируем музыку в любую директорию и создаем плейлист:

find /home/music ogg > /etc/ices2/playlist.txt

Копируем пример конфига и настраиваем его:

mkdir /etc/ices2
cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices2/ices-playlist.xml
создаем директорию для логов:
mkdir /var/log/ices

Запускаем ices2, после чего он начнет транслировать музыку из плейлиста:

ices2 /etc/ices2/ices-playlist.xml

Для запуска ices2 в фоновом режиме ставим в конфиге: 1.
Для остановки Ices2 в консоле набираем: kill -9 `pidof ices2`

Установка и настройка TFTP сервера в Ubuntu

TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций. TFTP, в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.
atftpd — сервер
atftp — клиент

Читать далее «Установка и настройка TFTP сервера в Ubuntu»

Установка и настройка MySQL сервера на Ubuntu

Установка сервера и клиента чтобы можно было через консоль заливать файлы:

sudo apt-get install mysql-server mysql-client

Директория с файлами конфигурации находится по адресу:

/etc/mysql

Директория хранения баз данных:

/var/lib/mysql

Чтобы разрешить удаленный доступ к mysql серверу, в конфигурационном файле /etc/mysql/my.cnf необходимо закомментировать строку bind-address = 127.0.0.1 (поставить перед ней символ #) и выполнить перезапуск mysql сервера чтобы изменения применились:

sudo service mysql restart

Можно установить пароль root, удалить базу test, запретить удаленный доступ root пользователю и настроить прочие параметры безопасности выполнив команду:

sudo mysql_secure_installation

Покажу некоторые примеры команд:
Подключение к mysql через командную строку:

mysql -u имяпользователя -p

Просмотр доступных баз данных:

show databases;

Открываем нужную базу данных:

use имябазы;

Смотрим какие в базе есть таблицы:

show tables;

Либо создаем новую базу:

create database имябазы;

Удаление базы:

drop database имябазы;

Создание пользователя:

CREATE USER 'имяпользователя'@'localhost' IDENTIFIED BY 'пароль';

Даем пользователю полные привилегии над нужной базой:

GRANT ALL PRIVILEGES ON имябазы.* to 'имяпользователя'@'localhost';

Создание дампа базы данных (будет сохранен в домашнюю папку пользователя):

mysqldump -u имяпользователя -p имябазы > имядампа.sql

Заливаем дамп в нужную базу:

mysql -u имяпользователя -p имябазы < имядампа.sql

Команда справки — help

Для безопасности подключаемся и удаляем стандартную базу test:

mysql -uroot -p
DROP DATABASE test;

Смотрим привилегии для пустого пользователя и если он существует, то удаляем:

SHOW GRANTS FOR ''@'localhost'
DROP USER "";
quit

Смотрим какие существуют пользователи и какие у них привилегии:

use mysql;
select * from user;

Проверяем запущен ли сервер:

sudo netstat -tap | grep mysql

Проверяем соединения на порте 3306:

netstat -na | grep 3306

Можно посмотреть пакеты на порт 3306, когда возникают проблемы с подключением к mysql из вне:

tcpdump port 3306
tcpdump port 3306 -i eth0

Смотрите также:
IPTables правила для MySQL
Восстановление MySQL таблиц
Прочее

Установка и использование ClamAV антивируса

Clam AntiVirus — пакет антивирусного ПО, работающий во многих операционных системах.

Команда установки в Ubuntu/Debian:

sudo apt-get install clamav

Установка в CentOS:

yum -y install epel-release
yum -y update
yum clean all
yum -y install clamav clamd

Для сканирования можно использовать утилиту clamscan. Информацию о запуске можно прочитать набрав команду:

info clamscan

Наведу пример запуска сканирования:

sudo clamscan -i -r /home

где -i означает что в консоле будут отображены только зараженные файлы, /home — директория которую нужно сканировать, а -r что будут сканироваться все поддиректории.

Пример запуска сканирования с удалением найденных угроз:

sudo clamscan -i -r --remove /home

Чтобы обновить антивирусные базы ClamAV, необходимо выполнить команду:

sudo freshclam

Для ClamAV также существует графический интерфейс — ClamTk.

Смотрите также мою статью:
Как запустить ClamAV сканирование из командной строки на cPanel сервере

Rsyslog + Loganalyzer + MySQL

Устанавливаем:
sudo apt-get install rsyslog rsyslog-mysql
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.4.1.tar.gz
Подключаем модуль работы по протоколу udp:
$ModLoad imudp.so
$UDPServerRun 514
Задаем подсеть, с которой разрешено принимать логи:
$AllowedSender UDP, 192.168.0.0/16, 10.0.0.0/16
В файле /etc/rsyslog.d/mysql.conf указываем какие данные заносить в базу данных, например:
local0.* :ommysql:localhost,Syslog,rsyslog,пароль
local1.notify :ommysql:localhost,Syslog,rsyslog,пароль
daemon.warn :ommysql:localhost,Syslog,rsyslog,пароль

Правило для iptables:
-A RH-Firewall-1-INPUT — p udp — m udp —dport 514 — j ACCEPT
-A RH-Firewall-1-INPUT — p tcp — m tcp —dport 514 — j ACCEPT
Для приема с других станций прописываем строчку:
*.* @192.168.1.5
После завершения установки:
chmod 644 config.php
rm install.php

Памятка уровней:
emergency Severity level 0
alert Severity level 1
critical Severity level 2
error Severity level 3
warning Severity level 4
notice Severity level 5
informational Severity level 6
debug Severity level 7

Домашняя страница Loganalyzer: loganalyzer.adiscon.com/translations