Table of Contents
Linux Encryption
Secure erase
scrub shred srm <-works on Mac wipe
ecryptfs (not supported on RH 7 )
Create and mount:
yum install ecryptfs-utils-gui dd if=/dev/zero of=ecrypttest bs=1M count=100 mkfs.ext3 ecrypttest mount -o loop ecrypttest /mnt/crypt/ mount -t ecryptfs /mnt/crypt/ /mnt/crypt/ df -h
remove:
umount /mnt/crypt/ umount /mnt/crypt/ (do this two times) shred ecrypttest -u -z
clipper backup drive:
[root@clipper ~]# mount -t ecryptfs /backup /backup -o ecryptfs_unlink_sigs,ecryptfs_fnek_sig=4295f161eb1fa6b7,ecryptfs_key_bytes=24,ecryptfs_cipher=aes,ecryptfs_sig=4295f161eb1fa6b7 Select key type to use for newly created files: 1) passphrase 2) openssl 3) tspi Selection: 1 Passphrase: NEUcfdITAR Enable plaintext passthrough (y/n) [n]: Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_fnek_sig=4295f161eb1fa6b7 ecryptfs_key_bytes=24 ecryptfs_cipher=aes ecryptfs_sig=4295f161eb1fa6b7 Mounted eCryptfs
encfs
http://www.howtoforge.com/encrypt-your-data-with-encfs-debian-squeeze-ubuntu-11.10
http://www.howtoforge.com/encrypt-your-data-with-encfs-ubuntu-13.04
LUKS
http://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions
http://www.linuxuser.co.uk/reviews/the-best-file-encryption-software-in-open-source/
http://www.howtoforge.com/encrypt-your-data-with-encfs-ubuntu-13.04
To create a 100M encrypted container:
dd if=/dev/urandom of=crypttest bs=1M count=100 man losetup losetup -a losetup /dev/loop0 crypttest cryptsetup --verbose --verify-passphrase luksFormat /dev/loop0 mkdir -p /mnt/crypt
To mount the device and format it:
cryptsetup luksOpen /dev/loop0 crypttest_1 ls -l /dev/mapper/ mkfs.ext3 /dev/mapper/crypttest_1 mount /dev/mapper/crypttest_1 /mnt/crypt/ df -h |grep cry
To show the key for the mounted device:
dmsetup table --target crypt --showkey /dev/mapper/crypttest_1
To remove the device
umount /mnt/crypt/ cryptsetup status /dev/mapper/crypttest_1 cryptsetup remove /dev/mapper/crypttest_1
To quickly remove the key:
head -c 1052672 /dev/zero > /dev/loop0; sync
To remove the device file:
losetup -d /dev/loop0 rm crypttest
LUKS on SL 7
# parted /dev/sdb ?? # shred -v --iterations=1 /dev/sdb1 # cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1 # mkdir /backup # cryptsetup luksOpen /dev/sdb1 backup # ls -l /dev/mapper/ # mkfs.xfs /dev/mapper/backup # mount /dev/mapper/backup /backup/ # df -h /backup/ # vim /etc/crypttab backup /dev/sdb1 /root/keyfile-backup luks # vim /etc/fstab # restorecon -v -R /backup/ # dd if=/dev/urandom of=keyfile-backup bs=1024 bs=1024 count=4 # chmod 0400 keyfile-backup # cryptsetup luksAddKey /dev/sdb1 /root/keyfile-backup # vim /etc/fstab
/dev/mapper/backup /backup xfs defaults 0 2
# mount # mount -a # reboot # ls /backup
Do not automount add noauto to /etc/fstab and /etc/cryptab:
/etc/fstab
/dev/mapper/backup /backup xfs defaults,noauto 0 0
/etc/crypttab
backup /dev/sdb1 /root/keyfile-backup luks,noauto
then to manually mount and unmount
cryptsetup luksOpen /dev/sdb1 backup mount /backup cryptsetup status backup umount /backup cryptsetup close backup
GPG
To create an encrypted compressed tar archive with GnuPG:
$ tar czvpf – doc.pdf doc2.pdf doc3.pdf | gpg --symmetric --cipher-algo aes256 -o secure.tar.gz.gpg
To uncompress an archive file encrypted with GnuPG:
$ gpg -d secure.tar.gz.gpg | tar xzvf -
encfs on ubuntu
clipper backup
#!/bin/bash
#echo local backup skipped
#exit
# This file should be located on the backup volume and therfore indicates to cron that the backup disk is mounted.
#
# Do Not Delete or move from /backup !
#
date
#
# Crontab command: @daily /backup/local.sh
#
namedate=$(date +\%Y-\%m-\%d-%H%M)
# Remove folders older than 10 days if the if conditions are met
# Development code
#if [ `date |cut -d ' ' -f 3` != 1 -a -e /backup/local ]
# then find /backup/local/ -maxdepth 1 -mindepth 1 -type d -mtime +10 -ls -exec echo rm -rf {} \;
#fi
# grab the newest backup set to link against
#prev_backup=$( ls -1dtr /backup/local/incremental_backup/* 2> /dev/null || echo no directories found...continuing. 1>&2 |tail -1 )
prev_backup=$( ls -1dtr /backup/local/incremental_backup/* |tail -1 )
# { echo "command failed, but that's okay. Continuing..."; echo exit 1; }
echo $prev_backup
# use directory if it exists, otherwise, just leave the variable blank so rsync does not get the option.
if [[ -d $prev_backup ]]
then
echo the prior backup exists. Setting location variable.
link_dest=--link-dest=$prev_backup
echo $link_dest
else
echo the prior backup does not exist. Unseting variable.
unset link_dest
fi
echo $link_dest
if [ -e /backup/local ]
then
touch /backup/local/incremental_backup/_data_local.incomplete/ 2> /dev/null || echo no previous incomplete directory found...continuing.
if [ $( id -u ) -ne 0 ]
then
# User Backup the local home directory
echo sorry, must be root.
else
echo backup with root privleges
# These require root
# Backup /etc
rsync -v --archive --one-file-system --hard-links \
--human-readable --inplace --numeric-ids --delete \
--delete-excluded --exclude-from=/backup/excludes.txt \
$link_dest \
/etc /backup/local/incremental_backup/_data_local.incomplete
# Backup /l
rsync -v --exclude=.Trash* --archive --one-file-system --hard-links \
--human-readable --inplace --numeric-ids --delete \
--delete-excluded --exclude-from=/backup/excludes.txt \
$link_dest \
/l /backup/local/incremental_backup/_data_local.incomplete
fi
else echo Backup drive not mounted for rsync.
fi
error_status=$?
if [ $error_status = "0" ]
then
if [ -e /backup/local ]
then
if [ -e /backup/local/incremental_backup/_data_local.incomplete ]
then
mv /backup/local/incremental_backup/_data_local.incomplete /backup/local/incremental_backup/data_$namedate
echo moved completed _data_local.incomplete backup to /backup/local/incremental_backup/data_$namedate
touch /backup/local/incremental_backup/data_$namedate
else
echo Intermediate Backup Directory does not exist.
fi
else
echo Backup drive not mounted.
fi
else
echo rsync had errors.
fi
date
#!/bin/bash
#remove old backup sets
date
num_to_keep=30
dir_location="/backup/local/incremental_backup/"
num=$(( $( ls -1 $dir_location | wc -l ) - $num_to_keep ))
if [ 0 -gt $num ]
then
num=0
fi
echo found $num old backup sets
if [ $num -gt 3 ]
then
echo limiting delete to oldest 3
num=3
fi
found=$( find $dir_location -mindepth 1 -maxdepth 1 -type d | sort| head -$num )
if [ -z "$found" ]; then
foundcnt=0
else
foundcnt=$( echo "$found" | wc -l )
fi
echo removing these oldest $foundcnt backup sets:
echo "$found"
if [ $foundcnt -gt 0 ]
then
rm -rf $( echo -n $found )
fi
date
Setup drive (assumed commands)
Create a partition on the external drive fdisk:
fdisk /dev/sdx
or parted:
Linux Create 3TB partition size
To create a partition start GNU parted as follows:
# parted /dev/sdb
Output:
GNU Parted 2.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) Creates a new GPT disklabel i.e. partition table: (parted) mklabel gpt Sample outputs: Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) Next, set the default unit to TB, enter: (parted) unit TB To create a 3TB partition size, enter: (parted) mkpart primary 0 0 OR (parted) mkpart primary 0.00TB 3.00TB To print the current partitions, enter: (parted) print Sample outputs: Model: ATA ST33000651AS (scsi) Disk /dev/sdb: 3.00TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 0.00TB 3.00TB 3.00TB ext4 primary Quit and save the changes, enter: (parted) quit Sample outputs: Information: You may need to update /etc/fstab.
obfuscate empty parts of the drive
shred -v --iterations=1 /dev/sdx1 cryptsetup --verbose --verify-passphrase luksFormat /dev/sdx1
~/mountbackupluks
#!/bin/bash # NEUcfdITAR cryptsetup luksOpen /dev/sdb1 encryptexternal mount /dev/mapper/encryptexternal /backup/
mkfs.xfs /dev/mapper/encryptexternal
umount /backup cryptsetup remove /dev/mapper/encryptexternal
fstab automount
Create password file
dd if=/dev/urandom of=/root/ecryptexternalpassword bs=1024 count=4 chmod 0400 /root/encryptexternalpassword cryptsetup luksAddKey /dev/sdb1 /root/encryptexternalpassword
blkid
Add to /etc/crypttab
encryptexternal UUID="0e6a3959-3da4-4112-b669-9c2d282380a6" /root/encryptexternalpassword luks
add to /etc/fstab
#LUKS encrypted external drive /dev/mapper/encryptexternal /backup xfs defaults 0 2