Rate this post

Сохранность сервера Linux отыграет основную роль в защите конфиденциальности ваших данных и интеллектуальной собственности от рук взломщиков (хакеров). За безопасность системы Linux отвечает именно системный администратор. В первой части этой статьи о безопасности сервера Linux, я приведу 20 рекомендаций для установки по умолчанию системы Linux, которые сделают вашу систему более устойчивой и надёжной.

nn

Рекомендации, с которыми нужно считаться, если вы пользуетесь сервером Linux:

(Предполагается, что вы пользуетесь CentOS/RHEL или Ubuntu/Debian на основе системы Linux.)n

1. Шифрование информации

Все данные, что передаются через сеть, открыты для мониторинга. Используя ключи/сертификаты, пароль их можно зашифровать.nnТакже обратите внимание на SCP, SSH, Rsync или SFTP. Вы можете установить удаленный сервер файловой системы или свой собственный домашний сервер с помощью специальных SSHFS инструментов.nnGnuPG позволяет шифровать и подписывать ваши данные и сообщения, имеет универсальный ключ системы менеджмента, а также модули доступа ко всем видам открытых ключей.nnFugu является графической оболочкой к обеспечению для передачи файлов (SFTP). SFTP похож на FTP, но в отличие от FTP, весь текст является зашифрованным, то есть пароли не передаются в виде открытого текста, и, таким образом, гораздо менее подвержены вероятности стороннего перехвата. Другим вариантом является FileZilla — клиентская кросс-платформа, которая поддерживает FTP, FTP через SSL / TLS (FTPS) и SSH протоколы передачи файлов (SFTP).nnOpenVPN является экономически выгодным, легким SSL VPN.nnLighttpd SSL (Secure Server Layer) — настройка и установка HttpsnnApache SSL (Secure Server Layer) — настройка и установка HTTPS (mod_ssl)n

  • Избегайте использования FTP, Telnet и Rlogin / Rsh услуг

В большинстве конфигураций сети имена пользователей, пароли, FTP/ telnet/ rsh команды и передаваемые файлы могут быть перехвачены всеми пользователями сети, которые используют программы перехвата пакетов. Общим решением этой проблемы является использование либо OpenSSH, SFTP или FTPS (FTP через SSL), что добавляет SSL, шифрование TLS по протоколу FTP. Введите следующую команду, чтобы удалить NIS, rsh и другие устаревшие службы

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

2. Если вы хотите свести к минимуму любые уязвимости, то уменьшите количество установленного программного обеспечения

Вам действительно нужны все установленные веб-сервисы? Не устанавливайте ненужное программное обеспечение, чтобы избежать уязвимости. С этой целью станет пригодным менеджер программ RPM, например, как yum или apt-get или dpkg для того, чтобы отслеживать все установленные программные обеспечения в системе. Все ненужные лучше удалить.n

# yum list installednn# yum list packageNamenn# yum remove packageName

Илиn

# dpkg —listnn# dpkg —info packageNamenn# apt-get remove packageName

3. Каждая система и каждый экземпляр виртуальной машины нуждается в отдельном сетевом сервисе.

Для запуска отдельных серверов рекомендуется использовать разные сервера или отдельных экземпляры виртуальных машин. Это существенно сократит количество сервисов, на которые может распространятся вредное влияние. Например, сервис Apache. Если хакер взломает сервис, то без особого труда сможет получить доступ ко всему серверу, и к другим сервисам, таким как MySQL, почтовый сервер и т.п.n

4. Всегда вовремя обновляйте ядро Linux и прикладные программы

Если вы хотите надёжно защитить свой Linux, то вынуждены регулярно обновлять патчи безопасности. Безусловно, Linux сможет дать вам всё необходимое для обновления вашей системы до последней версии достаточно оперативно. С этой целью успешно справится менеджер пакетов RPM, например, как yum, apt-get, dpkg

# yum update

илиn

# apt-get update && apt-get upgrade

Linux предоставляет очень удобную функцию настройки Red hat / CentOS / Fedora Linux таким образом, что yum будет регулярно присылать вам по e-mail сообщения о новых обновлениях. Но есть и другой вариант.  Вы можете использовать cron, просто поставив там задание проверять и выполнять все обновления Linux. Также вы можете установить напоминания, используя apticron.n

5. Для повышения безопасности Linux рекомендуется использовать соответствующие расширения

При пользовании системой Linux обратите внимание на патчи, которые отвечают за безопасность. Они хорошо справляются с такими задачами, как неверно работающие или зараженные программы. SELinux и другие расширения Linux ставят некоторые ограничения, которые существенно влияют на защиту вашей системы при работе с сетью и другими программами.n

  • SELinux

Расширение SELinux имеет очень хорошее преимущество, как принудительное управление доступом (Mandatory Access Control — MAC). Используя стандартные средства избирательного управления доступом (Discretionary Access Control – DAC), можно дать возможность приложениям и процессам иметь идентификатор пользователя UID или суперпользователя SUID, пользоваться пользовательскими правами для работы с объектами (файлы, сокеты и т.д.). Если вы запускаете ядро, используя MAC, то обезопасываете вашу систему от заражённых или повреждённых приложений, что является очень опасным для любой системы и может привести к нарушению работы или полного выведения из строя. Если вы не умеете работать с расширением SELinux, то вам поможет официальная документация Redhat.n

6. Как подобрать хороший пароль?

Создание и управление регистрационными записями пользователей становится более удобным, если знать такие команды, как useradd / usermod. Но перед тем хорошо бы удостоверится, что ваши пароли являются сложными и надёжными. Рекомендуется, чтобы длина хорошего пароля не была меньше 8 символов, а также в нем должны присутствовать прописные и строчные буквы, цифры, специальные символы и т.д.nnХорошо бы обратить внимание на «John the ripper». Программа замечательно справится с задачей поиска слабых паролей на вашем сервере, pam_cracklib.so поможет проверить пароль, используя словарь.n

  • Как долго может действовать пароль и как изменить параметры, связанные с этим?

С помощью команды chage имеется возможность сменить конфигурации, которые подскажут вам, когда нужно будет применить новый пароль.Дата последнего изменения пароля сохраняется в системе для определения точного срока введения нового пароля. Если вы хотите посмотреть информацию о теневых паролях, то загляните в файл /etc/login.defs. Если вас устраивает ваш пароль, и вы не хотите его изменять, то введите

chage -M 99999 userName

Если вам интересно, когда буде нужно снова поменять пароль, то введите

chage -l userName

Зайдя в /etc/shadow file вы можете внести некоторые изменения

{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:

Minimum_days-это наименьшее число дней, которое должно пройти, прежде чем пользователь сможет сменить свой пароль.nnMaximum_days- наибольшее число дней пользования теперешним паролем. По истечению этого срока пользователь обязан ввести новый пароль.nnWarn-число дней перед датой окончания работы пароля, когда пользователю начнут приходить оповещения о том, что через такое-то количество дней вы должны ввести новый пароль.nnExpire- число дней, через которое, начиная с 1 января 1970 г., вы не сможете войти в свою систему.nnУдобнее буде использовать команду chage вместо изменения файла /etc/shadow самому

# chage -M 60 -m 7 -W 7 userName

  • Повторное использование паролей

Также в Linux присутствует такая функция, как запрещение использывания старых паролей. В параметре remember модуля pam_unix можно ввести число паролей, которое нерекомендуется использовать снова (по давности).n

  • Действия Linux в случаи несанкционированного доступа

Применяя команду faillog, вы можете посмотреть данные о попытках неудачного доступа в систему, а также имеете возможность установить лимит. Эти данные взяты из файла var/log/faillog database / log. Если вам нужно разблокировать систему, то нужно ввести

faillog-r-u userName

Также можно воспользоваться командой passwd

# lock account — блокирование учетной записиnnpasswd-l userNamenn# unlocak account — разблокирование учетной записиnnpasswd -u userName

  • Как проверить не используете вы «пустые» пароли?

Наберите следующую команду

# awk -F: ‘($2 == «») {print}’ /etc/shadow

Чтобы заблокировать все учетные записи с «пустым» паролем, введите

# passwd -l accountName

  • Проверьте нет ли регистраций, отличных от Root, имеющих UID, установленный в 0

Только учетная запись пользователя с правами root имеет UID 0 с полными правами доступа в систему. Если вы хотите посмотреть на все учетные записи, у которых UID установлен в 0, введите

# awk -F: ‘($3 == «0») {print}’ /etc/passwd

Там вы должны увидеть

root:x:0:0:root:/root:/bin/bash

Если там есть другой текст, то его следует стереть или проверить на разрешение использовать UID 0.n

7. Не позволяйте программам с правами root доступ к системе

Не стоит входить в систему с настройками root. Если вам нужно выполнить соответствующие действия, то используйте команду sudo. Она имеет существенные преимущества перед root, ведь имеет лучший показатель безопасности, а также не принуждает раздавать пароль root другим пользователям и администраторам. Команда sudo также, при потребности, обладает возможностями аудита и отслеживанием событий.n

8. Сервер нуждается в предохранении от физического воздействия

Консоли сервера Linux нуждаются в предохранении от физического воздействия. Вы должны настроить BIOS и не позволить загрузке с DVDs / CDs / USB. Лучше всего будет поставить пароль BIOS и пароль загрузки grub. Все системные блоки должны быть в отдельном помещении, а персонал должен проходить тщательную проверку, прежде чем получить к ним доступ.n

9. Неактуальные сервисы должны быть в состоянии неактивности

Все неактуальные сервисы и демоны (сервисы, которые запускаются в фоновом режиме) должны быть в состоянии неактивности. Рекомендуется удалить все неактуальные сервисы, которые запускаются при запуске системы. Для того, чтобы получить список сервисов на уровне запуска 3 (run level # 3) наберите

# chkconfig —list | grep ‘3:on’

Чтобы отключить сервис, введите

# service serviceName stopnn# chkconfig serviceName off

  • Определите, какие сетевые порты прослушиваются

Если вы хотите увидеть список всех открытых портов и связанных с ними программ, введите

netstat -tulpn

илиn

nmap -sT -O localhostnnnmap -sT -O server.example.com

Iptables поможет вам закрыть открытые порты, а также команды service и chkconfig остановят все ненужные сетевые сервисы.n

  • Обратите внимание и на эти ссылки:

Команда в Redhat Enterprise / CentOS Linux, аналогичная команде update-rc.d.nnUbuntu / Debian Linux: Запуск/оставновка системных сервисов с помощью средств конфигурирования сервисов.nnИспользование команды netstat для получения подробной информации об IP, с которого выполнено подключение.n

10. Деинсталлируйте X Window

У вас нет потребности использовать X Window. Удаления этого сервиса поможет вам повысить безопасность и скорость работы системы. Отредактируйте файл /etc/inittab и установите уровень запуска (run level) равным 3. Для удаления введите

# yum groupremove «X Window System»

11. Сконфигурируйте Iptables и используйте TCPWrapper-ы

Linux также имеет и брандмауэр (Netfilter), приложение Iptables поможет вам настроить его лично под ваши потребности. Брандмауэр будет фильтровать весь входящий трафик и пропускать только соответствующие вашим параметрам. Также используйте TTCPWrapper-ы — кросс-хостинговые сетевые системы ACL (листы контроля доступа), применяемые для фильтрации доступа из сети в Интернет. Атаки, такие как «denial of service» (отказ в обслуживании), можно предотвратить с помощью Iptables.n

12. Защитите доступ к файлу /etc/sysctl.conf ядра Linux

Для изменения настроек в ядре Linux используйте файл /etc/sysctl.conf. Пример файла /etc/sysctl.conf

# Turn on execshieldnnkernel.exec-shield=1nnkernel.randomize_va_space=1nn# Enable IP spoofing protectionnnnet.ipv4.conf.all.rp_filter=1nn# Disable IP source routingnnnet.ipv4.conf.all.accept_source_route=0nn# Ignoring broadcasts requestnnnet.ipv4.icmp_echo_ignore_broadcasts=1nnnet.ipv4.icmp_ignore_bogus_error_messages=1nn# Make sure spoofed packets get loggednnnet.ipv4.conf.all.log_martians = 1

13. Используйте различные дисковые разделы

Если вы хотите повысить качество работы системы и безопасность, то размещайте файлы операционной системы отдельно от ваших (пользовательских) файлов. Удостоверьтесь, что они расположены на разных разделах диска

/usrnn/homenn/var and /var/tmpnn/tmp

Создайте отдельные разделы для корневых директорий серверов Apache и FTP. Отредактируйте файл /etc/fstab и не забудьте добавить следующее конфигурационные параметры:noexec – запрещается исполнять бинарные файлы (предотвращается исполнение бинарных файлов, но разрешается исполнять скрипты).nnnodev — запрещается указывать посимвольные и специальные устройства (предотвращается использование файлов устройств, таких как zero, sda и т.д).nnnosuid – запрещается иметь доступ для SUID/SGID (предотвращается изменение битов идентификатора пользователя и идентификатора группы).nnПример монтирования /etc/fstab раздела /dev/sda5 (корневой директорий сервера ftp), для которого ограничен пользовательский доступ:/dev/sda5  /ftpdata          ext3    defaults,nosuid,nodev,noexec 1 2n

  • Квоты дискового пространства

Вам нужно удостоверится, что задание дисковых квот допустимо для всех пользователей. Если вы хотите задавать квоты дискового пространства, то придерживайтесь следующего алгоритма:n

  • Разрешите определять квоты для каждой файловой системы – для этого измените файл /etc/fstab.
  • Перемонтируйте файловую систему (системы).
  • Создайте файлы базы данных квот и сгенерируйте таблицу использования диска.
  • Определите политику квот.
  • Подробности смотрите в руководстве «Задание квот дискового пространства» (implementing disk quotas).

14. Закройте IPv6

Версию интернет-протокола 4 (IPv4) заменяет 6 (IPv6), что являет собой новый способ организации протокола TCP/IP. Это достойный плюс, который используется по умолчанию в многих системах Linux. Используя протокол IPv6, очень трудно обеспечить системе хорошую защиту. Хакеры могут воспользоваться этим и перенаправить трафик по IPv6, поскольку большинство администраторов не осуществляют его мониторинг. Если вам не необходим этот протокол, то эго лучше отключить.n

15. Удалите все неактуальные бинарные файлы SUID и SGID

Если вы разрешите права доступа SUID/SGID, согласно SUID/SGID, то неправильная эксплуатация может стать причиной проблем с системой и безопасностью. Этот файл может изменить любой пользователь. Вам будет лучше быть осведомлённым о всех таких файлах. Используйте команду find

See all set user id files:find / -perm +4000nn# See all group id filesnnfind / -perm +2000nn# Or combine both in a single commandnnfind / \( -perm -4000 -o -perm -2000 \) -printnnfind / -path -prune -o -type f -perm +6000 –ls

Всю информацию нужно предельно ясно изучить.n

  • Файлы без ограничения записи

Каждый пользователь может изменить эти файлы, что приведёт до серьёзных проблем с защитой. Эта команда поможет их найти

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Вам необходимо достаточно тщательно всё изучить, либо правильно установить пользователя и группу, либо деинсталлировать файл.n

  • Файлы без владельца

Если есть файлы, которые не принадлежат ни одной системе, то они могут отрицательно повлиять на безопасность. Эта команда позволит их найти

find /dir -xdev \( -nouser -o -nogroup \) -print

Рекомендуется хорошо знать каждое сообщение по поводу этих файлов, а также или правильно установить пользователя и группу, или удалить файл.n

16. Используйте централизованный сервис идентификации

Если вы не используете центральную систему авторизации, то может получится так, что данные о пользователе могут стать противоречивыми. Централизованная служба аутентификации будет качественно следить за этим. Вы можете синхронизировать разные сервера, но не пользуйтесь сервисом NIS. Для этого лучше подойдёт OpenLDAP.n

  • Kerberos

Пакет Kerberos используется как идентификационный сервис доверенной третьей стороны, который выполняет проверку подлинности с помощью криптографического шифрования общедоступных данных, причем с учетом того, что пакеты, передаваемые по небезопасной сети, могут быть прочитаны, модифицированы или в них может быть что-либо добавлено. В пакете Kerberos используется криптография с симметричными ключами и для этого пакета нужен центр раздачи ключей. Используя Kerberos, вы будете входить в систему на более безопасном уровне, копировать файлы с одной системы на другую. Таким образом, если пользователи регистрируются в сетевых сервисах, обслуживаемых пакетом Kerberos, то будут пресечены абсолютно все попытки пользователей собирать пароли с помощью мониторинга сетевого трафика.n

17. Протоколирование и аудит

Если вам нужна информация о попытках взлома системы, то настройте такую функцию, как протоколирование и аудит. По умолчанию системный журнал syslog сохраняет свои данные в директории /var/log/. Не помешает информация и о некоторых настройках, которые могут открыть путь к вашей системы для хакеров.n

  • Использование Logwatch / Logcheck для отслеживания подозрительных записей в системном журнале

Читайте свои журналы с помощью logwatch или logcheck. Эти инструменты существенно помогут вам, анализируя журналы. Например, вы сможете получать по почте всю информацию о необычных записях. Пример отчета syslog

 ################### Logwatch 7.3 (03/24/06) ####################nnProcessing Initiated: Fri Oct 30 04:02:03 2009nnDate Range Processed: yesterdaynn( 2009-Oct-29 )nnPeriod is day.nnDetail Level of Output: 0nnType of Output: unformattednnLogfiles for Host: www-52.nixcraft.net.innn##################################################################nn——————— Named Begin ————————nn**Unmatched Entries**nngeneral: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s)nngeneral: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s)nngeneral: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s)nngeneral: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s)nn———————- Named End ————————-nn——————— iptables firewall Begin ————————nnLogged 87 packets on interface eth0nnFrom 58.y.xxx.ww — 1 packet to tcp(8080)nnFrom 59.www.zzz.yyy — 1 packet to tcp(22)nnFrom 60.32.nnn.yyy — 2 packets to tcp(45633)nnFrom 222.xxx.ttt.zz — 5 packets to tcp(8000,8080,8800)nn———————- iptables firewall End ————————-nn——————— SSHD Begin ————————nnUsers logging in through sshd:root:123.xxx.ttt.zzz: 6 timesnn———————- SSHD End ————————-nn——————— Disk Space Begin ————————nnFilesystem            Size  Used Avail Use% Mounted onnn/dev/sda3             450G  185G  241G  44% /nn/dev/sda1              99M   35M   60M  37% /bootnn———————- Disk Space End ————————-nn###################### Logwatch End #########################

 nnЗамечание: Результат вывода приведен с сокращениями.n

  • Системный аудит с помощью auditd

Для аудита системы рекомендуется использовать демон auditd. Он предназначен для записи результата проведённого аудита на диск. При старте системы используется файл /etc/audit.rules. Вы можете его открыть и изменить.  С помощью демона auditd Вы сможете узнать о следующем:n

  • о событиях, происшедших во время запуска и завершения работы системы (перезагрузки, остановки системы);
  • о дате и времени, когда это событие произошло;
  • ответственности пользователя за происшедшее событие (например, попытке доступа к файлу /path/to/topsecret.dat);
  • о типе события (редактирование, доступ, удаление, запись, модификация файла или выполнение других команд);
  • оказалось ли событие успешным или неудачным;
  • посмотреть записи о событиях, которые меняли дату и время;
  • разузнать, кто сделал изменения, которые меняли сетевые настройки системы;
  • посмотреть записи о событиях, которые меняли информацию о пользователе / группе;
  • можно увидеть, кто делал изменения в файле, и т.п.

Смотрите краткое руководство, где хорошо объяснено, как настроить и использовать сервис auditd.n

18. Сервер OpenSSH

Протокол SSH поможет вам использовать нужную систему удалённо, а также передавать на неё файлы. Хотя, хочу напомнить, что этот протокол является сильно уязвимым к атакам.n

19. Установите и используйте систему обнаружения вторжений

Система обнаружения сетевого вторжения (network intrusion detection system — NIDS) — это система обнаружения вторжения, которая с помощью мониторинга сетевого трафика пытается зафиксировать злонамеренную активность, такую как атаки вида «denial of service» (отказ в обслуживании), сканирование портов и даже попытки проникновения в компьютер.nnЛучше инсталлировать пакет AIDE зарание. AIDE является кросс-хостинговой системой обнаружения вторжения (host-based intrusion detection system — HIDS). Она может мониторить процессы, происходящие внутри самих компьютерных систем.nnSnort-это программа, которая предназначена для обнаружения вторжений и может выполнять протоколирование на уровне сетевых пакетов, а также в режиме реального времени делать анализ трафика в IP сетях.n

20. Защитите файлы, директории и почтовые ящики

Система предоставляет большие возможности для защиты конфиденциальности и от стороннего вторжения в систему. Использование прав доступа к файлу, методика MAC (Mandatory Access Control — принудительное управление доступом) предотвращают несанкционированный доступ к данным. Хотя все усилия будут напрасными, если вредитель имеет физический доступ к системе. Для него не составит труда перенести жесткий диск компьютера на другую систему с тем, чтобы скопировать и проанализировать интересующие его данные. Вы можете легко защитить в Linux файлы и дисковые разделы с помощью следующих инструментальных средств:n

  • Для того, чтобы зашифровывать и расшифровывать файлы с использованием пароля, используйте команду gpg.
  • Защищайте файлы по паролю с помощью openssl и других инструментальных средств в системах Linux или UNIX.
  • Смотрите по ссылке encrypting directories описание, как шифровать директории с помощью ecryptfs.
  • TrueCrypt – бесплатная программа с открытым кодом, предназначенная для шифрования диска в системах Windows 7/Vista/XP, Mac OS X и Linux.
  • Howto: Шифрование диска и дисковых разделов в Linux для мобильных устройств.

Обеспечьте безопасность почтовых серверов

Сертификаты SSL и ключи gpg помогут вам сделать вашу переписку по e-mail более конфиденциальной:n

  • Безопасность сервера Dovecot IMAPS / POP3S под Linux с помощью конфигурирования SSL.
  • Установка и настройка сертификата SSL для сервера Postfix SMTP (почтового сервера) под Linux.
  • Установка и настройка сертификата SSL для почтового сервера Courier IMAP.
  • Конфигурирование средств шифрования Sendmail SSL для посылки и приема электронной почты.
  • Enigmail: Шифрованная электронная почта в клиенте Mozilla Thunderbird.

Другие рекомендации:

Backups Необходимо регулярно делать резервную копию вашей системы Linux. Это позволит вам всегда восстановить сервер. Также рекомендуется использовать традиционные в UNIX операции резервирования — dump and restore.nnПоиск руткитов.nnИспользование патча ExecShield для защиты от переполнения буфера.nnВ следующей части данной серии будет обсуждаться, как повысить безопасность конкретных приложений (например, Proxy, Mail, LAMP, баз данных), а также несколько других инструментальных средств обеспечения безопасности.nnВсе выше перечисленные работы вы можете заказать у нас [email protected]. Мы выполняем все работы по администрированию серверов.