воскресенье, 1 декабря 2013 г.

Оптимизация сервера #1 Security

Начнем по безопастности и подключениям

 

 Немного обезопасим SSH

Самый простой выход — сменить порт ssh с 22 на любой другой.
nano /etc/ssh/sshd_config 
Ищем строку «Port 22» и заменяем её на «Port 354» где 354 любое число в пределах от 1 до 65535

На всякий случай посмотрим открытые порты: 
netstat -tupln | grep LISTEN 

Ограничим тип адресов для подключения(IPv6 либо IPv4). 
Если у вас на сервере не используется IPv6, то дописываем файл 
/etc/ssh/sshd_config: 
AddressFamily inet 
Запрещаем попытку входа с пустым паролем. Ищем PermitEmptyPasswords и выставляем no 
PermitEmptyPasswords no  
 Сохраняем и перезапускаем ssh демон: 
/etc/init.d/ssh restart 

Ковыряем системные переменные, защищаемся от некоторых видов атак

 Данные параметры дают некоторую масло-масленность и в некоторых случаях повышают нагрузку. Редактируем /etc/sysctl.conf
nano /etc/sysctl.conf 
 Дописываем в конец
 
# Защита от smurf-атак
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Защита от неправильных ICMP-сообщений
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Защита от SYN-флуда
net.ipv4.tcp_syncookies = 1
# Запрещаем маршрутизацию от источника
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Защита от спуфинга
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Мы не маршрутизатор, если конечно это так
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Включаем ExecShield при атаках направленных на переполнение буфера или срыв стэка
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Расширяем диапазон доступных портов
net.ipv4.ip_local_port_range = 2000 65000
# Увеличиваем максимальный размер TCP-буферов
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1

#ускоряем высвобождение памяти(см. "Ускоряем общую работу системы")
vm.swappiness=10 
  
 Теперь можно перезагрузится

Ускоряем общую работу системы

Prelink и Preload. Prelink для создание статичных адресов библиотек, Preload это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает.
1. Установка Prelink:
apt-get -y install prelink
Редактируем файл /etc/default/prelink:
nano /etc/default/prelink
Измените строку с PRELINKING=unknown на PRELINKING=yes
Запускаем:
/etc/cron.daily/prelink
2. Установка Preload:
apt-get -y install preload
Все, больше ничего не требуется

Настраиваем брандмауэр(фаерволл)

Далее будут очень сомнительные конфигурации. Настраиваем число подключений с одного IP адреса. Спасает при некоторых видах DOS атак и брутфорса.

Выполняем:
iptables -A INPUT -p tcp --dport 80 -i eth0 \ -m state --state NEW -m recent --set
 далее:
iptables -A INPUT -p tcp --dport 80 -i eth0 \ -m state --state NEW -m recent --update \ --seconds 15 --hitcount 20 -j DROP
Данное правило ограничивает больше 20-ти подключение к 80 порту(web) за 15 секунд с 1 ip адреса.
iptables -A INPUT -p tcp --dport 354 -i eth0 \ -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 354 -i eth0 \ -m state --state NEW -m recent --update \ --seconds 60 --hitcount 4 -j DROP
 Где 354 порт вашего ssh сервера. Правило ограничивает количество подключений, не более 4-х подключений за 1 минуту. На деле у меня не получалось авторизовать более 1 раза за минуту.

Далее это правило вы дальше можете адаптировать под себя и другие сервисы.

После рестарта системы все правила обнулятся, по этому делаем следующее:
создаем и редактируем файл /etc/network/if-up.d/00-iptables
nano -w /etc/network/if-up.d/00-iptables 
Пишем в него:
#!/bin/sh
iptables-restore < /etc/firewall.conf  
 сохраняем и делаем файл исполняемым:
chmod +x /etc/network/if-up.d/00-iptables
Сохраняем правила в файл:
iptables-save | sudo tee /etc/firewall.conf
 
Всё, правила настроены и сохранятся после перезагрузки системы.  








Комментариев нет:

Отправить комментарий