Server Security: различия между версиями

Материал из ALT Linux Wiki
(Import from freesource.info)
 
(перенос в категорию admin)
Строка 1: Строка 1:
[[Category:Documentation]]
[[Категория:Admin]]
{{MovedFromFreesourceInfo|AltLinux/Dokumentacija/Bezopasnost}}
{{MovedFromFreesourceInfo|AltLinux/Dokumentacija/Bezopasnost}}


Строка 8: Строка 8:
<blockquote>
<blockquote>
hi all
hi all
Скажу сразу, я не спец по безопасности...
Скажу сразу, я не спец по безопасности…
...
PS
PS
вопрос возник после того, как только что подняв машину завёл пользователя
вопрос возник после того, как только что подняв машину завёл пользователя
admin c паролем admin (думал когда закончу работу поменяю) поставил ssh
admin c паролем admin (думал когда закончу работу поменяю) поставил ssh
и... пошёл на 10 мин в туалет. Когда вернулся дело было уже сделано - уже
и… пошёл на 10 мин в туалет. Когда вернулся дело было уже сделано — уже
кто-то приконектился и начал что-то на мою машину заливать. Удивительно
кто-то приконектился и начал что-то на мою машину заливать. Удивительно
даже - маньяки какие-то... Я ж не супер-мега сервер какой-то, а рядовой
даже — маньяки какие-то… Я ж не супер-мега сервер какой-то, а рядовой
adsl-щик.</blockquote>
adsl-щик.</blockquote>


Строка 22: Строка 22:


И так:
И так:
=== Проверяем, какие сервисы запущены и слушают порты ===
=== Проверяем, какие сервисы запущены и слушают порты ===
  После установки необходимого ПО, проверьте, какие порты открыты.
  После установки необходимого ПО, проверьте, какие порты открыты.
Строка 32: Строка 33:
Да, я уверен, что этот сервис должен слушать этот порт (это 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
Строка 46: Строка 47:
(Я предполагаю, что у вас именно этот пакет. В другом случае, берите на вооружение идею, а реализуйте ее тем инструментарием, который у вас есть).
(Я предполагаю, что у вас именно этот пакет. В другом случае, берите на вооружение идею, а реализуйте ее тем инструментарием, который у вас есть).
Есть два пути настройки iptables, использовать тот файл настроек, который предусмотрен дистрибутивом, и написание собственного скрипта.
Есть два пути настройки iptables, использовать тот файл настроек, который предусмотрен дистрибутивом, и написание собственного скрипта.
Различий мало...
Различий мало…
Я привожу вариант настроек для /etc/sysconfig/iptables.
Я привожу вариант настроек для /etc/sysconfig/iptables.
<pre># Выдержки из файла конфигурации
<pre># Выдержки из файла конфигурации
Строка 99: Строка 100:


Более подробно почитайте [[Документация/firewall|на странице]], подготовленной [http://freesource.info/wiki//VitalyLipatov Виталием Липатовым].
Более подробно почитайте [[Документация/firewall|на странице]], подготовленной [http://freesource.info/wiki//VitalyLipatov Виталием Липатовым].
=== Настраиваем сервисы ===
=== Настраиваем сервисы ===
SSH
SSH
Строка 112: Строка 114:
PermitRootLogin no
PermitRootLogin no
...</pre>
...</pre>
По минимуму, все ...
По минимуму, все
Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья (В конфигураций по умолчанию дистрибутивов ALT почтовик не смотрит в Интернет).
Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья (В конфигураций по умолчанию дистрибутивов ALT почтовик не смотрит в Интернет).

Версия от 17:30, 17 августа 2008

Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Краткие заметки по минимальной защите сервера

На написание данного черновика навел меня вопрос в рассылке:

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 Минимально, нужно ограничить вход в систему для пользователей, которым это не нужно. Оставим только того, кто реально может и должен иметь доступ (и ограничим скорость попыток подключений).

# cat /etc/openssh/sshd_config
...
AllowUsers yourname
AllowGroups wheel
DenyUsers bin nobody sys
DenyGroups users
...
MaxStartups 3:50:6
PermitRootLogin no
...

По минимуму, все … Далее, имеет смысл правильно настроить ваш почтовый сервер, для того, чтобы через него не рассылали спам, но это уже другая статья (В конфигураций по умолчанию дистрибутивов ALT почтовик не смотрит в Интернет).