Szoftveres RAID - lemezek cseréje

2010.8.31 13:15

RAID növelés és költöztetés új meghajtókra

Alaphelyzet: 3 raid tömb

debian:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 hda3[0] hdb3[1]
      6819520 blocks [2/2] [UU]

md1 : active raid1 hda2[0] hdb2[1]
      979840 blocks [2/2] [UU]

md0 : active (auto-read-only) raid1 hda1[0] hdb1[1]
      586240 blocks [2/2] [UU]


Az itt látható módon használjuk őket
debian:~# cat /etc/fstab
#              
proc            /proc           proc    defaults        0       0
/dev/md2        /               ext3    errors=remount-ro 0       1
/dev/md1        /var            ext3    defaults        0       2
/dev/md0        none            swap    sw              0       0


Két új meghajtó került a gépbe (sda,sdb). Még nincsenek felkészítve a munkára

debian:~# cat /proc/partitions
major minor  #blocks  name

   3     0    8388608 hda
   3     1     586341 hda1
   3     2     979965 hda2
   3     3    6819592 hda3
   3    64    8388608 hdb
   3    65     586341 hdb1
   3    66     979965 hdb2
   3    67    6819592 hdb3
   8     0   10485760 sda
   8    16   10485760 sdb
   9     0     586240 md0
   9     1     979840 md1
   9     2    6819520 md

Itt látható a használatban lévő hda lemez felosztása - teljesen megegyezik a hdbvel.

debian:~# fdisk -l /dev/hda

Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00028bc4

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          73      586341   fd  Linux raid autodetect
/dev/hda2              74         195      979965   fd  Linux raid autodetect
/dev/hda3             196        1044     6819592+  fd  Linux raid autodetect

Szeretnénk a / felcsatolást (md2) és a swap területet (md0) is megnövelni, továbbá a megszüntetni a /var alatt szolgáló md1 tömböt.
Létrehozzuk a partíciókat az sda és sdb lemezeken:
sda1 legyen négyszerese a hda1-nek, a maradék pedig mehet az md2 tömbbe

debian:~# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x98e38789.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): 292

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (293-1305, default 293):
Using default value 293
Last cylinder or +size or +sizeM or +sizeK (293-1305, default 1305):
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


A /dev/sda partíciók méretét a következő képpen át lehet másolni a /dev/sdb lemezre:

sfdisk -d /dev/sda > /tmp/sda
sfdisk /dev/sdb < /tmp/sda


Most, hogy már az új lemezeket is a kívánt méretűre szerkesztettük, jöhet a csere.

Az md0 lemezeivel kezdem:

Kiveszem a tömbből a hdb1 partíciót

debian:~# mdadm /dev/md0 -f /dev/hdb1 -r /dev/hdb1
mdadm: set /dev/hdb1 faulty in /dev/md0
mdadm: hot removed /dev/hdb1

A helyére teszem az sda1-et

debian:~# mdadm /dev/md0 -a /dev/sda1
mdadm: added /dev/sda1

Kiveszem a hda1-et

debian:~# mdadm /dev/md0 -f /dev/hda1 -r /dev/hda1
mdadm: set /dev/hda1 faulty in /dev/md0
mdadm: hot removed /dev/hda1

A helyére teszem az sdb1-et

debian:~# mdadm /dev/md0 -a /dev/sdb1
mdadm: added /dev/sdb1

Az eredmény:

debian:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 hdb3[1] hda3[0]
      6819520 blocks [2/2] [UU]

md1 : active raid1 hdb2[1] hda2[0]
      979840 blocks [2/2] [UU]

md0 : active raid1 sdb1[0] sda1[1]
      586240 blocks [2/2] [UU]

unused devices:


Látható, hogy a lemezeket kicseréltem ugyan, de még változatlan a tömb mérete. Az mdadm képes megnövelni a kötet méretét:

debian:~# mdadm --grow /dev/md0 --size=max

Az md0 swap terület. Habár a fenti parancs hatására a raid tömb bérete nőtt, a linux továbbra is az eredeti méretét látja.

A következő parancsokkal rávehető, hogy nagyobbnak lássa:

debian:~# swapoff -a
debian:~# mkswap /dev/md0
debian:~# swapon -a

Ellenőrizni a free paranccsal lehet.

A /var felcsatolásának megszüntetéséhez a következőket végeztem el:

- mkdir/var2
- rsync -a /var/ /var2/
- /etc/fstabban a /var kezedű sort kitöröltem, hogy ne csatolja fel
- újraindítás után a /var2/ tartalmát átmásoltam a /var/ alá. Induláskor néhány szolgáltatás panaszkodott, de az adatok visszamásolását követően minden jól működött tovább.



A / eddig az md2 tömböt használta. Sajnos a lemezek nagyobbra cserélésével és a tömb méretének növelésével nem jár együtt, hogy a / alatt több hely legyen (ez nem LVM), így az md1 tömböt fogjuk használni a / háttértáraként. Az előző lépésben a /dev/md1-et felszabadítottuk, tudjuk másra használni.
A következőket kell tenni: Ki kell cserélni a tömb tagjait az új lemezek partícióira, létre kell hozni újra a fájlrendszert, majd az md2 adatait átmozgatni.

A két új lemezt hozzáadjuk, egyelőre mint tartalék:

debian:~# mdadm /dev/md1 -a /dev/sda2
mdadm: added /dev/sda2
debian:~# mdadm /dev/md1 -a /dev/sdb2
mdadm: added /dev/sdb2

A hda2-t hibásnak jelöljük, majd kivesszük:

debian:~# mdadm --manage /dev/md1 -f /dev/hda2
mdadm: set /dev/hda2 faulty in /dev/md1
debian:~# mdadm --manage /dev/md1 -r /dev/hda2
mdadm: hot removed /dev/hda2

!!!Fontos: megvárjuk, amíg az adatok szinkronizálása végigmegy az egyik tartalék lemezre
A hdb2-t hibásnak jelöljük, majd kivesszük:

debian:~# mdadm --manage /dev/md1 -f /dev/hdb2
mdadm: set /dev/hdb2 faulty in /dev/md1
debian:~# mdadm --manage /dev/md1 -r /dev/hdb2
mdadm: hot removed /dev/hdb2

A szinkronizáció után megnöveljük a méretet.

!!TIPP:
A  watch cat /proc/mdstat parancs kiadásával egyszerűbb ellenőrizni a szinkronizálás folyamatát


debian:~# mdadm --grow /dev/md1 --size=max

Létrehozzuk az új fájlrendszert:

debian:~#mkfs.ext3 /dev/md1

Átmásoljuk a fájlokat az előkészített kötetre:

debian:~# mkdir /mnt/md1
debian:~# mount /dev/md1 /mnt/md1/
debian:~# rsync -aurx / /mnt/md1/

Néhány dolgot változtatni kell:

debian:~# sed -i s/md2/md1/ /mnt/md1/etc/fstab
debian:~# sed -i s/md2/md1/ /mnt/md1/boot/grub/menu.lst


Az mdadm konfigfájljába mentsük el a beállításokat (kivéve az md2-t, hiszen azt nem fogjuk használni a jövőben.).

debian:~# mdadm --detail --scan | grep -v md2 > /etc/mdadm/mdadm.conf


!!FONTOS
Ha ilyet látunk:
mdadm: metadata format 00.90 unknown, ignored.
Ez azt jelenti, hogy bugos az mdadm, a következőket kell tenni:

debian:~# sed -i s/00.90/0.90/ /etc/mdadm/mdadm.conf


Ez a parancs a /etc/mdadm/mdadm.conf fájlban a  metadata=00.90  értéket metadata=0.90-re módosítja.

Még egy lépést meg kell tenni, mégpedig a grubot újratelepíteni. Ezt sokféleképpen meg lehet tenni, egy lehetséges megoldás:
Valamilyen live rendszerrel elindítani a gépet, amely felismeri a RAID köteteket. Én a System Rescue CD-t javaslom. A raid tömbök kezelésekor, újraindítás előtt is meg lehet tenni ezt, csak körültekintően kell eljárni!

Indulás után a grub parancsot kell kiadni.

Ekkor kapunk egy konzolt, aminek sorai grub> - al kezdődnek. Ki kell deríteni, hogy a grub milyen diszkeket ismer. Erre jó megoldás a következő prancs:

grub> find /boot/grub/stage1
 (hd0,1)
 (hd1,1)

Esetünkben a hd0,1 a /dev/sda2-t, a hd1,1 pedig a /dev/sdb2 partíciót jelenti. A következő prancsokkal telepíthetjük mindkét lemezre a grubot:

grub> root (hd0,1)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  17 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.

grub> root (hd1,1)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  17 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd1) (hd1)1+17 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.




!!!Amennyiben a Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  sorban hibát látunk, valami nem ment jól, nem fog működni a grub.

Ha a fentihez hasonló kimenetet látunk, akkor a quit paranccsal ki kell lépni a grubból és ellenőrizni a /boot/grub/menu.lst fájlt. Tapasztaltam olyat, hogy a fájlban a root (hdx,y) sort nem frissítette, így azt kézzel kell megtenni.

Újraindítást követően a gép a frissen telepített grubbal  és az új HDDkkel indul.

Hozzászólások száma: 0

iSCSI kiszolgáló beállítása Debian Lenny alatt:

2010.8.09 13:08

Az alap rendszer telepítését és a RAID beállítását követően a következő leírást követve az ESXi számára is használható datastore hozható létre. iSCSI tárolóként fizikai lemezt, RAID kötetet de akár fájlt is meg lehet adni az ESXinek. Célszerű raid tömböt megadni, de nem azt, amelyikre a rendszer telepítve lett.
A telepítés lépései:

A megosztani kívánt partíció típusát át kell állítani BSD/OS típusúra. Erre fdisk vagy cfdisk használható. Amennyiben ez a lépés kimarad, az ESXi "unable to read partition information from this disk" hibával megáll a datastore hozzáadásánál!

fdisk -l /dev/hda
.
.
.
/dev/hda5             638        2482    14819962+  9f  BSD/OS

A telepítendő csomagok:
# apt-get install iscsitarget iscsitarget-modules-`iname -r`
A telepítés végén a iscsitarget írja, hogy nincs beállítva, hogy automatikusan elinduljon, ezért a következő módosítást kell elvégezni:
# echo "ISCSITARGET_ENABLE=true" > /etc/default/iscsitarget
Target és LUN létrehozásakor hibát írna, ezért tanácsos az elején hozzáadni az iscsi_trgt modult, majd a dependenciáit ellenőrizni:
# modprobe iscsi_trgt
# depmod -a

Létre kell hozni egy Target-et:
#ietadm --op new --tid=0 --params Name=RemoteDatastore
Majd egy LUNt:
#ietadm --op new --tid=0 --lun=1 --params Path=/dev/hda5,Type=fileio
A Target nevének meghatározását szabványosították, érdemes követni:
iqn.yyyy-mm.<reversed domain name>[:identifier]
yyyy-mm - év- hónap pl.: 2010-08
<reversed domain name> - pl.: RemoteDatastore
[:identifier] - a Target egyedi azonosító száma pl.: 1

Sajnos a fenti parancsokkal létrehozott LUN az iscsitarget újraindulását követően nem lesz elérhető, ezért a /etc/ietd.conf fájlban kell rögzíteni:

Target iqn.2010-08.RemoteDatastore:1
Lun 0 Path=/dev/hda5,Type=fileio
A következő sort érdemes kikommentelni, hogy ne zavarjon. Ez csak egy példa, ami nem kell:
 #Target iqn.2001-04.com.example:storage.disk2.sys1.xyz

Gondoskodni kell a hozzáférésről is. A /etc/ietd.conf fájlban leírtaknak megfelelően jelszóval lehet védeni a Targetet. A /etc/initiators.allow fájlban pedig azt kell beállítani, hogy az adott Targetet melyik IP címről érhetik el.
A következő  a iqn.2010-08.RemoteDatastore:1 Targetet minden IPről elérhetővé teszi.
# cat /etc/initiators.allow
iqn.2010-08.RemoteDatastore:1 ALL

A beállítások elkészültek, már csak újra kell indítani a szolgáltatást:
# /etc/init.d/iscsitarget restart
És megnézni az eredményét:

# cat /proc/net/iet/volume
tid:1 name:iqn.2010-08.RemoteDatastore:1
        lun:0 state:0 iotype:fileio iomode:wt path:/dev/hda5



Tennivalók ESXi-n:
- A kliens programmal bejelentkezni
- Az ESXi nevére kattinttani
- Configuration fül
- Baloldalon Storage Adapters -iSCSI Software Adapter -Properties -Dynamic Discovery / add -> San ip címének megadása
- Storage - Add Stoage - Disk/LUN - San identifier alapján azonosítani - méretét, nevét, block size-t beállítani

Hozzászólások száma: 0

Exchange helyett SOGo

2010.8.02 11:23

Céges közegben talán a leggyakrabban használt levelező és munkacsoport szoftver a Microsoft Exchange és Microsoft Outlook összeállítás. Mindenki ismeri, jól átgondolt és kitalált alkalmazás.
Léteznek ingyenes alternatívái, amelyek többé kevésbé működnek, de nem olyan intergráltak, mint a fent említett páros.
Egy ilyen ingyenes csoportmunka (groupware) alkalmazás a SOGo.

A SOGo eredetileg webes felszínen kínálja szolgáltatásait, de a megfelelő kiegészítésekkel használható a Mozilla Thunderbird kliensen, továbbá kiegészítők nélkül működik az Evolution alkalmazással is. Igény szerint az Outlookkal is össze lehet kapcsolni.

A következő leírás Debian Linux 5.0 alatt mutatja a be a telepítését. A telepítés után természetesen átgondolt LDAP adatbázist kell  létrehozni és a megfelelő beállításokat el kell végezni a klienseken.

A SOGo telepítése Debian Lennyre:SOGo


echo "deb inverse.ca/debian lenny lenny" >> /etc/apt/sources.list
apt-get update
apt-get install sogo
 
Alap beállítások  sogo felhasználóval:
 
Telepítés során létrehozza a sogo felhasználót. ennek segítségével állítható be az alkalmazás. Root felhasználóról a következő paranccsal leget átlépni:
su - sogo
 
defaults write sogod SOGoTimeZone "Europe/Budapest"
defaults write sogod SOGoMailDomain "company.hu"
defaults write sogod SOGoLanguage English
defaults write sogod SOGoAppointmentSendEMailNotifications YES
defaults write sogod SOGoFoldersSendEMailNotifications YES
defaults write sogod SOGoACLsSendEMailNotifications YES
defaults write sogod WOApplicationRedirectURL "http://groupware.company.hu"
defaults write sogod SOGoLoginModule calendar
defaults write sogod SOGoLanguage Hungarian
defaults write sogod SOGoUserSources '({ type = ldap ; CNFieldName = givenName; IDFieldName = uid; UIDFieldName = givenName;  baseDN = "dc=company,dc=hu"; bindDN ="cn=replicator,dc=company,dc=hu"; bindPassword = replica; canAuthenticate = YES; displayName = "Shared Addresses"; hostname = "localhost"; id = public; isAddressBook = YES; port=389; })'
 
 
http://groupware.company.hu - Működjön a DNS név!

MYSQL beállítása:

mysql -u root -p
mysql>CREATE USER 'sogo'@'%'IDENTIFIED BY 'sogo';
mysql> create database sogo;
mysql>GRANT ALL PRIVILEGES ON sogo.* TO 'sogo'@'%';
 
my.cnf-ben bind address sort kikommentelni - ha távolról el kell érni a mysqlt
 
su - sogo
defaults write sogod SOGoProfileURL mysql://sogo:sogo@localhost:3306/sogo/sogo_user_profile
defaults write sogod OCSFolderInfoURL mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info
 

SMTP beállítása:

defaults write sogod SOGoMailingMechanism smtp
defaults write sogod SOGoSMTPServer 192.168.58.1

IMAP beállítása:

defaults write sogod SOGoDraftsFolderName Drafts
defaults write sogod SOGoSentFolderName Sent
defaults write sogod SOGoTrashFolderName Trash
defaults write sogod SOGoIMAPServer 192.168.58.1
 
A beálíítások elérhetőek a /home/sogo/GNUstep/Defaults/.GNUstepDefaults fájlban:
groupware:~# cat /home/sogo/GNUstep/Defaults/.GNUstepDefaults
{
    NSGlobalDomain = {
    };
    sogod = {
        OCSFolderInfoURL = "mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info";
        SOGoACLsSendEMailNotifications = YES;
        SOGoAppointmentSendEMailNotifications = YES;
        SOGoDraftsFolderName = Drafts;
        SOGoFoldersSendEMailNotifications = YES;
        SOGoIMAPServer = 192.168.58.1;
        SOGoLanguage = Hungarian;
        SOGoLoginModule = calendar;
        SOGoMailDomain = company.hu;
        SOGoMailingMechanism = smtp;
        SOGoProfileURL = "mysql://sogo:sogo@localhost:3306/sogo/sogo_user_profile";
        SOGoSMTPServer = 192.168.58.1;
        SOGoSentFolderName = Sent;
        SOGoTimeZone = Europe/Budapest;
        SOGoTrashFolderName = Trash;
        SOGoUserSources = (
            {
                CNFieldName = displayNAme;
                IDFieldName = uid;
                UIDFieldName = givenName;
                baseDN = "ou=sogo,dc=company,dc=hu";
                bindDN = "cn=replicator,dc=company,dc=hu";
                bindPassword = replica;
                canAuthenticate = YES;
                displayName = "Shared Addresses";
                hostname = localhost;
                id = public;
                isAddressBook = YES;
                port = 389;
                type = ldap;
            }
        );
        WOApplicationRedirectURL = "http://groupware.company.hu";
    };
 
 
Ezt tilos kézzel szerkeszteni!, a fent használt parancsokkal kell ezt megtenni!!!
Néhány fontos sor LDAPból való autentikáláskor:
CNFieldName = a felhasználó teljes neve pl cn, de lehet a displayName is
IDFieldName = az a mező, amivel a felhasználó DNje kezdődik. PL.:dn: uid=kissp,ou=sogo..... tehát uid
UIDFieldName = a felhasználó bejelentkezéshez használatos neve pl givenname
displayName = Címjegyzék használata esetén ez lesz a Címjegyzék neve ~

LDAP beállítások

Adminisztrátor felvitele az adatbázisba: 
 
jelszó: sogo
groupware:~# slappasswd -s sogo
{SSHA}M5gU+hhGfhRnH6tDsh+rR/ZLXPvVSQix
groupware:~# cat /root/sogo.ldiff
dn: uid=sogo,ou=sogo,dc=company,dc=hu
objectClass: top
objectClass: inetOrgPerson
objectClass: person
objectClass: organizationalPerson
uid: sogo
cn: SOGo Administrator
mail: sogo@company.hu
sn: Administrator
givenName: SOGo
userPassword: {SSHA}P/iReJWnWsjg3UwTwH4G7tj+bIcOnbco
 
groupware:~# /etc/init.d/slapd stop
Stopping OpenLDAP: slapd.
groupware:~# slapadd  -l /root/sogo.ldiff
Hasonlóképpen fel kell venni a replicator felhasználót - ha szinkronizálva lesz a központi LDAP adatbázissal.
groupware:~# slapadd  -l /root/replicator.ldiff
 
groupware:~# slapindex
 
WARNING!
Runnig as root!
There's a fair chance slapd will fail to start.
Check file permissions!
 
groupware:~# chown -Rf openldap:openldap /var/lib/ldap
 
groupware:~# /etc/init.d/slapd start
Starting OpenLDAP: slapd.
 
A felhasználók felvételéhez használható a következő script:
 
groupware:~# cat /usr/bin/ldap-useradd.sh
#!/bin/bash
LDAP_BIND_DN='cn=replicator,dc=company,dc=hu'
LDAP_BIND_SECRET='replica'
LDAP_SUFIX='ou=sogo,dc=company,dc=hu'
 
echo -n "Felhasznalonev: "
read USERNAME
 
echo -n "Jelszo: "
read PASSWORD
 
USERPASSWD=`slappasswd -s $PASSWORD`
echo -e "dn: uid=$USERNAME,$LDAP_SUFIX\nobjectClass: top\nobjectClass: inetOrgPerson\nobjectClass: person\nobjectClass: organizationalPerson\nuid: $USERNAME \ncn: $USERNAME\nmail:$USERNAME@company.hu\nsn: $USERNAME\ngivenName: $USERNAME\nuserPassword: $USERPASSWD \ndisplayName: $USERNAME " | ldapadd -x -D $LDAP_BIND_DN -w $LDAP_BIND_SECRET
RETVAL=$?
if [ $RETVAL -eq 0 ] ;
    then
        echo 'Felhasznalo  sikeresen hozzaadva!'
 
    else
        echo '!!!Felhasznalo  NEM keszult el!!!'
    #exit 1
fi
 
PROBLÉMÁK TELEPÍTÉS KÖZBEN:
 
Abban az esetben, ha a sogod 100%-on dolgoztatja a processzort, amikor a webes felületen a felhasználó bejelentkezik, LDAP probléma valószínűsíthető. A /home/sogo/GNUstep/Defaults/.GNUstepDefaults fájlban megadott felhasználónak nincs írási jogosultsága a basednbe. Vagy nem a megfelelő adatokat kérdezi le az ldapból (CNFieldName, IDFieldName, UIDFieldName)  
 
Kliens oldali beállítások:
 
Használt szoftverek:
Mozilla Thunderbird 2.0.0.24
sogo-connector-0.101.xpi
lightning-0.10-inverse.win32.xpi
 
Beállítás
 
Naptár:
File -  calendar - new calendar - on the network - CalDAV  /location: http://groupware.company.hu/SOGo/dav/FELHASZNALONEVE/Calendar/personal/
Címjegyzék:
Address book - File - new Remote Address Book - name: felhasználó neve pl / URL: http://groupware.company.hu/SOGo/dav/kissp/Contacts/personal
A gyűjtött címjegyzék is ide kerüljön:
Address Book - Tools - Options - Composition - Addressing - Automatical add outgoing email-addresses to my: az előzőleg a name sorban megadott kiválasztása - OK

Hozzászólások száma: 0

2010.1.07 8:17





Hozzászólások száma: 0

Linux gateway2

2010.5.31 20:59

A Feladat:


Egy vendégek számára használható hálózat kialakítása, amely felől nem tudják elérni az irodai hálózatot, mégis viszonylag szabadon elérhetik az internet szolgáltatásait.

Képen ábrázolva:

Linux gateway - Iptables firewall-

Lehetséges megoldás:

Linux tűzfal közbeiktatása, amely két hálózati kártyával rendelkezik: egy a vendéghálózat felé, egy az irodai hálózat (internet)  felé.
Hálózati forgalmi szabályok szavakban:
A vendégek számára elérhető szolgáltatások:
  • web (http, https)
  • smtp, pop3, imap4
  • PPTP (windowsba épített VPN kliens) támogatása
A vendég  a hálózatot használva tudja használni az internet alapvető szolgáltatásait, minden más forgalom tiltva van. H az engedélyezett szolgáltatások nem elegendők, csatlakozhat  PPTP VPN kiszolgálóhoz.
A http forgalom arra a proxy szerverre lesz továbbítva, amelyet az irodai hálózat is hasaznál.
Az smtp forgalom az irodai hálózat számára is elérhető SMTP kijáratra lesz továbbítva.
A vendégek a kiszolgálóhoz és az irodai hálózat gépeihez nem tudnak csatlakozni, viszont a WLAN interfészen keresztül lehet az útválasztóhoz kapcsolódni  (pl: ssh).
A nem engedélyezett forgalom a LOGDROP láncba lesz továbbítva, ahol először loggolva lesz a forgalom, majd eldobva (DROP).

IPTABLES Tűzfal szabályok:

#!/bin/bash
 
LANIF="eth0"
WANIF="eth1"
WANIF_IP="192.168.0.1"
LANNETWORK="192.168.211.0/24"
PROXY="192.168.2.1"
SMTPGW="192.168.1.1"

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -F -t nat
iptables -N LOGDROP
iptables -A LOGDROP -j LOG
iptables -A LOGDROP -j DROP

iptables -t nat -A PREROUTING -i $LANIF -s ! $SMTPGW -p tcp --dport 25 -j DNAT --to $SMTPGW:26

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $LANIF -p ICMP -j ACCEPT
iptables -A INPUT -i $LANIF -p udp -m multiport --dports 53,67,68 -j ACCEPT
iptables -A INPUT -i $LANIF -d $SMTPGW -p tcp --dport 26 -j ACCEPT
iptables -A INPUT -i $LANIF -p tcp -m multiport --dports 80,110,143,443,465,993,995,1723 -j ACCEPT
iptables -A INPUT -i $LANIF -p gre -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -i $WANIF -j ACCEPT
iptables -A INPUT -j LOGDROP


iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $LANIF -d $LANNETWORK -j ACCEPT
iptables -A FORWARD -i $LANIF -d $SMTPGW -p tcp --dport 26 -j ACCEPT
iptables -A FORWARD -i $LANIF -d 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $LANIF -p ICMP -j ACCEPT
iptables -A FORWARD -i $LANIF -p tcp -m multiport --dports 80,110,143,443,465,993,995,1723 -j ACCEPT
iptables -A FORWARD -i $LANIF -p gre -j ACCEPT
iptables -A FORWARD -j LOGDROP

iptables -t nat -A POSTROUTING  -o $WANIF -s $LANNETWORK -j MASQUERADE
iptables -t nat -A POSTROUTING -o $WANIF -s $LANNETWORK -d $SMTPGW -j SNAT --to $WANIF_IP

Hozzászólások száma: 0

Sávszélesség korlátozása Debian Linuxszal

2010.5.17 18:58

Alkalmanként szükség van a sávszélesség korlátozására - tipikusan internetszolgáltatók számára.
Erre nyújt lehetséges megoldást a Shaperd nevű csomag Debian rendszeren.
Telepítés:
apt-get install shaperd
A telepítést követően figyelmeztet, hogy nincs beállítva a program és a /usr/share/doc/shaperd/examples/ könyvtár tartalmát felhasználva létrehozhatsz konfig fájlt.

A következő példa egy scriptből való, ami a /etc/shaperd/shaperd.conf generálására szolgált:

class $ip_address {
    bandwidth =  $up_speed byte/s
    ipv4 classifier out_if=eth0 saddr=$ip_address
    queue limits = 100 kb 1000 packets
}
class $ip_address {
    bandwidth =  $down_speed byte/s
    ipv4 classifier inp_if=eth0 daddr=$ip_address
    queue limits = 100 kb 1000 packets
}

A leírtak magukért beszélnek, csak néhány részletet említenék meg:
  • out_if - hálózati interfész a csomagok OUTPUT oldalán
  • inp_if - hálózati interfész a csomagok INPUT oldalán
  • saddr - forrás IP cím
  • daddr - cél IP cím
Lehetőség van protokoll , sőt port szinten szabályozni a forgalmat. A fent említett könyvtárban a konfigurációs példák adnak segítséget ennek beállításához.
A sávszélesség korlátozásához szükség van arra, hogy IPTABLES tűzfal szabályokkal a megfelelő forgalmat a queue táblába irányítsuk.
A követező tűzfal szabályok a megadott IP cím forgalmát irányítják a queue táblába, valamint a megadott IP - MAC párosnak engedélyezik a forgalmat a FORWARD láncon:

iptables -t filter -A FORWARD -s $ip_address  -j QUEUE
iptables -t filter -A FORWARD -d $ip_address  -j QUEUE
iptables -I FORWARD -s $ip_address -m mac --mac-source $mac_address -j ACCEPT

A queue lánc használatához be kell tölteni az ip_queue modult, valamint a dependenciáit:
modprobe ip_queue
depmod -a
Nem marad más hátra, csak  elindítani a shapert daemont:

/etc/init.d/shaperd start


Várom a visszajelzéseket!



Hozzászólások száma: 0

Iptables tűzfal

2010.5.17 18:40

Atheros 5212 chippel szerelt WLAN kártyával az alábbi módon készítettem a Debian linuxból wireless access pointot:
wlanconfig ath0 destroy; 
wlanconfig ath create wlandev wifi0 wlanmode ap;
iwconfig ath0 rate 54M;
iwconfig ath0 essid "Sempi.dyndns.hu" ;

iptables -A POSTROUTING -t nat -o ppp0 -s 10.1.1.0/24 -j MASQUERADE;
iptables -A POSTROUTING -t mangle -o eth0 -j TTL --ttl-set 64;

iptables -t nat -A PREROUTING -p tcp --dport 65502 -j DNAT --to-destination 10.1.1.2:65502;
iptables -t nat -A PREROUTING -p tcp --dport 65503 -j DNAT --to-destination 10.1.1.3:65503;
iptables -t nat -A PREROUTING -p tcp --dport 65504 -j DNAT --to-destination 10.1.1.4:65504;

iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT;
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT;
iptables -A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT;

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p UDP --dport 67 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 111 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 113 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -i ath0 -j ACCEPT
iptables -A INPUT -p tcp --dport 993 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 65501 -j ACCEPT
iptables -A INPUT -p tcp --dport 65502 -j ACCEPT
iptables -A INPUT -p tcp --dport 65503 -j ACCEPT
iptables -A INPUT -p tcp --dport 65504 -j ACCEPT

iptables -A INPUT -p UDP --dport 22 -j ACCEPT
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -p UDP --dport 67 -i ath0 -j ACCEPT
iptables -A INPUT -p UDP --dport 80 -j ACCEPT
iptables -A INPUT -p UDP --dport 123 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

iptables -P INPUT DROP

echo "1" > /proc/sys/net/ipv4/ip_forward;
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians;

Rég készült, vannak benne nemkellő és vannak hiányzó szabályok, de működött..

Hozzászólások száma: 1

OpenLDAP replikáció

2010.4.26 12:58

Az Open LDAP adatbázisának másik gépre történő replikálásának több módja van. A legegyszerűbb megoldás az, ha alá / fölé rendeltség van az ldap szerverek között. Ebben az esetben az egyik szerveren csak tárolódik az adat, míg a másikon történnek változások. Ez a felállás a Master - Slave replikáció.
A következőkben röviden a Multi Master összeállítású replikációt mutatom be. Ennek lényege, hogy az ldap fa bizonyos ágán történhet módosítás több szerveren is, ugyanakkor a változások mindkét szerveren megjelennek.
A lenti konfigurációs fájl részletek a /etc/ldap/slapd.conf fájlból való. Az itt bemutatott összeállítás a következő képen néz ki:

192.168.0.1: ez a szerver kommunikál a telephelyekkel, a telephelyek evvel szinkronizálják az adatbázisukat.
192.168.1.1: az egyik telephelyen lévő szerver, ami a helyi gépekkel kommunikál és az ldap adatbázisát a fentivel szinkronizálja.
192.168.2.1: a másik telephelyen elhelyezett szerver, teljesen hasonló a fentihez.

Részlet a 192.168.0.1 konfigurációjából:
limits dn.exact="cn=replicator,dc=company,dc=hu" size=unlimited time=unlimited
serverID 001
#--- telephely1
syncrepl rid=000
  provider=ldap://192.168.1.1
  type=refreshAndPersist
  interval=00:00:05:00
  retry="5 5 300 +"
  searchbase="ou=telephely1,dc=company,dc=hu"
  attrs="*,+"
  bindmethod=simple
  binddn="cn=replicator,dc=company,dc=hu"
  credentials=replica
#--- telephely2
syncrepl rid=001
  provider=ldap://192.168.2.1
  type=refreshAndPersist
  interval=00:00:05:00
  retry="5 5 300 +"
  searchbase="ou=telephely2,dc=company,dc=hu"
  attrs="*,+"
  bindmethod=simple
  binddn="cn=replicator,dc=company,dc=hu"
  credentials=replica

mirrormode TRUE
overlay syncprov
syncprov-checkpoint 100 10


Részlet a 192.168.1.1 konfigurációjából:

limits dn.exact="cn=replicator,dc=company,dc=hu" size=unlimited time=unlimited
ServerID 002
syncrepl rid=000
  provider=ldap://192.168.0.1
  type=refreshAndPersist
  retry="5 5 300 +"
  searchbase="ou=telephely1,dc=company,dc=hu"
  attrs="*,+"
  bindmethod=simple
  binddn="cn=replicator,dc=company,dc=hu"
  credentials=replica

mirrormode TRUE
overlay syncprov
syncprov-checkpoint 100 10

Részlet a 192.168.2.1 konfigurációjából:

limits dn.exact="cn=replicator,dc=company,dc=hu" size=unlimited time=unlimited
ServerID 003
syncrepl rid=000
  provider=ldap://192.168.0.1
  type=refreshAndPersist
  retry="5 5 300 +"
  searchbase="ou=telephely2,dc=company,dc=hu"
  attrs="*,+"
  bindmethod=simple
  binddn="cn=replicator,dc=company,dc=hu"
  credentials=replica

mirrormode TRUE
overlay syncprov
syncprov-checkpoint 100 10

A konfigurációs fájl sorairól röviden:
limits dn.exact="cn=replicator,dc=company,dc=hu" size=unlimited time=unlimited
    Ezzel a sorral jogot adunk a replicator felhasználónak, hogy bármikor (time), bármennyi (size) adatot mozgasson az adott adatbázisban.
ServerID 001
    Ez a szerver azonosítója, minden ldap szervert különböző azonosítóval kell ellátni
syncrepl rid=000
    Ha egy szerverről többelé replikálunk, akkor ehhez a változóhoz különböző értéket kell megadni.
provider=ldap:
    Annak a szervernek az ip címe vagy domain neve, amivel szinkronizálni szeretnénk
type=refreshAndPersist
    A szinkronizáció típusát adja meg. A refreshAndPersist azt jelenti, hogy az a szerver, amelyik kapcsolatot teremt a másikkal leküld minden változást, majd az, amivel kapcsolatot teremtett az előző visszaküldi azokat az adatokat, amik csak az ő oldalán változtak.
retry="5 5 300 +"
   A szinkronizálás gyakoriságág határozza meg.
searchbase=
    Ennek az opciónak a változtatásával oldható meg ,hogy egy telephelyen csak a számára értékes információk tárolódjanak, más telephelyek adatai ne jelenjenek meg. A szinkronizálni kívánt fa legalsó ágát (kiinduló pontját) kell megadni.
attrs=
    Azt adja meg, hogy melyik jellemzőket akarjuk szinkronizálni. Pl. megadható, hogy csak a jelszavakat küldje át a másik szervernek. Az attrs="*,+" hatására mindent átküld.
bindmethod=simple
binddn="cn=replicator,dc=company,dc=hu"
credentials=replica
    A fentiek összetartoznak, ezért együtt kezelem. A bindmethod azt adja meg, hogy milyen módon azonosítjuk magunkat a távoli kiszolgálón. A binddn a "felhasználónevet", a credentials a jelszót tartalmazza.

Bővebb információ a témáról elérhető itt.

Hozzászólások száma: 0

PPTP+RADIUS+LDAP VPN 1.

2010.7.31 18:31

PPTP+RADIUS+LDAP összeállítással készített VPN 1. rész


PPTP

A PPTP csomag képes a Windowsban megtalálható beépített VPN szolgáltatás kezelésére. Szerver és kliens oldalra is konfigurálható.
Két fő konfigurációs fájlja van:
1./etc/pptpd.conf
Tartalma:
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.0.24
remoteip 192.168.0.100-120
2. /etc/ppp/pptpd-options
Tartalma:
lock
name pptpd
domain company.hu
proxyarp
asyncmap 0
-chap
-mschap
require-mschap-v2
require-mppe-128
lcp-echo-failure 30
lcp-echo-interval 5
ipcp-accept-local
ipcp-accept-remote
nodefaultroute
nobsdcomp
auth
A fenti konfiguráció képes a /etc/ppp/chap-secrets fájlban megadott felhasználónév – jelszó párost felhasználva autentikációt megvalósítani. Hátránya, hogy az említett fájlban a jelszavak nincsenek titkosítva.

A fenti konfigurációt a pptpd-options fájlban a következő két sorral kiegészítve nem a chap-secrets fájlban keresi a felhasználónév- jelszó párost,hanem a localhostra telepített radiusclient-hez fordul.
plugin /usr/lib/pppd/2.4.4/radius.so
plugin /usr/lib/pppd/2.4.4/radattr.so

RADIUS

A Radius autentikációt valósít meg több forrásból. Olyan esetben hasznos, ha az autentikációhoz használt adatok nem egy helyen (text fájl, adatbázis, ldap) vannak tárolva, hanem ezek keveréke. Továbbá előnye, hogy több olyan alkalmazással is összekapcsolható, amely autentikációt követel (pl SSH, vagy a fent említett PPTP).

A Radius szerver-kliens hierarchiájú csomag. Debianban az alap klienscsomag a radiusclient1, szerver oldalon pedig a freeradius csomag szükséges. Szerver oldalra az autentikáció forrását képező adatoktól függően további csomagok telepítése is szükséges (pl: freeradius-ldap, freeradius-mysql).

A kliens és a szerver kommunikációja során a kliensnek egy jelszót kell küldenie a szerver felé, csak ennek ellenőrzése után szolgáltat adatot a szerver.
Szerver oldalon a következő képen kell beállítani a jelszót a /etc/freeradius/clients.conf fájlban:
client localhost {
ipaddr = 127.0.0.1
secret = testing123
require_message_authenticator = no
}
Lehetőség van tartományonként, sőt IP címenként eltérő jelszót alkalmazni:
client 192.168.0.0/16 {
secret = testing123-2
shortname = private-network-2
}
A Kliens oldal beállítása a /etc/radiusclient/radiusclient.conf fájlban történik:
Pl.:
auth_order radius
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/radiusclient/issue
authserver localhost:1812
acctserver localhost:1813
servers /etc/radiusclient/servers
dictionary /etc/radiusclient/dictionary
login_radius /usr/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login
Az említett jelszót a következő képen kell megadni a /etc/radiusclient/servers fájlban:
localhost testing123

A pptp és ldap összekapcsolásához a /etc/radiusclient/dictionary fájlban el kell helyezni a következő két sort:
INCLUDE /etc/radiusclient/dictionary.merit
INCLUDE /etc/radiusclient/dictionary.microsoft
Ezzel hozzáadva a fenti fájlok adatait a radiusclient szótárához. Ennek a jelszó kódolása terén van fontos szerepe.

Ezzel a radiusclient konfigurálása el is készült.

A Radius szerver konfigurálása több időt vesz igénybe. Jelen esetben be kellett állítani az LDAP-pal való kommunikáció részleteit a /etc/freeradius/radiusd.conf fájlban:
ldap {
server = "127.0.0.1"
basedn = "dc=company,dc=hu"
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
password_attribute = sambaNTPassword
ldap_connections_number = 5
timeout = 4
timelimit = 3
net_timeout = 1
tls {
start_tls = no
}
dictionary_mapping = ${confdir}/ldap.attrmap
edir_account_policy_check = no
}
Említést érdemel a password_attribute = sambaNTPassword sor, ugyanis a jelszó megfelelő kódolásához a samba nevű fájl- és nyomtató megosztást végző alkalmazás szükséges. Ennek működéséhez a samba konfigot is módosítani kell.

A fenti módon beállított ldap autentikációt engedélyezni kell. Ehhez a /etc/freeradius/sites-enabled/default és /etc/freeradius/sites-enabled/inner-tunnel fájlokban az ldap sorok elől ki kell venni a # -t.

A freeradius –X parancs segítségével indított radius szerver kimenetét folyamatosan lehet látni. Ha induláskor hibát észlel, itt tájékoztat. Ha a parancs futtatása után a következőket írja az utolsó sorokba, akkor elindult és várja a kapcsolatot a kliensről:
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on proxy address * port 1814
Ready to process requests.
Tesztelés közben tanácsos ezt a futtatási módot alkalmazni, mert sokkal bőbeszédűbb, mint a log.

Hozzászólások száma: 0

PPTP+RADIUS+LDAP VPN 2.

2010.7.31 18:31


LDAP

Az ldap beállítása nem túl összetett feladat, hiszen csak alapvető funkciókra van szükség ebben az esetben.

A működéshez a /etc/ldap/ldap.conf fájlba a következőket kell elhelyezni:

HOST 127.0.0.1
BASE dc=company,dc=hu
Ennél több adatot kell megadni a /etc/ldap/slapd.conf konfigurációs fájlban, ami az LDAP fő konfigurációit tartalmazza.

A már említett samba konfiguráció itt is megmutatja magát, egy schema fájlt kell a konfigurációba belinkelni. Ezt a schema fájlt a samba-doc csomaggal lehet telepíteni. Ez a schema fájl teszi lehetővé, hogy a PPTP és a Radius számára elfogadható módon legyenek titkosítva a felhasználók jelszavai.
A konfigurációs fájlban további néhány módosításra volt szükség, így nyerte el a következő formáját:
moduleload syncprov
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel 0
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
database bdb
suffix "dc=company,dc=hu"
checkpoint 512 30
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass,entryCSN,entryUUID eq
lastmod on
access to *
by dn="cn=admin,dc=company,dc=hu" write
by group.exact="cn=ldapadmins,ou=Groups,dc=company,dc=hu" write
by dn="cn=replicator,dc=company,dc=hu" write
by dn="uid=root,dc=company,dc=hu" write
by self write
by * read
by anonymous auth
overlay syncprov
syncprov-checkpoint 100 10
Tesztelés során a loglevel -t tanácsos 1-re állítani, így a syslogban bőbeszédű formában mutatja magát az ldap.

Az ldap tesztelésére a következő parancs jó lehetőség:
ldapsearch –x
A parancs hatására a teljes fa a konzolra kerül, ez lehetőség lehet az ldap fa mentésére is.
Ha a parancs a fa tartalmát mutatja, akkor az ldap működik és localhoston kommunikál. Ehhez nincs szükség autentikációra. Az ldap távoli elérésére az ldaps szolgáltatás szolgál.
Az ldap és ldaps beállításait, hogy mely címekről fogadják a kérést a /etc/default/slapd fájl tárolja.
A SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:///" sor azt jelenti, hogy localhoston a 389-es porton az ldap szolgál ki, távolról pedig az ldaps, ami a 636-os TCP portot használja.

SAMBA

A samba hagyományosan fájl és nyomtató megosztására szolgál, de jelen esetben a radius ldappal való kommunikációjában van szerepe. Ehhez a következő konfiguráció nyújt lehetőséget:
# Global parameters
[global]
client ntlmv2 auth = yes
password server = localhost
security = domain
realm = company.hu
workgroup = company.hu

dos charset = CP852
unix charset = ISO8859-2
workgroup = company.hu
netbios name = PDCx
server string = PDCx
smb ports = 139
map to guest = Bad User
passdb backend = ldapsam:ldap://127.0.0.1
enable privileges = Yes
username map = /etc/samba/smbusersmap
log file = /var/log/samba/log.%m
max log size = 1000
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
load printers = No
add user script = /usr/sbin/smbldap-useradd -m .%u.
add group script = /usr/sbin/smbldap-groupadd -p .%g.
add user to group script = /usr/sbin/smbldap-groupmod -m .%u. .%g.
delete user from group script = /usr/sbin/smbldap-groupmod -x .%u. .%g.
set primary group script = /usr/sbin/smbldap-usermod -g .%g. .%u.
add machine script = /usr/sbin/smbldap-useradd -w .%u.
logon script = %G.bat
logon drive = S:
domain logons = Yes
os level = 240
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
ldap admin dn = cn=admin,dc=company,dc=hu
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Users
ldap machine suffix = ou=Computers
ldap passwd sync = Yes
ldap suffix = dc=company,dc=hu
ldap ssl = no
ldap user suffix = ou=Users
panic action = /usr/share/samba/panic-action %d
printing = cups
print command =
lpq command = %p
lprm command =

A fenti konfigot a /etc/samba/smb.conf tartalmazza.

Mint látható a konfiguráció az ldap adatbázis eléréséről is tartalmaz információkat.

Hozzászólások száma: 0

PPTP+RADIUS+LDAP VPN 3.

2010.7.31 18:31

PPTP+RADIUS+LDAP összeállítással készített VPN 3. rész


LDAP Adatbázis

Az ldap adatbázisa karakteres felületről is kezelhető, de a módosítás és törlés, valamint a fa létrehozása grafikus felületről sokkal áttekinthetőbb. Erre a célre használható a PHPLDAPADMIN nevű webes alkalmazás is.
Használata előtt be kell jelentkezni. Bejelentkezéshez a felhasználónév összetettebb, mint más alkalmazásoknál. Itt a cn=admin,dc=company,dc=hu a felhasználónév.

VPN felhasználó hozzáadása a webes felületről nem könnyebb, mivel a sambaLMPassword és sambaNTPassword értékek leképzéséhez szükség van egy mkntpwd nevű programra, ami a /usr/bin könyvtárban található. A felhasználó hozzáadásának megkönnyítése érdekében készült egy script, ami ldap-useradd.sh nevet kapta. Ezt konzolból kell kiadni. A script egyszerű, csak felhasználónevet és jelszót fog kérdezni. A felhasználó hozzáadásának sikerességéről tájékoztat.
Az LDAP sajátossága, hogy nem önállóan gondoskodik a felhasználót azonosító számról, a UserIdről, hanem az adatbázisba való feltöltéskor kell gondoskodni ennek ellenőrzéséről. A script ki lett egészítve egy funkcióval, melynek segítségével ellenőrzi az adatbázisban szereplő legnagyobb UID-t, majd az egyel növelt értéked adja az új felhasználónak.

Felhasználó hozzáadása:
intranet:~# ldap-useradd.sh
Felhasználónév: proba_felhasznalo
Jelszó: proba
adding new entry "uid=proba_felhasznalo,ou=VPN users,dc=company,dc=hu"

Success...
intranet:~#

A script maga:
#!/bin/bash
GROUPID='1001'
MKNTPWD='/usr/bin/mkntpwd'
GENSHA1='/usr/local/bin/gensha1.pl'
LDAP_BIND_DN='cn=replicator,dc=company,dc=hu'
LDAP_BIND_SECRET='replica'
LDAP_SUFIX='dc=company,dc=hu'
LDAP_USERS='ou=VPN users'
RETVAL=0
BASH='/bin/bash'
#---------------------------------Kovetkezo UID kiszamolasa
max_uid=$(ldapsearch -x | awk '/uidNumber/ { gsub ( /uidNumber:/,"",$1); print $2 ;}' | sort -r | head -n 1)
USERID=$( echo $max_uid+1 | bc)
#--------------------------------- Check required programs
[ ! -x $MKNTPWD ] && exit 1
usercount=1
while [ $usercount -ne 0 ]
do
        echo -n "Felhasznalonev:"
        read USERNAME
        usercount=`ldapsearch -x | awk -F \, '/dn: uid=/ {gsub(/dn: uid=/,"");print $1}' | grep -c $USERNAME`
        if [ $usercount -ne 0  ]; then
                echo  "Foglalt felhasznalonev"
        fi
done
echo -n "Jelszo: "
read PASSWORD
#--------------------------------- jelszo hashelese
LMPASSWD=`$MKNTPWD -L $PASSWORD`
NTPASSWD=`$MKNTPWD -N $PASSWORD`
LOCALSID=`net getlocalsid | awk -F ': ' '{ print $2 }'`
USERPASSWD=`slappasswd -s $PASSWORD`
#--------------------------------- Felhasznalo felvetele az adatbazisba
echo -e "dn: uid=$USERNAME,$LDAP_USERS,$LDAP_SUFIX\nobjectClass: top\nobjectClass: account\nobjectClass: posixAccount\nobjectClass: sambaSamAccount\nuid: $USERNAME\nuserPassword: $USERPASSWD\nloginShell: $BASH\nsambaSID: $LOCALSID\nsambaLMPassword: $LMPASSWD\nsambaNTPassword: $NTPASSWD\ncn: $USERNAME\nuidNumber: $USERID\ngidNumber: $GROUPID\nhomeDirectory: /home/ldap_users/$USERNAME" | \
ldapadd -x -D $LDAP_BIND_DN -w $LDAP_BIND_SECRET
RETVAL=$?

if [ $RETVAL -eq 0 ] ;
then
        echo 'Felhasznalo sikeresen hozzaadva!'
else
    echo 'Felhasznalo hozzaadasa sikertelen!!'
    exit 1
fi

Hozzászólások száma: 0

User mode Linux telepítése

2009.12.13 14:19

Az első lépésben létrehoztam az 500 Mb méretű fájlt, ami a képfájl lesz. A /dev/zero állományból töltöttem fel az 50 darab, 10Mb blokkméretű darabot. Ezzel elértem, hogy lett egy 500 Mb méretű, null értéket tartalmazó fájlom. Ezt a következő paranccsal értem el:
# dd if=/dev/zero of=uml bs=10M count=50
A következő lépésként ext3 fájlrendszert készítettem a következő módon:
# mkfs.ext3 uml

Az ext3 fájlrendszer egy gyakran használt, megbízható naplózó fájlrendszer.
A mount parancs segítségével felcsatoltam az mnt könyvtárba. A loop egy olyan eszköz, ami egy olyan fájlrendszer, amely mögött nincs fizikai meghajtó, általában egy fizikai tartalomról képzett fájl. A debootstrap csomag feltelepítése után használható arra, hogy a – arch után megadott processzor architektúrához tartozó, a rendszer működéséhez szükséges fájlokat a megadott könyvtárba letöltse. Forrásnak azt az elérési utat használja, amely a host gép forrása is. Ezt a forrást a /etc/apt/sources.lst fájlban lehet beállítani. Ahogy az alábbi parancsban látható és az etch nevezetű, jelenleg stable állapotban lévő rendszert töltettem le az mnt könyvtárba.
# mount -o loop uml /mnt/
# debootstrap --arch i386 etch /mnt/

A parancs futásának végeztével az 500 Mb méretű fájlból 275 MB körüli részt foglal el az alaprendszer.
A következő lépésként beállítottam az UML hálózati csatolóját. A chroot . parancs hatására az aktuális könyvtár válik a gyökérkönyvtárrá.
# cd /mnt/
# chroot .
/# nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway: 192.168.1.1

A következőkben felcsatoltam a proc fájlrendszert, amiben a rendszer az éppen futó alkalmazásokat és az aktuális rendszerinformációkat tárolja.
# mount -t proc proc /proc
# cd /dev/
/dev# MAKEDEV ubd
/# nano /etc/fstab
/dev/ubd / ext3 defaults 0 0
proc /proc proc defaults 0 0

Ezzel a lépéssel létrehoztam az UML elsődleges meghajtóját és a /etc/fstab- ban beállítottam a rendszer indulásakor az automatikus felcsatlakozást.
A későbbi keveredések elkerülése érdekében a /etc/hostname fájlban megváltoztattam a virtuális gép nevét.
A /etc/inittab fájlban a konzolok számát csökkentettem egyre, a szükségtelen sorokat # beillesztésével megjegyzéssé tettem, így a fájl indulásakor nem fogja figyelembe venni. Ha az UML elnyerte végső formáját, a maradék sort is megjegyzéssé teszem, így nem fog a hostgépen konzol nyílni.

1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
1.Kódrészlet

A legfőbb különbség az UML és más virtualizációs megoldások között az, hogy ez a megoldás nem tartalmaz hardver virtualizációt, az UML hozzáfér a hardver elemekkel. Ez különbözteti meg a hagyományos alkalmazásoktól. Ez a tulajdonság teszi szükségessé, hogy a hardver elemek kezeléséhez szükséges modulokat is az UML rendelkezésére kell bocsátani, ezért a host gép /lib/modules/$(uname -r) könyvtárát át kell másolni a képfájl ugyan ezen könyvtárába.
A másolás befejeztével az UML alaprendszer munkára kész állapotba kerül. Ebben az állapotában is készítettem róla másolatot. A másolat hálózati beállításait módosítani kell a /etc/network/interfaces fájlban.
Az UML és a host gép a tun/tap megoldással kommunikál. Ennek lényege, hogy a host gépen létre kell hozni egy- egy virtuális interfészt a /etc/network/interfaces fájlban minden egyes virtuális kiszolgálóhoz. A következő sorok beillesztésével:

auto tap0
iface tap0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
pre-up tunctl -t tap0
post-down tunctl -d tap0
auto tap1
iface tap1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
pre-up tunctl -t tap1
post-down tunctl -d tap1
2.Kódrészlet

Telepíteni kell az uml-utilities, user-mode-linux csomagokat.

Hozzászólások száma: 0

Linux Gateway

2009.12.16 10:05

Gateway gép:

Bind9 Zóna hozzáadása:

a /etc/bind/named.conf fájlba a következő zónát kell beállítani:
zone "zona*.tilb.sze.hu" {
type master;
file "/etc/bind/db.zona*";
};
a * helyett a gép hostnevének utolsó karakterét (fekete9 esetén 9) kell írni
a db.local fájlról másolatot kell készíteni és a következőkétten kell átírni:
$TTL 604800
@ IN SOA fekete*.tilb.sze.hu. root.fekete*.tilb.sze.hu. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
fekete*.TILB.SZE.HU. IN NS <192.168.100.218>.
www IN A 10.1.9.10
mail IN A 10.1.9.11
www2 cname www
www1 cname www
ezután:
/etc/init.d/bind9 restart

DHCP beállítása:


/etc/network/interfaces
iface eth1 inet static
address 10.1.9.1
netmask 255.255.255.0
broadcast 10.1.9.255
network 10.1.9.0
ifup eth1
/etc/default/dhcp3-server
INTERFACES="eth1"
/etc/dhcp3/dhcpd.conf
subnet 10.1.9.1 netmask 255.255.255.0 {
range 10.1.9.100 10.1.9.200;
option router 10.1.9.1;
option broadcast-address 10.1.9.255;
next-server 10.1.9.1;
filename "pxelinux.0";
}
host www1 {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 10.1.9.10;
}
/etc/init.d/dhcp3-server restart

Tftp server beállítása:


A /etc/apt/sources.list/ fájlban található források közül egyik linket a böngészőbe másolva, majd a debian/dists/etch/main/installer-i386//images/netboot/netboot.tar.gz fájlig kell navigálni, majd a /tmp- be kell menteni.
 A tartalmát a /tftpboot könyvtárba kell másolni. Az itt szereplő @pxelinux.o fájlt adtuk meg a dhcp server konfigjában.
/etc/default/atftpd fájlban a
USE_INETD= true sort át kell írni USE_INETD=false - ra.
/etc/init.d/atftpd restart

Forwardot engedélyezni kell:


/etc/sysctl.conf
net.ipv4.ip_forwarding=1
sysctl -p- vel ellenőrizhetjük a beállításokat
sysctl -a
/proc/sys/net/ipv4/ip_forward fájl értékét 1- re kell állítani
iptables -A POSTROUTING -t nat -s 10.1.9.0/24 -o eth0 -j MASQUERADE

2. gép beállítása:


Egyszerűen feltelepítjük a rendszert.  - PXE boot, hálózati telepítés
Eztkövetően a következőket kell feltenni: apache2, proftpd mc gpm ssh squirrelmail host

Squirrelmail-configure


2(server setting), A(Update IMAP setting), 4(IMAP server), 10.1.1.11
B(Update SMTP setting), 4(SMTP server), 10.1.1.11
H, s q
mc
/etc/apache2/sites-available/ könyvtárban lévő default filet átmásoljuk ugyanide (SHIFT
F3) www1 névre

Apache 2


Mcedit /etc/apache2/sites-available/

Defaultba :


NameVirtualHost *:80

www1-ben

#NameVirtualHost *

ServerName www1.zona*.tilb.sze.hu
DocumentRoot /var/www/www1/
Directory /var/www/www1/
Redirct Mach….elé komment
Errorlog sor vég ez lesz: www1-error.log
CustomLog sor végére www1-access.log
Megcsinálod a www2-re is
Sites-enabled
@000-default-ról másolat (Shift
f3) @001-www1 néven
Megcsinálni www2 re is

@001-www1 (CTRL
X
S) sor végére www1
@002-www2 (CTRL
X
S) sor végére www2
Adduser www1
Adduser www2
Chsh –s /bin/false www1
Chsh –s /bin/false www2
Chown www1:www-data /var/www/www1
Chown www2:www-data /var/www/www2
Chmod 750 /var/www/www?
Ellenőrzés: Ls –l /var/www

Cd /var/www/www1
Echo „www1” > index.html
www2-re is,de átlépni a másik könyvtárba
apache2 restart
Install links
Host www1
Host www2
Links http://www1.zona1.tilb.sze.hu

Postfix config:

OK
internet site = OK
where should mail for root go = root
mail name = gepnév&szám.tilb.sze.hu (plö: fekete3.tilb.sze.hu)
other destinations... = OK
force szinkron = NEM
config SSL certificate:
country name = HU
State = GyMS
Locality = Gyor
amit akarsz
amit akarsz v.2
host name = OK
email address = OK
#megnézni vége

Proftpd conf:


Valahova beírni:
DefaultRoot /var/www/www1 www1
DefaultRoot /var/www/www2 www2
/etc/shells fájl végére beírni /bin/false
Restart proftpd
Próba: ftp: www1@localhost

Előfordul, hogy a proftpd lassú, a felhasználók lassan tudnak könyvtárat váltani és a le- és feltöltések is lassan mennek.
Ezt elkerülendő a következő sorokat kell beilleszteni a /etc/proftpd/proftpd.conf fájlba:

UseReverseDNS off

IdentLookups off


Hálózati Operációs Rendszerek Programozása

Debian Sarge telepítés

linux26
hálózat konfigurálása = eth1
gépnév =
hálózati domain = tilb.sze.hu
válasszon tükröt = Magyarország
debian tükör =
HTTP-proxy = üresen
kézzel szerkesztjük a particiós táblát
1. elődleges (sda1)
felhasználás = ext3
particíó formattálása
csatlakozási pont = / gyökérfájlrendszer
partción végzett műveletek befejezése
változások lemezre kiírása

lemezeket partícionálása = igen

a /dev/hda főrendszerbetöltő-rekordot választjuk
apt configurálása = ftp
magyarország – ftp.bme.hu
ha nincs magyar billentyűzetünk, akkor : loadkeys hu (ijjedgy meg:)
a telepítés előtt:
dselect update és apt-get upgrade kell!!!
egér telepítése:
apt-get install gpm
konfigurálás:
“nem”, “nem”!
/dev/psaux (ha nem, akkor majd át kell állítani a /etc/gpm.conf -ban a device=... sort -> device=/dev/input/mice -ra)!
ok
autops2 -> ok


Postfix config:

OK
internet site = OK
where should mail for root go = root
mail name = gepnév&szám.tilb.sze.hu (plö: fekete3.tilb.sze.hu)
other destinations... = OK
force szinkron = NEM

config SSL certificate:
country name = HU
State = GyMS
Locality = Gyor
amit akarsz
amit akarsz v.2
host name = OK
email address = OK

MCEDIT használata


belépés nézőkében F3
belépés szerkesztésre F4
keresés F7
mentés F2
kilépés Esc
Esc, vagy F10

apache konfigurálása kézzel:
mcedit /etc/apache/httpd.conf

ezen belül:
serveradmin webmaster@localhost helyett ServerAdmin webmaster@gépnév&szám.tilb.sze.hu
ServerName localhost helyett ServerName gépnév&szám.tilb.sze.hu
AllowOverride None helyett AllowOveride AuthConfig

mcedit /etc/sqirrelmail/apache.conf
Alias /sqirrelmail /usr/share/squirrelmail helyett Alias /mail /usr/share/squirrelmail


postaládák létrehozása:
maildirmake.courier ~/Maildir
export MAIL=~/Maildir
ellenőrzés: echo $MAIL (ha ez /root/Maildir akkor jó)
belépünk más felhasználóként:
su “felhasználó” (amit létrehoztunk)
maildirmake.courier ~/Maildir
export MAIL=~/Maildir
ellenőrzés: echo $MAIL (ha ez /root/Maildir akkor jó)
majd visszalépünk root-ra!

postfix configfájl:
mcedit /etc/postfix/main.cf

myhostname = gépnév&szám
myhostname után: home_mailbox = Maildir/
ha van mailbox_command = procmail -a "$EXTENSION" ilyen sorunk, elé # -et rakunk

/etc/init.d/apache restart
/etc/init.d/postfix restart

állítsa be hogy a /mail alatt lévő squirrelmail automatikusan 443-as portra legyen irányítva.
RewriteEngine On
RewriteRule ^/mail https://szervernev/mail


DHCP


apt-get install dhcp3-server ipcalc
config menu
min osztjuk a netet? = eth0
OK

példa: 10 gépnek osztunk IP-t. az ipcalc segítségével számoljuk ki a maskot, meg társait!
ipcalc 192.168.0.0/28
Address: 192.168.0.0 11000000.10101000.00000000.0000 0000
Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000
Wildcard: 0.0.0.15 00000000.00000000.00000000.0000 1111
=>
Network: 192.168.0.0/28 11000000.10101000.00000000.0000 0000
HostMin: 192.168.0.1 11000000.10101000.00000000.0000 0001
HostMax: 192.168.0.14 11000000.10101000.00000000.0000 1110
Broadcast: 192.168.0.15 11000000.10101000.00000000.0000 1111
Hosts/Net: 14 Class C, Private Internet

config fájl:
mcedit /etc/dhcp3/dhcpd.conf

subnet 192.168.200.0 netmask 255.255.255.240 {
range 192.168.200.2 192.168.200.14;
option domain-name-servers 192.168.0.1, 193.224.128.1;
option domain-name "tok.sth.sze.hu sth.sze.hu sze.hu";
option routers 192.168.200.1;
option broadcast-address 192.168.200.15;
default-lease-time 600;
max-lease-time 7200;
}

mcedit /etc/network/options
ip_forward=yes

mcedit /etc/network/interfaces
auto eth0 eth1
iface eth1 inet dhcp

iface eth0 inet static
address 192.168.200.1
netmask 255.255.255.240
broadcast 192.168.200.15
network 192.168.200.0

/etc/init.d/dhcp3-server restart
/etc/init.d/networking restart

.htaccess .htpasswd
/var/www-be egy könyvtárba
touch index.html
touch .htaccess
authname "protected area, passwd pls!"
authtype basic
authuserfile /etc/apache/.htpasswd
require valid-user
touch /etc/apache/.htpasswd
cat /etc/shadow | grep root > /etc/apache/.htpasswd

virtuális host:
mcedit /etc/apache/httpd.conf
NameVirtualHost *:80

ServerAdmin root@fekete*.tilb.sze.hu
DocumentRoot /var/www/ajto
ServerName ajto.tilb.sze.hu

Állítson be felhasználó azonosítást egy alkönyvtárra Apache-csal!

mcedit /etc/apache/httpd.conf
Szerkeszd át a AllowOverride None -t AllowOverride AuthConfig
touch /var/www/.htaccess
echo „AuthType Basic
AuthName \"ezjelenik meg majd\"
AuthUserFile /home/gecko/public_html/.htpassword
Require user gecko”
htpassword -c /ahol/ajelszofilevan/ gecko
/etc/init.d/apache restart)))
***

sshd autentikáció

/etc/ssh/sshd.conf
legvégén UsePAM = NO

ssh-keygen -b 1024 -t dsa
ssh-copy-id -i .ssh/id_dsa.pub ize@ize.tilb.sze.hu


proftpd
apt-get install proftpd
config:
standalone

settings
mcedit /etc/proftpd.conf

User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot


DenyAll



squid

apt-get install squid
visible_hostname pc9.tilb.sze.hu
http_port 8080
acl labor src 192.168.0.0/255.255.255.0
http_access allow labor
/etc/init.d/squid restart
export http_proxy=http://localhost:8080
lynx http://www.google.co.hu

iptables szabályok!!!
iptables -P INPUT DROP
iptables -F INPUT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 993 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT

courier pop és imap telepítése
apt-get install courier-pop-ssl courier-imap-ssl

levélküldés a rootnak:

Hozzászólások száma: 0

Partimage használata

2010.2.15 14:25

A partimage és partimage és partimage-server csomagok segítségével bármely partíció menthető a helyi lemezre (természetesen másik partícióra) vagy egy távoli szerverre. Most a szerverre való mentés és visszaállítás folyamatát ismertetem röviden.

Szerver telepítése


A szerver távolról való eléréséhez be kell jelentkezni. Bármely felhasználó alkalmas, el van véve a partimage-server users fájljába és bejelentkezhet az adott szerverre.
A telepítés első lépése a felhasználó hozzáadása a következő parancssal:
adduser ${felhasználó neve} –shell /bin/false
A szerver biztonsága érdekében a felhasználó shellje /bin/false, így nem jelentkezhet be a szerverre sem konzolról sem távolról pl ssh-n keresztül.
A következő lépés a felhasználó nevének /etc/partimaged/partimagedusers fájlba való felvitele.
A szerveren jellemzően a /home könyvtár alatt van bőségesen tárhely, így célszerű a mentett image fájlokat is ide felvinni. Ennek módja a /etc/default/partimaged fájl szerkesztése és a TARGET=/var/lib/partimaged/ helyett a felhasználó home könyvtárának megadása:
TARGET=/home/image
Ezzel a partimage-server beállítása el is készült. Utolsó lépés a módosítások érvényesítése, a szolgáltatás újraindítása:
debian:~# /etc/init.d/partimaged restart

Kliens gép partíciójának mentése


A legfontosabb szabály a partíció mentésével kapcsolatban, hogy a használatban lévő partíció mentése kerülendő. Az adott rendszert nem használat közben kell menteni. Ennek megoldására több lehetőség kínálkozik:
  • A gépre telepített más operációs rendszerről kell
  • Live rendszerről (pl System Rescue CD)
A partimage kényes arra, hogy a kliens és a szerver verziója megegyezzen. Ezt mindig figyelembe kell venni!
A Partimage NTFS fájlrendszerű partíciók mentésére ahsználható, bár figyelmeztet, hogy ez még fejlesztés alatt áll. A dokumentáció megnyugtat, hogy amennyiben sikerül lementeni, akkor sikerülni fog visszafejteni is. Amennyiben nem sikerül menteni, defragmentálást (töredezettség mentesítést) kell végezni
Partíció mentésének folyamata:
  • Menteni kívánt partíció kiválasztás
  • Képfájl nevének megadása
  • Partimage szerver IP címének megadása
  • Autentikáció(a telepítésnél megadott felhasználónévvel és jelszóval.)
  • Tömörítési szint beállítása, maximális fájlméret megadása (Csak akkor kell 2 GB-os méretű darabra vágni a célfájlt, ha pl. Samba megosztáson keresztül kívánjuk azt visszafejteni. Partimage szerver használata esetén nem.)

Kliens gép adatainak visszaállítása


  • Partíció visszaállításának folyamata:
  • Partíció kiválasztása (előzőleg a megfelelő méretűre létre kell hozni)
  • Képfájl nevének megadása
  • Partimage szerver IP címének megadása
  • Autentikáció(a telepítésnél megadott felhasználónévvel és jelszóval.)
Hasznos ötletek:

Amennyiben véletlenül nem lett kikapcsolva az imagefájl darabolása a következő paranccsal helyrehozható a hiba:
cat winxp.000 winxp.001 > winxp
Ezzel a paranccsal újra egyesíthető a darabolt fájl.

A Partimage használható parancssorból is. A következő parancsban megadunk minden változót a partíció visszaállításához, a kiadását követően már csak jóvá kell hagyni a módosítást és már megy is a visszaállítás:

partimage -s[szerver IP] -p4025 -U[felhasználónév] -P[jelszó] restore /dev/sda1 [image fájl neve]

Ha új merevlemezre állítjuk vissza az adatokat, vagy újrapartícionált lemezről van szó, akkor az MBRt (Master Boot Record) is vissza kell állítani. Ez a merevlemez első 512 bájtja, ami az operációs rendszer elindításával kapcsolatos információkat tartalmaz. Az MBRt is lementi a Partimage, amikor mentést végünk egy partícióról, így ugyanabból az image fájlból vissza lehet állítani.

Tehát az MBR visszaállítása:

partimage -s[szerver IP] -p4025 -U[felhasználónév] -P[jelszó] restmbr [image fájl neve]



Hozzászólások száma: 0

CD írása konzolból

2010.1.12 16:34

Egy hasznos parancsot mutatok be -nem túl részletesen-, amivel parancssorból lehet cdt írni.
Hasznos eszköz, ha optikai lemezre kell menteni. Nem a legmegbízhatóbb megoldás ez tény, de ha a pénztárca szab határt, akkor a semminél ez is több.

A cdrecorder csomagról lesz szó néhány mondatban.
A használat előtt meg kell adni neki, hogy melyik eszközt kívánjuk használni.

Nem kell találgatni, ugyanis a következő paranccsal ki lehet íratni az elérhető eszközöket:
debian:~#  cdrecord dev=ATA: -scanbus
WARNING: the ATA: method is considered deprecated on modern kernels!
Use --devices to display the native names.
scsibus0:
        0,0,0     0) 'HL-DT-ST' 'DVD-RAM GH22NP20' '1.00' Removable CD-ROM
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
debian:~#

Az aláhúzással jelölt sor az ami nekünk hasznos információ.

A példában a /media/DATA/save könyvtár tartalmát írjuk ki, ehhez a következő parancs kell:

debian:~# cdrecord -v -dev=ATA:0,0,0 speed=48 /media/DATA/save/*

Ez a parancs egyszerűen használható automatizált mentésnél scriptből futtatva.


Hozzászólások száma: 0

Dropbox KDE-vel

2010.1.04 20:19

Pendrive helyett Dropbox.

Ezzel az ingyenes alkalmazással a számítógépeim között tudok (ingyenesen minimum 2GB) adatot cipelni. Ehhez nem kell mást tenni, csak letölteni a dropbox.com weboldalról a kliens programot, feltelepíteni és regisztrálni.

A telepítés utolsó lépéseként ki kell választani, hogy hova szeretnénk tenni a Dropbox könyvtárunkat.

A probléma akkor kezdődik, amikor olyan ablakkezelőn szeretnénk asználni ezt az alkalmazást, ahova még nem készült el a kompatibilis klien sprogram. Én KDE ablakkezelőt használok és a következő képpen telepítettem a programot:

  1. Letöltöttem a Linuxos kliens programot innen.
  2. Kitömörítettem a csomagolt fájlt, majd a benne lévő .dropbox-dist könyvtárat a felhasználóm home könyvtárába másoltam.
  3. A .dropbox-dist/dropboxd fájlról symlinket készítettem a ~/.kde/Autostart/ könyvtárba, ezzel gondoskodva arról, hogy legközelebb is elinduljon a program.
  4. Hogy azonnal használatba vehessem a programot futtattam a dropboxd fájlt.
A regisztráció megkezdéséhez kattints a következő képre: Dropbox regisztráció

A leírás a http://antrix.net/journal/techtalk/dropbox_kde.html oldalról származik

Hozzászólások száma: 0

Mailboxban tárolt emailek konvertálása Maildirbe

2009.12.09 8:53

Alkalmanként előfordul az emberrel, hogy -postfix telepítése közben- elfelejti a home_mailbox = Maildir/ dort beletenni a /etc/postfix/main.cf konfigfájlba és késöbb esik le, hogy a levelek nem az elvárt helyen tárolódnak.
Nincs semmi veszve. A következő paranccsal át lehet konvertálni a mailboxban tárolt email üzeneteket a kívánt maildirbe:

mb2md -s /var/mail/root -d /root/Maildir

A sikeres konvertálás után valami hasonló látható a konzolban:

Converting /var/mail/root to maildir: /root/Maildir
Source Mbox is /var/mail/root
Target Maildir is /root/Maildir
1 messages.


Hozzászólások száma: 0

Grub visszaállítása

2010.1.04 10:45

Előfordul, hogy az ember Linuxot és Windowst is használ egy számítógépen. Ilyenkor az esetek döntő többségében a Windows újratelepítésére kerül sor gyakrabban - ennek megvannak az okai...

A gyakorlott felhasználó a windows újratelepítése előtt elmenti az MBR-t Master Boot Record, a merevlemez első 512KBját, hogy újratelepítés után egyszerűen csak vissza kelljen másolnia és minden mehet tovább.

A fenti feladatra a következő parancs használható:

dd if=/dev/sda of=/boot/mbr bs=512k count=1

Nos, ha a fentit elfelejti az ember, akkor bizony újra kell telepíteni a grubot a windows után.

Ehhez én a System Rescue CDmet használtam, ami egy nagyon hasznos eszköz az ember életében.

A CDről való bootolás után a következő parancsokat adtam ki:

mkdir /mnt/linux_disk
mount /dev/sda5 /mnt/linux_disk
grub-install --root-directory=/mnt/linux_disk /dev/sda

Ezt követően megnyugtató üzenetet kaptam:

Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

És ment is minden ahogy régen...

Hozzászólások száma: 0

Swap terület készítése telepítés után

2010.1.02 20:17

A swap terület kifejezéssel Linux rendszereknél gyakran találkozni. Nevezik például cserehelynek, virtuális memóriának és pagefájlnak is. Utóbbi kifejezés a windows felhasználók számára lehet ismerős, hiszen a virtuális memória tartalma valójában - alap állapot szerint - a C meghajtó gyökerében a pagefile.sys fájlban tárolódik.

Mindenki számára ismerős lehet a számítógép RAM nevű alkatrésze. Kivétel nélkül minden számítógépben megtalálható, ennek tárterülete és sebessége nagyban befolyásolja a számítógép sebességét. A RAM a Random Access Memory kifejezésből ered. Magyarra fordítva véletlen elérésű memória szavakra lehet fordítani.
Ha van ilyen alkatrész akkor mért is kell virtuális memória? - merül fel a kérdés.

Az operációs rendszerek rendszerint akkor  használják a virtális memóriát, amikor a fizikai memória fogytán van. Sajnos ennek használata csak félmegoldást jelent, hiszen az egész gép működése lelassul. A lassulás oka nem más, mint a RAM és a virtuális memória írás és olvasási sebessége között nagyságrendi különbség van - természetesen a RAM mellett álló szám sokkal kedvezőbb.

Ha naívan úgy gondoltuk, hogy 2010-et írva nekünk nincs szükségünk swap területre, nem mondhatjuk, hogy feltétlenül tévedünk. Manapság, mikor a számítógépekben több gigabájt memória található mért is lenne létjogosultsága a virtuális memóriának?
Elsősorban arra az esetre kell felkészülni a swap létrehozásával, amikor ez a nagy mennyiségű RAM sem elegendő egy alkalmazás futtatásához. Ha telepítéskor nem hoztuk létre a virtuális memória számártet, akkor szerencsétlen csak a fizikai memóriával tud dolgozni. Ha ez elfogy akkor bizony komoly probléma merül fel.

A következő parancsok kiadásával lehet beállítani swap területet egy telepített linux rendszeren.
A következő parancsok Ubuntu és Debian esetén érvényesek, más disztribúcióknál eltérő lehet.

Első lépésként létre kell hozni egy fájlt. Ennek a fájlnak a mérete meghatároza a swap méretét.

# dd if=/dev/zero of=/swap count=500 bs=1024k
500+0 beolvasott rekord
500+0 kiírt rekord
524288000 bájt (524 MB) másolva, 24,4042 mp, 21,5 MB/mp

A következő lépésben az mkswap parancs segítségével a átalakítottam a fájl fájlrendszerét:
# mkswap /swap

Az utolsó lépés az új swap terület használatba vétele:
swapon /swap


Ezel el is késült az új virtuális memória, a free parancs kiadásával ellenőrizhető:
# free
             total       used       free     shared    buffers     cached
Mem:       1025312     982404      42908          0       6068     344472
-/+ buffers/cache:     631864     393448
Swap:       511992       5036     506956


A legalsó, Swap: sor változott, eddig 0 szerepelt minden oszlopban.

Végül gondoskodni kell arról, hogy újraindulás után automatikusan használja a swap területet a rendszer.

Ehhez az /etc/fstab fájlba a következő sort kell beírni:

/swap   swap    swap    0       0


Hozzászólások száma: 0

MySQL Triggerek

2009.12.18 13:21

Az embernek sokmindenre magától kell rájönnie. Van amit meg lehet tanulni iskolában és van amit nem. A harmadi kategória, amit tanítanak iskolában, de nem ott, ahova én jártam... :)

Az emberre ráragad az adatbáziskezelésből  is néhány dolog az "évek során".  Ez az a "Hallottam már róla" érzés.
Nos énis így voltam az SQL Triggerekkel, Procedure-kal és tranzakciókkal.  Mígnem egyszer eljött a nap, mikor olyan problémába ütköztem, aminél MySQL Trigger volt a megoldás kulcsa.

A probléma szavakkal így néz ki: Egy Joomla tartalomkezelőhöz készítettem olyan regisztrációs űrlapot, amin a felhasználónév, jelszó és email cím mellett több adatot ki kell tölteni. Mivel nem találtam a Joomlához ilyen kiegészítést (lehet, hogy van), ezért más úton oldottam meg.
A megoldás szavakkal: Készítettem egy űrlapot, megnéztem, hogy az adatbázis melyik táblájába menti a felvitt adatokat, majd beillesztettem a triggert az adatok adattáblába való mentése elé (BEFORE INSERT).

Nem szeretnék sokat írni az alábbi triggerről, csak néhány gondolatot:
  • A delimiter egy hasznos dolog. Ez magyarra fordítva elválasztót jelent. Nos a MySQLben az elválasztó alapértelmezetten a ; pontosvessző. Ezt a delimiter paranccsal lehet módosítani. Hogy mért van erre szükség? Mivel a triggeren belül  - ahogy látható - több művelet zajlik. Ezzel aparanccsal állítható a karakter, ami a trigger végét is jelzi.
  • A triggereknél állítható, hogy az mikor fusson. Itt látható, hogy a jos_regi_ckforms_1 táblát figyeli és minden beillesztés előtt lefut.
  • A declare sorban a trigger futása során használni kívánt változókat kell meghatározni. Jelen esetben ezek számok.
  • A SET NEW.pass = md5( NEW.pass ); egy érdekes dolog. Konyhanyelven így szólna a sor: A beszúrni kívánt pass váltózó értéke legyen az md5-tel képzett hash értéke. Tehát ezzel a módszerrel lehet változtatni a beszúrni kívánt adat értékét
  • A select id into aro_id from még érdekes lehet. Nem szükséges változóként menteni a lekérdezett adatot, egyből mehet a céltáblába.
És a triger maga:
delimiter |
drop trigger user_insert |
CREATE trigger user_insert BEFORE INSERT ON jos_regi_ckforms_1
FOR EACH ROW
BEGIN
declare user_id, aro_id integer;
SET NEW.pass = md5( NEW.pass );
SET NEW.pass1 = md5( NEW.pass1 ) ;
INSERT INTO jos_regi_users (name,username,email,password,usertype,gid,registerDate) VALUES
 ( NEW.name, NEW.username, NEW.email, NEW.pass, 'Registered', 18, now() );
select id into user_id from jos_regi_users where  name = NEW.name AND
username = NEW.username;
INSERT INTO jos_regi_core_acl_aro
(section_value,value,order_value,name,hidden) VALUES
('users',user_id,0,NEW.name,0);
select id into aro_id from jos_regi_core_acl_aro where  value = user_id;
insert into jos_regi_core_acl_groups_aro_map (group_id,aro_id) VALUES
(18,aro_id);
END;
|
delimiter ;



Hozzászólások száma: 0

Gzip hálózaton keresztül

2009.11.26 12:32

A következő parancs segítségével úgy másolhatunk egy egész könyvtárat a hálózaton keresztül, hogy az adatok csak a hálózaton való áthaladás során vannak tömörített állapotban, amint megérkeznek a cél gépre, rögtön kitömörítésre kerülnek.
Ez akkor igazán hasznos, ha a forrás és a cél gép is megfelelően nagy processzor erőforrással rendelkezik, de a hálózati sávszélesség korlátozott.
Az előnye nagy mennyiségű adat másolásakor jelentkezik.

ssh 192.168.16.2 "tar c -C /var/cache/apt -f - . | gzip -c " | gunzip -c |tar -x -f -

Hozzászólások száma: 0

User mode Linux futtatása

2009.12.13 14:20

Az UML futtatásához szükséges az uml-utilities csomag telepítése.
UML indítása

# linux ubd0=/media/uml eth0=tuntap,tap0,, mem=128M

Az ubd0 után meg kell adni, hogy éppen melyik képfájlt szeretném használni, az eth0 után pedig azt, hogy a virtuális gép eth0 hálózati csatolójának melyik, a hoston létrehozott tap eszköz lesz a párja. A rendelkezésére álló memória méretét a mem opció után lehet beállítani. A parancs futtatását követően a rendszer indulásához hasonló folyamat megy végbe. Eredményeként megjelenik a konzol, amibe jelszó nélkül lehet bejelentkezni root felhasználóként. Az első teendő a root felhasználó jelszavának megváltoztatása és egy átlagos jogosultsággal rendelkező felhasználó létrehozása. Következő lépés a működés vizsgálatára a hálózat ellenőrzése. A host gép bármely tap csatlakozójának sikeres pingelése nyugtázza, hogy a hálózati kapcsolat a virtuális és host gép között megfelelően működik.
Következő lépésként a host gépen utat kell nyittatni az UML- nek a külső hálózat felé, gondoskodni kell a válasz üzenetek megérkezéséről, ezt a második parancs eredményezi.

# iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

# echo "1" > /proc/sys/net/ipv4/ip_forward

Az előző tűzfalszabályokat szintén a /etc/rc.local fájlba kell bemásolni, hogy induláskor lefussanak.
A távoli elérés érdekében a legelső csomag az ssh, amit telepítettem. Ennek sikeressége és kipróbálása után a /etc/inittab fájlban komment (#) jelet tettem a maradék konzol sora elé.
Ezzel a lépéssel az alaprendszer működőképessé vált, csak a hálózati beállítások módosítása szükséges a sokszorosításához.
Az UML-ek indulását automatizáltam a host gép indulásával, így egy esetleges leállás után is hamar helyreáll a rendszer. Ehhez a screen csomag telepítésre volt szükség. A screen parancs hatására a felhasználó konzolján egy virtuális konzol nyílik. Ez hasznos eszköz olyan feladatok futtatásánál, amelyeket távolról szeretnénk futtatni, de folyamatosan a képernyőre írnak, vagy nem tehetők háttér alkalmazássá.
Az automatikus indításhoz létrehoztam két egyszerű scriptet:

#!/bin/sh

linux ubd0=/media/uml_apache eth0=tuntap,tap0,, mem=128M ;
3.Kódrészlet

#!/bin/sh

linux ubd0=/media/uml_sql eth0=tuntap,tap1,, mem=128M;
4.Kódrészlet

A létrehozott szkriptekre futtatási jogot adtam a chmod +x startuml_{apache,sql} paranccsal.
A /etc/rc.local nevű script minden rendszerinduláskor lefut, így ide helyeztem az indító parancsokat:

screen -S apache -md startuml_apache;

screen -S sql -md startuml_sql;
5.Kódrészlet

A screen parancs –S kapcsolója nevet rendel a virtuális konzolhoz, a –md kapcsoló után pedig a futtatni kívánt alkalmazás nevét lehet írni. Az előző beállítások azt eredményezték, hogy a host gép indulásakor automatikusan indul el a két virtuális kiszolgáló, amelyek a fenti parancs kiadását követően 20 -25 másodperccel készen állnak a munkára.

Hozzászólások száma: 1