Показват се публикациите с етикет linux. Показване на всички публикации
Показват се публикациите с етикет linux. Показване на всички публикации

вторник, 16 юни 2015 г.

Close frozen ssh session

 
[enter]~. First press the Enter key, then tilde, and then add a dot and your ssh session will be closed and you can continue your work in back in freed terminal.

вторник, 25 ноември 2014 г.

Linux Bridge to act like hub

If in need to make a linux bridge very stupid and act like hub:

brctl setageing <bridgename> 0 




This command tells Linux to forget every MAC address that it sees on
the bridge, making it act as a hub.



Lets say you have a vmbr0 with eth0 and tap0 in it and have a VM started with attached tap0 (or you choose it as vmbr0). If you link eth0 to your switch's mirroring port you wont RX a great deal of the traffic because usually linux bridge acts as switch and does not recognize the VM as endpoint for the traffic.

Above command will give you a way to have a VM that listens a mirrored port (so NIDS could be on VM).

You are welcome!

събота, 10 май 2014 г.

Bind9 with DLZ and mysql backend... wait for it.. in Docker :)

Get yourself working docker.io installation.

Make doker file (its called Dockerfile)

#builddns image
#VERSION 0.1

FROM ubuntu:14.04
MAINTAINER Peach Lover <some@email.com>


RUN apt-get -qq update

Build image out of it

#docker build -t peach/builddns .

Start the docker container
#docker run -i -t -p 53:53/udp peach/builddns /bin/bash

Attach there and build some code






apt-get update
apt-get upgrade

apt-get install bind9 bind9utils build-essential debhelper hardening-wrapper libcap2-dev libdb-dev libdb-dev libkrb5-dev libldap2-dev libmysqlclient-dev libpq-dev libssl-dev libtool libxml2-dev mysql-client mysql-server openssl unixodbc unixodbc-dev
apt-get remove bind9
apt-get build-dep bind9

mkdir /root/bind9
cd /root/bind9
apt-get source bind9
cd bind9-9.9.5.dfsg

vi debian/rules
add the following
--with-dlz-mysql=yes

dpkg-buildpackage -rfakeroot -b

dpkg -i *.deb

vi /etc/default/bind9
OPTIONS="-u bind -n 1"

vi /etc/bind/named.conf.options
forwarders {
8.8.8.8;
8.8.4.4;
};

vi /etc/bind/named.conf.local
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=db_name user=db_user pass=db_pass}
{select zone from dns_records where zone = '$zone$'}
{select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') when lower(type) = 'soa' then concat_ws(' ', data, resp_person, serial, refresh, retry, expire, minimum) else data end from dns_records where zone = '$zone$' and host = '$record$'}";
};



mysql -p
create database db_name;
grant all privileges on db_name.* to db_user@localhost identified by 'db_pass';
CREATE TABLE `dns_records` ( `id` int(11) NOT NULL auto_increment, `zone` varchar(64) default NULL, `host` varchar(64) default NULL, `type` varchar(8) default NULL, `data` varchar(64) default NULL, `ttl` int(11) NOT NULL default '3600', `mx_priority` int(11) default NULL, `refresh` int(11) NOT NULL default '3600', `retry` int(11) NOT NULL default '3600', `expire` int(11) NOT NULL default '86400', `minimum` int(11) NOT NULL default '3600', `serial` bigint(20) NOT NULL default '2008082700', `resp_person` varchar(64) NOT NULL default 'resp.person.email', `primary_ns` varchar(64) NOT NULL default 'ns1.yourdns.here', `data_count` int(11) NOT NULL default '0', PRIMARY KEY (`id`), KEY `host` (`host`), KEY `zone` (`zone`), KEY `type` (`type`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

// for www.testie.local to resolve to 1.2.3.4
insert into dns_records (zone, host, type, data, mx_priority) values ('testie.local', 'www', 'A', '1.2.3.4', null);

// for testie.local to resolve to 1.2.3.4
insert into dns_records (zone, host, type, data, mx_priority) values ('testie.local', '@', 'A', '1.2.3.4', null);

// for www2.testie.local to alias to www.testie.local
// note the trailing period in the data field
insert into dns_records (zone, host, type, data, mx_priority) values ('testie.local', 'www2', 'CNAME', 'www.testie.local.', null);

// for mail for testie.local to go to testie.local
// note the trailing period in the data field
insert into dns_records (zone, host, type, data, mx_priority) values ('testie.local', '@', 'MX', 'testie.local.', '0');

# extra precaution to make sure packages dont update
for package in bind9 bind9-doc bind9-host bind9utils dnsutils ; do \
echo $package hold | dpkg --set-selections ; done




Test from your host (local on both container and hypervisor will work too since we forwarded port 53)

# dig @localhost testie.local

; <<>> DiG 9.9.5-3-Ubuntu <<>> @localhost testie.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15312
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;testie.local.            IN    A

;; ANSWER SECTION:
testie.local.        3600    IN    A    1.2.3.4

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 10 14:23:51 EEST 2014
;; MSG SIZE  rcvd: 57



BANG!


Two ways from now:
1. Clean up this container as much as possible.
Stop it. Commit and use it like that.


2. Get your debs. Get your configs. Place on the same folder as your Dockerfile and edit the Dockerfile (for config files you dont need RUN just add them to the correct places).
ADD somefile.deb /somewhere/somefile.deb
RUN dpkg -i /somewhere/somefile.deb

This will 1st copy the file then install it in the instance.

Also add
CMD ["/usr/sbin/named","-4","-u","bind","-n","1","-c","/etc/bind/named.conf","-f"]
at the end. This will be your run command when you start the container.
A nice little "-g" at the end will let you see all the logs that bind spits out when you just attach ... beware if you attach and then ^C you will stop your container instance.

build container
run it
congrats you have a brand new bind9 on a container with dlz-mysql.

Notice: since i am not planning to set mysql on the same container as bind i am not getting in depth of setting the mysql and records in the last Docker setup.

Make this yourself you lazy nerds!


сряда, 7 май 2014 г.

sysdig (поздрав за най-верния ми читател - вероятно единствения)

http://www.sysdig.org/
Sysdig is open source, system-level exploration: capture system state and activity from a running Linux instance, then save, filter and analyze.
Think of it as strace + tcpdump + lsof + awesome sauce.
With a little Lua cherry on top.

http://bencane.com/2014/04/18/using-sysdig-to-troubleshoot-like-a-boss/  - little guide

http://draios.com/fishing-for-hackers/ - What can be done with it

Слага в малкия си джоб swatch, aide и всичко което може да се изтиска от линукска система през syslog.

вторник, 22 април 2014 г.

openssl verify

Make a folder to contain your public certificates:

#mkdir certs
#cd certs

Get public cert for the server you want to check:
#openssl s_client -showcerts -connect server:port

Copy from the "-----BEGIN CERTIFICATE-----" to the "-----END CERTIFICATE-----" , and save it in a file ending in .pem

Get issuer (CA) root certificate ("Certification Authority Root Certificate")
should be provided by your issuer or if you are your own CA you should know how to get this. Place it in the same directory as the certificate of your server (the one you are testing).

 Rehash the certificates. This is basically creating a link files to your .pem files. Names are based on the certificate content so openssl command will be able to operate on the files.

#for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done

Verify the certificate:

#openssl s_client -CApath . -connect server:port

Output should be similar to:
..
..
..
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : DES-CBC3-SHA
    Session-ID: 53563D55F85CD643713643B7163A8C25113B114703C975DEA1C57D659FFBF96E
    Session-ID-ctx:
    Master-Key: 7288C083E0723BC61C4C21DC91908E34BD5C65695064E4E114FF4ED763ECA1D489794B9911E69021B8A8083A9CAB18EE
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1398160725
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
..
..

If you see Verify return code: 0 (ok) you are good!

вторник, 5 ноември 2013 г.

TranSocks - Transparent SOCKSifying Proxy

За онези моменти когато имате sock прокси но нямате как да накарате flash плугина да работи с него има TranSocks

От сайта на приложението научих че линукс мрежовия филтър (iptables)
може да филтрува трафика в зависимост от потребителя и/или групата която го инициира - това вероятно е по-голямото откритие тъй като приложения като tranSocks има много.

четвъртък, 8 ноември 2012 г.

How to record your linux desktop on video

ffmpeg -f x11grab -s <resolution> -r 25 -i :0.0 -sameq /tmp/out.mpg

set <resolution> to your current.

You can find out your current resolution using 'xrandr' command.

неделя, 4 декември 2011 г.

VMX и Nested KVM

След няколко дни борба в крайна сметка открих, че поради архитектурните особености на Intel процесорите и по-специално VMX флага, създаването на вложени (Nested) виртуални машини с KVM ускорение е много слабо подържано и във всички релиизи на KVM модула е със статус 'експериментално'.

За по-слабо запознатите - Nested KVM е ситуация при която върху една хост машина се пуска гостуваща такава отново с KVM възможности с идеята тя да бъде сама по себе си хост за друга виртуална машина. Това по същество налага предаването на VMX флага към гост машините.

Тук ще споделя частичното решение което намерих.



Лимити:
Хайпервайзорите (виртуалните машини) които трябва да могат да изпълняват други машини могат да бъдат само 64 битови.

Ядро:

Въпреки, че не съм пробвал за версия 3.1 на Linux kernel-a също се твърди, че има тези възможности.

Аз обаче тъй като съм консервативен предпочитам все още да използвам 2.6.x kernel tree. Ето как можем да го направим по този начин:




  • Git-ваме си сорса от тук https://github.com/nyh/kvm-nested-vmx/tree/nvmx10
  • конфигурираме ядрото по собствен вкус
  • компилираме (и модулите)
  • инсталираме (и модулите)
стартираме това ядро и изпълняваме modprobe kvm_intel nested=1

за да сте сигурни може да изпълните modinfo kvm_intel за да видите дали опцията nested съществува.

QEMU:
Тествано е с версия 0.15
Единствената особеност е, че трябва да му кажем cpu-то на госта да има VMX:

С флаговете на хоста (в които разбира се има vmx)
-cpu host        

Cъс cpu-то което сме му казали но дава и vmx flag
-cpu <някое от подържаните cpu-та>,+vmx




За да видите какви cpu-та може да ползвате '-cpu ?'


четвъртък, 24 ноември 2011 г.

Подкарване на mikrotik 5.7 на виртуална машина различна от VMware

Наскоро на пиратската сцена излезе новият mikrotik 5.7 под формата на VMware-ски имидж. Под vSphere server тествано работи добре, но за потребителите на други платформи за виртуализация ето кратък туториъл.


За подкарване на мт 5.7 на virtualbox (3.1.6 OSE):

1. Създава се виртуална машина с хард диск vmdk файла
2. Тип на IDE контролера е PIIX4
3. От терминала се изпълняват командите
VBoxManage setextradata mt "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/FirmwareRevision" "string:00000001"
VBoxManage setextradata mt "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/ModelNumber" "string:VMware Virtual IDE Hard Drive"
VBoxManage setextradata mt "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/SerialNumber" "string:00000000000000000001"
4. Пускате машината и всичко работи :)
(Забележка: диск файла не трябва да е стартиран преди изпълнение на командите от точка 3)

За подкарване на мт 5.7 с qemu (qemu-kvm-0.12.3) 

Примерите са под Ubuntu 10.04:
1. аpt-get source qemu
2. cd qemu-kvm-0.12.3+noroms
3. във hw/ide/core.c файла:
на ред 114 променяме
padstr((char *)(p + 10), s->drive_serial_str, 20); /* serial number */
на
padstr((char *)(p + 10), "00000000000000000001", 20); /* serial number */

на ред 118 променяме
padstr((char *)(p + 23), s->version, 8); /* firmware version */
на
padstr((char *)(p + 23), "00000001", 8); /* firmware version */

на ред 119 променяме
padstr((char *)(p + 27), "QEMU HARDDISK", 40); /* model */
на
padstr((char *)(p + 27), "VMware Virtual IDE Hard Drive", 40); /* model */

4. ./configure
5. make
6. по избор "make install" или може да си го ползвате от директорията
7. в директория pc-bios се слагат файловете:
    bios.bin
    vgabios-cirrus.bin
    pxe-rtl8139.bin
   
    могат да се намерят на
    http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/bios.bin?root=qemu
    http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/vgabios-cirrus.bin?root=qemu
    http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/pxe-rtl8139.bin?root=qemu

8. конвертирате vmdk имиджа
qemu-img convert "MikroTik v5.xx.vmdk" -O qcow2 mt5.qcow2

9. стартирате с имидж mt5.qcow2
пример:
./x86_64-softmmu/qemu-system-x86_64 -drive file=mt5.qcow2



Наличието на подробно описание за това как да се възползваме от  пиратски софтуер не е оправдание за употребата му!



Статията е публикувана единствено с научна цел и автора отрича да се е докосвал до въпросният пиратски софтуер.


неделя, 3 юли 2011 г.

pkg-config е чудесно творение

Днес ми се наложи да компилирам C код в който се употребява  SDL.
Тъй като не съм ползвал SDL до сега разбира се имах проблеми с компилацията, но това ме доведе до откриването на pkg-config.

 Ето примерна употреба:

g++ `pkg-config --cflags sdl` `pkg-config sdl --libs` hello.cpp -o hello

Как да превърнем C в скриптов език

Кратък отговор:
поставете това като първи ред във вашият C код.
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"

дайте права на файла с кода (Да! На something.c файла)

изпълнете кода ;)

Дълъг отговор:
https://gist.github.com/448040

понеделник, 20 юни 2011 г.

ondemand vs. performance



След целодневни опити да отгатна защо графиката (факториел към време) рязко се променя(почти прекъсва), най-сетне се усетих, че на ubuntu-то си имам cpufreq скалинг, който влияе на резултатие. Ето графиките при различните режими:

OnDemand:


Интересна графика, която, като се има предвид, че езика, на който пиша в момента е erlang, за мен говореше, че тази безграничност на променливите му на заден план съвсем не е с линейна графика, а по-скоро, както на публикуваната горе графика, е стъпаловидна (излишно е да казвам колко се развълнувах че - "Аха! Открих нещо... сега многонишковите ми програми ще
   са суперефективни"). Да обаче се оказва че след като пуснах cpufreq-а    с    governor performance, нещата лъснаха. Ето графика на същата функция        при различният governor.

Performance:



Интересно е да се отбележи, че въпреки загубеното време и напразните надежди, разбрах че сменянето на честотата става доста по-късно от това, което се показва по отговорните файлове ( /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq и други в същата директория).

Целият тест продължава повече от 40 секунди; промените в честотата се отразяват по файловете през първата секунда; от графиката е видно че стават ефективни доста по-късно.

неделя, 15 май 2011 г.

Криптиран партишън с Luks

Наскоро се сдобих с нов външен хард диск. Проблема с външните дискове е, че лесно могат да бъдат загубени или задигнати а поставената на тях информация да излезе наяве което никога не е приятно ако информацията е лична.
За тази цел реших да криптирам диска си, но исках лесно да мога да го достъпвам и менежирам. Това ме доведе до Luks - http://code.google.com/p/cryptsetup/

Ето как се прави криптирането с лукс
sudo apt-get install cryptsetup
инсталираме си необходимият пакет
приемаме че диска се разпознава като /dev/sdb
sudo dd if=/dev/zero of=/dev/sdb bs=4K
OR
sudo badblocks -c 10240 -s -w -t random -v /dev/sdb
OR
sudo dd if=/dev/urandom of=/dev/sdb bs=4K


пречистваме диска за да може да не се злоупотреби със стара информация по него
метода с /dev/urandom e най-сигурен и най-бавен (/dev/random е още по-сигурен и ооооще по-бавен)

Аз избрах badblocks метода който е доста по-бърз и едновременно с това проверява диска за лоши сектори като
пише произволна информация базирана на pattern и после чете от нея.

sudo fdisk /dev/sdb
създаваме си partition table и partition от тип 83 на диска.

sudo modprobe dm-crypt
sudo modprobe sha256
sudo modprobe aes

зареждаме необходимите модули за алгоритмите които сме си избрали да използваме

sudo cryptsetup --verify-passphrase luksFormat /dev/sdb1 -c aes -s 256 -h sha256
криптираме партишъна с избраните алгоритми (ще поиска да поставим парола - ЗАПОМНЕТЕ Я!)
има и други от които можем да изберем за криптация и хеш (man cryptsetup)

sudo cryptsetup luksOpen /dev/sdb1 securebackup
отваряме криптирания дял (ще ни поиска паролата)

sudo mkfs -t ext3 -m 1 -O dir_index,filetype,sparse_super /dev/mapper/securebackup
създаваме партишън вътре в криптирания дял
-t ext3 - ext3 партишън

-m 1 - намаля процента резервирани блокове за super user-a до 1 процент (0 също е опция)

-O dir_index - ускорява търсенето в директория

-O filetype - запазва filetype информация в директориите (с цел ускорение на работата)

-O sparse_super - създава по-малко super block backups (полезно при големи партишъни)

Готово! Най-лесният начин да употребявате новият си криптиран диск е просто да го включите. Повечето съвременни дистрибуции ще го монтират автоматично като в процеса ще поискат парола

Ако ви се наложи на ръка да го затворите използвайте:
sudo cryptsetup luksClose securebackup

TinyCore на ext партишън на USB (и не само)

Идеята на този вид инсталация е да имате възможност за boot на tinycore който сте променили по ваш вкус или пък сте оставили в оригиналният му вид.
Това което можете да постигнете е:
- persistance
- минимална употреба на ram
- възможност за предварително интегриране на пакети и настройка в tinycore

Стъпка по стъпка:
1. Изтегляме си последната версия на tinycore
2. Променяме дистрибуцията по наш вкус:
    - отваряме iso файла:
      mount -o loop tinycore-current.iso /mnt/
    - копираме съдържанието в предварително създадена за целта директория (аз съм я кръстил newiso)
      cp -R /mnt/* /home/peach/newiso
    - създаваме си директория tce в newiso (използва се за поставяне на пакети и конфигурация на поведението при зареждането на пакетите)
    - създаваме директория в tce с име optional и вътре поставяме пакетите (с разширение tcz - пакети можете да намерите в http://distro.ibiblio.org/tinycorelinux/3.x/tcz/  - само имайте грижата да поставите и депендънситата на избраните пакети)
    - в директорията tce поставяме файловете:
onboot.lst в който описваме пакетите които искаме да се инсталират при boot
copy2fs.flg - с празно съдържание ако искаме всички пакети да се копират в /opt (ЗАБЕЛЕЖКА: в зависимост от последващата конфигурация /opt може да се намира и в рам-а така че съответният флаг файл е важен ако искаме новото ни tiny да работи и без USB/CDROM/HDD/NFS след като веднъж стартира copy2fs.lst - ако искаме само някой от пакетите да се заредят в трайно в /opt ги описваме тук ( при това положение flg файла не е нужен.
    - за да правим промени по init файла трябва първо да го декомпресираме и разархивираме (направете си отделна директория за него пр. /home/peach/newinit)
cp /home/peach/newiso/boot/tinycore.gz /home/peach/newinit
cd /home/peach/newinit
gunzip tinycore.gz
cpio -idm < tinycore
.
правим промени каквито ни се искат
.
и идва ред да пакетираме init-a
find ./ | cpio -H newc -o > ../tinycore2
gzip tinycore2

копираме новият инит на мястото на стария  в boot
cp /home/peach/tinycore2.gz /home/peach/newiso/boot/tinycore.gz
до тук сме променили инита като сме му сложили конфигурации и файлове каквито са ни нужни, също така сме поставили пакети които ще се зареждат (или не при стартиране).
В този момент ако искате да произведете iso за да го напишете на диск или да използвате UNetBootin за създаване на boot девайс трябва да изпълните следната команда:
mkisofs -l -J -V TC-custom \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
-o TC-remastered.iso newiso


С това получаваме новото iso с промени и пакети по наш вкус.

3.Тази точка покрива направата на boot девайс по старомодният начин което дава определени екстри като лесен механизъм за промяна на пакетите и като цяло boot процеса

Оригинален източник: http://fragilematter.blogspot.com/2010/09/installing-tiny-core-linux-on-usb-drive.html

3.1 подготвяме диска/USB-то
fdisk /dev/sdX
 C - спира dos compatiability
 U - започва да показва всичко в сектори вместо цилиндри
 О - правим нов partition table
 N - нов partition
 P - primary
 1 - първи
 Т - тип на партишъна
 83 - linux тип
 А - active
 1 - нашият (става активен)
 W - записваме промените (ще ви изтрие всичко на медията която ползвате така че ако има нещо важно по-добре си направете backup) 


Сега след като имаме партишън е време да му направим файлова система ext2 отгоре:
mkfs.ext2 -L "tc" /dev/sdX1
правим файлова система с лейбъл tc - това можете да промените по ваш вкус

за да сме сигурни че ядрото е наясно с промените монтираме и демонтираме партишъна 
 mount /dev/sdX1 /mnt
 eject sdX1 или umount /dev/sdX1


Ако сте следвали предишните стъпки за промени по iso-то или поне копирането му в директория newiso следва да преместим нещата съдържащи се в него на подготвеният партишън (който отново ще монтираме - за целта предполагам че ващата дистрибуция автоматично го е монтирала в /media/tc)

cp -R /home/peach/newiso/boot /media/tc/
cd /media/tc/boot/
mv isolinux extlinux
mv extlinux/isolinux.cfg extlinux/extlinux.conf
rm extlinux/isolinux.bin

cp -R /home/peach/newiso/tce /media/tc/ (ако не сме я създавали в newiso можем да я направим директно в /media/tc)

mkdir /media/tc/opt

blkid -s UUID /dev/sdX1 (това ще ни даде стринг във вида /dev/sdX1: UUID="{some long string})
копирайте частта UUID="{some long string} защото ще я използваме.

Отворете extlinux/extlinux.conf в любимият си текстов едитор и на реда започващ с  append initrd= накрая добавете
 waitusb=5 tce=UUID="..." restore=UUID="..." home=UUID="..." opt=UUID="..."
 
 като на мястото на UUID="..." сложете стринга копиран след изпълнението на blkid командата.

тези опции указват:

waitusb=5 - ще изчака 5 секунди преди да потърси usb-то (това се налага в случай че устройството не се инициализира достъчно бързо)


tce=.. - къде е tce директорията
restore=.. - къде tinycore ще запазва рестор файловете си
home=... - същото за home директорията
opt=.. - и opt директорията

имайте предвид че ако искате дистрибуцията да се зарежда изцяло в паметта трябва да махнете restore,home и opt опциите и да добавите copy2fs.flg в tce директорията

можете да добавите и други опции (описани са в  boot/isolinux или boot/extlinux ако вече сте я преименували във файловете f2, f3 и f4)

почети сме готови остава само да си гарантираме че устройството ще е boot-ващо

extlinux -i /media/tc/boot/extlinux (изисква инсталиран пакет syslinux)
cat /usr/share/syslinux/mbr.bin > /dev/sdX - инсталираме MBR на устройството (файла mbr.bin може да се намира на друго място във вашата дистрибуция)

С това сме готови остава единствено да демонтираме устройството и да запалим от него
eject tc

Успех и честито на притежателите на ново,променено по собствен вкус и с пакети по собствен избор boot-ващо от USB - tinycore. 


четвъртък, 21 април 2011 г.

iptables l7 в debian

Това е туториъл който намерих оригинално на
http://ogordo.com/instalacao-do-layer7-no-debian/

Там е на някакъв език който аз определям като испански но не мога да съм сигурен. Прекарах го през google translate и не съм много сигурен колко успешен е превода но аз лично тествах командите които е изпълнявал автора и мога да кажа че довеждат до работеща система с layer 7 подръжка. Като бонус получаваме дебиански пакет :)

Забележка: Авторите на iptables предупреждават че той съвсем не е направен за такъв тип филтрирания. Така че ... знаете си всичко е на ваша отговорност :)

Implementing layer7 Linux Debian Lenny with kernel 2.6.28 and iptables 1.4.2. After several attempts to recompile the kernel on Debian Lenny layer7 to implement and suffer a lot with the famous message "kernel panic, I managed to recompile it in accordance with the commands below.

Installing needed packages:
# aptitude install libncurses5-dev
# aptitude install kernel-package
# aptitude install zlib1g-dev 


Enter the source directory and download files.

# cd / usr / src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
# wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2
# wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.21.tar.gz
# wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2008-04-23.tar.gz
# wget http://merkel.debian.org/~jurij/2.6.28-1/i386/config-2.6.28-1-686.gz

Removing iptables:

# aptitude purge iptables

Unpacking the packages:

# tar jxvf linux-2.6.28.tar.bz2
# tar jxvf iptables-1.4.2.tar.bz2
# tar zxvf netfilter-layer7-v2.21.tar.gz
# tar zxvf l7-protocols-2008-04-23.tar.gz
# uncompress config-2.6.28-1-686.gz

Creating a link to the kernel directory:

# ln -s /usr/src/linux-2.6.28 /usr/src/linux

Copying the boot settings and applying patches to the kernel layer7:

# cd /usr/src/linux
# cp ../config-2.6.28-1-686 .config
# patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch

Compiling and installing kernel
# make oldconfig
(Enter for all questions)

# Make menuconfig

Enter the directory Networking -> Networking Options -> Network Packet Filtering framework (netfilter) -> Core Netfilter Configuration

Select the modules (M) layer7 match and support (M) string match support

(M) layer7 match support #MARK AS MODULE
(M) string match support  #MARK AS MODULE

Exit through the exit, the last screen, choose save to the. Config, ie, the last exit you will be prompted to save. Now it's simple, just compile.

# make-kpkg -initrd kernel_image

It was created a linux-image-file-2.6.28_2.6.28 10.00.Custom_i386.deb in / usr / src directory and install again.

# cd /usr/src
# dpkg -i linux-image-2.6.28_2.6.28-10.00.Custom_i386.deb


Pronto, the new kernel is already installed.

Applying the patches and installing iptables
Type:

# cd /usr/src/iptables-1.4.2

Copy the files to the directory libxt_layer7.c libxt_layer7.man iptables:

# cp ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/* extensions/
Installing iptables:

# ./configure –with-ksource=/usr/src/linux
# make
# make install
# cd /usr/src/l7-protocols-2008-04-23
# make install


Okay, just reboot and use!

# reboot

If by chance Debian does not automatically load the module, run the following command:

# modprobe ipt_layer7

Some rules:

iptables-A FORWARD-m-layer7 l7proto MSNMessenger-j DROP
iptables-A FORWARD-m-layer7 l7proto bittorrent-j DROP

вторник, 19 април 2011 г.

Криптиране от команден (bash скрипт) ред в Linux

наскоро ми трябваше сигурен начин да криприрам информацията с която един bash скрип работи. Това което намерих са следните функции:

function encrypt {
  if [ -n "$1" ]; then
  openssl aes-256-cbc -a -salt -in "$1" -out "$1.enc"
  else
  openssl aes-256-cbc -a -salt
  fi
}

function decrypt {
  if [ -n "$1" ]; then
  openssl aes-256-cbc -a -d -in "$1" -out "${1%\.enc}" else
  openssl aes-256-cbc -a -d
  fi
}

разбира се може да се ползват и други алгоритми не само aes-256-cbc


ако поставим горните редове в .bashrc ще имаме възможност да изпълняваме команди от типа на:
за криптиране на архив
tar -czf - *|encrypt > allfiles.tgz.enc

за декриптиране
decrypt allfiles.tgz.enc

за декриптиране и разархивиране
cat allfiles.tgz.enc|dectypt|tar -xzf -

вторник, 29 март 2011 г.

expect - control interactive applications

Наскоро ми се наложи да създам по 10 потребителя на зала с 15 компютъра.
На машините имам root и пуснат ssh но идентификацията е само с парола. Тоест нямам възможност за влизане със сертификат, което отрязва възможността за употреба на едно от многото решения за multi ssh или prallel ssh. След известно търсене намерих expect. Преди го бях срещал в чужди скриптове и никога не се бях заинтересувал какво точно прави, но този път след като го разгледах по-задълбочено установих, че това е страхотен инструмент за контрол на интерактивни приложения (тези които под интерактивни разбират шарени с GUI - моля напуснете веднага).
Скриптовете "очакват" (от там и името expect) някакво действие от страна на извикано приложение и реагират по определен начин.
Ето един линк в който нещата са обяснени доста изичстено и с примери:
http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/scripting/5.html

За по-усложнени приложения има официален сайт с повече документация както и множество сайтове с готови скриптове.

петък, 11 март 2011 г.

dcfldd - Enhanced dd

http://dcfldd.sourceforge.net/


Introduction

  • dcfldd is an enhanced version of GNU dd with features useful for forensics and security. Based on the dd program found in the GNU Coreutils package, dcfldd has the following additional features:
     
  • Hashing on-the-fly - dcfldd can hash the input data as it is being transferred, helping to ensure data integrity.
     
  • Status output - dcfldd can update the user of its progress in terms of the amount of data transferred and how much longer operation will take.
     
  • Flexible disk wipes - dcfldd can be used to wipe disks quickly and with a known pattern if desired.
     
  • Image/wipe Verify - dcfldd can verify that a target drive is a bit-for-bit match of the specified input file or pattern.
     
  • Multiple outputs - dcfldd can output to multiple files or disks at the same time.
    Split output - dcfldd can split output to multiple files with more configurability than the split command.
     
  • Piped output and logs - dcfldd can send all its log data and output to commands as well as files natively.