Setting up GRUB:
------------------------------------------------------------------
# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
------------------------------------------------------------------
/boot/grub/menu.lst
------------------------------------------------------------------
# Boot automatically after 5 secs.
timeout 5
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sda
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sdb
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
Настройка шифрования файлов под Linux с помощью Crypto-loopback устройств
Ниже, краткий пересказ самого главного (для Debian GNU/Linux) :
Установка пакетов:
apt-get install cryptsetup
Подгрузка модулей:
modprobe loop
modprobe aes
echo -e "naes\ncryptoloop" >> /etc/modules
Создаем образ будущего шифрованного раздела:
dd if=/dev/urandom of=/home/marco/crloop bs=1M count=640
Способ 1 (устарел, лучше использовать dm-crypt):
modprobe cryptoloop
losetup -e aes /dev/loop0 /home/marco/crloop
mkfs -t ext2 /dev/loop0
mount /dev/loop0 /media/cryptovolume
.....
umount /media/cryptovolume
losetup -d /dev/loop0
Способ 2:
modprobe dm-crypt
losetup /dev/loop0 /home/marco/crloop
cryptsetup -c aes -y create crloop /dev/loop0
mkfs.ext3 /dev/mapper/crloop
mount /dev/mapper/crloop /media/cryptovolume
.....
umount /media/cryptovolume
cryptsetup remove crloop
losetup -d /dev/loop0.
##########Bug##############
modprobe: WARNING: Error inserting padlock_aes (/lib/modules/2.6.24/12-generic/kernel/drivers/crypto/padlock-aes-.ko): No such device
# FIX
echo "alias aes aes_generic" >> /etc/modprobe.d/aliases
Установка пакетов:
apt-get install cryptsetup
Подгрузка модулей:
modprobe loop
modprobe aes
echo -e "naes\ncryptoloop" >> /etc/modules
Создаем образ будущего шифрованного раздела:
dd if=/dev/urandom of=/home/marco/crloop bs=1M count=640
Способ 1 (устарел, лучше использовать dm-crypt):
modprobe cryptoloop
losetup -e aes /dev/loop0 /home/marco/crloop
mkfs -t ext2 /dev/loop0
mount /dev/loop0 /media/cryptovolume
.....
umount /media/cryptovolume
losetup -d /dev/loop0
Способ 2:
modprobe dm-crypt
losetup /dev/loop0 /home/marco/crloop
cryptsetup -c aes -y create crloop /dev/loop0
mkfs.ext3 /dev/mapper/crloop
mount /dev/mapper/crloop /media/cryptovolume
.....
umount /media/cryptovolume
cryptsetup remove crloop
losetup -d /dev/loop0.
##########Bug##############
modprobe: WARNING: Error inserting padlock_aes (/lib/modules/2.6.24/12-generic/kernel/drivers/crypto/padlock-aes-.ko): No such device
# FIX
echo "alias aes aes_generic" >> /etc/modprobe.d/aliases
web server scanners
# Nikito
www.cirt.net
# Paros proxy
http://parosproxy.org/index.shtml
# WebScarb
http://www.owasp.org/index.php/Main_Page
# WebInspect
hp.com
# Burp Scanner
http://portswigger.net/
#Wikto
http://www.sensepost.com/research/wikto/
#Acunetix Web Security Scanner
http://www.acunetix.com/
# Rational AppScan
ibm.com
# N-stalker
http://nstalker.com/products/free/
www.cirt.net
# Paros proxy
http://parosproxy.org/index.shtml
# WebScarb
http://www.owasp.org/index.php/Main_Page
# WebInspect
hp.com
# Burp Scanner
http://portswigger.net/
#Wikto
http://www.sensepost.com/research/wikto/
#Acunetix Web Security Scanner
http://www.acunetix.com/
# Rational AppScan
ibm.com
# N-stalker
http://nstalker.com/products/free/
Короток о dpkg
dpkg --get-selections [образец...] Выдает список состояний выбора пакетов.
dpkg -p | --print-avail имя пакета Выводит детальную информацию о пакете, которую извлекает из файла /var/lib/dpkg/available.
dpkg -l | --list <образец имени пакета>... Показывает пакеты, соответствующие данному образцу. Если образец имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available. В образце имени пакета можно указывать обычные символы шаблона командной оболочки.
dpkg -L | --listfiles <имя пакета> ... Показывает файлы, установленные на вашей системе из пакета с указанным именем. Заметьте, однако, что файлы, созданные установочными скриптами пакета, не будут показаны.
dpkg -S | --search <образец имени файла для поиска> ... Ищет в установленных пакетах файл по заданному образцу. В образце допустимы стандартные символы шаблонов командной оболочки.
dpkg --audit команда покажет частично установленные (Half-Installed) пакеты, пакеты, настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях.
dpkg -p | --print-avail имя пакета Выводит детальную информацию о пакете, которую извлекает из файла /var/lib/dpkg/available.
dpkg -l | --list <образец имени пакета>... Показывает пакеты, соответствующие данному образцу. Если образец имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available. В образце имени пакета можно указывать обычные символы шаблона командной оболочки.
dpkg -L | --listfiles <имя пакета> ... Показывает файлы, установленные на вашей системе из пакета с указанным именем. Заметьте, однако, что файлы, созданные установочными скриптами пакета, не будут показаны.
dpkg -S | --search <образец имени файла для поиска> ... Ищет в установленных пакетах файл по заданному образцу. В образце допустимы стандартные символы шаблонов командной оболочки.
dpkg --audit команда покажет частично установленные (Half-Installed) пакеты, пакеты, настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях.
Коротко о apt
apt-get update обновление репозитария
apt-get dist-upgrade полное обновление ОС
apt-get check проверить текущее состояние системы
apt-get install установить пакет. Всё скаченное apt-get лежит в /var/cache/apt/archives
apt-get -f install исправить зависимости
apt-get install -d скачать пакет не устанавливая. Лежать будет в /var/cache/apt/archives
apt-get source скачать исходный текст пакета
apt-get remove удалить пакет. Результаты можно посмотреть в /var/log/user/info
apt-cache search поиск пакета по описанию
apt-cache showpkg показать описание пакета
apt-get dist-upgrade полное обновление ОС
apt-get check проверить текущее состояние системы
apt-get install
apt-get -f install
apt-get install -d
apt-get source
apt-get remove
apt-cache search
apt-cache showpkg
Mysql tips
- Проверить целостность базы данных можно командой:
# /usr/bin/mysqlcheck -a DBName
- Выгрузить базу MySQL можно командой:
# mysqldump -u root -p DBName > mydb.sql
Если mysqldump не запускается, то нужно указать полный путь до этого файла, который можно узнать командой:
# find / -name mysqldump
/usr/local/mysql-3.23.54a-pc-linux-i686/bin/mysqldump
Сами базы MySQL хранит в /var/lib/mysql/db/, здесь можно посмотреть какие базы созданы.
Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую:
# mysql -u root -p
mysql> drop database if exists DBName;
mysql> create database DBName;
mysql> quit
а затем в неё загрузить данные:
# mysql -u root -p DBName < mydb.sql
Если для пользователя root в MySQL нет пароля, то параметр -p не нужен, также можно задать пароль явным образом, только без пробела, например -pPassWord. Далее нужно убедиться, что в новой базе есть тот пользователь, от имени которого происходило обращение к базе. Если пользователя нет, то чтоб создать в точности такого пользователя с соответствующими правами, выгружаем базу mysql и выбираем все строки, касающиеся этого пользователя:
# mysqldump -u root -p mysql > mysqldb.sql
В файле mysqldb.sql останется приблизительно следующее:
INSERT INTO db VALUES ('%','DBName','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES ('localhost','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES ('localhost', 'UserName', '','N','N','N','N','N','N','N','N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0);
При переходе с одной версии MySQL на другую нужно учитывать, что количество параметров скорее всего будет разным, поэтому команду INSERT придётся подредактировать. Также может изменится алгоритм шифрования паролей. Сколько именно параметров можно узнать выполнив:
mysql> SHOW COLUMNS FROM db;
Загружаем базу командой:
# mysql -u root -p mysql < mysqldb.sql
- Внести запись в базу данных из bash можно таким образом (определив, конечно, переменные):
echo "INSERT INTO table_name (\`in\`,\`out\`) VALUES ('$delta_in', '$delta_out');" > $tmp_dir/temp.sql
`mysql -u$db_user -p$db_pass $db_name < $tmp_dir/temp.sql`
Несколько полезных команд: SHOW TABLES; # показать таблицы в БД
SHOW COLUMNS FROM db; # показать поля таблицы db
USE mysql; # перейти в БД mysql
SELECT host,user FROM user; # показать поля host, user таблицы user
DROP TABLE transport; # удалить таблицу transport
DELETE FROM user WHERE user='acct' AND host='%'; # удалить конкретную запись
UPDATE db SET Delete_priv='Y' WHERE user='acct'; # изменить значение поля в записи
FLUSH PRIVILEGES; # применить внесённые изменения
mysql -u root -p12345 postfix < DB.sql # пакетное выполнение SQL выражений для базы данных postfix
ALTER TABLE mailbox ADD (uid int(10) unsigned DEFAULT '107' NOT NULL); # добавляем в таблицу mailbox обязательное поле uid со значением по умолчанию = 107
ALTER TABLE mailbox DROP uid; # удаляем поле uid из таблицы mailbox
GRANT ALL PRIVILEGES ON DBName.* TO UserName@localhost IDENTIFIED BY '12345'; # дать все права на базу DBName пользователю UserName, подключающемуся с localhost с паролем 12345
# /usr/bin/mysqlcheck -a DBName
- Выгрузить базу MySQL можно командой:
# mysqldump -u root -p DBName > mydb.sql
Если mysqldump не запускается, то нужно указать полный путь до этого файла, который можно узнать командой:
# find / -name mysqldump
/usr/local/mysql-3.23.54a-pc-linux-i686/bin/mysqldump
Сами базы MySQL хранит в /var/lib/mysql/db/, здесь можно посмотреть какие базы созданы.
Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую:
# mysql -u root -p
mysql> drop database if exists DBName;
mysql> create database DBName;
mysql> quit
а затем в неё загрузить данные:
# mysql -u root -p DBName < mydb.sql
Если для пользователя root в MySQL нет пароля, то параметр -p не нужен, также можно задать пароль явным образом, только без пробела, например -pPassWord. Далее нужно убедиться, что в новой базе есть тот пользователь, от имени которого происходило обращение к базе. Если пользователя нет, то чтоб создать в точности такого пользователя с соответствующими правами, выгружаем базу mysql и выбираем все строки, касающиеся этого пользователя:
# mysqldump -u root -p mysql > mysqldb.sql
В файле mysqldb.sql останется приблизительно следующее:
INSERT INTO db VALUES ('%','DBName','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES ('localhost','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES ('localhost', 'UserName', '','N','N','N','N','N','N','N','N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0);
При переходе с одной версии MySQL на другую нужно учитывать, что количество параметров скорее всего будет разным, поэтому команду INSERT придётся подредактировать. Также может изменится алгоритм шифрования паролей. Сколько именно параметров можно узнать выполнив:
mysql> SHOW COLUMNS FROM db;
Загружаем базу командой:
# mysql -u root -p mysql < mysqldb.sql
- Внести запись в базу данных из bash можно таким образом (определив, конечно, переменные):
echo "INSERT INTO table_name (\`in\`,\`out\`) VALUES ('$delta_in', '$delta_out');" > $tmp_dir/temp.sql
`mysql -u$db_user -p$db_pass $db_name < $tmp_dir/temp.sql`
Несколько полезных команд: SHOW TABLES; # показать таблицы в БД
SHOW COLUMNS FROM db; # показать поля таблицы db
USE mysql; # перейти в БД mysql
SELECT host,user FROM user; # показать поля host, user таблицы user
DROP TABLE transport; # удалить таблицу transport
DELETE FROM user WHERE user='acct' AND host='%'; # удалить конкретную запись
UPDATE db SET Delete_priv='Y' WHERE user='acct'; # изменить значение поля в записи
FLUSH PRIVILEGES; # применить внесённые изменения
mysql -u root -p12345 postfix < DB.sql # пакетное выполнение SQL выражений для базы данных postfix
ALTER TABLE mailbox ADD (uid int(10) unsigned DEFAULT '107' NOT NULL); # добавляем в таблицу mailbox обязательное поле uid со значением по умолчанию = 107
ALTER TABLE mailbox DROP uid; # удаляем поле uid из таблицы mailbox
GRANT ALL PRIVILEGES ON DBName.* TO UserName@localhost IDENTIFIED BY '12345'; # дать все права на базу DBName пользователю UserName, подключающемуся с localhost с паролем 12345
Рекомендации по безопасности использования SSH
- Запрещение удаленного root-доступа.
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более).
- Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файрвола).
- Запрещение доступа с некоторых потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих SSH-сервис (honeypots).
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более).
- Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файрвола).
- Запрещение доступа с некоторых потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих SSH-сервис (honeypots).
Подписаться на:
Сообщения (Atom)