В статье "Chrooting Apache and PHP in BSD Howto" по шагам разбирается процесс помещения apache+mod_php+mysql в chroot окружение. Ниже универсальные команды для автоматизации ручной работы по перемещению нужных библиотек в chroot: ldd /usr/local/libexec/apache/* | grep '=>' | awk {' print $3 '} | \ grep '/usr/lib' | xargs -J % install -C % CHROOT/usr/lib/ ldd /usr/local/libexec/apache/* | grep '=>' | awk {' print $3 '} | \ grep '/usr/local/lib' | xargs -J % install -C % CHROOT/usr/local/lib/ ldd /usr/local/libexec/apache/* | grep '=>' | awk {' print $3 '} | \ grep '/usr/X11R6/lib' | xargs -J % install -C % CHROOT/usr/X11R6/lib/
Статья "Importing Data into MySQL" на примерах объясняет возможности оператора "LOAD DATA" и утилиты mysqlimport по импортированию в MySQL базу списочных данных из текстовых файлов. Примеры, демонстрирующие вставку данных из файла структуры "name_last\tname_first\ttelephone\n", игнорируя комментарии и учитывая кавычки: LOAD DATA LOW_PRIORITY INFILE '/tmp/prospects.txt' REPLACE INTO TABLE sales_dept.prospect_contact FIELDS TERMINATED BY 0x09 ENCLOSED BY '"' ESCAPED BY '#' TERMINATED BY 0x0d0a IGNORE 1 LINES (name_last, name_first, telephone); mysqlimport --user='marie_dyer' --password='angelle1207' \ --fields-terminated-by=0x09 --lines-terminated-by=0x0d0a \ --replace --low-priority --fields-enclosed-by='"' \ --fields-escaped-by='#' --ignore-lines='1' --verbose \ --columns='name_last, name_first, telephone' \ sales_dept '/tmp/prospect_contact.txt'
Иван Песин перевел статью, которая повествует о том как минимизировать причиненные убытки и оперативно отреагировать на DoS атаки (отказ в обслуживании, Denial of Service) в Linux. Кратко: "SYN-flood" - ограничение скорости поступающих пакетов с установленным флагом syn. Организовывается очередь с ограниченной скоростью: #!/bin/sh # Входящий интерфейс DEV=eth2 # маркируем все входящие SYN-пакеты # на интерфейсе $DEV значением 1 ipchains -A input -i $DEV -p tcp -y -j MARK --set-mark 1 # устанавливаем дисциплину обработки очереди входящих пакетов tc qdisc add dev $DEV handle ffff: ingress # Длина пакетов с установленным флагом SYN # равна 40 байтам (320 бит) # потому три SYN-пакета равны 960 битам (или скорости 1кбит) # Теперь ограничим скорость до 3 пакетов в секунду tc filter add dev $DEV parent ffff: protocol ip \ prio 50 handle 1 fw police rate 1kbit burst 40 \ mtu 9k drop flowid :1 Ограничение скорость исходящих ICMP пакетов до приемлемой для нормальной работы и неприемлемой для атак: #
В статье "More one-line Perl scripts" приводится десятки примеров однострочных (вида, perl -e 'code') скриптов на Perl, которые могут оказаться полезными для решения рутинных задач. Вообще, написание небольших однострочных скриптов требует особенного подхода, статья интересная, вот несколько примеров: вывод столбцов, как awk perl -lane 'print $F[0] + $F[-2]' вывод строк из промежутка. # 1. just lines 15 to 17 perl -ne 'print if 15 .. 17' # 2. just lines NOT between line 10 and 20 perl -ne 'print unless 10 .. 20' # 3. lines between START and END perl -ne 'print if /^START$/ .. /^END$/' # 4. lines NOT between START and END perl -ne 'print unless /^START$/ .. /^END$/' поиск и замена, как sed # 1. in-place edit of *.c files changing all foo to bar perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c # 2. delete first 10 lines perl -i.old -ne 'print unless 1 .. 10' foo.txt # 3. change all the isolated oldvar occurrences to newvar perl -i.old -pe 's{\boldvar\b}{newvar}g' *.[chy] # 4. increment all numbers
Александр Одинец в статье "Linux в масштабе Предприятия" описал факт использования Linux в качестве рабочей станции для снижения затрат на приобретение лицензий на ПО. В частности, описано как можно обеспечить подключение пользователей под Linux к Novell серверу используя пакеты ncpfs и ipxtools: В rc.local: ipx_interface add eth0 802.3 ipx configure ?auto_interface=on ?auto_primary=on Подключение удаленного диска пользователем: sudo ncpumount /home/user/mnt/disk_G sudo ncpmount -s NW_SERVER -U user -P password -y cp1251 -p cp866 -u 500 -g 500 -m -b /home/user/mnt/disk_G В /etc/sudoers: User ALL=NOPASSWD: ALL
В статье "Configuring Samba as a Windows NT Primary Domain Controller" приводится пример настройки samba для работы в качестве основного контроллера доменов Windows NT. [global] # workgroup = Your NT-Domain-Name workgroup = DEMODOMAIN #Your PDC identifying comment server string = Samba/NT PDC #Your netbios name netbios name = JERRY #User-level security is standard for a PDC security = user #Encrypted passwords are mandatory encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd unix password sync = Yes passwd program = /usr/bin/passwd %u passwd chat = *New*UNIX*password* %n *ReType*new*UNIX*password* %n *passwd:*all*authentication*tokens*updated*successfully* # set these to act as the domain and local browser preferred master = yes domain master = yes local master = yes os level = 64 #This one is obvious, and mandatory domain logons = yes #You can use 3 different methods for user logon scripts #You can identify the logon by the name of the user's machine logon script = %m.bat #You can
В статье "Queuing, Traffic Shaping, and Policing" описаны методы ограничения (зажимания) трафика и выделения более приоритетного трафика на сетевых интерфейсах маршрутизатора Cisco. fair-queue, priority-group, custom-queue-list, traffic-shape и rate-limit. Описаны отличия технологий - FIFO, WFQ, RED, WRED, Предотвращаем монополизацию канала сессиями с большим трафиком в ущерб мелких "трафикогенераторов" (WFQ вместо FIFO). ! interface Serial0 fair-queue ! RED/WRED (Random early detect) - спасает ситуацию за счет дропанья пакетов в очереди. ! interface Ethernet0 random-detect hold-queue 200 out ! Принудительное определение более приоритетного трафика (в примере уменьшаем приоритет ftp). ! interface Serial0 priority-group 1 ! priority-list 1 protocol ip medium udp domain priority-list 1 protocol ip low tcp ftp priority-list 1 protocol ip low tcp ftp-data ! Ограничиваем вес определенных видов трафика в очереди (75% - WWW, 5% - DNS, и 20% все остальное) ! interface Serial0 custom-queue-list 1 !
Статья "OpenBSD, Cisco, and Tacacs+" по шагам рассказывает как на OpenBSD сервере настроить Tacacs+ из стандартных портов для аутентификации и авторизации пользователей на сервере доступа Cisco. Ниже краткий пересказ статьи: Собираем Tacacs+ из портов: cd ports/net/tacacs+ make install mkdir /usr/local/tac Конфигурируем Tacacs+, /usr/local/tac/tac.conf: user = myname { global = cleartext пароль_в_открытом_виде } user = $enab15$ { login = cleartext enable_пароль_для_cisco } Для использования шифрованных паролей, нужно писать: login = des encryptedPassword Для группировки пользователей: user = skin_pup { login = des зашифрованный_пароль member = privs } group = privs { enable 15 serive = exec { priv-lvl = 1 } } Убедимся что в /etc/services есть строка: tacacs 49/tcp Конфигурируем Cisco: enable secret local_enable_password aaa new-model tacacs-server host XX.XX.XX.XX aaa authentication login default tacacs+ aaa authentication login default tacacs+ enable aaa
В руководстве "Practical Code Auditing" приводятся методы поиска участков кода, которые могут привести к проблемам с безопасностью программы. Рассматриваемые аспекты: переполнение буфера (например, buf[sizeof(buf)] = '\0' вместо buf[sizeof(buf)-1] = '\0'), проблемы с распределеныем памяти, "Format String Vulnerabilities" - когда в функциях подобных printf и syslog забывают явно указать формат аргумента (делают printf (buf) вместо printf("%s", buf)), проблемы вида "Race Conditions", аудит бинарных файлов, жесткое тестирование. Документ опубликован в PDF формате.
Статья состоит из трех частей: Увеличение общесистемной безопасности - рассматривается ограничения сетевых сервисов через inetd и поиск суидных программ; Настройка Apache - организация парольного доступа, размышления по безопасности настроек Apache; MySQL и PHP - управление привелегиями пользователей в MySQL, ограничения PHP скриптов. Примеры для MySQL: UPDATE user SET Password=PASSWORD('new_password') WHERE user='root'; GRANT USAGE ON *.* TO bugs@localhost; GRANT ALL ON bugs.* TO bugs@localhost; REVOKE DROP ON bugs.* FROM bugs@localhost; FLUSH PRIVILEGES; PHP: safe_mode on safe_mode_exec_dir open_basedir max_execution_time memory_limit upload_tmp_dir rrror_Reporting on