Top Banner
Joomladagen 2015 Joomladagen 2015 > Linux Command Line Magic Peter Martin www.db8.nl / @pe7er 1
78
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

> Linux Command Line Magic

Peter Martin www.db8.nl / @pe7er

1

Page 2: Linux command-line-magic-jdnl15
Page 3: Linux command-line-magic-jdnl15
Page 4: Linux command-line-magic-jdnl15
Page 5: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

1.Introductie

2.Commando's

3.Basis

4.Verbinden

5.Scripts

Linux Command Line Magic

6.Backup

7.Bestanden zoeken

8.Hack herstellen

9.In a Box

Page 6: Linux command-line-magic-jdnl15

1. Introductie

Page 7: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Linux

● Cross-platform besturingssysteem● Open Source & gratis● Stabiel

– Multi user

– Multi tasking

● Populair– Internet servers

● Ontstaan– Minix (Unix-achtig besturingssysteem)

Page 8: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

● Debian .deb– Debian

– Ubuntu

Distributies

● Red Hat .rpm– Fedora

– CentOS

● Anders– Slackware

– Arch Linux

– Gentoo

Page 9: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

● Commercieel– BSD/OS

– Solaris

– Mac OS

Unix

● Gratis– FreeBSD

– NetBSD

– OpenBSD

Page 10: Linux command-line-magic-jdnl15

2. Commando's

Page 11: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

man

Online handleiding (manual)

man man

Page 12: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

ls

Toon (list) inhoud map

ls -al

List devices

lsusb

lspci

lsmod

Page 13: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

mkdir

Map aanmaken (make directory)

mkdir joomladagen2015

(rmdir = remove directory)

Page 14: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

cd

Ga naar map (change directory)

cd joomladagen2015

cd ..

cd ~

cd /var/www/

Page 15: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

cat

Toon bestand (= concatenate files & print)

cat configuration.php

Page 16: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

nano

Wijzig bestand

nano configuration.php

Page 17: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

cp

Kopieer bestand (copy)

cp bestand.txt nieuwbestand.txt

Page 18: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

mv

Verplaats bestand (move)

mv bestand.txt nieuwe-naam.txt

Page 19: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

rm

Verwijder bestand of map (remove)

rm /var/www/joomla-cms/configuration.phprm -R /var/www/joomla-cms/installation

Page 20: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

chmod

Verander permissies (change mode)

sudo chmod +x somescript.sh

Page 21: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

chown

Wijzig eigenaar (change ownership)

sudo chown iemand:groep bestandsnaam.txt

Page 22: Linux command-line-magic-jdnl15

3. Basis

Page 23: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Bestanden

Linux = “Files are us”

alles = bestand

Page 24: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Bestanden

● Eigenaar– Gebruikersnaam

– Naam van “proces” (bijv. Apache = www-data)

● Groep– Gebruikers toegewezen aan groep hebben dezelfde rechten

● Permissies– Lees (read (4))

– Schrijf (write (2))

– Uitvoeren (execute (1))

Page 25: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Bestand

-rw-r--r-- 1 peter pc 1174 Nov 7 15:50 example_file.txt

read (4)write (2)execute (1)

eigenaarrw-

r(4)+w(2)

groepr--

r(4)

publiekr--

r(4)

= 644

Page 26: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Gebruikers

Gebruikers– Gewone gebruikers: gebruiker@computer:~$

– Root gebruiker: root@computer:~#

– “whoami” (wiebenik)

– “groups” (welke groepen?)

Verander gebruiker:– “su gebruikersnaam”

– “su root” of gewoon “su”

Page 27: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Commando uitvoeren

Commando + parameters

sh script uitvoeren: script.sh met execute permissies, of./script.sh

Commando uitvoeren als root gebruiker– Sudo [commando]

Page 28: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Basis

~ “tilde” = standaard home map (“mijn documenten”)

cd ~

> “groter dan teken” = stuur uitvoer naar nieuw bestand

ls -al > bestand-met-bestandslijst.txt

>> “dubbel groter dan teken” = voeg uitvoer to aan eind van bestand

ls -al >> bestand-met-bestandslijst.txt

Page 29: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Basis

| “pipe” = commando's koppelen

ls | less

[email protected]:/var/www/joomla-cms$ cat configuration.php | grep password

public $password = 'my-secret-db-password';

Page 30: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Symbolic links

Aanmaken van symbolic link: ln ln -s [TARGET DIR/FILE] [SHORTCUT]

[email protected]:~$ ln -s /var/www/joomla-cms joomla-test

[email protected]:~$ ls -aldrwxr-xr-x 2 peter pc 4096 Oct 26 20:34 .drwxr-xr-x 56 peter pc 4096 Oct 26 19:29 ..-rw-r--r-- 1 peter pc 0 Nov 7 15:50 example_file.txtlrwxrwxrwx 1 peter pc Nov 7 15:50 joomla-test -> /var/www/joomla-cms

Page 31: Linux command-line-magic-jdnl15

4. Verbinden

Page 32: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Terminal

Text Terminal

“TTY” TeleTYpewriter

Page 33: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Terminal

Windows– Programma voor SSH: PuTTY

Mac OSX– Ingebouwd: “Terminal”

Linux– Ingebouwd: Terminal Emulator

Page 34: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

SSH

Secure Shell

gebruikt public-key cryptografie (authenticeren & beveiligen van data communicatie)

peter@computer:~$ ssh [email protected]

Page 35: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

SSH

peter@computer:~$ ssh [email protected]

The authenticity of host 'example.com (93.184.216.119)' can't be established.RSA key fingerprint is 10:51:ab:f5:d7:[..]:17:16:1f:22:33.Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'example.com,93.184.216.119' (RSA) to the list of known [email protected]'s password:

[email protected] ~ $

Page 36: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Keyless login

Genereer public/private rsa authenticatie sleutel paar:

$ ssh-keygen -t rsa

Op computer:

private key: ~/.ssh/id_rsa

public key: ~/.ssh/id_rsa.pub

Installeer publieke sleutel op server:

ssh-copy-id [email protected]

Page 37: Linux command-line-magic-jdnl15

5. Scripts

Page 38: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Automatisering

● Automatiseer herhalende handelingen– Automatiseer een aantal commando's

– Gebruik variabelen & input / output

● Automatische handelingen gebaseerd op tijd?

Crontab (ook wel: cronjob)

Page 39: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Shell t.o.v. bash

Shell

The Bourne shell (sh) command-line interpreter

Scripts starten met: #!/bin/sh

Vaak symbolic link naar bash

Bash

“Bourne-again shell”, gratis vervanging voor de Bourne shell (sh) met meer opties en betere syntax

Scripts starten met: #!/bin/bash

Page 40: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Dash?

Op Ubuntu/Debian:

~$ ls -al /bin/sh

lrwxrwxrwx 1 root root 4 Mar 1 2012 /bin/sh -> dash

= Debian Almquist shell = standaard voor /bin/sh

Bash is de standaard login shell voor interactief gebruik

Page 41: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Voorbeeld

voorbeeld.sh

#!/bin/bash

# declareer STRING variabeleSTRING="Hallo Joomladag!"

# print variabele op het schermecho $STRING

Page 42: Linux command-line-magic-jdnl15

6. Backup

Page 43: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Backup bestanden

Synchronisatie met andere locatie– rsync van “bron” naar “doel”

$ rsync -arv [email protected]:~/joomla-cms/ /var/www/joomla-cms-backup/

username @ server : folder

username @ server : folder

Page 44: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Backup database

MySQL Dump

$ mysqldump -u gebruikersnaam -p databasenaam > een-sql-textbestand.txt

Page 45: Linux command-line-magic-jdnl15

7. Bestanden zoeken

Page 46: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Zoeken

find → zoek bestanden

locate → zoek bestanden (snel, index in database)

whereis → vind source/binary en handleidingen

which → wat is het path naar een bestand

Page 47: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Bestand kwijt?

Zoek een specifiek bestand

find /var/www/ -name “configuration.php”

Page 48: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Grootste bstanden?

Toon de 15 grootste bestanden:

$ find . -type f -exec du -Sh {} + | sort -rh | head -n 15

Page 49: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Recente bestanden?

Toon nieuwe bestanden van de laatste 7 dagen:

find . -type f -ctime -7

Page 50: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Recent veranderd

Veranderd afgelopen 7 tot 3 dagen:

find . -type f -mtime -7 ! -mtime -3

Page 51: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Ongebruikte plaatjes

Scan naar ongebruikte plaatjes1. maak SQL dump & 2. vergelijk bestanden in /images/ met SQL dump

Script "jfindfiles" van Rene Kreijveldhttps://gist.github.com/renekreijveld/

Page 52: Linux command-line-magic-jdnl15

8. Hack herstellen

Page 53: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Hack herstellen

● Backup huidige situatie (zie 6. Backup)● Analyse

– Gehackte bestanden

– Log files server

● Verwijder onveiligheid● Schoon bestanden op

Page 54: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Bestanden zoeken

● Nieuwe bestanden (laaste 10 dagen)

find images/ -name "*.php" -mtime -10

● Nieuwe mogelijke bestanden van hackers

find . -type f -newermt 2014-03-09 ! -newermt 2014-03-11

→ bestand tijd & datum kan worden aangepast....

Page 55: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Zoeken

● Zoek hacker scripts

grep -r "eval" /var/www/joomla-cms | grep "base64_decode"

Page 56: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

NeoPi

Opsporen van verborgen scripts(Python 2.6 nodig)

Installeren

$ git clone https://github.com/Neohapsis/NeoPI.git

Starten

$ /var/www/NeoPI/neopi.py -Aa /var/www/joomla-cms

Page 57: Linux command-line-magic-jdnl15

9. In a box

Page 58: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

VirtualBox

“Computer in Computer”

● Download https://www.virtualbox.org/

● Start Virtualbox

● Installeer besturingssysteem– Bijv. via .iso image

– Installeren kost VEEL tijd

Page 59: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Vagrant

Virtuele ontwikkelomgeving configureren & managen– “wrapper” om virtualizatie software

● Download http://www.vagrantup.com/ – Installeer op Debian Linux:

$ sudo dpkg –i vagrant_1.5.2_x86_64.deb

Page 60: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Vagrant

gebruik Vagrant:

map + configuratie bestand “Vagrantfile”

Page 61: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Vagrant Cloud

Kant-en-klaar virtuele omgevingen

● Zoek omgeving op https://vagrantcloud.com/

bijv Debian 7 64 bithttps://vagrantcloud.com/chef/boxes/debian-7.8

● Install Vagrant Box

$ vagrant box add chef/debian-7.8

Page 62: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Install Vagrant Box

● Map voor ieder projecte.g. ~/projecten/joomladag2015

● Initialeer Vagrant Box

$ vagrant init chef/debian-7.8

● Configuratie: “Vagrantfile”config.vm.box = "chef/debian-7.8"

config.vm.network "forwarded_port", guest: 80, host: 8080

Page 63: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Vagrant Box

● Start Vagrant Box

$ vagrant up

● Log in op Vagrant Box

$ vagrant ssh

Page 64: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Apache

Handmatige installatie

$ sudo apt-get install apache2

Start/stop/herstarten

$ sudo service apache2 start $ sudo service apache2 stop $ sudo service apache2 restart

Installatie mod rewrite

$ sudo a2enmod rewrite

Page 65: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Apache

● Probleem met .htaccess / Mod Rewrite?

$ sudo nano /etc/apache2/sites-enabled/000-default

AllowOverride None → AllowOverride All

● “Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName”

$ echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Page 66: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Apache ownership issues

Draai Apache onder gebruiker “vagrant” (niet op live site!)

$ sudo nano /etc/apache2/envvars

export APACHE_RUN_USER=vagrantexport APACHE_RUN_GROUP=vagrant

Fout met herstarten van Apache?

$ sudo rm -R /var/lock/apache2

Toewijzen van webroot & bestanden aan gebruiker “vagrant”:

$ sudo chown -R vagrant:vagrant /var/www/

Page 67: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Server Script – PHP

Installatie PHP + MySQL

$ sudo apt-get install php5 php5-mysql

Test:

$ sudo nano /var/www/test.php

<?php phpinfo(); ?>

Page 68: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Database GUI – phpMyAdmin

Installatie

$ sudo apt-get install phpmyadmin

Browser

http://localhost:8080/phpmyadmin/

Page 69: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Joomla

Installatie

$ sudo wgethttps://github.com/joomla/joomla-cms/releases/download/3.4.1/Joomla_3.4.1-Stable-Full_Package.zip

Unzip

$ sudo unzip Joomla_3.4.1-Stable-Full_Package.zip

Browser

http://localhost:8080/joomla/

Page 70: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Kijk ook naar...

Linux Containers

https://linuxcontainers.org/

→ 1 “box” per applicatie & boxen verbinden

Docker

https://www.docker.com/

Page 71: Linux command-line-magic-jdnl15

Conclusie

Page 72: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

1.Introductie

2.Commando's

3.Basis

4.Verbinden

5.Scripts

Conclusie

6.Backup

7.Bestanden zoeken

8.Hack herstellen

9.In a Box

Page 73: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Vragen?

Peter Martin

e-mail: info at db8.nl

website: www.db8.nl

twitter: @pe7er

Presentatie: http://www.db8.nl

Page 74: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Used PhotosTitle sheet:

● Magic Wand - Open Clip Art Library, 2011

http://commons.wikimedia.org/wiki/File:Magic_Wand.svg● GNU Linux - "Wipes Windows in seconds!"

http://www.schnews.org.uk/images/560-linux-large.jpg● Raspberry Pi – Switched On Tech Design

http://www.sotechdesign.com.au/raspberry-pi-has-arrived/● Wikimedia Servers-0051 16, Helpameout, 2012

http://commons.wikimedia.org/wiki/File:Wikimedia_Servers-0051_16.jpg

1. Computer● 1. General● IBM Electronic Data Processing Machine - GPN-2000-001881, NASA, 1957● http://upload.wikimedia.org/wikipedia/commons/2/20/IBM_Electronic_Data_Processing_Machine_-

_GPN-2000-001881.jpg

2. Basics● Lego Color Bricks, Alan Chia, 2007

http://commons.wikimedia.org/wiki/File:Lego_Color_Bricks.jpg

Page 75: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Used Photos3. Commands

● US Navy 110913-N-DR144-348 Rig Captain Boatswain's Mate 2nd Class Christopher Cook gives orders as deck department Sailors launch a rigid hull infl - James R. Evans, 2011

http://commons.wikimedia.org/wiki/File:US_Navy_110913-N-DR144-348_Rig_Captain_Boatswain%27s_Mate_2nd_Class_Christopher_Cook_gives_orders_as_deck_department_Sailors_launch_a_rigid_hull_infl.jpg

● CPM-Manual - Hubert Berberich, 2011

http://commons.wikimedia.org/wiki/File:CPM-Manual.jpg● Red Book Dec 1915 Contents Page - Red Book Corporation, 1915

http://commons.wikimedia.org/wiki/File:Red_Book_Dec_1915_Contents_Page_-_Unbaited_Trap.jpg● Archive boxes 2 - Effeietsanders, 2009

http://commons.wikimedia.org/wiki/File:Archive_boxes_2.JPG● Touch to exit - Tom Rolfe, 2007

http://commons.wikimedia.org/wiki/File:Touch_to_exit.jpg● Neon sign, "CHANGE" - Felix Burton, 2005

http://commons.wikimedia.org/wiki/File:Neon_sign,_%22CHANGE%22.jpg● Cat November 2010-1a - Alvesgaspar, 2010

http://commons.wikimedia.org/wiki/File:Cat_November_2010-1a.jpg● CSIRO ScienceImage 1342 Nanotechnology - division, CSIRO, 2003

http://commons.wikimedia.org/wiki/File:CSIRO_ScienceImage_1342_Nanotechnology.jpg● Xerox Phaser 4600 - JackPotte, 2012

http://commons.wikimedia.org/wiki/File:Xerox_Phaser_4600.png

Page 76: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Used Photos● Long Distance Movers - RoadWay Van Lines, 2014

http://commons.wikimedia.org/wiki/File:Long_Distance_Movers.jpg● Vuilnisbak-Lebbeke - Volkov Vitaly, 2005

http://commons.wikimedia.org/wiki/File:Vuilnisbak-Lebbeke.JPG● TRTC Taipei Main Station No-bicycle-access notice - Solomon203, 2013

http://commons.wikimedia.org/wiki/File:TRTC_Taipei_Main_Station_No-bicycle-access_notice_20130324.jpg● Prva samopostrežna trgovina v Mariboru na Partizanski cesti 1960 - Jože Gal, 1960

http://commons.wikimedia.org/wiki/File:Prva_samopostre%C5%BEna_trgovina_v_Mariboru_na_Partizanski_cesti_1960_(1).jpg

4. Connecting● Switchboard Manual - Peel Conner, Geez-oz, 2012

http://commons.wikimedia.org/wiki/File:Switchboard_Manual_-_Peel_Conner.JPG● Bundesarchiv Bild 183-2008-0516-500, Fernschreibmaschine mit Telefonanschluss - Illger, Willi, 1930

http://commons.wikimedia.org/wiki/File:Bundesarchiv_Bild_183-2008-0516-500,_Fernschreibmaschine_mit_Telefonanschluss.jpg

5. Scripts● Binary Code, Cncplayer, 2013

http://commons.wikimedia.org/wiki/File:Binary_Code.jpg

Page 77: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Used Photos6. Finding Files

● Postcards and magnifying glass, Anna, 2007

http://commons.wikimedia.org/wiki/File:Postcards_and_magnifying_glass.jpg● Bundesarchiv Bild 183-M0125-421, Fundbüro in Berlin - Klaus Franke, 1973

http://commons.wikimedia.org/wiki/File:Bundesarchiv_Bild_183-M0125-421,_Fundb%C3%BCro_in_Berlin.jpg

● DARPA Big Data - DARPA, 2013

http://commons.wikimedia.org/wiki/File:DARPA_Big_Data.jpg● Magnifying glass - Faberge - shakko, 2011

http://commons.wikimedia.org/wiki/File:Magnifying_glass_-_Faberge.jpg● Magnifying glass on antique table - Stéphane Magnenat, 2008

http://commons.wikimedia.org/wiki/File:Magnifying_glass_on_antique_table.jpg● Unused Phonebooks - David Shankbone, 2013

http://commons.wikimedia.org/wiki/File:Unused_Phonebooks.JPG

7. Backup● IBM 7330 on white background, Crisco 1492, 2013

http://commons.wikimedia.org/wiki/File:IBM_7330_on_white_background.jpg

Page 78: Linux command-line-magic-jdnl15

Joomladagen 2015Joomladagen 2015

Used Photos8. In a box

● Carton empty box - humusak2

http://www.freeimages.com/photo/1440365 ● Virtualbox logo, Oracle Corporation, 2010

http://en.wikipedia.org/wiki/File:Virtualbox_logo.png● Vagrant - Fco.plj, 2013● http://en.wikipedia.org/wiki/File:Vagrant.png

9. Recover hack● Youve-been-hacked, Hanonen, 2014

http://commons.wikimedia.org/wiki/File:Youve-been-hacked.jpg

Conclusion● EquinoxeJuniorHighPac-Man - Equinoxe, 2012

http://www.c64-wiki.com/index.php/File:EquinoxeJuniorHighPac-Man.png