RSS

Архив метки: Linux

systemd — троян для *nix like systems от корпоративных барыг из RedHat для мирового Open Source сообщества


Немного красивых картинок для вашего внимания:






На этих красочных картинках часть дискуссии в сети «Интернет», которая велась и ведётся по поводу троянского коня, а по-другому это поделие никак назвать нельзя, под названием systemd, продвигаемого разработчиками от корпорации RedHat, который для *nix like systems стал тем же самым, чем является системный процесс svchost.exe для операционных систем корпорации Microsoft под общим названием Windows. Т. е. данное поделие взяло на себя столько не свойственных по соображениям безопасности функций, что стало практически неудаляемым с десктопных и мобильных систем пользователей ввиду того, что при попытке его удаления или попытке замены на безопасную альтернативу сносятся/удаляются практически все компоненты DE окружения пользователя. Из-за этого и другие пакеты из окружения пользователя стали иметь такие сложные зависимости, что стало невозможным их удалить, либо заменить другими аналогами. Т. е. пользователям стали навязываться не только системный пакет systemd, но и программы по-умолчанию, без возможности модификации окружения DE.
И это действо началось не вчера, а планомерно реализовывалось на протяжении последних нескольких лет, в результате чего разработчики от барыжных софтверных корпораций начали захватывать и вытеснять ведущих разработчиков мира Open Source из ключевых свободных проектов. Думаю systemd стал тем показателем, который как нельзя лучше показывает то к чему привела такая «бескорыстная» помощь этих корпоративных барыг в разработке *nix like systems. Предыдущая знаковая точка отсчёта была, на мой взгляд, связана с реализацией uefi на железе, которое выпускается всё теми же барыгами от бизнеса, которые навязали мировому сообществу Open Source этот безальтернативный вариант.
Стоит отметить, что нововведение под названием systemd коснулось даже тех версий дистрибутивов с длительным сроком поддержки, изначальные версии которых поставлялись без данного пакета, но всё изменилось во второй половине 2015 года, последние их обновления уже получили этого троянского коня под названием systemd!!! Подумайте над этим, люди!
А напоследок хочу обратить внимание читателей моего сайта на то, всякая конструктивная критика, содержащая, как правило, нелицеприятные отзывы об этой сомнительной поделке, старательно вымарывается из сети «Интернет» и затролливается настолько, что, порою, трудно читать комментарии этих моральных уродов, издевающихся над профессионалами, которые чистосердечно и бескорыстно пытаются отвечать на все каверзно задаваемые вопросы, и который (троллинг) достиг такого размаха, что не оставляет сомнения в его заказном и проплаченном характере! Т. е. этими особями отрабатывается бабло, которое, как их приучили, не пахнет, ввиду того, что эти люди уже привыкли ходить в респираторах-намордниках, которые помогают им не ощущать своего аромата, который не перешибается даже запахами из городских выгребных ям!

Никитушкин Андрей.

Писано 10 января 2016 года.
16:18

Реклама
 

Метки: , , , , , , , , , , , ,

Команды консоли Linux


Системные команды

man — эта команда выводит справочную информация по нужной вам команде, такую как синтаксис, ключи, описание и т.д. Синоним info.

sudo — переход в режим суперпользователя
(после первой команды sudo необходимо ввести пароль пользователя).

Для запуска в терминале команды с правами администратора просто наберите перед ней sudo. Пример: sudo reboot

reboot — перезагрузка системы

poweroff — выключение компьютера

reset — очищает окно терминала, работает даже если вы потеряли курсор

passwd — позволяет пользователю поменять свой пароль,
а суперпользователю — поменять пароль любого зарегистрированного в

системе пользователя

free — получить информацию об оперативной памяти (всего, занято, свободно, в swap).

Команды для работы с файлами

pwd – показать текущий каталог

cd — переход в заданную папку

ls — показывает список файлов текущей папки, с ключом -l показывает дополнительные сведения о файлах

cp — копирование файлов/папок

mv — перемещение файлов/папок

rm — удаление файлов/папок, с ключем -R удаляет и все вложенные папки

mkdir — создать папку

rmdir — удаление пустой папки

chmod — изменить права доступа к файлу.

Команды для работы с пакетами

Это одна команда (утилита) с разными ключами.

apt-get update — обновление информации о пакетах из репозиториев

apt-get upgrade — обновление всех пакетов

apt-get clean — очищает локальный репозиторий, т.е. удаляет всё, что вы ранее скачивали. Очень полезно иногда прогонять для очистки диска.

apt-get autoremove — удаление ранее скачаных, но более ненужных пакетов

apt-get remove — удаление пакета из системы, с сохранением его конфигурационных файлов

apt-get purge — удаление пакета со всеми зависимостями

apt-get install — установка пакета.

Управление процессами

ps — показывает текущие активные процессы

kill — команда отправляет сигнал прекращения работы тому или иному процессу, используется для прекращения работы зависшего приложения

killall — прекращение работы всех процессов, соответствующих заданным параметрам

top — интерактивный список текущих процессов, отсортированных по % использования центрального процессора.

Сетевые команды

ifconfig — выводит информацию о сетевых интерфейсах (в windows используется ipconfig)

pppoeconf — комманда настройки подключения к интернет

ping host – пропинговать host и вывести результат

whois domain – получить информацию whois для domain

route host — показать путь прохождения пакетов, от вас к host

wget file – скачать file

ssh user@host – подключится к host как user

ufw enable — включить фаервол

ufw disable — выключить фаервол.

Прочее команды терминала

clear — очищает окно терминала

nano  текстовый редактор файлов. есть аналог — gedit

uname -a — выводит информацию об операционной системе

who — показывает, кто сейчас в системе

whoami — показывает под каким именем зарегистрирован текущий пользователь

finger user – показать информацию о user.

Команда Описание
Системная информация
arch отобразить архитектуру компьютера
uname -m
uname -r отобразить используемую версию ядра
dmidecode -q показать аппаратные системные компоненты — (SMBIOS / DMI)
hdparm -i /dev/hda вывести характеристики жесткого диска
hdparm -tT /dev/sda протестировать производительность чтения данных с жесткого диска
cat /proc/cpuinfo отобразить информацию о процессоре
cat /proc/interrupts показать прерывания
cat /proc/meminfo проверить использование памяти
cat /proc/swaps показать файл(ы) подкачки
cat /proc/version вывести версию ядра
cat /proc/net/dev показать сетевые интерфейсы и статистику по ним
cat /proc/mounts отобразить смонтированные файловые системы
lspci -tv показать в виде дерева PCI устройства
lsusb -tv показать в виде дерева USB устройства
date вывести системную дату
cal 2007 вывести таблицу-календарь 2007-го года
date 041217002007.00 установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w сохранить системное время в BIOS
Остановка системы
shutdown -h now Остановить систему
init 0
telinit 0
shutdown -h hours:minutes & запланировать остановку системы на указанное время
shutdown -c отменить запланированную по расписанию остановку системы
shutdown -r now перегрузить систему
reboot
logout выйти из системы
Файлы и директории
cd /home перейти в директорию ‘/home’
cd .. перейти в директорию уровнем выше
cd ../.. перейти в директорию двумя уровнями выше
cd перейти в домашнюю директорию
cd ~user перейти в домашнюю директорию пользователя user
cd — перейти в директорию, в которой находились до перехода в текущую директорию
pwd показать текущюю директорию
ls отобразить содержимое текущей директории
ls -F отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l показать детализированое представление файлов и директорий в текущей директории
ls -a показать скрытые файлы и директории в текущей директории
ls *[0-9]* показать файлы и директории содержащие в имени цифры
tree показать дерево файлов и директорий, начиная от корня (/)
lstree
mkdir dir1 создать директорию с именем ‘dir1’
mkdir dir1 dir2 создать две директории одновременно
mkdir -p /tmp/dir1/dir2 создать дерево директорий
rm -f file1 удалить файл с именем ‘file1’
rmdir dir1 удалить директорию с именем ‘dir1’
rm -rf dir1 удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое
rm -rf dir1 dir2 удалить две директории и рекурсивно их содержимое
mv dir1 new_dir переименовать или переместить файл или директорию
cp file1 file2 сопировать файл file1 в файл file2
cp dir/* . копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 копировать директорию dir1 в директорию dir2
ln -s file1 lnk1 создать символическую ссылку на файл или директорию
ln file1 lnk1 создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
Поиск файлов
find / -name file1 найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name «*.bin» Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’
find /usr/bin -type f -atime +100 найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 ‘{}’ ; найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name «*.rpm» найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate «*.ps» найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt отображает полный путь к файлу ‘halt’
Монтирование файловых систем
mount /dev/hda2 /mnt/hda2 монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’
umount /dev/hda2 размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’
fuser -km /mnt/hda2 принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
mount -o loop file.iso /mnt/cdrom смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно.
Дисковое пространство
df -h отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |more выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a --qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)
Пользователи и группы
groupadd group_name создать новую группу с именем group_name
groupdel group_name удалить группу group_name
groupmod -n new_group_name old_group_name переименовать группу old_group_name в new_group_name
useradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1 создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
useradd user1 создать пользователя user1
userdel -r user1 удалить пользователя user1 и его домашний каталог
usermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1 изменить атрибуты пользователя
passwd сменить пароль
passwd user1 сменить пароль пользователя user1 (только root)
chage -E 2005-12-31 user1 установить дату окончания действия учётной записи пользователя user1
pwck проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
Выставление/изменение полномочий на файлы
ls -lh просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo+rwx directory1 добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом «chmod 777 directory1»
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
Специальные атрибуты файлов
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 показать атрибуты файлов
Архивирование и сжатие файлов
bunzip2 file1.bz2 разжимает файл ‘file1.gz’
gunzip file1.gz
gzip file1 сжимает файл ‘file1’
bzip2 file1
gzip -9 file1 сжать файл file1 с максимальным сжатием
rar a file1.rar test_file создать rar-архив ‘file1.rar’ и включить в него файл test_file
rar a file1.rar file1 file2 dir1 создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1
unrar x file1.rar распаковать rar-архив
tar -cvf archive.tar file1 создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1 создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar показать содержимое архива
tar -xvf archive.tar распаковать архив
tar -xvf archive.tar -C /tmp распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1 создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1 создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz разжать архив и распаковать его
zip file1.zip file1 создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1 создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip разжать и распаковать zip-архив
RPM пакеты (Fedora, Red Hat и тому подобное)
rpm -ivh package.rpm установить пакет с выводом сообщений и прогресс-бара
rpm -ivh --nodeps package.rpm установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей
rpm -U package.rpm обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен
rpm -F package.rpm обновить пакет только если он установлен
rpm -e package_name.rpm удалить пакет
rpm -qa отобразить список всех пакетов, установленных в системе
rpm -qa | grep httpd среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
rpm -qi package_name вывести информацию о конкрентном пакете
rpm -qg «System Environment/Daemons» отобразить пакеты входящие в группу пакетов
rpm -ql package_name вывести список файлов, входящих в пакет
rpm -qc package_name вывести список конфигурационных файлов, входящих в пакет
rpm -q package_name --whatrequires вывести список пакетов, необходимых для установки конкретного пакета по зависимостям
rpm -q package_name --whatprovides show capability provided by a rpm package
rpm -q package_name --scripts отобразит скрипты, запускаемые при установке/удалении пакета
rpm -q package_name --changelog вывести историю ревизий пакета
rpm -qf /etc/httpd/conf/httpd.conf проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла.
rpm -qp package.rpm -l отображает список файлов, входящих в пакет, но ещё не установленных в систему
rpm --import /media/cdrom/RPM-GPG-KEY ипортировать публичный ключ цифровой подписи
rpm --checksig package.rpm проверит подпись пакета
rpm -qa gpg-pubkey проверить целостность установленного содержимого пакета
rpm -V package_name проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета
rpm -Va проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!
rpm -Vp package.rpm проверить пакет, который ещё не установлен в систему
rpm2cpio package.rpm | cpio --extract --make-directories *bin* извлечь из пакета файлы содержащие в своём имени bin
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm установить пакет, собранный из исходных кодов
rpmbuild --rebuild package_name.src.rpm собрать пакет из исходных кодов
YUM — средство обновления пакетов(Fedora, RedHat и тому подобное)
yum install package_name закачать и установать пакет
yum update обновить все пакеты, установленные в систему
yum update package_name обновить пакет
yum remove package_name удалить пакет
yum list вывести список всех пакетов, установленных в систему
yum search package_name найти пакет в репозитории
yum clean packages очисть rpm-кэш, удалив закачанные пакеты
yum clean headers удалить все заголовки файлов, которые система использует для разрешения зависимостей
yum clean all очисть rpm-кэш, удалив закачанные пакеты и заголовки
DEB пакеты (Debian, Ubuntu и тому подобное)
dpkg -i package.deb установить / обновить пакет
dpkg -r package_name удалить пакет из системы
dpkg -l показать все пакеты, установленные в систему
dpkg -l | grep httpd среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
dpkg -s package_name отобразить инфрмацию о конкретном пакете
dpkg -L package_name вывести список файлов, входящих в пакет, установленный в систему
dpkg --contents package.deb отобразить список файлов, входящих в пакет, который ешё не установлен в систему
dpkg -S /bin/ping найти пакет, в который входит указанный файл.
APT — средство управление пакетами (Debian, Ubuntu и тому подобное)
apt-get install package_name установить / обновить пакет
apt-cdrom install package_name установить / обновить пакет с cdrom’а
apt-get update получить обновлённые списки пакетов
apt-get upgrade обновить пакеты, установленные в систему
apt-get remove package_name удалить пакет, установленный в систему с сохранением файлов конфигурации
apt-get purge package_name удалить пакет, установленный в систему с удалением файлов конфигурации
apt-get check проверить целостность зависимостей
apt-get clean удалить загруженные архивные файлы пакетов
apt-get autoclean удалить старые загруженные архивные файлы пакетов
Просмотр содержимого файлов
cat file1 вывести содержимое файла file1 на стандартное устройсво вывода
tac file1 вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1 вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -2 file1 вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -f /var/log/messages выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.
Манипуляции с текстом
cat file | grep -i «Criteria» > result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file | grep -i «Criteria» » result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»
grep ^Aug /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»
grep [0-9] /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/* отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже
sed ‘s/stringa1/stringa2/g’ example.txt в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода.
sed '/^$/d’ example.txt удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d’ example.txt удалить пустые строки и комментарии из файла example.txt
echo ‘test’ | tr ‘[:lower:]’ ‘[:upper:]’ преобразовать символы из нижнего регистра в верхний
sed -e ‘1d’ result.txt удалить первую строку из файла example.txt
sed -n ‘/string1/p’ отобразить только строки содержашие «string1»
sed -e ‘s/ *$//‘ example.txt удалить пустые символы в в конце каждой строки
sed -e ‘s/string1//g’ example.txt удалить строку «string1» из текста не изменяя всего остального
sed -n ‘1,8p;5q’ example.txt взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n ‘5p;5q’ example.txt вывести пятую строку
sed -e ‘s/0*/0/g’ example.txt заменить последовательность из любого количества нулей одним нулём
cat -n file1 пронумеровать строки при выводе содержимого файла
cat example.txt | awk ‘NR%2==1’ при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk ‘{print $1}’ вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk ‘{print $1,$3}’ вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2 объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d ‘+’ file1 file2 объединить содержимое file1 и file2 в виде таблицы с разделителем «+»
sort file1 file2 отсортировать содержимое двух файлов
sort file1 file2 | uniq отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’
comm -2 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’
comm -3 file1 file2 сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)
unix2dos fileunix.txt filedos.txt конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more вывести список доступных форматов
Анализ файловых систем
badblocks -v /dev/hda1 проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1 проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1 проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck /dev/hda1
e2fsck -j /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1 проверить/восстановить целостность файловой системы fat раздела hda1
fsck.msdos /dev/hda1
dosfsck /dev/hda1
Форматирование файловых систем
mkfs /dev/hda1 создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1 создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1 создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1 создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0 форматирование флоппи-диска без проверки
mkswap /dev/hda3 создание swap-пространства на разделе hda3
swap-пространство
mkswap /dev/hda3 создание swap-пространства на разделе hda3
swapon /dev/hda3 активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3 активировать swap-пространства, расположенные на разделах hda2 и hdb3
Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak восстановить из резервной копии /tmp/home0.bak
rsync -rogpav --delete /home /tmp синхронизировать /tmp с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_addr:/home/public /home/local синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_addr:/home/public синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf — . | (cd /tmp/backup ; tar xf — ) копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name ‘*.txt’ |xargs cp -av --target-directory=/home/backup/ --parents поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию
find /var/log -name ‘*.log’ | tar cv --files-from=- | bzip2 > log.tar.bz2 поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 восстановить MBR с флоппи-диска на /dev/hda
CDROM
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force clean a rewritable cdrom
mkisofs /dev/cdrom > cd.iso create an iso image of cdrom on disk
mkisofs /dev/cdrom | gzip > cd_iso.gz create a compressed iso image of cdrom on disk
mkisofs -J -allow-leading-dots -R -V «Label CD» -iso-level 4 -o ./cd.iso data_cd create an iso image of a directory
cdrecord -v dev=/dev/cdrom cd.iso burn an ISO image
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom — burn a compressed ISO image
mount -o loop cd.iso /mnt/iso mount an ISO image
cd-paranoia -B rip audio tracks from a CD to wav files
cd-paranoia -- «-3» rip first three audio tracks from a CD to wav files
cdrecord --scanbus scan bus to identify the channel scsi
Сеть (LAN и WiFi)
ifconfig eth0 показать конфигурацию сетевого интерфейса eth0
ifup eth0 активировать (поднять) интерфейс eth0
ifdown eth0 деактивировать (опустить) интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 выставить интерфейсу eth0 ip-адрес и маску подсети
ifconfig eth0 promisc перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)
ifconfig eth0 -promisc отключить promiscuous-режим на интерфейсе eth0
dhclient eth0 активировать интерфейс eth0 в dhcp-режиме.
route -n вывести локальную таблицу маршрутизации
netstat -rn
route add -net 0/0 gw IP_Gateway задать ip-адрес шлюза по умолчанию (default gateway)
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
route del 0/0 gw IP_gateway удалить ip-адрес шлюза по умолчанию (default gateway)
echo «1» > /proc/sys/net/ipv4/ip_forward разрешить пересылку пакетов (forwarding)
hostname отобразить имя компьютера
host www.yandex.ru разрешить имя www.yandex.ru хоста в ip-адрес и наоборот
host 93.158.134.3
ip link show отобразить состояние всех интерфейсов
mii-tool eth0 отобразить статус и тип соединения для интерфейса eth0
ethtool eth0 отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения
netstat -tupln отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты
tcpdump tcp port 80 отобразить весь трафик на TCP-порт 80 (обычно — HTTP)
iwlist scan просканировать эфир на предмет, доступности беспроводных точек доступа
iwconfig eth1 показать конфигурацию беспроводного сетевого интерфейса eth1
Microsoft Windows networks(SAMBA)
nbtscan ip_addr разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
nmblookup -A ip_addr
smbclient -L ip_addr/hostname отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://ip_addr/share подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему
IPTABLES (firewall)
iptables -t filter -nL отобразить все цепочки правил
iptables -nL
iptables -t nat -L отобразить все цепочки правил в NAT-таблице
iptables -t filter -F очистить все цепочки правил в filter-таблице
iptables -F
iptables -t nat -F очистить все цепочки правил в NAT-таблице
iptables -t filter -X удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT позволить входящее подключение telnet’ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT позволить «прокидывать» (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG --log-prefix «DROP INPUT» включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22-j DNAT --to-destination 10.0.0.2:22 перенаправление пакетов, адресованных одному хосту, на другой хост
Мониторинг и отладка
top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
ps -e -o pid,args --forest вывести PID’ы и процессы в виде дерева
pstree отобразить дерево процессов
kill -9 98989 «убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)
kill -KILL 98989
kill -TERM 98989 Корректно завершить процесс с PID 98989
kill -1 98989 заставить процесс с PID 98989 перепрочитать файл конфигурации
kill -HUP 98989
lsof -p 98989 отобразить список файлов, открытых процессом с PID 98989
lsof /home/user1 отобразить список открытых файлов из директории /home/user1
strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls > /dev/null вывести вызовы бибилотек
watch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времени
last reboot отобразить историю перезагрузок системы
last user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
lsmod вывести загруженные модули ядра
free -m показать состояние оперативной памяти в мегабайтах
smartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMART
smartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hda
tail /var/log/dmesg вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages вывести десять последних записей из системного журнала
Другие полезные команды
apropos …keyword выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
man ping вызов руководства по работе с программой, в данном случае, — ping
whatis …keyword отображает описание действий указанной программы
mkbootdisk --device /dev/fd0 `uname -r` создаёт загрузочный флоппи-диск
gpg -c file1 шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpg дешифрует файл file1 с помощью GNU Privacy Guard
wget -r www.example.com загружает рекурсивно содержимое сайта www.example.com
wget -c www.example.com/file.iso загрузить файл www.example.com/file.iso с возможностью останова и продолжения в последствии
echo ‘wget -c www.example.com/files.iso’ | at 09:00 начать закачку в указанное время
ldd /usr/bin/ssh вывести список библиотек, необходимых для работы ssh
alias hh=’history’ назначить алиас hh команде history
 
2 комментария

Опубликовал на 2015/10/14 в Linux

 

Метки: , ,

Компания Microsoft продемонстрировала собственный Linux-дистрибутив для коммутаторов


Компания Microsoft разработала собственный дистрибутив Linux — Azure Cloud Switch (ACS), позиционируемый как кросс-платформенная модульная операционная система для развёртывания программно-конфигурируемых сетей (SDN, Software-Defined Networking), в которых управление сетью отделено от уровня передачи данных и конфигурируется программно.

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

При взаимодействии с ASIC-чипами Azure Cloud Switch полагается на интерфейс SAI (Switch Abstraction Interface), развиваемый в рамках открытого проекта OpenCompute. Возможность установки Azure Cloud Switch продемонстрирована для четырёх ASIC (Mellanox, Broadcom, Cavium и Barefoot), шести реализаций SAI (Broadcom, Dell, Mellanox, Cavium, Barefoot и Metaswitch) и трёх программных стеков (Microsoft, Dell и Metaswitch).

В качестве причины создания отдельного Linux-дистрибутива вместо использования существующих решений называется желание сфокусировать внимание на развитии возможностей, отвечающих интересам Microsoft. Использование открытых компонентов и Linux в основе новой платформы объясняется возможностью ускорить процесс разработки, отладки, тестирования и исправления проблем, а также возможностью использовать наработки сформировавшейся экосистемы (в частности, коммуникационное оборудование для SDN, развивающееся с оглядкой на открытые платформы).

 

Метки: , , ,

Первоапрельские шутки 2013 года: libc от systemd, Half-Life 4 только для Linux


Подборка первоапрельских шуток:

Леннарт Поттеринг (Lennart Poettering) представил новый модуль libc для systemd, призванный заменить собой набор стандартных библиотек Glibc. В итоге systemd приблизится к цели объединения в е одном репозитории всех компонентов пользовательского окружения Linux. Библиотека существенно расширит и дополнит POSIX API, но ценой реализуемых возможностей станет нарушение совместимости с glibc. Первые несколько релизов будет предусмотрен специальный режим для обеспечения обратной совместимости, но затем его поддержка будет прекращена. Новую библиотеку планируется довести до рабочего состояния к релизу systemd 205 и включить в состав Fedora 22.
Компания Valve добавила в Steam пакет с игрой Half-Life 4 на базе нового движка «Source Engine 2» (в настоящее время ещё только ожидается выход Half-Life 3). Игра доступна только для Linux, платформы Windows и Mac OS X не поддерживаются.
Разработчики гипервизора Xen объявили о слиянии процесса разработки с ядром Linux и библиотекой Glibc, основные ветки которых теперь будут развиваться в репозиториях Xen. Также заявлено о намерении перевести сборку CentOS на использование поддерживаемых проектом Xen веток.
Издание TheRegister опубликовало сообщение об инициировании компанией FourOne IP иска о нарушении интеллектуальной собственности, касающейся технологий, охватывающих все Unix-подобные системы и системы заимствовавшие базовые идеи Unix. В том числе о наличии нарушений интеллектуальной собственности заявлено в Linux, Mac OS X и Windows. Компания FourOne IP заявляет, что ей принадлежат права на несколько сотен строк кода, которые связаны с работой сервиса NSFW и без изменения скопированы во всех современных операционных системах. В ходе разбирательств истец намерен добиться отчислений со всех компаний, пользующихся операционными системами.
Разработчики FreeBSD намерены прекратить поддержку 32-разрядной архитектуры x86 и процессоров i386, сосредоточившись на развитии системы для платформ amd64 и ARM. Из разряда первичных платформ i386 предлагается исключить уже в выпуске FreeBSD 10.
Для ядра Linux представлен патч с поддержкой новой архитектуры — TM, дающей возможности запуска ядра на Машине Тьюринга. Для перемотки ленты состояний может использоваться ленточный накопитель на базе катушечного магнитофона.
Марк Шаттлворт прислушался к пожеланиям борцов за право на неразглашение частной информации и утвердил запрет на использование online-поиска в Dash по умолчанию. При активации online-поиска теперь будет запрашиваться согласие пользователя на сохранение на серверах Canonical всей информации о выполняемых запросах. Линус Торвальдс принял предложение Microsoft об участии в разработке нового ядра для Windows 9;
YouTube оказался конкурсом на выявление лучшего видеоролика. Компания Google выразила благодарность всем пользователям, приславшим свои работы на конкурс. Теперь конкурс завершается и стартует фаза определения победителей. Сегодня последний день приёма заявок, в полночь возможность отправки новых роликов будет прекращена.
В Google Maps появился режим, отображающий информацию в стиле пиратских карт, показывающих где закопаны сокровища. В Street View появился режим просмотра через перископ.
Для Android подготовлено приложение с реализацией системы телепортации;
В google.com/analytics теперь доступна возможность посмотреть сколько посетителей пришло на сайт с Международной космической станции.
Введён в строй новый сервис Google Nose, позволяющий искать с учётом запаха;
На сайте osnews.com для всех пользователей открыт доступ к административному интерфейсу, позволяющему перезагрузить сервер, блокировать пользователей, изменить визуальное оформление и добавить произвольный контент.
Для iPad выпущен аксессуар, позволяющий подключить накопитель на гибких магнитных дисках.
Компания Apple покупает BlackBerry за $11.2 млрд.

Дополнение 1:

Разработчики OpenBSD объявили об интеграции в ядро поддержки написания скриптов-дополнений на языке LOLCODE, что позволит даже начинающим пользователям разрабатывать работающие на уровне ядра компоненты. (Следует отметить, что в данном случае разработчики OpenBSD пародируют реальное намерение проекта NetBSD интегрировать в NetBSD 7.0 поддержку написания модулей ядра на языке Lua).
Также в OpenBSD был импортирован код поддержки ZFS. Примечательно, что «коммитером» является Ted Unangst, известный в сообществе OpenBSD, как любитель вычищать лишние части системы.
Часть разработчиков ROSA (в частности UXteam) молодые люди, которым еще нет 27-лет, и все они относятся к военной службе очень серьезно. Поэтому в этот весенний призыв сразу 7 разработчиков, у которых закончились отсрочки, ушли в армию. В связи с этим, команда «РОСЫ» решила перейти на LXDE как малый по пакетному составу десктоп и поддерживать его на уровне апстрима, до тех пор, пока не вернутся «служивые». Часть сотрудников обещала собирать пакеты прямо из казармы. Для этого в git’e будет особый тег «barracks», что означает, что пакетам не требуется проверка, т.к их уже проверили всей частью.
В Яндекс.Почте появилась поддержка детектора лжи, позволяющего определить правду или нет написал собеседник.
Компания Mandriva разместит свой логотип на болиде Формула 1 и займётся созданием варианта дистрибутива для управления подсистемами гоночных автомобилей.
Проект http://enlightenment.org/p.php?p=news/show&l=en&news_id=82 объявил о переходе на систему управления версиями Bazaar, после двух месяцев с момента миграции на Git. По мнению разработчиков Bazaar лучше соответствует состоянию, при котором каждый компонент развивается в отдельном репозитории, что напоминает базар.

Дополнение 2:

Разработчики Erlang представили новый флаг too_big_to_fail, позволяющий высвободить память, необходимую для работы ресурсоёмкого процесса за счёт случайного убивания сторонних процессов. Если все процессы уже завершены и памяти всё равно не хватает, то в случае кластерных систем процесс высвобождения памяти переключается на другие узлы.
Многие сервисы заявили об официальной поддержке консольного браузера Lynx.
Ресурс DistroWatch объявил о сокращении с 746 до 25 числа отслеживаемых дистрибутивов. По мнению разработчиков сервиса пора положить конец беспорядку и бесконтрольному росту числа дистрибутивов. Текущая ситуация сравнивается с тем, если бы в магазине вам предложили 746 сортов мороженого. Поэтому решено, оставить в базе только 25 самых популярных дистрибутивов.
Проект GIMP принял решение о смене имени на CHIMP.
Для LibreOffice разработано дополнение Tuesday.oxt, которое позволяет выводить на печать документы только по вторникам.
Один из разработчиков Wayland, взвесив все плюсы дисплейного сервера Mir, инициировал проект WayMir, призванный объединить технологии Mir и Wayland/Weston.
Автор Garry’s Mod, популярной модификации Half-Life 2, объявил о подготовке порта для Linux.
Slashdot добавил возможность просмотра статей, закодированных с использованием шифра ROT13.
Facebook уличён в использование web-камер для слежения за пользователями.
Разработчики KDE пришли к выводу, что регулятором громкости будет удобнее пользоваться, если он выводится под углом 45%.
Константин Александрович Муренин (cnst++@FreeBSD.org) анонсировал в списках рассылки FreeBSD запуск нового проекта, BXR.SU — BSD Cross Reference, в рамках которого подготовлен модифицированный и улучшенный сервис OpenGrok, переписанный на основе nginx. Проект запущен в режиме открыто-закрытого тестирования, и в данный момент доступ доступен только для пользователей IPv6. В день IPv4, (2013-04-04), у домена будет опубликован адрес IPv4 на один день, в качестве эксперимента. На постоянной основе запись типа A будет опубликована 2013-04-14, а IPv4 glue-records будут опубликованы 2013-04-24. Автор очень волнуется, что у некоторых ISP неправильно настроен IPv4 и NAT, и некоторому проценту посетителей доступ будет проблематичен при преждевременной поддержке IPv4. Проект отличается от предыдущих установок OpenGrok тем, что поиск работает в 200 раз быстрее (например, чем code.metager.de), а адреса индивидуальных файлов и поисковых запросов являются намного более короткими, понятными и лаконичными.

В течение дня текст новости будет пополняться новыми первоапрельскими шутками. Ссылки на интересные первоапрельские розыгрыши просьба присылать в комментариях.

Источник статьи

 

Метки: , , , , , ,

My recipe on detecting and blocking of abnormal scanning by means of iptables in Linux


Long ago didn’t write itself, I want to be corrected.

Today it will be a question of detecting and blocking of abnormal scanning by means of iptables in the Linux operating system.

Since recipes of my blog use without the instruction me as the primary source (and without references to my articles), placing, besides, similar information backdating, I promise that it is the last my help to you, fans of plagiarism.

Described below rules are collected by me from various, not Russian-speaking, sources, but all together, in that look in which they will be brought by me, you won’t find on one resource in the Internet. However information provided on a tyyuning of a network stack of Windows in the section MS Platforms on this site, is also unique and doesn’t meet anywhere in that look in which it is given by me.

I will not pour to no purpose water, we will pass to business.

I suggest to make the following changes to your tables iptables:

iptables -t filter -A INPUT -p tcp –tcp-flags ALL NONE -j LOG –log-prefix “Stealth scan: 0 DROP “
iptables -t filter -A INPUT -p tcp –tcp-flags ALL NONE -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL ALL -j LOG –log-prefix “Stealth scan: 1 DROP “
iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j LOG –log-prefix “Stealth scan: 2 DROP “
iptables -t filter -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG –log-prefix “Stealth scan: 3 DROP “
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j LOG –log-prefix “Stealth scan: 4 DROP“
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j LOG –log-prefix “Stealth scan: 5 DROP“
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,ACK FIN -j LOG –log-prefix “6 Stealth scan”
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,ACK FIN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH PSH -j LOG –log-prefix “7 Abnormal steal”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG URG -j LOG –log-prefix “8 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG URG -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK FIN -j LOG –log-prefix “A9bnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK FIN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK NONE -j LOG –log-prefix “10 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK NONE -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH SYN,FIN,URG,PSH -j LOG –log-prefix “11 Abnormal sc$
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH SYN,FIN,URG,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH FIN,URG,PSH -j LOG –log-prefix “12 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,ACK,URG,PSH FIN,URG,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,URG URG -j LOG –log-prefix “13 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,URG URG -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL FIN -j LOG –log-prefix “14 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL FIN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,RST FIN,RST -j LOG –log-prefix “15 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,RST FIN,RST -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,PSH PSH -j LOG –log-prefix “16 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,PSH PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -j LOG –log-prefix “17 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,URG SYN,URG -j LOG –log-prefix “18 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,URG SYN,URG -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,SYN,RST,ACK SYN -j LOG –log-prefix “19 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,SYN,RST,ACK SYN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j LOG –log-prefix “20 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST SYN,FIN,RST -j LOG –log-prefix “21 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST SYN,FIN,RST -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,PSH SYN,FIN,RST,PSH -j LOG –log-prefix “22 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags SYN,FIN,RST,PSH SYN,FIN,RST,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,PSH -j LOG –log-prefix “23 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,ACK,PSH -j LOG –log-prefix “24 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL SYN,ACK,PSH -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,FIN FIN -j LOG –log-prefix “25 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ACK,FIN FIN -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL RST -j LOG –log-prefix “26 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL RST -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL RST,ACK -j LOG –log-prefix “27 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL RST,ACK -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags ALL ACK,PSH,RST -j LOG –log-prefix “28 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags ALL ACK,PSH,RST -j DROP
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j LOG –log-prefix “29 Abnormal scan”
iptables -t filter -A INPUT -p tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP

As you see only 29 chains. It is possible to add this list with several more chains, but they will break normal functioning of a network stack of your penguin and can be used only at station in a configuration with means of detecting and preventive reaction of network invasion. Therefore by me they it is brought won’t be.

It is worth to remember also about ways тmюнига a network stack means of sysctrl which are more richly presented, in comparison with possibilities of a network stack of MS Windows. By means of means of sysctrl you can protect even more your defoltny тюкс.

I promise you to please still with something in the future.

Good luck! And to new meetings!

 

Метки: , , , , , ,

Мой рецепт по детектированию и блокированию аномального сканирования средствами iptables в Linux


Давно не писал сам, хочу исправиться.

Сегодня речь пойдет о детектировании и блокировки аномального сканирования средствами iptables в операционной системе Linux.

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

Нижеописанные правила собраны мною из различных, не русскоязычных, источников, но все вместе, в том виде, в котором они будут приведены мною, вы не найдете ни на одном ресурсе в сети Интернет. Впрочем информация, приведенная по тьюнингу сетевого стека Windows в разделе MS Platforms на данном сайте, также уникальна и нигде не встречается в том виде, в котором она дается мною.

Не буду зазря лить воду, перейдем к делу.

Предлагаю внести следующие изменения в ваши таблицы iptables:

iptables -A INPUT -p tcp —tcp-flags ALL NONE -j LOG —log-prefix «Stealth scan: 0STEAL «
iptables -A INPUT -p tcp —tcp-flags ALL NONE -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL ALL -j LOG —log-prefix «Stealth scan: 1STEAL «
iptables -A INPUT -p tcp —tcp-flags ALL ALL -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL FIN,URG,PSH -j LOG —log-prefix «Stealth scan: 2STEAL «
iptables -A INPUT -p tcp —tcp-flags ALL FIN,URG,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG —log-prefix «Stealth scan: 3STEAL «
iptables -A INPUT -p tcp —tcp-flags ALL SYN,RST,ACK,FIN,URG -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,RST SYN,RST -j LOG —log-prefix «Stealth scan: 4STEAL «
iptables -A INPUT -p tcp —tcp-flags SYN,RST SYN,RST -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN SYN,FIN -j LOG —log-prefix «Stealth scan: 5STEAL «
iptables -A INPUT -p tcp —tcp-flags SYN,FIN SYN,FIN -j STEAL
iptables -A INPUT -p tcp —tcp-flags FIN,ACK FIN -j LOG —log-prefix «6Stealth scan»
iptables -A INPUT -p tcp —tcp-flags FIN,ACK FIN -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH PSH -j LOG —log-prefix «7Abnormal steal»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG URG -j LOG —log-prefix «8Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG URG -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK FIN -j LOG —log-prefix «A9bnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK FIN -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK NONE -j LOG —log-prefix «10Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK NONE -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH SYN,FIN,URG,PSH -j LOG —log-prefix «11Abnormal sc$
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH SYN,FIN,URG,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH FIN,URG,PSH -j LOG —log-prefix «12Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,ACK,URG,PSH FIN,URG,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags ACK,URG URG -j LOG —log-prefix «13Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ACK,URG URG -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL FIN -j LOG —log-prefix «14Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL FIN -j STEAL
iptables -A INPUT -p tcp —tcp-flags FIN,RST FIN,RST -j LOG —log-prefix «15Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags FIN,RST FIN,RST -j STEAL
iptables -A INPUT -p tcp —tcp-flags ACK,PSH PSH -j LOG —log-prefix «16Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ACK,PSH PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,ACK,FIN,RST SYN -j LOG —log-prefix «17Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,ACK,FIN,RST SYN -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,URG SYN,URG -j LOG —log-prefix «18Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,URG SYN,URG -j STEAL
iptables -A INPUT -p tcp —tcp-flags FIN,SYN,RST,ACK SYN -j LOG —log-prefix «19Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags FIN,SYN,RST,ACK SYN -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j LOG —log-prefix «20Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST SYN,FIN,RST -j LOG —log-prefix «21Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST SYN,FIN,RST -j STEAL
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,PSH SYN,FIN,RST,PSH -j LOG —log-prefix «22Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags SYN,FIN,RST,PSH SYN,FIN,RST,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL SYN,PSH -j LOG —log-prefix «23Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL SYN,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL SYN,ACK,PSH -j LOG —log-prefix «24Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL SYN,ACK,PSH -j STEAL
iptables -A INPUT -p tcp —tcp-flags ACK,FIN FIN -j LOG —log-prefix «25Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ACK,FIN FIN -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL RST -j LOG —log-prefix «26Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL RST -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL RST,ACK -j LOG —log-prefix «27Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL RST,ACK -j STEAL
iptables -A INPUT -p tcp —tcp-flags ALL ACK,PSH,RST -j LOG —log-prefix «28Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags ALL ACK,PSH,RST -j STEAL
iptables -A INPUT -p tcp —tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j LOG —log-prefix «29Abnormal scan»
iptables -A INPUT -p tcp —tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j STEAL

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

Не стоит также забывать о способах тmюнига сетевого стека средствами sysctrl, которые более богато представлены, по сравнению с возможностями сетевого стека MS Windows. С помощью средств sysctrl вы сможете еще более защитить ваш дефолтный тюкс.

Обещаю вам еще чем-нибудь порадовать в будущем.

Удачи! И до новых встреч!

P.S.: STEAL уже не используется в последних векрсиях ntfilter, а жаль, поэтому надо заменить на DROP. Также разумным было бы заменить iptables -A INPUT на iptables -t filter -A INPUT. 😉

 

Метки: , , , , , , , , , , ,

Алгоритмы защиты ARP


Algorithm 1 update arp cache
1: if DHCP packet is received then
2: if message type is DHCPACK then
3: IP ← ‘your IP address’ field value
4: if IP != server’s IP then
5: MAC ← ‘client’s hardware address’ field value
6: Add (IP, MAC) to server’s ARP cache
7: Add (IP, MAC) to backup file
8: end if
9: else if message type is DHCPRELEASE then
10: IP ← ‘your IP address’ field value
11: if IP != server’s IP then
12: Remove (IP, ?) from server’s ARP cache
13: Remove (IP, ?) from backup file
14: end if
15: else if message type is DHCPDECLINE then
16: IP ← ‘requested IP address’ options field value
17: if IP != server’s IP then
18: Remove (IP, ?) from server’s ARP cache
19: Remove (IP, ?) from backup file
20: end if
21: else
22: NOOP
23: end if

24:end if

Algorithm 2 send arp reply
1: if ARP message is received then
2: if operation field = REQUEST then
3: TPA ← Target Protocol Address field value
4: Create an ARP REPLY message
5: Sender Protocol Address field ← TPA
6: if TPA = server’s IP address then
7: SHA ← server’s MAC address
8: else
9: Find (TPA, MAC) mapping in ARP cache
10: if (TPA, MAC) does not exist then
11: return //No response is sent
12: end if
13: SHA ← MAC address in (TPA, MAC)
14: end if
15: Sender Hardware Address field ← SHA
16: Send ARP response to requesting host
17: end if
18:end if

——————————————————————

Дальнейшее — за гуру скриптинга. Скрипткидди, проходьте мимо!

 

Метки: , , , , , , , , , , , , ,

Улучшаем работу Wi-Fi сети с тюксом на борту. ;-)


Предлагаю произвести следующие изменения в алгоритме управления соединениями:
1. Подключаем следующие модули:
modprobe tcp_vegas
modprobe tcp_veno
2. Включаем управление передачей veno
echo “veno” > /proc/sys/net/ipv4/tcp_congestion_control

Алгоритм reno уже зарегистрирован в системе. Алгоритм veno является гибридом из алгоритмов vegas и reno, он аккумулирует все лучшее данных алгоритмов, но пока все еще является экспериментальным. Если вы не хотите использовать его на ответственных узлах с Wi-Fi, то включите алгоритм vegas.

Удачи в дружбе с тюксом!

 

Метки: , , , , , ,

Cedega for Windows games on LInux


Cedega (ранее WineX) — коммерческий продукт, основанный на исходном коде проекта Wine, позволяющего запускать Windows-приложения в Unix-системах. Создаётся компанией TransGaming Technologies. Cedega отличается от Wine своей нацеленностью на запуск игр, написанных для Microsoft Windows, в Linux. В частности, для этого была добавлена улучшенная поддержка API DirectX. Также имеется поддержка некоторых защит от копирования, применяемых в играх. В последних версиях Cedega имеет простой графический интерфейс, позволяющий устанавливать и запускать Windows-игры, производить конфигурирование программы.

Обычно разработчики следят за новинками среди Windows-игр, тестируют и улучшают поддержку наиболее популярных из них. Многие игры работают столь же быстро, как и в родной ОС.

До версии 4.0, вышедшей в 22 июня 2004, проект назывался WineX. Новое название представляет игру слов: Wine — англ. вино, Cedega — сорт винограда.

Сайт проекта: http://www.cedega.com/

 

Метки: , , , , , ,

Улучшаем энергосбережение на мобильных устройствах с OS Linux.


Давненько собирался написать данную статью.

Не буду приводить информацию о том, как подключить общеизвестные костыли. Расскажу о малоизвестных способах тюнинга энергосбережения.

Приступим.

Управление энергосбережением на мобильных чипах Broadcom с STA модулем:
iwconfig eth1 txpower 19dBm
iwconfig eth1 power period 1
iwconfig eth1 power timeout 300u all
iwconfig eth1 power 500m unicast
iwconfig eth1 power min period 1 power max period 2
iwconfig eth1 power saving 5
iwconfig eth1 commit

Изменяем процент с которого начинается использование свопа:
echo 10 > /proc/sys/vm/swappiness

Включаем отслеживание состояния питания:
echo “1″ > /sys/power/pm_trace

Управление вентилятором процессора:
echo “1″ > /sys/class/thermal/cooling_device0/cur_state

Управление энергосбережением контроллеров для подключаемых носителей:
echo min_power > /sys/class/scsi_host/host2/link_power_management_policy
echo min_power > /sys/class/scsi_host/host3/link_power_management_policy
echo min_power > /sys/class/scsi_host/host4/link_power_management_policy

Включаем энергосбережение для шины PCIe:
echo powersave > /sys/module/pcie_aspm/parameters/policy

Включаем энергосбережение для шины USB:
[ -L /sys/bus/usb/devices/1-5/power/level ] && echo auto > /sys/bus/usb/devices/1-5/power/level
[ -L /sys/bus/usb/devices/1-5/power/level ] && echo auto > /sys/bus/usb/devices/1-5/power/level

for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
for i in /sys/bus/usb/devices/*/power/level; do echo auto > $i; done
Последнее используйте с осторожностью, т. к. могут быть проблемы с мышью. 😉
или options usbcore autosuspend=1 в /etc/modprobe.conf или /etc/modules

Включаем режим для портативных устройств:
echo “5″ > /proc/sys/vm/laptop_mode

Настраиваем энергосбережение для подключаемых носителей информации:
hdparm -B 128 -S 200 /dev/sda
hdparm -B 128 -S 200 /dev/sg1

Параметры, специфичные для платформ на основе Intel-овской логики:
echo 1 > /sys/module/i915/parameters/i915_enable_rc6
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
echo 1 > /sys/module/longhaul/parameters/scale_voltage

Более подробно и более познавательно об этом можно прочитать и найти более интресную информацию по следующей ссылке:

http://www.thinkwiki.org/wiki/How_to_reduce_power_consumption

“Знания и труд – горы перетрут!”, не так ли? 😉

 

Метки: , , , , , , , , , , , , , , , , , , , , , , , ,

Xtables-addons или добавляем функциональности фильтрации пакетов.


Проект xtables-addons представляет собой набор модулей-расширений для входящего в ядро Linux фреймворка фильтрации и преобразования пакетов netfilter. В этот набор включаются расширения, которые по тем или иным причинам пока не были приняты в основную ветку разработки ядра Linux. Таким образом, данный проект является альтернативой устаревшему patch-o-matic(-ng). Ключевое отличие xtables-addons от предшественника состоит в отсутствии необходимости в наложении патчей на ядро и iptables, что значительно упрощает процесс сопровождения и установки расширений. Во времена patch-o-matic часто бывало сложно найти версию патча, совместимую с нужной версией ядра и/или iptables, в то время как для работы xtables-addons достаточно наличия ядра версии >=2.6.17 и iptables >= 1.4.3 (впрочем, в случае использования ipset 5 требования становятся несколько более жесткими — версия ядра не менее 2.6.35, дополнительно требуется библиотека libmnl). В числе других преимуществ xtables-addons над patch-o-matic(-ng) можно упомянуть расширенную поддержку IPv6 и более высокое качество кода.
В состав xtables-addons входит множество других полезных модулей (критериев и действий iptables/netfilter), в частности:
— TARPIT — широко известный в узких кругах инструмент для активного противодействия (D)DoS-атакам и сканированиям TCP-портов, способный в определенный обстоятельствах неплохо проучить атакующего. Суть его работы сводится к следующему: он подтверждает открытие входящего TCP-соединения, после чего устанавливает размер окна TCP равным нулю, что блокирует возможность корректного закрытия соединения. В результате система атакующего получает очередное «повисшее» соединение, в то время как ваша система ничего не замечает (хуки netfilter отрабатывают раньше, чем стандартный сетевой стек ядра, дополнительно может потребоваться отключение трекинга соединений в conntrack через действие NOTRACK). При агрессивной атаке подобная тактика может вызвать у атакующего серьезные проблемы. Особенно сильно такому воздействию подвержены системы семейства Windows, на которых, как правило, и работают атакующие ботнеты.
— DELUDE — не столь опасный, но тем не менее тоже полезный инструмент противодействия сканированию TCP-портов. Работает он следующим образом: на SYN-пакеты он отвечает SYN,ACK-пакетами, создавая видимость открытого порта, на все остальные пакеты он отвечает RST (чтобы не создавать лишних проблем). Таким образом, DELUDE позволяет ввести атакующего в заблуждение, создав у него неверное впечатление о состоянии ваших портов.
— CHAOS — еще один инструмент, позволяющий поставить атакующего в глупое положение. С заданной вероятностью он применяет к входящему пакету операцию TARPIT или DELUDE (в зависимости от настроек), либо стандартную операцию REJECT (отправка ICMP-уведомления о недоступности порта), либо операцию DROP (блокирование пакета без уведомления отправляющей стороны). По умолчанию вероятности применения TARPIT/DELUDE и REJECT составляют порядка одного процента, к остальному трафику применяется DROP.
— IPMARK — действие, позволяющее присвоить пакету маркировку, определенную в результате арифметических операций над его исходным адресом (либо адресом назначения). Таким образом, грамотная организация адресного пространства в сочетании с элементарными арифметическими и побитовыми операциями могут заменить монструозные таблицы соответствия «адрес — маркировка», поиск по которым может отнимать значительную долю системных ресурсов. Особенно полезна данная операция при организации гибких систем шейпинга, когда несколькими командами можно настроить работу многих тысяч очередей.
— LOGMARK — действие, дополняющее набор данных, выводимых стандартной операцией LOG, такими сведениями, как маркировка, идентификатор, состояние и статус соединения в системе conntrack, маркировка SELinux и классификационный код шейпера для данного пакета, имя родительского хука, внутренний код интерфейса и т.п.
— RAWDNAT/RAWSNAT — операции «сырой» трансляции адресов, не использующие трекинг соединений. Могут быть использованы для увеличения гибкости стандартного NAT либо при ограниченности ресурсов в сочетании с большим количеством соединений, когда трекинг становится чересчур накладным.
— ACCOUNT — простая, высокопроизводительная система учета трафика, поддерживающая работу с клиентскими сетями большого размера (вплоть до /8).
— SYSRQ — инструмент, позволяющий при получении специальным образом сформированных (защищенных паролем) пакетов обращаться к системному триггеру. В частности, можно удаленно инициировать сброс кэша (sync) или даже выполнить ту самую последовательность REISUB, вне зависимости от работоспособности userspace.
— DHCPMAC/dhcpmac — сочетание одноименных критерия и действия позволяет выделять и подменять MAC-адреса, фигурирующие в запросах и ответах DHCP.
— condition — критерий, срабатывающий в зависимости от значения соответствующей булевой переменной, которое может быть задано из userspace (через procfs). Таким образом, работой правил netfilter можно управлять, не вмешиваясь в их структуру.
— fuzzy — критерий, выделяющий пакеты на основании нечеткой логики (при скорости поступления пакетов ниже пороговой величины a, вероятность соответствия пакета критерию равна нулю, в диапазоне скоростей от a до b вероятность плавно возрастает до единицы, и при скорости выше b пакеты всегда соответствуют критерию).
— geoip — критерий, позволяющий выделять пакеты на основании принадлежности их исходного адреса или адреса назначения заданному государству. Можно использовать базы данных от MaxMind или WIPmania
— iface — критерий, срабатывающий в зависимости от состояния заданного сетевого интерфейса. В частности, с его помощью можно организовывать отказоустойчивый доступ в интернет при наличии нескольких независимых каналов, с автоматическим исключением неработающих каналов.
— ipp2p — критерий, позволяющий выделять трафик различных P2P-сетей, в частности, BitTorrent, eDonkey/eMule, DC, Gnutella, AppleJuice, WinMX, SoulSeek, Ares, KaZaA. Чрезвычайно удобен при организации эффективного шейпинга трафика. Является неплохой альтернативой критерию l7filter, который требует наложения патчей на ядро и поэтому не включен в проект xtables-addons.
— lscan — разработанный Яном Энгельгардтом инструмент для выявления скрытных операций по сканированию TCP-портов.
— psd — более простой инструмент для выявления массовых сканирований TCP- и UDP-портов, основанный на принципе взвешенной суммы.
— pknock — позволяет организовать защиту портов посредством технологии port knocking. Возможно дополнительное усиление защиты за счет использования HMAC256-шифрования отправляемых пакетов.
— quota2, length2 — расширяют возможности стандартных критериев netfilter quota и length.

Данная статья подготовлена по материалам сайта: http://www.opennet.ru/opennews/art.shtml?num=29198

Надеюсь, что еще одно подробное описнание некоторых возможностей фильтрации пакетов в Linux, будет полезным. Успехов вам в дружбе с тюксом.

 

Метки: , , , ,

Описание параметров ядра (sysctl) для управления сетевой подсистемой в OS Linux.


Часть данного поста является перепостингом с: http://www.opennet.ru/base/sys/sysctl_linux.txt.html
Часть является моими рекомендациями и моими дополнениями, которые являются результатом обобщения моих практических наработок в управлении сетевой подсистемой Linux.

net.ipv4.conf.default.forwarding=0
Данный параметр включает форвардинг (проброс) пакетов с одного интерфейса на другой. Для рабочих станций, не являющихся маршрутизаторами, рекомендуется отключить данную опцию (выставить в 0).

net.ipv4.conf.all.rp_filter = 1
Позволяет осуществлять фильтрацию пакетов по адресу назначения (проверка адреса получателя). Рекомендуется ключить данную проверку (1).

net.ipv4.conf.default.rp_filter=1
Осуществляет фильтрацию входящих пакетов, которые были отправлены одним интерфейсом, а приняты другим. Рекомендуется включить данную опцию (1).

net.ipv4.conf.all.accept_source_route = 0
Проверка маршрута от источника до получателя. Рекомендуется отключить данную опцию (0).

net.ipv4.tcp_syncookies=1
Разрешене или запрещение передачи syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета. Рекомендуется включить данную опцию (1).

net.ipv4.ip_default_ttl = 128
Устанавливает Time To Live – время жизни пакета в сети. При прохождении каждого маршрутизатора данное значение уменьшается на еденицу. Вполне достаточным является значение 64. Но для меня более привычным является значение 128.

net.ipv4.ip_local_port_range = 32768 61000
Данный параметр указывает диапазон используемых портов клиентскими приложениями, т. е. начало и конец диапазона. Диапазон ограничивается наличием памяти на хосте, чем больший объем памяти имеется у хоста, тем больший диапазон портов можно задать, но на современных системах с гигабайтами памяти это уже не имеет значения, т. к. ограничения начинаются при наличии менее 256 мегабайт памяти на хосте (уменьшаем диапазон используемых адресов при недостатке памяти).

net.ipv4.ip_no_pmtu_disc = 1
Отключение автоопределения значения MTU для данного сегмента сети. При проблемах с соединениями рекомендуется выставить данную опцию в 1.

net.ipv4.ip_nonlocal_bind = 0
Включение данной опции дает возможность хосту выступать от имени другого хоста в сети, что может быть полезно для снифинга, например.

net.ipv4.ipfrag_low_thresh = 196608
Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до
тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh.

net.ipv4.ipfrag_time = 30
Эта переменная определяет максимальное время хранения фрагментов в секундах.

net.ipv4.inet_peer_gc_maxtime = 120
Переменная inet_peer_gc_maxtime определяет частоту сборки мусора при незначительном объеме данных.

net.ipv4.inet_peer_gc_mintime = 10
Переменная inet_peer_gc_maxtime определяет частоту сборки мусора при незначительном объеме данных. Эта переменная имеет то же предназначение, что и inet_peer_gc_mintime, только выбор, какой переменной пользоваться,
производится в зависимости от величины нагрузки на систему. Переменная принимает целое число, измеряемое в тиках. Значение по-умолчанию 120 тиков, чего вполне достаточно для большинства серверов и рабочих станций.

net.ipv4.inet_peer_maxttl = 600
Это максимальное время хранения записей. При незначительных нагрузках на систему неиспользуемые записи будут удаляться через данный промежуток времени.

net.ipv4.inet_peer_minttl = 120
Переменная определяет минимальное время хранения данных в inet peer storage. Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.

net.ipv4.inet_peer_threshold = 65664
Переменная определяет минимальное время хранения данных в inet peer storage. Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения
является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.

net.ipv4.tcp_abort_on_overflow = 1
Эта переменная заставляет ядро отвергать новые соединения, если их поступает такое количество, что система не в состоянии справиться с таким потоком. Рекомендую выставить данную переменную в 1 для защиты от DDoS, как крайнюю меру.

net.ipv4.tcp_adv_win_scale = 2
Эта переменная влияет на вычисление объема памяти в буфере сокета, выделяемой под размер TCP-окна и под буфер приложения. Значение по-умолчанию 2, т.е. под буфер приложения отводится 1/4 часть объема, определяемого переменной tcp_rmem.

net.ipv4.tcp_app_win = 31
Эта переменная определяет количество байт, резервируемых под TCP-окно в приемном буфере сокета. Исключение составляет значение 0. В этом случае резервирование не производится. Значение по-умолчанию 31. Не изменяйте эту переменную, если вы не уверены в том, что делаете.

net.ipv4.tcp_dsack = 1
Эта опция необходима для выполнения передачи дублирующих SACK-пакетов (от англ. Selective ACKnowledgement Выборочное Подтверждение Приема, прим. перев.). Техника выборочного подтверждения кратко описана в
разделе, посвященном переменной tcp_sack. Детальное описание можно найти в RFC 2883.

net.ipv4.tcp_ecn = 1
Переменная tcp_ecn отвечает за работу Explicit Congestion Notification (Явное Уведомление о Перегруженности) в TCP-соединениях. Используется для уведомления о возникновении затора на маршруте к заданному хосту или
сети. Может использоваться для извещения хоста-отправителя о необходимости снизить скорость передачи пакетов через конкретный маршрутизатор или брандмауэр. Explicit Congestion Notification (ECN) детально описано в RFC 3168 – The Addition of Explicit Congestion Notification (ECN) to IP. Дополнительную информацию о ECN вы найдете в
RFC 2884 – Performance Evaluation of Explicit Congestion Notification (ECN) in IP Networks. Для полноценной работы данной опции необходимо включить модуль dccp протокола (modprobe dccp), а также установить максимальный размер окна: net.dccp.default.seq_window=10000.Выключено по-умолчанию (для максимальной совместимости). Для улучшения производительности сетевого стека рекомендую включить данную опцию (1).

net.ipv4.tcp_fack = 1
Переменная tcp_fack ответственна за систему Forward Acknowledgement (Упреждающее Подтверждение) в Linux. Forward Acknowledgement это специальный алгоритм, который работает поверх SACK, и предназначен для
контроля заторов. Главная идея алгоритма FACK состоит в отслеживании наибольшего номера выборочно подтвержденной последовательности как признака того, что все предыдущие не подтвержденные (выборочно) сегменты были потеряны. Это позволяет оптимизировать восстановление потерь. Однако, этот алгоритм становится неработоспособным в случае неупорядоченного потока данных, тогда он (алгоритм) автоматически отключается для данного конкретного соединения. Эта опция используется только тогда, когда включена переменная tcp_sack. Рекомендую включить данную опцию (1).

net.ipv4.tcp_fin_timeout = 30
Переменная задает максимальное время пребывания сокета в состоянии FIN-WAIT-2. Используется в тех случаях, когда другая сторона по тем или иным причинам не закрыла соединение со своей стороны. Каждый сокет занимает в памяти порядка 1.5 Кб, что может привести к значительным утечкам памяти в некоторых случаях. Переменная принимает целое число в секундах. Рекоммендую выставить данную переменную в 30, для высоконагруженных серверов данное значение можно сократить ещё больше.

net.ipv4.tcp_keepalive_intvl = 15
Переменная определяет интервал проверки жизнеспособность сокета. Это значение учитывается при подсчете времени, которое должно пройти перед тем как соединение будет разорвано. Переменная принимает целое число.
Значение по-умолчанию 75 секунд. Это достаточно высокое значение, чтобы рассматривать его как нормальное. Значения переменных tcp_keepalive_probes и tcp_keepalive_intvl могут использоваться для определения времени, через которое соединение будет разорвано. Со значениями по-умолчанию (9 попыток с интервалом 75 секунд) это займет примерно 11 минут. Попытки определения жизнеспособности, в свою очередь, начнутся через 2 часа после того, как через данное соединение проследовал последний пакет. Рекомендую данный парметр выставить в 15. Выставлять более низкие значения можно только в самых крайних случаях, например, при DoS и DDoS атаках.

net.ipv4.tcp_keepalive_probes = 3
Переменная определяет количество попыток проверки жизнеспособности прежде, чем будет принято решении о разрыве соединения. Значение по-умолчанию 9. Это означает, что будет выполнено 9 попыток проверки соединения, чтобы убедиться в том, что соединение разорвано. Рекомендую выставить данный параметр в 3.

net.ipv4.tcp_keepalive_time = 7200
Переменная определяет как часто следует проверять соединение, если оно давно не используется. Значение переменной имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE. Переменная
принимает целое число секунд. Значение по-умолчанию 7200 секунд, или 2 часа. Не уменьшайте это число без необходимости, поскольку это может привести к увеличению излишнего трафика.

net.ipv4.tcp_max_orphans = 65536
Переменная задает максимальное число осиротевших (не связанных ни с одним процессом) сокетов. Если это число будет превышено, то такие соединения разрываются, а в системный журнал пишется предупреждение. Это ограничение существует исключительно ради предотвращения простейших разновидностей DoS-атак. Вообще вы не должны полагаться на эту переменную! Не рекомендуется уменьшать это число. Сетевая среда может потребовать увеличение этого порога, однако, такое увеличение может привести к необходимости увеличения объема ОЗУ в системе. Прежде чем поднимать этот предел попробуйте перенастроить сетевые сервисы на более агрессивное поведение по отношению к осиротевшим сокетам. Переменная принимает целое число. Значение по-умолчанию 8192, однако оно очень сильно зависит от объема памяти в системе. Каждый осиротевший сокет съедает примерно 64 Кб памяти, которая не может быть сброшена в своп (swap). При возникновении проблем, связанных с этим ограничением в системный журнал будет записано сообщение, подобное этому: TCP: too many of orphaned sockets Это может служить поводом к тому, чтобы пересмотреть значения переменных tcp_fin_timeout или tcp_orphans_retries.

net.ipv4.tcp_max_syn_backlog = 1024
Переменная определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета. Эта опция работает только тогда, когда включена переменная
tcp_syncookies. Если сервер испытывает серьезные нагрузки, то можно попробовать немного увеличить этот параметр. Переменная принимает целое число. Значение по-умолчанию зависит от количества памяти, имеющейся в
системе. Если объем памяти менее 128 Мб, то значение по-умолчанию равно 128, если больше, то значение по-умолчанию равно 1024. Если вы увеличиваете эту переменную до величины более чем 1024, то было бы
неплохо изменить величину TCP_SYNQ_HSIZE и пересобрать ядро. TCP_SYNQ_HSIZE находится в файле linux/include/tcp.h. Эта величина рассчитывается по формуле: TCP_SYNQ_HSIZE*16 tcp_max_syn_backlog.

net.ipv4.tcp_max_tw_buckets = 18000
Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. При превышении этого порога лишний сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной предотвращение простейших разновидностей DoS-атак. Переменная принимает целое число. Значение по-умолчанию 180000. На первый взгляд может показаться, что это очень много, но на самом деле это не так. Если у вас начинают возникать ошибки, связанные с этим параметром, то попробуйте увеличить его. Вам не следует уменьшать значение этой переменной. Вместо этого, если начали поступать сообщения в системный журнал, ее следует увеличить, однако, это может потребовать наращивания памяти в системе. Рекомендую установить данное значение в 18000 для рабочих станций, не являющихся серверами.

net.ipv4.tcp_mem = 196608 262144 393216
В этой переменной задаются 3 значения, определяющие объем памяти, который может быть использован стеком TCP. Значения измеряются в страницах памяти. Размер одной страницы зависит от аппаратуры и конфигурации ядра. Для архитектуры i386 размер одной страницы составляет 4Кб, или 4096 байт. Некоторые, более новые аппаратные реализации, имеют размер страницы равный 16, 32 или даже 64 Кб. Все три значения по-умолчанию рассчитываются во время загрузки. Первое число задает нижний порог. Ниже этого порога, стек TCP вообще никак не беспокоится об
управлении памятью, используемой различными TCP сокетами. Когда объем используемой памяти достигает второго предела (числа), то TCP начинает более энергично расталкивать память, стремясь освободить ее как можно быстрее. Этот процесс продолжается до тех пор, пока объем использумой памяти не достигнет нижнего предела. И последнее число максимальный объем памяти, который может использоваться для нужд TCP. Если используемый объем памяти достигнет этого порога, то TCP просто начинает терятьпакеты и соединения до тех пор, пока объем спользуемой памяти не уменьшится. Эта переменная может позволить несколько увеличить пропускную способность на толстых каналах, если должным образом настроить переменные tcp_mem, tcp_rmem и tcp_wmem. Впрочем, переменная tcp_rmem не требует особо пристального внимания, поскольку серия ядер 2.4 имеет достаточно хорошие настройки этой переменний, а вот на другие две следует взглянуть поближе. Дополнительную информацию об этом вы найдете в руководстве TCP Tuning Guide.

net.ipv4.tcp_orphan_retries = 0
Количество попыток закрыть соединение перед тем как оно будет разорвано принудительно. Если вы администрируете http-сервер, который испытывает большие нагрузки, то стоит подумать об уменьшении этого значения. Переменная принимает целое число. Значение по-умолчанию 7, что соответствует, примерно, от 50 секунд до 16 минут, в зависимости от величины Retransmission Timeout (RTO Таймаут для Повторной Передачи. прим. перев.). Детальное описание RTO вы найдете в разделе 3.7. Data Communication RFC 793 – Transmission Control Protocol. Кроме того, посмотрите описание переменной tcp_max_orphans.

net.ipv4.tcp_reordering = 3
Максимальное количество пакетов, пришедших в потоке не по-порядку, прежде чем будет сделано предположение о том, что пакет был потерян где-то на маршруте. Когда делается такое предположение, то стек TCP переходит обратно в режим slow start (медленный старт), поскольку пакет действительно мог быть утерян из-за перегруженности сети. Кроме того, стек TCP откажется от дальнейшего использования алгоритма FACK при обмене с этим хостом. Переменная принимает целое число. Значение по-умолчанию 3. Это достаточно хорошее значение и не следует его
изменять. Если этот параметр уменьшить, то это может значительно ухудшить работу сетевой подсистемы особенно, если пакеты часто переупорядочиваются.

net.ipv4.tcp_retrans_collapse = 1
Включает/выключает эмуляцию ошибки протокола TCP, делая возможным сетевое взаимодействие с некоторыми устройствами, в которых реализация стека TCP имеет эту ошибку. Без ее эмуляции было бы невозможным работать
с отдельными моделями принтеров. Ошибка заключается в отправке полноразмерных пакетов при повторной передаче. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Эмуляция ошибки никак не повредит взаимодействию с другими узлами сети, но при этом позволит общаться с устройствами, имеющими ошибку в реализации стека TCP. Вообще эта опция совершенно безопасна, однако, если в журнал пишутся непонятные сообщения можете попробовать отключить ее.

net.ipv4.tcp_retries1 = 3
Максимальное количество попыток повторной передачи пакетов по установленному соединению прежде, чем сообщение об ошибке будет передано сетевому уровню, в результате чего может быть выбран другой маршрут для
отправки последующих пакетов. Минимальное значение этого параметра определяется в RFC и равно 3. Это число является значением по-умолчанию, что соответствует интервалу времени от 3 секунд до 8 минут, в зависимости от величины Retransmission timeout (RTO). Детальное описание RTO вы найдете в разделе 3.7. Data Communication RFC 793 – Transmission Control Protocol. Переменная принимает целое число. Значение по-умолчанию 3. Стандарты определяют диапазон изменения этого параметра от 3 до 100. Рекомендую не менять данное значение, тем более его уменьшать.

net.ipv4.tcp_retries2 = 5
Максимальное количество попыток повторной передачи пакетов, до того как соединение будет считаться разорванным. Это ограничение определено в RFC 1122 и равно 100, но обычно его уменьшают. Переменная принимает целое число. Значение по-умолчанию 15, что соответствует примерно 13-30 минутам в зависимости от величины Retransmission timeout (RTO). При желании можете попробовать уменьшить этот параметр. Рекомендую уменьшить значение данного параметра до 5.

net.ipv4.tcp_rfc1337 = 0
Переменная tcp_rfc1337 является реализацией решения проблемы, описываемой в RFC 1337 – TIME-WAIT Assassination Hazards in TCP. Проблема связана с устаревшими дубликатами пакетов, которые могут вносить помехи во вновь устанавливаемые соединения и порождать три различные проблемы. Первая устаревший дубликат пакета с данными может быть ошибочно воспринят в новом соединении, что приведет к передаче неверных данных. Вторая соединение может быть десинхронизировано и уйти в ACK-цикл из-за устаревших дубликатов, которые порождают новые соединения (здесь автор имеет ввиду устаревшие дубликаты SYN-пакетов, прим. перев.). И третья, и последняя проблема устаревшие дубликаты могут проникнуть в недавно созданное соединение и ошибочно уничтожить его. Согласно упомянутому RFC существуют три возможных решения, однако, одно из них решает эту проблему лишь частично, второе требует внесения значительных изменений в протокол TCP. Окончательное решение состоит в том, что RST-пакеты должны просто игнорироваться, пока сокет находится в состоянии TIME_WAIT. Вместе с установкой параметра Maximum Segment Life (MSL максимальное время жизни сегмента) равным 2 мин. такой подход решает все три проблемы, описанные в RFC 1337.

net.ipv4.tcp_rmem = 4096 87380 4194304
Переменная содержит три числа, которые используются при управлении размерами приемных буферов. Первое число минимальный размер приемного буфера, который выделяется для каждого сокета. Этот размер буфера
выделяется всегда, даже при очень высоких нагрузках на систему. Значение по-умолчанию 4096 байт, или 4 Кб. В предыдущих версиях ядра Linux это значение было 8192 байт. Это достаточно большой размер и не следует
увеличивать его, иначе, при взрывных нагрузках на сеть, вы можете столкнуть с очень серьезными проблемами. Второе число размер приемного буфера по-умолчанию, который выделяется для каждого сокета. Это значение
перекрывает значение переменной /proc/sys/net/core/rmem_default, которая используется другими протоколами. Значение по-умолчанию 87380 байт, или 85 Кб. Совместно с переменными tcp_adv_win_scale и tcp_app_win эта
переменная используется при расчете размера TCP-окна. Это значение используется при незначительных нагрузках. Как и в случае с первым значением не следует без особой нужды изменять этот параметр. Эта переменная может дать некоторый прирост производительности на толстых каналах, если достаточно корректно используется вместе с переменными tcp_mem и tcp_wmem. tcp_rmem не требует вмешательства извне, поскольку ядра серии 2.4 достаточно хорошо настраивают ее автоматически, а вот на tcp_mem и tcp_wmem можно взглянуть попристальнее. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide. Третье, и последнее, число максимально возможный размер приемного буфера, который может быть размещен для каждого сокета. Этот параметр перекрывается переменной /proc/sys/net/core/rmem_max, если значение в ipv4 оказывается больше. Перед изменением этого параметра вам следует сначала взглянуть на значение /proc/sys/net/core/rmem_max. Значение
по-умолчанию удвоенное значение второго параметра, т.е. 87380 * 2 bytes, или 174760 байт (170 Кб). Как правило этот параметр не нуждается в корректировке.

net.ipv4.tcp_sack = 1
Разрешает Selective Acknowledgements (SACK Выборочное Подтверждение), детальное описание вы найдете в RFC 2883 – An Extension to Selective Acknowledgement (SACK) Option for TCP и RFC 2883 – An Extension to Selective Acknowledgement (SACK) Option for TCP. Если эта переменная включена (установлена 1), то в TCP-заголовке будет устанавливаться SACK-флаг при передаче SYN-пакета, сообщая тем самым удаленному хосту, что наша система в состоянии обрабатывать SACK, на что удаленный хост может ответить ACK-пакетом с установленным флагом SACK. Этот режим выборочно подтверждает каждый сегмент в TCP-окне. Это особенно полезно на неустойчивых соединениях, поскольку позволяет производить повторную передачу лишь отдельных, не подтвержденных фрагментов, а не всего TCP-окна, как это диктуется более старыми стандартами. Если какой либо сегмент TCP-окна был утерян, то приемная сторона не пришлет на него SACK-подтверждение о приеме. Отправитель, поняв это, повторит передачу потерявшихся сегментов. Избыточные данные сохраняются в TCP-заголовке, 40 байт на сегмент. Подтверждение каждого сегмента это два 32-битных беззнаковых целых числа, таким образом в заголовке может разместиться подтверждение 4-х сегментов. Однако, как правило, совместно с опцией SACK используется опция timestamp, которая занимает 10 байт и поэтому в одном пакете может быть подтверждено не более 3 сегментов. Рекомендуется включать эту опцию, если вы имеете неустойчивые соединения. Однако, если вы соединены 1.5-метровым кабелем с другой машиной, то в таком случае, для достижения наивысшей скорости обмена, следует эту опцию отключить. Обычно эта опция не нужна, но лучше ее включить. Она обеспечивает 100% обратную совместимость, т.е. вы не должны испытывать никаких проблем при соединении с хостами, которые эту опцию не поддерживают. В переменную могут быть записаны два числа 0 (выключено) и 1 (включено). Значение
по-умолчанию 1 (включено).

net.ipv4.tcp_syn_retries = 2
Количество попыток передачи SYN-пакета при установлении нового соединения. Переменная принимает целое число, которое не должно устанавливаться больше чем 255, поскольку каждая повторная попытка отнимает значительное время. На каждую попытку отводится примерно 30-40 секунд. Значение по-умолчанию 5, что соответствует, примерно, 180 секундам. Рекомендую снизить данное значение до 2-х, т. к. качество линий связи в настоящий момент достаточно неплохое и число потерянных пакетов очень мизерно.

net.ipv4.tcp_synack_retries = 2
Количество попыток передачи SYN,ACK-пакета в ответ на SYN-запрос. Другими словами максимальное число попыток установить пассивное TCP-соединение, инициированное другим хостом. Переменная принимает целое
число, которое не должно устанавливаться больше чем 255 по тем же причинам, что и в случае с переменной tcp_syn_retries. Значение по-умолчанию 5. Безопасно снизить значение до 2.

net.ipv4.tcp_timestamps = 1
Разрешает/запрещает использование временных меток (timestamps), в соответствии с RFC 1323. Если коротко, то это расширение TCP используется для расчета Round Trip Measurement (определение времени возврата) лучшим способом, нежели метод Retransmission timeout (RTO). Эта опция должна сохранять обратную совместимость в большинстве случаев, так что лучше оставить ее включенной, особенно если вы работаете в высокоскоростной сети (например LAN или 10mb Интернет). В случае низкоскоростного оединения (скажем модемное) вы прекрасно обойдетесь и без этой опции, и будет даже лучше, если вы ее отключите. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Более подробную информацию вы найдете в секции 4 документа RFC 1323 – TCP Extensions for High Performance.

net.ipv4.tcp_tw_recycle = 0
Разрешает/запрещает быструю утилизацию сокетов, находящихся в состоянии TIME-WAIT. Если вы не уверены в своих действиях, то вам лучше не трогать эту переменную. Переменная принимает целое число (а не булевское из
моего опыта и моего понимания исходных текстов ядра следует, что описание переменной в linux/Documentation/ip-sysctl.txt содержит ошибку, если я не ошибаюсь). Значение по-умолчанию 0. Не изменяйте эту переменную, если вы не уверены в своих действиях или не получили совет от опытных экспертов по ядру.

net.ipv4.tcp_window_scaling = 1
Разрешает/запрещает масштабирование TCP-окна, как определено в RFC 1323. В этом документе описано как производится масштабирование TCP-окна при передаче по Large Fat Pipes (LFP толстый канал). При передаче
TCP-пакетов по толстым каналам возникают существенные потери пропускной способности из-за того, что они не загружены полностью во время ожидания подтверждения о приеме предыдущего TCP-окна. Основная проблема состоит в том, что окно не может иметь размер больше, чем 216 байт (65 Кб). Разрешая масштабирование TCP-окна мы, тем самым, можем увеличить его размер и таким образом уменьшить потери пропускной способности.
Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Дополнительную информацию по этой теме вы найдете в RFC 1323 – TCP Extensions for High Performance.

net.ipv4.tcp_wmem = 4096 16384 4194304
Переменная содержит три числа, которые используются при управлении размерами буферов передачи, выделяемых для каждого сокета. Каждое из значений используется при определенных условиях. Первое значение минимальный размер буфера передачи для каждого сокета. Системой гарантируется выделение этого пространства при открытии сокета. Обычно это значение равно 4096 байт. Второе значение размер передающего буфера по-умолчанию. При попытке увеличить размер буфера передачи больше этого ограничения, приложение может столкнуться с нежеланием системы выделения большего объема памяти при тяжелых нагрузках. Это может даже привести к
потере пакетов при очень высоких нагрузках. Значение по-умолчанию 16384 байт, или 16 Кб. Будет неразумным попытаться увеличить это значение. Этот параметр перекрывается переменной /proc/sys/net/core/wmem_default,
которая используется другими протоколами и, как правило, tcp_wmem должна быть меньше чем /proc/sys/net/core/wmem_default. Третье значение максимальный размер буфера передачи для отдельного сокета. По-умолчанию
131072 байт, или 128 Кб. Это достаточно разумное значение и в большинстве случаев вам едва ли придется корректировать его. Однако, если вам придется его увеличивать помните о существовании переменной
/proc/sys/net/core/wmem_max, которая должна быть всегда больше чем tcp_wmem. Эта переменная может дать некоторый прирост производительности на толстых каналах, если достаточно корректно используется вместе с
переменными tcp_mem и tcp_rmem. tcp_wmem дает наибольший прирост производительности из этих трех переменных. Замечу при этом, что вы практически не получите никакого выигрыша в сетях со скоростью передачи
менее 1 Гб. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide.

net.ipv4.icmp_echo_ignore_broadcasts = 1
Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP сообщения, отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно
включить этот параметр защита от smurf атак. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено).

net.ipv4.icmp_ignore_bogus_error_responses = 1
Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. Обычно эти ошибки заносятся в системный журнал. Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0
(выключено).

net.ipv4.icmp_ratelimit = 250
Максимальная частота генерации ICMP-пакетов с типом, указанным в icmp_ratemask (см. icmp_ratemask). Это значение задается в тиках и устанавливает временной интервал между ICMP-посылками. Таким образом,
значение 0 означает отсутствие ограничений. Обычно 1 тик равен 0.01 секунды, так значение 1 в этой переменной ограничивает скорость передачи не более 100 посылок в секунду, а значение 100 не более 1 посылки в секунду. Значение по-умолчанию 100, что означает не более 1 ICMP посылки за интервал в 100 тиков.

net.ipv4.icmp_ratemask = 6168
Маска ICMP типов, на которые накладывается ограничение по частоте генерации переменной icmp_ratelimit. Каждый из ICMP типов маскируется своим битом. icmp_ratemask это битовая маска, где каждый ICMP тип представлен своим битом. Соответствие между символическим названием ICMP типа и его порядковым номером вы найдете в заголовочном файле netinet/ip_icmp.h (обычно это /usr/include/netinet/ip_icmp.h). За дополнительной информацией обращайтесь к RFC 792 – Internet Control Message Protocol. Математически маска определяется так: где n принимает
значения всех типов ICMP, которые должны быть ограничены. Например: Ограничим передачу ICMP Destination Unreachable сообщений. В /usr/include/netinet/ip_icmp.h этому типу соответствует число 3. Подсчитаем значение 23, что равно 8. Теперь нужно прибавить это число к имеющейся битовой маске. Допустим, что маска уже равна числу 6160 (в двоичном виде 0001100000010000), тогда результирующая маска получится: 6160 + 8 = 6168 (в двоичном виде 0001100000011000). Перед добавлением маски подобным образом убедитесь сначала, что нужный вам бит сброшен,
иначе вы получите неверную маску! К примеру, если у вас маска является числом 256 и вы еще добавите число 256, то это приведет к размаскированию ICMP Echo Request и маскировке 9-го отсутствующего типа ICMP. Значение по-умолчанию 6168 (в двоичном виде 0001100000011000), что подразумевает наложение ограничений на ICMP Destination Unreachable, ICMP Source Quench, ICMP Time Exceeded и ICMP Parameter Problem, где ICMP Destination Unreachable = 3, ICMP Source Quench = 4, ICMP Time Exceeded = 11 и ICMP Parameter Problem = 12. Таким образом, значение по-умолчанию соответствует выражению: Злоумышленник может заставить некоторый маршрутизатор или хост затопить жертву ICMP-посылками, передаваемыми в ответ на поддельный ICMP пакет с обратным адресом
жертвы. Поэтому очень важно ограничить частоту генерации отдельных видов ICMP-сообщений. На сайте http://www.frozentux.net вы сможете найти небольшую программу ratemask, которая может оказаться полезной при
создании маски для переменной icmp_ratemasks или для дешифрации существующей маски.

net.ipv4.igmp_max_memberships = 20
Максимальное число групп на каждый сокет. Значение по-умолчанию 20 и может быть изменено по мере необходимости.

net.ipv4.conf.all.accept_redirects = 0
Переменная управляет приемом ICMP-сообщений о переадресации. Сообщения ICMP Redirect используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту,
который (маршрут) может быть быстрее или менее загружен. Переменная может иметь два значения 0 (выключено сообщения о переадресации игнорируются) и 1 (включено сообщения о переадресации принимаются). Значение по-умолчанию 1 (включено), однако я посоветовал бы отключать эту опцию, поскольку она далеко небезопасна. В подавляющем большинстве случаев необходимость в переадресации отсутствует, поэтому лучше держать эту переменную выключенной, если конечно вы на 100% не уверены в обратном.

net.ipv4.conf.all.accept_source_route = 0
Переменная разрешает/запрещает маршрутизацию от источника. Маршрутизация от источника весьма небезопасна. Дополнительную информацию по этой темы вы сможете почерпнуть из ip-param.txt. Переменная может иметь два
значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено).

net.ipv4.conf.all.arp_filter = 1
Включает/выключает связывание IP-адреса с ARP-адресом. Если эта опция включена, то ответ будет передаваться через тот интерфейс, через который поступил запрос. В принципе, было бы не плохо, если бы ответы исходили
через тот же интерфейс, через который был получен запрос, однако, в отдельных случаях, это может стать причиной ошибок. Обычно включение этой опции необходимо только в том случае, если на вашем хосте производится управление распределением нагрузки между сетевыми интерфейсами. Значение по-умолчанию 0 (выключено), поскольку эта опция идет немного вразрез с современным пониманием принципов IP-адресации. Ранее IP-адреса рассматривались как путь к некоторому устройству, в смысле аппаратуры, теперь же их следует рассматривать как отдельную службу доставки, которая должна выдавать ответы на запросы вне зависимости от того на какой интерфейс эти запросы были получены. Дополнительную информацию по данной тематике вы найдете в Guide to IP
Layer Network Administration with Linux. Я бы включил данную переменуую (1), для защиты от некоторых типов arp атак.

net.ipv4.conf.all.bootp_relay = 0
Переменная разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d. Демон BOOTP relay должен перенаправлять эти пакеты на корректный адрес. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Обработка переменной bootp_relay еще не реализована. Если вы желаете предложить свою реализацию милости просим! С этой целью можете вступить в контакт с командой разработчиков netdev mailinglist.

net.ipv4.conf.all.log_martians = 1
Переменная включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians марсианские пакеты). Под невозможными адресами, в данном
случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации. В некоторых ситуациях эта опция позволит получить дополнительную информацию, но вы должны понимать, что эта информация не так подробна как можно было бы подумать. Основными причинами, порождающими записи в системном журнале, могут быть: невозможность переадресации; плохая классификация; ограничения на широковещательные сообщения, или несоответствия в Forwarding Information Base (FIB). Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Лучше включить данную переменную (1) для журналирования таких событий.

net.ipv4.conf.all.mc_forwarding = 0
Включает/выключает поддержку маршрутизации групповых рассылок для заданного интерфейса. Кроме того, чтобы иметь поддержку маршрутизации групповых рассылок, необходимо собрать ядро с включенной опцией CONFIG_MROUTE. Дополнительно в системе должен иметься демон, осуществляющий групповую маршрутизацию. Его вы можете получить с FTP-сайта AT&T Research.. Этот демон реализует протокол DVMRP (от англ. Distance Vector Multicast Routing Protocol протокол маршрутизации групповых рассылок типа вектор-расстояние). Еще один демон маршрутизации групповых рассылок доступен на сайте PIMd. Это реализация разреженного протокола PIM (от англ. Protocol Independent Multicast протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации), или PIM-SM. Там же вы найдете ссылки на другие реализации протоколов PIM-DM (Protocol Independent Multicast-Dense Mode протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации, уплотненного режима) и PIM-SM (Protocol Independant Multicast-Sparse Mode протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации,
разреженного режима). Дополнительную информацию по групповой адресации вы найдете в Multicast HOWTO. Групповая адресация используется в тех случаях, когда необходимо выполнить доставку информации сразу к
нескольким пунктам назначения. Например, WEB-страничка передается отдельно каждому, кто ее запросил, а если несколько человек решили принять участие в видеоконференции? Есть два пути реализации доставки. Либо каждому участнику отдавать отдельный поток данных (тогда трафик будет таким огромным, что для него может просто не хватить пропускной способности канала), либо использовать групповую рассылку. В этом случае отправитель создает одну дейтаграмму с групповым адресом назначения, по мере продвижения через сеть дейтаграмма будет дублироваться только на развилках маршрутов от отправителя к получателям. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Обратите внимание нет никакой необходимости включать эту опцию, если вы желаете лишь получать групповые пакеты. Она необходима только если вы собираетесь перенаправлять групповой трафик через вашу систему.

net.ipv4.conf.all.proxy_arp = 0
Включает/выключает проксирование arp-запросов для заданного интерфейса. ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети. С помощью
этого средства происходит обман отправителя, который отправил ARP запрос, после чего он думает, что маршрутизатор является хостом назначения, тогда как в действительности хост назначения находится на другой стороне маршрутизатора. Маршрутизатор выступает в роли уполномоченного агента хоста назначения, перекладывая пакеты от другого хоста. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Дополнительную информацию вы найдете в Proxy-ARP mini HOWTO.

net.ipv4.conf.all.rp_filter = 1
Включает/выключает reverse path filter (проверка обратного адреса хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса. Смысл этой переменной
достаточно прост все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс. Если вы используете расширенную маршрутизацию тем или иным образом, то вам следует всерьез задуматься о выключении этой переменной, поскольку она может послужить причиной потери пакетов. Например, в случае, когда входящий трафик идет через один маршрутизатор, а исходящий через другой. Так, WEB-сервер, подключенный через один сетевой интерфейс к входному роутеру, а через другой к выходному (в случае, когда включен rp_filter), будет просто терять входящий трафик, поскольку обратный маршрут, в таблице
маршрутизации, задан через другой интерфейс. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Однако в некоторых дистрибутивах по-умолчанию эта
переменная включается в стартовых скриптах на этапе загрузки. Поэтому, если у вас эта переменная включена, а вам надо ее выключить просмотрите стартовые скрипты в каталоге rc.d. Более детальную информацию об этой
переменной вы найдете в RFC 1812 – Requirements for IP Version 4 Routers на страницах 46-49 (секция 4.2.2.11), странице 55 (секция 4.3.2.7) и странице 90 (секция 5.3.3.3). Если вы всерьез занимаетесь проблемами маршрутизации, то вам определенно придется изучить этот документ.

net.ipv4.conf.all.secure_redirects = 0
Включает/выключает режим безопасной переадресации. Если переменная выключена, то будут приниматься любые сообщения ICMP Redirect от любого хоста из любого места. Если переменная включена, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть
использованы для перехвата трафика. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Обратите внимание действие этой переменной отменяется переменной
shared_media, так что, если вы включаете secure_redirects, то необходимо включить и shared_media. Лучше отключить данную опцию.

net.ipv4.conf.all.send_redirects = 0
Включает/выключает выдачу ICMP Redirect другим хостам. Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, что он должен вступить в контакт с другим сервером. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Если компьютер не выступает в роли маршрутизатора, то эту переменную можно отключить.

net.ipv4.conf.all.shared_media = 0
Включает/выключает признак того, что физическая сеть является носителем нескольких логических подсетей, например, когда на одном физическом кабеле организовано несколько подсетей с различными сетевыми масками.
Этот признак используется ядром при принятии решения о необходимости выдачи ICMP-сообщений о переадресации. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Эта переменная перекрывает действие переменной secure_redirects.

net.ipv4.route.error_burst = 1250
Переменная используется в паре с error_cost для ограничения количества генерируемых сообщений ICMP Unreachable. Эта переменная несет в себе смысл верхнего предела стоимости передачи сообщений, в то
время как error_cost обозначает цену одного сообщения. Когда error_burst опустошается, то передача сообщений ICMP Unreachable прекращается. Сообщения ICMP Unreachable обычно отсылаются тогда, когда невозможно определить дальнейший маршрут движения пакета. Этому могут быть три причины: 1. Невозможно выполнить передачу хосту. 2. Не известен маршрут к заданному сегменту сети или хосту. 3.Если данный маршрут запрещен набором правил маршрутизации. В этих трех случаях сетевая подсистема генерирует сообщение ICMP Unreachable, свое для каждого случая: 1. ICMP Host Unreachable когда хост, находящийся в той же сети, что и наш роутер недоступен (т.е. не отвечает на ARP-запросы. прим. перев.). 2. ICMP Network Unreachable
когда в таблице маршрутизации роутера нет ни одного маршрута, по которому пакет мог бы быть отправлен дальше. 3. ICMP Communication Administratively Prohibited By Filtering когда пакет не может быть переправлен из-за наличия правил маршрутизации явно запрещающих передачу. Значение по-умолчанию 500. Учитывая значение по-умолчанию
переменной error_cost (100) это соответствует 5-ти сообщениям ICMP Destination Unreachables в секунду.

net.ipv4.route.error_cost = 250
Более подробное описание см. выше error_burst. Основной смысл этой переменной цена одного сообщения ICMP Destination Unreachable. Значение по-умолчанию 100, что подразумевает передачу не более 5-ти сообщений ICMP Destination Unreachable за 1 секунду (если расчет производить с учетом значения по-умолчанию переменной error_burst).

net.ipv4.ipfrag_high_thresh = 262144
Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до
тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем. Пакеты
фрагментируются в том случае, если их размер слишком велик, чтобы быть переданными по данному каналу. Узел-отправитель, в этом случае, режет пакеты на более мелкие части и затем передает их одну за другой. На
узле-получателе эти фрагменты опять собираются в полноценный пакет. Примечательно, что идея фрагментации пакетов, сама по себе, вещь замечательная, но, к сожалению, может быть использована в весьма неблаговидных целях. Переменная содержит целое число в диапазоне 0 .. 2147483647 и означает верхний порог длины очереди фрагментов в байтах. Значение по-умолчанию 262144 байт, или 256 Кб. Этого количества, как правило, вполне достаточно даже для самых крайних случаев.

net.ipv4.conf.all.arp_announce = 2
Определяет каким образом будет аносироваться (объявляться) привязка IP адресов к ARP адресу на интерфейсе (при использовании нескольких IP адресов на одном интерфейсе). Может принимать целые значения: 0 – будет использоваться любой доступный интерфейс и любой доступный адрес, 1 – исключение локальных адресов из ARP анонса, которые не принадлежат подсети получателя , 2 – если не найден IP адрес подсети получателя, то выбирается первый попавшийся адрес и интерфейс, с которого возможна посылка ARP запроса в заданную подсеть. Рекомендую использовать значение 2.

net.ipv4.conf.all.arp_ignore = 2
Целочисленная переменная arp_ignore определяет режим передачи откликов на полученные запросы ARP, относящиеся к локальным IP-адресам: 0 (по умолчанию) – отклики выдаются для любого локального адреса IP, связанного с любым интерфейсом; 1 – отклики выдаются только в тех случаях, когда интересующий адрес IP связан с принявшим запрос интерфейсом; 2 – отклики выдаются только в тех случаях, когда интересующий адрес IP связан с принявшим запрос интерфейсом и этот адрес находится в той же подсети, из которой поступил запрос; 3 – отклики выдаются только на запросы для глобальных и канальных адресов; 4-7 – зарезервированы; 8 – отклики не выдаются ни для каких локальных интерфейсов. Используется большее из 2 значений в файлах /proc/sys/net/ipv4/conf/{all,interface}/arp_ignore. Рекомендую использовать значение 2 для данного параметра.

net.ipv4.neigh.default.mcast_solicit=3
Определяет максимальное количество попыток посылки multicast запросов для определения разрешения сетевого адреса.

net.ipv4.conf.all.app_solicit=2
Определяет максимальное количество попыток посылки ARP запросов прежде, чем будут применены мультикаст попытки разрешения сетевого адреса (см. mcast_solicit).

net.ipv4.ipfrag_secret_interval = 21423
Секретный интервал фрагментации пакетов. Целочисленное значение от 1 до 65535. Рекомендую приложить к данному параметру функцию random и скриптом вставить в cron с некоторым интервалом. 😉

net.ipv4.netfilter.ip_conntrack_checksum = 1
Проверка контрольных сумм приинимаемых пакетов, модуль ip_conntrack должен быть предварительно загружен. Рекомендуемое значение 1.

net.ipv6.conf.all.disable_ipv6 = 1
Запрещаем использование стека IPv6.

net.ipv4.netfilter.nf_conntrack_acct = 1
Отбрасываем (игнорируем) все странные пакеты.

net.ipv4.route.flush = 1
Очистка кеша маршрутов.

 

Метки: , , , , ,