L i n u x P a r k при поддержке ВебКлуба |
Назад | Оглавление | Вперед |
Все программы и файлы в вашем компьютере с символом ⌠s■ в поле режима доступа имеют включенным бит SUID (-rwsr-xr-x) или SGID (-r-xr-sr-x). Так как эти программы дают особые привилегии пользователям которые их выполняют, то важно удалить бит ⌠s■ с программ владельцем которых является root и которым не нужны подобные возможности. Это осуществляется выполнением команды 'chmod a-s' с именем файла(ов) в качестве аргумента.
К таким программам относятся:
Мы поместили знак * рядом с программами для которых , бит s должен быть снят. Помните, что для корректной работы системы необходимы некоторые suid-ные программы.
Для нахождения всех файлов имеющих бит ⌠s■ и владельцами которых является root используйте команду:
[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls √lg {} \;*-rwsr-xr-x 1 root root 35168 Sep 22 23:35 /usr/bin/chage *-rwsr-xr-x 1 root root 36756 Sep 22 23:35 /usr/bin/gpasswd *-r-xr-sr-x 1 root tty 6788 Sep 6 18:17 /usr/bin/wall -rwsr-xr-x 1 root root 33152 Aug 16 16:35 /usr/bin/at -rwxr-sr-x 1 root man 34656 Sep 13 20:26 /usr/bin/man -r-s--x--x 1 root root 22312 Sep 25 11:52 /usr/bin/passwd -rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/suidperl -rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/sperl5.00503 -rwxr-sr-x 1 root slocate 24744 Sep 20 10:29 /usr/bin/slocate *-rws--x--x 1 root root 14024 Sep 9 01:01 /usr/bin/chfn *-rws--x--x 1 root root 13768 Sep 9 01:01 /usr/bin/chsh *-rws--x--x 1 root root 5576 Sep 9 01:01 /usr/bin/newgrp *-rwxr-sr-x 1 root tty 8328 Sep 9 01:01 /usr/bin/write -rwsr-xr-x 1 root root 21816 Sep 10 16:03 /usr/bin/crontab *-rwsr-xr-x 1 root root 5896 Nov 23 21:59 /usr/sbin/usernetctl *-rwsr-xr-x 1 root bin 16488 Jul 2 10:21 /usr/sbin/traceroute -rwxr-sr-x 1 root utmp 6096 Sep 13 20:11 /usr/sbin/utempter -rwsr-xr-x 1 root root 14124 Aug 17 22:31 /bin/su *-rwsr-xr-x 1 root root 53620 Sep 13 20:26 /bin/mount *-rwsr-xr-x 1 root root 26700 Sep 13 20:26 /bin/umount *-rwsr-xr-x 1 root root 18228 Sep 10 16:04 /bin/ping *-rwxr-sr-x 1 root root 3860 Nov 23 21:59 /sbin/netreport -r-sr-xr-x 1 root root 26309 Oct 11 20:48 /sbin/pwdb_chkpwd
Для отключения бита ⌠s■ введите следующие команды:
[root@deep]# chmod a-s /usr/bin/chageЕсли вы хотите узнать, что делает каждая из программ используйте руководство man. Например,
[root@deep]# man netreportВ новой версии Red Hat 6.2 все параметры ядра доступные через ⌠/proc/sys■ могут быть настроены при запуске. Вы можете использовать для этого новый файл ⌠/etc/sysctl.conf■. Он читается и загружается каждый раз при загрузке системы. Все изменения в /proc/sys должны осуществляться через ⌠/etc/sysctl.conf■, так как он загружается раньше rc.local и других пользовательских скриптов. Ниже мы опишем все опции связанные с сетевой безопасностью, которые вы должны настроить для вашего сервера Red Hat 6.1 и Red Hat 6.2.
Предохранение вашей системы от ответов на ping запросы существенно улучшит сетевую безопасность вашей системы, так как никто не сможет послать к вам ping и получить на него ответ. Протокол TCP/IP имеет ряд слабых мест, которые позволяют нападающим использовать в своих целях внешне благоприятные пакеты. Защита сервера от ping может уменьшить эту проблему.
Под Red Hat 6.1
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_allВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Невосприимчивость к ping спасет вас от многих хакеров, потому что они даже не узнают о вашем существовании. Для восстановления способности отвечать на ping введите следующую команду:
[root@deep /]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_allПод Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable ignoring ping requestВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ]
Так же как и ping запросы, необходимо отключить и широковещательные сообщения. Когда IP пакет отправляется на широковещательный адрес (например, 192.168.1.255) он принимается всеми машинами в сети. Затем все машины отвечают на него ICMP эхо ответом, в результате может возникнуть перегрузка в сети или полный выход из строя (DoS атака). Для получения большей информации читайте RFC 2644.
Под Red Hat 6.1
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable ignoring broadcasts requestВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Маршрутизация и протоколы маршрутизации могут создавать ряд проблем. При IP маршрутизации от источника сообщений, информация о маршруте хранится в IP пакете и согласно RFC 1122 ответ должен возвращаться по тому же маршруту. Если нападающий сможет послать пакет в вашу сеть, то он сможет перехватывать ответы и заставлять думать ваш сервер, что обмен данными происходит с доверенным хостом. Я рекомендую блокировать IP маршрутизацию от источника, чтобы закрыть эту дыру.
Чтобы заблокировать IP маршрутизацию от источника введите следующую команду:
Под Red Hat 6.1
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/accept_source_route; doДобавьте эти строки в файл ⌠/etc/rc.d/rc.local■. чтобы они выполнялись при каждой загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Disables IP source routingВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Замечание. Введенные выше команды будет отключать маршрутизацию от источника для всех интерфейсов (lo, ethN, pppN и т.д.).
"SYN Attack" относится к классу атак ⌠Отказ в обслуживании■, которая отбирает на себя все ресурсы сервера и вызывает его перезагрузку. DoS атаки (нападения, которые выводят сервер из строя из-за большого трафика к серверу, в результате чего сервер не может ответить на поступающие запросы) легко осуществляются из внутренней сети и Интернета. В ядрах 2.1 появилась опция, которая позволяет защитить компьютер от подобной атаки, но по умолчанию он не включена. Для ее включениясделайте следующее:
Под Red Hat 6.1
[root@deep]# echo 1 > /proc/sys/net/ipv4/tcp_syncookiesВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable TCP SYN Cookie ProtectionВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Замечание. Если при выполнении вышеприведенной команды вы получили сообщение об ошибке, то проверьте включена ли у вас в ядре опция TCP syncookies. (IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES) [Y/n/?]).
Когда хост использует неоптимальный или ⌠умерший■ маршрут к адресату, маршрутизатор отправляет ему ICMP redirect пакет, который информирует о необходимости изменить маршрут. Если атакующий сможет подделать этот пакет, то он или она сможет изменить таблицу маршрутизации на компьютере и нарушить его защиту, вызвав отправку информации по неправильному маршруту.
Под Red Hat 6.1
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/accept_redirects; doВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Disable ICMP Redirect AcceptanceВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Замечание. Введенные выше команды будет отключать прием ICMP redirect пакетов для всех интерфейсов (lo, ethN, pppN и т.д.).
Эта защиту необходимо включить если вы используете Linux сервер как шлюз с маскарадингом трафика (IP Masquerading).
Под Red Hat 6.1
[root@deep /]# echo 1 > /proc/sys/net/ipv4/ip_always_defragВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable always defragging ProtectionВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK]
Эта опция будет предупреждать вас обо все неправильных сообщениях об ошибке.
Под Red Hat 6.1
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responsesВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable bad error message ProtectionВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Защита от IP spoofing предупреждает вашу сеть от взаимодействия с ложными источниками сообщений, которые часто используются в DoS атаках.
Под Red Hat 6.1
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/rp_filter; doВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Enable IP spoofing protection, turn on Source Address VerificationВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Эта защита будет фиксировать все пакеты с поддельными адресами (spoof), пакеты с маршрутизацией от источника, Redirect пакеты в ваших лог файлах.
Под Red Hat 6.1
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/log_martians; doВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.
Под Red Hat 6.2
Редактируйте файл ⌠/etc/sysctl.conf■ и добавьте следующую строку:
# Log Spoofed Packets, Source Routed Packets, Redirect PacketsВы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу.
[root@deep /]# /etc/rc.d/init.d/network restartSetting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Проверьте вашу систему на наличие странных или скрытых файлов (файлы которые запускаются периодически и не показываются командой ls), поскольку они могут использоваться для скрытия утилит и информации (программы взлома паролей, парольные файлы из других систем и др.). Обычной методикой на UNIX системах является расположение скрытых каталогов с необычными именами в пользовательских бюджетах, например, ⌠┘■, ⌠.. ⌠ (точка точка пробел) или ⌠..^G■ (точка точка ctrl-G). Программа ⌠find■ может быть использована для поиска таких программ. Например,
[root@deep]# find / -name ".. " -print -xdevТакже, часто используются файлы с именами подобными ⌠.mail■ или ⌠.xx■
SUID и SGID файлы являются потенциальными источниками нарушения безопасности, потому что дают особые привилегии пользователям, которые их выполняют и поэтому должны быть внимательно проверены и по возможности отключены.
Любимым трюком взломщиков является exploit SUID "root" программ, чтобы в дальнейшем использовать их как скрытый вход в систему. Поэтому вам необходимо находить и внимательно следить за всеми SUID/SGID программами, чтобы вовремя заметить изменения внесенные кем-то в них. Используйте следующую команду для поиска всех SUID/SGID программ на сервере.
[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;Замечание. Читайте в этой книге главу 10 ⌠ Программное обеспечение обеспечения безопасности (Утилиты слежения)■, где приведена информация о программе sXid, которая поможет автоматизировать подобные задачи и будет высылать вам отчеты по электронной почте.
Некоторые системные файлы могут предстать как дыра в безопасности, если хакер получит доступ к системе и сможет модифицировать их. Кроме того, дополнительную опасность представляют каталоги полностью открытые для записи. В них нарушитель легко может записывать и удалять файлы. В нормальном состоянии системы существует несколько файлов открытых для записи, включая несколько в каталоге /dev.
Для нахождения файлов и каталогов полностью открытых для записи используйте следующие команды:
[root@deep]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;Замечание. Для облегчения регулярного поиска и проверки подобных файлов и каталогов можно использовать специализированное программное обеспечение, например, Tripwire. Большую информацию об этом программном продукте можно прочитать в главе 12 ⌠Программы обеспечения безопасности (Целостность системы)■,
Наличие файлов не имеющих владельцев может указывать на вторжение в систему. Никогда не принимайте подобные файлы. Если вы нашли файлы и каталоги не имеющие владельцев на вашей системе, то внимательно проверьте их и если с ними все в порядке √ определите владельца. Иногда, вы можете деинсталлировать некоторые программы и в результате останутся файлы и каталоги без владельца, в этом случае спокойно удалите их.
Для поиска файлов и каталогов не имеющих владельца используйте команду:
[root@deep]# find / -nouser -o √nogroupЗамечание. Файлы найденные в каталоге /dev не считаются неправильными.
Файлы ⌠.rhosts■ являются частью постоянной работы системного администратора, так как этим файлам не должно найтись места на вашей системе. Помните, что нарушителю нужен только один небезопасный бюджет пользователя, чтобы в будущем получить доступ в вашу сеть. Вы можете найти файлы ⌠.rhosts■ используя команду:
[root@deep]# find /home -name .rhostsМожно использовать задания cron, чтобы регулярно искать, проверять и удалять файлы $HOME/.rhosts. Не забудьте предупредить пользователей о подобной проверке.
Чтобы использовать cron для периодической проверке и отсылке отчетов через электронную почту о наличие всех .rhosts файлах сделайте следующее: Создайте от пользователя root скрипт find_rhosts_files в каталоге ⌠/etc/cron.daily■ (touch /etc/cron.daily/find_rhosts_files) и внесите в него следующие строки:
#!/bin/shСделайте этот скрипт исполняемым и проверьте чтобы пользователем и группой владеющими этим файлом были root.
[root@deep]# chmod 755 /etc/cron.daily/find_rhosts_filesКаждый день по почте пользователю root будут поступать письма с темой: ⌠Content of .rhosts file audit report■ и содержащие список найденных файлов .rhosts.
Если вы поняли, что ваша система была взломана, то взаимодействуйте с CERT
╝ Coordination Center или с вашим представителем в FIRST (Forum of Incident
Response and Security Teams).
Internet Email: cert@cert.org
CERT Hotline: (+1) 412-268-7090
Facsimile: (+1) 412-268-6989
CERT/CC отвечает на личные вопросы 8:00 a.m. √ 8:00 p.m. EST (GMT √5)/EDT
(GMT √4)) по рабочим дным; в критических ситуациях можно звонить и в
выходные и праздничные дни.
Назад | Оглавление | Вперед |