LinuxForum.Fans
Тема

Вопрос по sysctl.conf

Автор: CyberGod 21 сообщений 7339 просмотров
#226883

Здравствуйте.
Debian 5.3.3-7+squeeze3

В роботе с sysctl.conf я слаб. Хочу задать пару вопросов. Сидел вводил по SSH различное следующим образом:
sysctl net.ipv4.tcp_tw_reuse=1

До этого в sysctl.conf уже была информация вбитая в файл в ручную.
Вводил, вводил потом чтобы применить изменения без перезагрузки сервера ввёл sysctl -p. В результате в файл не то что новые данные не записались, а ещё и старые сбросились и в файле всё стало по дефолту, то есть по сути чисто комментарии.

Почему так произошло, как правильно заносить данные?
А также если просто в командной строке писать различные значения с помощью sysctl они будут действительно до перезагрузки?

#226887

CyberGod, я просто открываю файл /etc/sysctl.conf в редакторе, делаю необходимые изменения, затем, чтобы проверить без перезагрузки, ввожу команду sysctl -p. До сих пор ни разу не подводило. Возможно, вы где-либо ошиблись при вводе команд?

#226889

CyberGod, man sysctl говорит:

text
    -p[FILE], --load[=FILE]
              Load in sysctl settings from the file  specified  or  /etc/sysctl.conf  if
              none  given.   Specifying  -  as filename means reading data from standard
              input.

так что то что писал в консоли можешь нати только в ~/.bash_histoy

#226992

В sysctl.conf я разбираюсь достаточно плохо. Хочу спросить совета.
Есть очень нагруженный сервер на debian squeeze который подвергается DOS/DDOS атакам по 5 раз в день и т.д.
Начал настраивать sysctl.conf чтобы уменьшить нагрузку и отбиться от вредителей, за пример взял http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2Fdebian.telenet.ru%2Fdoc%2Fsysctl.conf&text=%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20sysctl.conf%20%D0%B2%20Debian&l10n=ru&mime=html&sign=4d735e7e91908e4a973d278b2e0ce013&keyno=0 эту документацию.

Документация достаточно популярная, стоит ли брать её за пример? Или может вообще стоить переписать почти всё как там написано?

Переписывать всё не стал, некоторое всё равно надо адаптировать под себя. А кое каких пунктов в там и вовсе нет. Вот что получилось, я понимаю, что посмотреть всё это уйдёт время, но всё же прошу помощи.

А также есть ли разница писать в файл только нужные параметры или писать все даже те у которых значение по дефолту подходящее? Повлияет ли это как-то на скорость? Спрашиваю потому, что если на скорость никак не влияет, я бы предпочёл для наглядности писать все и потом уже править.

Задав что-либо не правильно в sysctl.conf может ли сервер не перезагрузиться?
Если да, то как перед перезагрузкой проверить валидность введённых параметров? Даже если применять с помощью sysctl -p рано или поздно всё равно сервак ребутить прийдётся...

Показать
[console]# Disable ICMP Redirect Acceptance | Отключаем ICMP перенаправление

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0

# This will increase the amount of memory available for socket input/output queues | Увеличиваем объем доступной памяти для сокета ввода / вывода #очереди
net.ipv4.tcp_wmem=4096 16384 4194304
net.ipv4.tcp_rmem=4096 87380 4194304
net.ipv4.tcp_mem=196608 262144 393216
net.ipv4.tcp_max_orphans=65536

#Размер буферов по умолчанию для приема и отправки данных через сокеты
net.core.wmem_default=65536
net.core.rmem_default=25165824

#Увеличиваем максимальный размер памяти отводимой для TCP буферов
net.core.wmem_max=25165824
net.core.rmem_max=25165824
net.core.optmem_max=25165824

# макс количество пакетов в очередь на обработку
net.core.netdev_max_backlog=10000 чем отличается от net.ipv4.tcp_max_syn_backlog = 1024?

#Отключаем перенаправление пакетов с одного сетевого интерфейса на другой.
net.ipv4.ip_forward=0

#Controls the maximum size of a message, in bytes | Контролирует максимальный размер сообщения в байтах
kernel.msgmnb=65536

#Controls the default maximum size of a message queue | Контролирует максимальный размер очереди сообщений.
kernel.msgmax=65536

#Controls the maximum shared segment size, in bytes | Контролирует максимальный общим размер сегмента в байтах.
kernel.shmmax=494967295

#Controls the maximum number of shared memory segments, in pages | Контролирует максимальное количество сегментов разделяемой памяти, в #страницах.
kernel.shmall=268435456

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid=1

#число входящих соединений, которые могут стоять в очереди, прежде чем будут отброшены. Стоит ли делать больше?
net.core.somaxconn=16096

#####Защита от SYN-флуда#####
#Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно.
net.ipv4.tcp_max_tw_buckets=180000

#Включает быструю “переработку” TIME-WAIT сокетов. По умолчанию равняется 0. Включение приводит к малому количеству сокетов в состоянии TIME_WAIT, однако, может

#приводить к ошибкам на системах, которые используют NAT либо участвую в лоадбэлэнсинге.
net.ipv4.tcp_tw_recycle=1

#Параметр ососбенно полезен в системах, в которых большое количестов коротких соединений, которые открываются и практически мгновенно #переходят в состояние TIME_WAIT.

#Примером может служить web-сервер. В данных случаях этот параметр сильно уменьшает нагрузку на сервер за счёт повторного использования сокетов. Что нам и необходимо.
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_window_scaling=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close=30
#Переменная задает максимальное время пребывания сокета в состоянии FIN-WAIT-2.
net.ipv4.tcp_fin_timeout=10
# Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. Дефолтовое значение - 2 часа.
net.ipv4.tcp_keepalive_time=15 или net.ipv4.tcp_keepalive_time=1800 ? Везде пишут по разному, почему такая разница?
# Повторить пробу через десять секунд
net.ipv4.tcp_keepalive_intvl=10
# Количество проверок перед закрытием соединения
net.ipv4.tcp_keepalive_probes=5

#Переменная определяет макс время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, #пакета.
#Увеличение очереди «полуоткрытых» TCP-соединений:
net.ipv4.tcp_max_syn_backlog=2048

#Уменьшение времени удержания «полуоткрытых» соединений:
net.ipv4.tcp_synack_retries=1

#Включение механизма TCP syncookies:
net.ipv4.tcp_syncookies=1


##### Защита от спуфинга #####
#IP-спуфинг – атака, при которой злоумышленник, манипулируя исходящими адресами, посылает пакеты от имени другого хоста. IP-спуфинг часто #используется для проведения

#DoS-атак. Защититься можно с помощью механизма Source Address Verification.

#Включаем защиту от IP спуфинга, и проверку маршрута от источника

#сообщает ядру о необходимости фильтрации пакетов по их исходящему адресу.
net.ipv4.conf.all.rp_filter=1

#Фильтр обратного пути, защита от спуфинга (подмен адресов)
net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.eth0.rp_filter=1

#Отключаем маршрутизацию TCP пакетов от источника
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0

net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
##### Защита от спуфинга End #####

##### ICMP-флуд #####
#Игнорируем пинги
net.ipv4.icmp_echo_ignore_all=1

#Игнорируем широковещательные запросы
net.ipv4.icmp_echo_ignore_broadcasts=1


##### ICMP-флуд End #####[/console]

С нетерпением жду ответа, заранее спасибо.

#227000

CyberGod, я рад за то что ты разбираешься с sysctl.conf. Но почему для сообщений не используешь теги code, spoiler, console? Читать внавал скинутую информацию сложно мильон раз говорил...

#227008

Исправился... А теперь уважаемые форумчане жду ваших ответов по вопросам написанным выше.

#227012

CyberGod, ddos'ят - iptables в руки, политики в drop, ограничиваешь кол-во подключение с одного ip, отсеиваешь плохие пакеты и тп.

#227031

Это разумеется. Но сейчас тема не о iptables, решил по порядку, сначала настроить sysctl.conf, а потом уже за iptables браться.

Ответьте хотя бы на это:

А также есть ли разница писать в файл только нужные параметры или писать все даже те у которых значение по дефолту подходящее? Повлияет ли это как-то на скорость? Спрашиваю потому, что если на скорость никак не влияет, я бы предпочёл для наглядности писать все и потом уже править.


Чтобы я смог рассеять сомнения.

#227032
CyberGod написал:

А также есть ли разница писать в файл только нужные параметры или писать все даже те у которых значение по дефолту подходящее? Повлияет ли это как-то на скорость? Спрашиваю потому, что если на скорость никак не влияет, я бы предпочёл для наглядности писать все и потом уже править.

Пишите как вам удобнее. Доли секунды, которые понадобятся на их применение при загрузке, погоды не сделают.

#227035

net.ipv4.tcp_keepalive_time=15 или net.ipv4.tcp_keepalive_time=1800 ? Везде пишут по разному, почему такая разница и как правильно?

#227038

CyberGod, я уже как-то говорил про дефолт, он не просто так разработчиками устанавливается, мой совет - не знаешь - use default settings.
То бишь пиши в sysctl.conf _только_ то что хочешь изменить.
Лучше вот над этим поразмысли:

text
iptables -A bad_packets -m state --state INVALID -j LOG --log-prefix "Invalid packet: "
iptables -A bad_packets -m state --state INVALID -j DROP
iptables -A bad_packets -p tcp -j bad_tcp_packets
iptables -A bad_packets -j RETURN
iptables -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn: "
iptables -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A bad_tcp_packets -p tcp -j RETURN 
#227040
CyberGod написал:
net.ipv4.tcp_keepalive_time=15 или net.ipv4.tcp_keepalive_time=1800 ? Везде пишут по разному, почему такая разница и как правильно?

Ну и как ты понимаешь этот параметр?

#227057

newzenon, спасибо за правила Iptables. Добавлю к своим и поразмыслю.

Ну и как ты понимаешь этот параметр?

Определяет как часто следует проверять соединение. Значение в секундах. Смысла в проверки разв 30 минут не вижу. Значит в данном случаи больше подходит 15 секунд.

#227113

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

Показать

[console]
net.ipv4.tcp_max_orphans=65536

# макс количество пакетов в очередь на обработку
net.core.netdev_max_backlog=10000

#число входящих соединений, которые могут стоять в очереди, прежде чем будут отброшены.
net.core.somaxconn=16096

#####Защита от SYN-флуда#####
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_rfc1337=1
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close=30
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=10
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_max_syn_backlog=2048

#Уменьшение времени удержания «полуоткрытых» соединений:
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syncookies=1

##### Защита от спуфинга #####
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.eth0.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
##### Защита от спуфинга End #####

##### ICMP-флуд #####
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
##### ICMP-флуд End #####

# Disable ICMP Redirect Acceptance | Отключаем ICMP перенаправление
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
[/console]

Буду рад если прокомментируете и укажите на ошибки если они есть. Вношу в sysctl.conf...

Перехожу к следующему этапу, буду читать документации по iptables и собирать нужные правила.

Всем спасибо.

#227195

Какой тайный смысл каждый интерфейс прописывать?

text
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.eth0.rp_filter=1

если все равно

text
net.ipv4.conf.all.rp_filter=1
#227196

А вот это нафига?

text
net.ipv4.icmp_echo_ignore_all=1

так пинга вообще не будет никакого, это с iptables делают, тут надо разрешить.
Типы ICMP-сообщений.

text
0 — echo reply (echo-ответ, пинг)
3 — destination unreachable (адресат недосягаем)
4 — source quench (подавление источника, просьба посылать пакеты медленнее)
5 — redirect (редирект)
8 — echo request (echo-запрос, пинг)
9 — router advertisement (объявление маршрутизатора)
10 — router solicitation (ходатайство маршрутизатора)
11 — time-to-live exceeded (истечение срока жизни пакета)
12 — IP header bad (неправильный IPзаголовок пакета)
13 — timestamp request (запрос значения счетчика времени)
14 — timestamp reply (ответ на запрос значения счетчика времени)
15 — information request (запрос информации)
16 — information reply (ответ на запрос информации)
17 — address mask request (запрос маски сети)
18 — address mask reply (ответ на запрос маски сети) 

Запрет опасных ICMP-сообщений.

text
iptables -A INPUT -p icmp -icmp-type 3,8,12 -j ACCEPT
iptables -A OUTPUT -p icmp -icmp-type 0,3,4,11,12 -j ACCEPT
#227254


[console]Какой тайный смысл каждый интерфейс прописывать?
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.eth0.rp_filter=1
если все равно
net.ipv4.conf.all.rp_filter=1
[/console]

Действительно не разумно, спасибо исправлю.

А вот это нафига?
net.ipv4.icmp_echo_ignore_all=1

На это и был расчёт, кому пинг нужен?
Тем более, что некоторые "вредители" ищут жертв проверяю именно способность пинговаться.
А так пинг не нужен и команда блокирует любой пинг, не нужны правила по icmp в iptables.
В любом случаи спасибо за то, что прокоментил данную переменную. Пока оставлю.

Правила iptabes возму на заметку. Но пока на тему iptables я ещё не могу говорить сначало надо прочитать хотя бы несколько статей и документаций, собрать правила на свой взгляд. А потом уже создам отдельную тему про iptables где выставлю правила на обсуждение и попрошу коментов.

#228539


iptables -A bad_packets -m state --state INVALID -j LOG --log-prefix "Invalid packet: "
iptables -A bad_packets -m state --state INVALID -j DROP
iptables -A bad_packets -p tcp -j bad_tcp_packets
iptables -A bad_packets -j RETURN
iptables -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn: "
iptables -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j LOG --log-prefix "Stealth scan: "
iptables -A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A bad_tcp_packets -p tcp -j RETURN

Ни одна из этих команд не сработала, пишет: iptables: No chain/target/match by that name. Я так понимаю дело в bad_tcp_packets ?

#228548

CyberGod, сначала цепочку bad_tcp_packets надо создать:

text
iptables - N bad_tcp_packets
#228590

Можно вопрос? Какой вы обслуживаете хостинг?
Спрашиваю зад тем чтоб на нём не размещать сайты.

Войдите или зарегистрируйтесь, чтобы ответить.