Server Security: различия между версиями
(перенос в категорию admin) |
Нет описания правки |
||
(не показано 6 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{викифицировать}} | |||
{{ | {{stub}} | ||
== Краткие заметки по минимальной защите сервера == | == Краткие заметки по минимальной защите сервера == | ||
На написание данного черновика навел меня вопрос в рассылке: | На написание данного черновика навел меня вопрос в рассылке: | ||
<blockquote> | <blockquote> | ||
hi all | hi all <br> | ||
Скажу сразу, я не спец по безопасности… | Скажу сразу, я не спец по безопасности…<br> | ||
… | …<br> | ||
PS | PS | ||
вопрос возник после того, как только что подняв машину завёл пользователя | вопрос возник после того, как только что подняв машину завёл пользователя | ||
Строка 16: | Строка 15: | ||
кто-то приконектился и начал что-то на мою машину заливать. Удивительно | кто-то приконектился и начал что-то на мою машину заливать. Удивительно | ||
даже — маньяки какие-то… Я ж не супер-мега сервер какой-то, а рядовой | даже — маньяки какие-то… Я ж не супер-мега сервер какой-то, а рядовой | ||
adsl-щик.</blockquote> | adsl-щик. </blockquote> | ||
В этой заметке я хочу собрать советы и рекомендации, скорее идеи, как настроить некоторый уровень безопасности сервера или рабочей станции | В этой заметке я хочу собрать советы и рекомендации, скорее идеи, как настроить некоторый уровень безопасности сервера или рабочей станции при подключении к Интернет. | ||
Эти рекомендации ни в коем случае не обеспечат абсолютной защиты вашего сервера (такой не существует), но большинство атак отразить помогут. | Эти рекомендации ни в коем случае не обеспечат абсолютной защиты вашего сервера (такой не существует), но большинство атак отразить помогут. | ||
=== Проверяем, какие сервисы запущены и слушают порты === | === Проверяем, какие сервисы запущены и слушают порты === | ||
После установки необходимого ПО, проверьте, какие порты открыты. | |||
<pre># netstat -nap | <pre># netstat -nap | ||
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name | ||
Строка 30: | Строка 27: | ||
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5584/cyrus-master | tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5584/cyrus-master | ||
...</pre> | ...</pre> | ||
Приведенная строка информирует нас о том, что на всех сетевых адресах открыт порт 993, и слушает его cyrus-master. <br> | |||
Да, я уверен, что этот сервис должен слушать этот порт (это IMAPS). Надписи вида 127.0.0.1:xxx в третьей колонке означают, что сервис работает только в пределах самой машины (считается безопасным). | Да, я уверен, что этот сервис должен слушать этот порт (это IMAPS). Надписи вида 127.0.0.1:xxx в третьей колонке означают, что сервис работает только в пределах самой машины (считается безопасным). | ||
Если вы обнаружите открытый порт и сервис, который вам не известен, разберитесь досконально, что это и для чего нужно, прежде чем отключать. | Если вы обнаружите открытый порт и сервис, который вам не известен, разберитесь досконально, что это и для чего нужно, прежде чем отключать. | ||
Если данный сервис нужен в локальной сети, но не должен быть доступен извне, посмотрите в настройки данного сервиса, наиболее вероятным параметром будет LISTEN | Если данный сервис нужен в локальной сети, но не должен быть доступен извне, посмотрите в настройки данного сервиса, наиболее вероятным параметром будет LISTEN. | ||
Например, настройки сервера ssh: | Например, настройки сервера ssh: | ||
<pre># cat /etc/openssh/sshd_config | <pre># cat /etc/openssh/sshd_config | ||
Строка 99: | Строка 96: | ||
-A input_ext -p tcp -m tcp --dport 2000 -j DROP</pre> | -A input_ext -p tcp -m tcp --dport 2000 -j DROP</pre> | ||
Более подробно почитайте [[ | Более подробно почитайте [[firewall|на странице]], подготовленной [http://freesource.info/wiki//VitalyLipatov Виталием Липатовым]. | ||
=== Настраиваем сервисы === | === Настраиваем сервисы === | ||
SSH | ====SSH==== | ||
Минимально | Минимально нужно ограничить вход в систему для пользователей, которым это не нужно. Оставим только того, кто реально может и должен иметь доступ (и ограничим скорость попыток подключений), и/или установим/настроим дополнительно sshutout. | ||
<pre># cat /etc/openssh/sshd_config | <pre># cat /etc/openssh/sshd_config | ||
... | ... | ||
Строка 115: | Строка 112: | ||
...</pre> | ...</pre> | ||
По минимуму, все … | По минимуму, все … | ||
Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья ( | Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья (в дистрибутивах ALT Linux, в конфигурации по умолчанию, почтовик не смотрит в Интернет). | ||
[[Категория:Admin]] | |||
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 17:59, 1 июля 2015
Краткие заметки по минимальной защите сервера
На написание данного черновика навел меня вопрос в рассылке:
hi all
Скажу сразу, я не спец по безопасности…
…
PS вопрос возник после того, как только что подняв машину завёл пользователя admin c паролем admin (думал когда закончу работу поменяю) поставил ssh и… пошёл на 10 мин в туалет. Когда вернулся дело было уже сделано — уже кто-то приконектился и начал что-то на мою машину заливать. Удивительно даже — маньяки какие-то… Я ж не супер-мега сервер какой-то, а рядовойadsl-щик.
В этой заметке я хочу собрать советы и рекомендации, скорее идеи, как настроить некоторый уровень безопасности сервера или рабочей станции при подключении к Интернет. Эти рекомендации ни в коем случае не обеспечат абсолютной защиты вашего сервера (такой не существует), но большинство атак отразить помогут.
Проверяем, какие сервисы запущены и слушают порты
После установки необходимого ПО, проверьте, какие порты открыты.
# netstat -nap Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ... tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5584/cyrus-master ...
Приведенная строка информирует нас о том, что на всех сетевых адресах открыт порт 993, и слушает его cyrus-master.
Да, я уверен, что этот сервис должен слушать этот порт (это IMAPS). Надписи вида 127.0.0.1:xxx в третьей колонке означают, что сервис работает только в пределах самой машины (считается безопасным).
Если вы обнаружите открытый порт и сервис, который вам не известен, разберитесь досконально, что это и для чего нужно, прежде чем отключать.
Если данный сервис нужен в локальной сети, но не должен быть доступен извне, посмотрите в настройки данного сервиса, наиболее вероятным параметром будет LISTEN.
Например, настройки сервера ssh:
# cat /etc/openssh/sshd_config ... #Port 22 #ListenAddress 0.0.0.0 #ListenAddress :: ...
В моем примере данная настройка не используется, а вы поступайте по своему разумению.
Настраиваем firewall
Возможна ситуация, когда необходимый сервис не имеет такой настройки, и слушает все сетевые интерфейсы. В таком случае необходимо настроить iptables. (Я предполагаю, что у вас именно этот пакет. В другом случае, берите на вооружение идею, а реализуйте ее тем инструментарием, который у вас есть). Есть два пути настройки iptables, использовать тот файл настроек, который предусмотрен дистрибутивом, и написание собственного скрипта. Различий мало… Я привожу вариант настроек для /etc/sysconfig/iptables.
# Выдержки из файла конфигурации *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT DROP [0:0] # Создаем два новых канала :input_ext - [0:0] :input_int - [0:0] -A INPUT -i lo -j ACCEPT # Пакеты с адресами внутренней сети не имеют права выходить во внешние каналы -A OUTPUT -s 192.168.0.0/255.255.255.0 ! -o eth0 -j DROP # Эти строки разрешают уже открытые соединения -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT # Перенаправляем входящие пакеты с различных интерфейсов в разные каналы -A INPUT -i eth0 -j input_int -A INPUT -i ! eth0 -j input_ext # Ловушки для взломщиков SSH -A input_ext -p tcp -m state --state NEW --dport 22 -m recent --name sshattack --set -A input_ext -p tcp -m state --state ESTABLISHED --tcp-flags FIN,ACK FIN,ACK --dport 22 -m recent --name sshattack --set -A input_ext -p tcp -m state --state ESTABLISHED --tcp-flags RST RST --dport 22 -m recent --name sshattack --set -A input_ext -m recent --name sshattack --update --seconds 60 --hitcount 4 -m limit --limit 4/minute -j LOG --log-prefix SSH_attack:_ -A input_ext -m recent --name sshattack --update --seconds 60 --hitcount 4 -j DROP # Ловушки для сканеров (на этих портах дежурит portcentry) -A input_ext -p tcp -m tcp --dport 1 -j ACCEPT -A input_ext -p tcp -m tcp --dport 7 -j ACCEPT -A input_ext -p tcp -m tcp --dport 15 -j ACCEPT -A input_ext -p udp -m udp --dport 1 -j ACCEPT -A input_ext -p udp -m udp --dport 7 -j ACCEPT -A input_ext -p udp -m udp --dport 15 -j ACCEPT -A input_ext -p tcp -m tcp --dport 23 -j ACCEPT # Рабочие порты (тут дежурят настоящие сервисы) -A input_ext -p tcp -m tcp --dport 25 -j ACCEPT -A input_ext -p tcp -m tcp --dport 22 -j ACCEPT -A input_ext -p tcp -m tcp --dport 993 -j ACCEPT # Все, в чем я не уверен... Может быть это параноя... -A input_ext -p tcp -m tcp --dport 21 -j DROP -A input_ext -p tcp -m tcp --dport 80 -j DROP -A input_ext -p tcp -m tcp --dport 111 -j DROP -A input_ext -p tcp -m tcp --dport 113 -j DROP -A input_ext -p tcp -m tcp --dport 135 -j DROP -A input_ext -p tcp -m tcp --dport 139 -j DROP -A input_ext -p tcp -m tcp --dport 143 -j DROP -A input_ext -p tcp -m tcp --dport 389 -j DROP -A input_ext -p tcp -m tcp --dport 445 -j DROP -A input_ext -p tcp -m tcp --dport 621 -j DROP -A input_ext -p tcp -m tcp --dport 631 -j DROP -A input_ext -p tcp -m tcp --dport 653 -j DROP -A input_ext -p tcp -m tcp --dport 2000 -j DROP
Более подробно почитайте на странице, подготовленной Виталием Липатовым.
Настраиваем сервисы
SSH
Минимально нужно ограничить вход в систему для пользователей, которым это не нужно. Оставим только того, кто реально может и должен иметь доступ (и ограничим скорость попыток подключений), и/или установим/настроим дополнительно sshutout.
# cat /etc/openssh/sshd_config ... AllowUsers yourname AllowGroups wheel DenyUsers bin nobody sys DenyGroups users ... MaxStartups 3:50:6 PermitRootLogin no ...
По минимуму, все … Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья (в дистрибутивах ALT Linux, в конфигурации по умолчанию, почтовик не смотрит в Интернет).