Настраиваем сервер для LiveStreet. Часть III. Некоторые настройки ядра, репозитории и базовые утилиты.
Предыдущие части:
Сначала мы сделаем некоторые настройки ядра, за этот совет благодарность уходит господину ewden .
Редактируем файл /etc/sysctl.conf:
Я привожу конфигурацию от ewden целиком:
Однако, изначально этот файл скорее всего уже будет не совсем «умолчальным», потому что хостеры тоже не дураки, и некоторые изменения вносят сами. Нужно просто внимательно проверить что, из описанного в приведенной конфигурации, уже у вас есть, а чего нет. И внести недостающее, не трогая то, что сделал хостер.
После сохранения изменений, для того чтобы они вступили в силу, выполняем команду:
Теперь нам нужно настроить репозитории для программного обеспечения которое мы будем устанавливать и поставить кое-какие мелкие утилиты, которые понадобятся нам по ходу дела.
Вносим изменения в конфигурационный файл /etс/apt/sources.list
Всё, что там было можно смело удалять. Файл должен стать таким:
Можно сменить немецкое зеркало ftp.de.debian.org на другое, физически более близкое к вашему серверу список вот: www.debian.org/mirror/list
Политика установки пакетов, которой я придерживаюсь:
Именно поэтому dotdeb.org изначально закомментирован. Из него мы будем устанавливать только то, чего нет в других местах в приемлемом виде, когда до этого дойдёт.
На всякий случай устанавливаем кое-что необходимое (вообще-то уже должно быть, но подстрахуемся):
Теперь выполняем последовательность команд чтобы обеспечить ключи для не родных репозиториев:
За последнюю команду благодарность уходит документу от господина xyz
Обновляемся (эти команды будут много чего писать и делать, терпеливо ждём):
И устанавливаем мелочи, которые пригодятся нам позже:
GNU Midnight Commander который запускается командой:
Это файл менеджер очень похожий на старый добрый Norton Commander. Даже многие комбинации клавиш работают так же. Сам по себе он нам не нужен, но просто удобно.
На этом всё. Продолжение в следующей части:
Часть IV. MySQL.
Сначала мы сделаем некоторые настройки ядра, за этот совет благодарность уходит господину ewden .
Редактируем файл /etc/sysctl.conf:
vim /etc/sysctl.conf
Я привожу конфигурацию от ewden целиком:
# Допустим случись у нас какой-то косяк с системой или ядром. # Может произойти паника ядра (Kernel Panic) # На сий случай есть настройка, указывающая, что система должна будет перезагрузится в течении 10 сек в примере: kernel.panic = 12 # включение проверки маршрута от источника. Может быть полезно против некоторых видов спуфинг-атак. net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 # След. опция разрешает/запрещает передачу так называемых syncookies вызывающему хосту # в случае переполнения очереди SYN-пакетов для заданного сокета. Когда в # систему поступает слишком много запросов на соединение, то очередь может # переполниться и тогда запускается передача syncookies в ответ на каждый # SYN-запрос. Эта переменная используется для предотвращения syn-flood атак. net.ipv4.tcp_syncookies=1 # Устанавливает параметры приёма icmp-сообщений о переодресации # Которые используются для уведомления (обычно маршрутизаторов) # О существовании лучшего маршрута передачи пакетов целевому хосту. # Включение параметра может справоцировать атаку человек по середине (Man In The Middle) net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # Разрешает или запрещает нашему хосту передачу выще упомянутых сообщений переадресации. net.ipv4.conf.all.send_redirects = 0 # Позволяет отправителю определить путь, по которому должен следовать пакет по сети. # Может позволить посторонним произвести подмену адресов. net.ipv4.conf.all.accept_source_route = 0 # Игнорироваться ICMP сообщения, отправленные на # широковещательный или групповой адрес. Вполне очевидно, почему полезно # включить этот параметр - защита от smurf атак. net.ipv4.icmp_echo_ignore_broadcasts = 1 # Контролирует процент свободной памяти, при которой начнется активный сброс страниц в раздел swap. vm.swappiness=10
Однако, изначально этот файл скорее всего уже будет не совсем «умолчальным», потому что хостеры тоже не дураки, и некоторые изменения вносят сами. Нужно просто внимательно проверить что, из описанного в приведенной конфигурации, уже у вас есть, а чего нет. И внести недостающее, не трогая то, что сделал хостер.
После сохранения изменений, для того чтобы они вступили в силу, выполняем команду:
sysctl -p
Теперь нам нужно настроить репозитории для программного обеспечения которое мы будем устанавливать и поставить кое-какие мелкие утилиты, которые понадобятся нам по ходу дела.
Вносим изменения в конфигурационный файл /etс/apt/sources.list
vim /etс/apt/sources.list
Всё, что там было можно смело удалять. Файл должен стать таким:
deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free deb http://nginx.org/packages/debian/ squeeze nginx deb-src http://nginx.org/packages/debian/ squeeze nginx deb http://repo.percona.com/apt squeeze main deb-src http://repo.percona.com/apt squeeze main # deb http://packages.dotdeb.org squeeze all # deb-src http://packages.dotdeb.org squeeze all
Можно сменить немецкое зеркало ftp.de.debian.org на другое, физически более близкое к вашему серверу список вот: www.debian.org/mirror/list
Политика установки пакетов, которой я придерживаюсь:
- Первый приоретет: репозитории разработчиков либо .deb пакеты с сайта разработчиков (nginx, Percona Server, Sphinx)
- Второй приоритет: Официальный репозиторий Debian squeeze (stable)
- Третий приоритет: Официальный репозиторий Debian squeeze (squeeze-backports). При условии что версия пакета в squeeze (stable) неприемлемо старая (mod-rpaf, modsecurity, php-apc)
- Последний приоритет: Репозиторий dotdeb.org. Если нет другого выбора, т.е. пакет приемлемой версии отсутствует в официальных стабильных репозиториях Debian (php-fpm и как следствие все php пакеты по зависимостям)
Именно поэтому dotdeb.org изначально закомментирован. Из него мы будем устанавливать только то, чего нет в других местах в приемлемом виде, когда до этого дойдёт.
На всякий случай устанавливаем кое-что необходимое (вообще-то уже должно быть, но подстрахуемся):
apt-get -y install wget gnupg
Теперь выполняем последовательность команд чтобы обеспечить ключи для не родных репозиториев:
wget http://nginx.org/keys/nginx_signing.key
cat nginx_signing.key | apt-key add -
gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | apt-key add -
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | apt-key add -
За последнюю команду благодарность уходит документу от господина xyz
Обновляемся (эти команды будут много чего писать и делать, терпеливо ждём):
apt-get update
apt-get upgrade
И устанавливаем мелочи, которые пригодятся нам позже:
apt-get -y install mc zip unzip pwgen lynx socat
GNU Midnight Commander который запускается командой:
mc
Это файл менеджер очень похожий на старый добрый Norton Commander. Даже многие комбинации клавиш работают так же. Сам по себе он нам не нужен, но просто удобно.
На этом всё. Продолжение в следующей части:
Часть IV. MySQL.
46 комментариев
Можно очень много изменить по мере надобности.
Только надо понимать, всё, что делаешь, иначе этой порой может привести к плохим последствиям.
Кстати. Зачем разом ставить lynx, wget? Их по идее на сервере не нужно, если кушает паранойя. Да и смысла сразу и то и то ставить я как-то не вижу.
Во вторых, sudo вы дальше будете настраивать? Зачем он вам вообще?
sudo — грубо говоря уязвимость, позволяющая обычному пользователю получить права рута.
Зы. Я вот обычно настройками pam-модулей даже запрещаю использовать su всем, кто не в определённой группе.
Если что:
/etc/pam.d/su
Раскомментировать
Потом
Да, sudo по плану собирался коснутся в одной из последних глав. Сейчас просто установили, чтобы был. Но если знаете лучший способ, настроить admin аккаунт, который не root — то можем и отказаться от описания sudo.
Права на настройку системы, установку софта соответственно по соображениям безопасности должен иметь только root.
Если вы админ сервера, я думаю вам не составит труда зайти под своим аккаунтом на сервер, выполнить su и производить любые действия в системе.
Или
По поводу дополнить, не могли бы вы добавить еще чуть информации по поводу iptables, на подобии приметивной защиты от напримерsiege -c 100 domain(or ip) в какой то момент решил ребутнуть сервак, 1 раз за 3 месяца, так перед этим забыл сделать iptables -save :) а там была большая часть ботов из ...apache/error.log и брутфорсеров из .../auth.log (не смотря на fail2ban все равно заносил их в фильтр iptables)
Благо по limit_conn модулю примеров достаточно.
Насчёт правил к iptables, вот, по памяти если не ошибаюсь пример:
Если на 80-TCP порт больше 100 соединений, добавляем в блеклист на 10 минут.
ipset конечно надо будет ещё поставить.
Раздражают — ну попал в бан, и всё. Если у вас fail2ban ещё шлёт на мыло все попытки, и там чаще одни и те-же адреса, можно время бана поставить побольше. Или вообще отключить уведомления.
Честно сказать — не приятно. Ну ладно бы написал бы в комментариях что не так. Конструктивно.
Но это не значит что я не буду писать эти топы дальше — буду :)