Archive for the ‘Servers’ Category

Apache si eroarea: Permission denied: make_sock: could not bind to address 0.0.0.0:80

Sunt cazuri cand restartam Apache si acesta nu vrea sa mai porneasca afisand mesajul de eroare:

Permission denied: make_sock: could not bind to address 0.0.0.0:80

Acesta eroare este cauzata de blocarea portului 80 datorita faptului ca Apache nu a fost oprit corect de catre sistem.

Pentru rezolvarea problemei putem folosi comanda:

fuser -k -n tcp 80
apoi rulam din nou comanda pentru repornirea apache:
/etc/init.d/apache2 restart

Autentificare pe un server folosind cheie SSH

imagesPentru adaugarea unei chei SSH pe un server trebuie urmati cativa pasi pentru copierea cheii publice de pe masina locala pe serverul pe care se va face conectarea remote.

Primul pas este sa generam cheia.

ssh-keygen -t rsa

Cheia a fost generata in folderul .ssh folosind fisierele id_rsa.pub pentru cheie publica si id_rsa pentru cheia privata.

Acum ramane sa copiem cheia publica pe masina sau pe masinile pe care se face conectarea:

ssh-copy-id -i ~/.SSH/id_rsa.pub user@remote_host

Se introduce parola de la userul cu care s-a facut conectarea, iar apoi cheia a fost copiata. Acum se poate incerca conectarea astfel:

ssh user@remote_host

si daca cheia a fost corect instalata ar trebui sa nu mai fie nevoie de parola la logarea prin SSH.

Ubuntu 12.04 cu Apache2, php5 si MariaDB (Inlocuire MySQL cu MariaDB)

Mariadb-seal-shaded-browntext-altMariaDB, o alternativa la MySQL care, spun dezvoltatorii, este una chiar mai rapida si mai performanta decat cea a rivalului sau prezentant de altfel si cateva features aici: https://kb.askmonty.org/en/mariadb-versus-mysql-features/

Instalarea in Ubuntu, mai ales pe serverele pe care exista deja MySQL instalat, nu este complicata exceptand faptul ca trebuie adaugate manual repositorurile de pe care se face instalarea intrucat se pare ca acesta nu este inclus in binarele celor de la Ubuntu. Astfel:

Primul pas este instalarea managerului de repositories:

sudo apt-get install python-software-properties

apoi importam cheia GnuPG pentru a putea adauga repositoryul:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Adaugam acum efectiv repository-ul:
sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu precise main'

apt-get update

, iar la final instalam MariaDB:

apt-get install mariadb-server

Acest pas vom observa ca va sterge din sistem MySQL.
The following packages will be REMOVED:
  mysql-client-5.5 mysql-client-core-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5

Acum urmeaza instalarea pachetului phpmyadmin, bine-nteles presupunand ca avem deja instalat apache2 (in caz contrar apt-get install apache2).

apt-get install phpmyadmin

care din pacate nu este suficient pentru ca acesta sa si functioneze, deoarece deodata cu MySQL se pare ca s-au mai dezinstalat si alte dependinte. 
Le reinstalam folosind:

apt-get install php5-mysql libapache2-mod-php5

Acestea fiind zise, urmeaza testarea din browser:

http://ip_hostname/phpmyadmin

 

FreeBSD si ftpd – userii locali sa aiba acces doar la folderul lor

freebsdIn FreeBSD (ca si in alte sisteme) se poate folosi accesul FTP folosind userii locali. Poate reprezenta o problema cazul in care un user se conecteaza la FTP si vede toate celalate foldere de pe server, cu toate ca nu poate scrie in ele. Asa ca voi descrie procedura prin care se face enable la serverul ftp cu ftpd folosind userii creati in FreeBSD, dar si cea prin care se permite accesul doar la folderul local al fiecarui user.

In FreeBSD ftpd este inclus in base system asa ca trebuie sa il punem pe enable. Editam /etc/inetd.conf unde decomendam linia:

ftp	stream	tcp	nowait	root	/usr/libexec/ftpd	ftpd -l
apoi editam /etc/rc.conf si adaugam
ftpd_enable="YES"
Inainte de a porni serverul FTP mai facem o modificare in fisierul /etc/ftpchroot 
unde trebuie sa adaugam folderul pe care il poate accesa un user.
Sintaxa este de forma [user] [folder].
standdupp /usr/home/standdupp
Astfel userul standdupp are acces doar la folderul /usr/home/standdupp care 
de altfel este home folderul lui.

HTTP to HTTPS redirect folosind Apache2 cu un server de reverse proxy in fata

Cand folosim o masina virtuala cu Apache pe care rulam un site si vrem ca acesta sa ruleze folosind protocolul HTTPS impreuna cu un certificat SSL, iar in fata serverului avem un reverse proxy care este pe un alt server, atunci redirectarea si instalarea certificatului SSL trebuie sa fie pe reverse proxy, in zadar fiind pe masina virtuala.

Astfel, redirectarea HTTP to HTTPS permanenta la accesul http://srv.standdupp.ro care sa fie trimis spre https://srv.standdupp.ro trebuie sa se faca din reverse proxy astfel:

<VirtualHost *:80>

ServerName srv.standdupp.ro
# Creem aici redirectarea 80 to 443
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

Apoi creem VirtualHost pentru HTTPS

<VirtualHost *:443>

ServerName srv.standdupp.ro
Order deny,allow
Allow from all

ProxyPreserveHost On
ProxyPass / http://ip_masina_virtuala/
ProxyPassReverse / http://ip_masina_virtuala/

</VirtualHost>

Captive portal cu OpenWRT si NoDogSplash

Dupa cateva cautari am gasit si o metoda de a fce un captive portal pe un router normal.
Captive portal se poate face in doua moduri.

1. Userul se autentifica la o retea Wireless si cand deschide browserul si incearca sa acceseze o pagina este redirectat spre o pagina care apartine retelei la care s-a conectat si acolo i se cere sa acceseze un link pentru autentificare apoi este redirectat spre pagina companiei de care apartine reteaua wireless si abia apoi poate naviga pe internet. Practic aceasta procedura forteaza userul sa navigheze fiind mai controlat de administratorul retelei.

2. Userul se autentifica la o retea Wireless si cand deschide browserul si incearca sa acceseze o pagina este redirectat direct spre pagina companiei fiind direct autentificat la retea si poate sa navigheze. Evident ca si in acest caz nu are acces la serviciile internet pana nu isi deschide browserul. Procedura se face din config cu: AuthenticateImmediately yes.

Cele mai multe detalii de configurare se gasesc pe http://dev.wifidog.org/..

Instalarea NoDogSplash din OpenWRT se face folosind comenzile:

opkg update
opkg install nodogsplash

iar fisierele de configurare sunt in /etc/nodogsplash/nodogsplash.conf

Backup si restore la MySQL si PostgreSQL

Dump-ul unei baze de date MySQL in fisier .sql se face cu comanda:

mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Restoreul bazei de date MySQL din fisierul .sql se face:

mysql -u root -p[root_password] [database_name] < dumpfilename.sql

Dump-ul unei baze de date PostgreSQL in fisier .sql se face cu comanda:

pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restoreul bazei de date PostgreSQL din fisierul .sql se face:

psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}

La PostgreSQL se mai poate face dumpul folosind userul postgres si ruland comanda: psql -c baza_de_date > fisier.sql

Ubuntu 12.04 LTS integrare cu Active Directory

De cele mai multe ori nu ne convine ca daca avem 10 servere, sa avem si 10 usernameuri si parole diferite, asta in special cand facem parte dintr-o companie mai mare unde infrastructura este in continua crestere. Pentru asta folosim autentificarea cu un cont creat pe un domain controller (DC) pe care de obicei ruleaza un sistem de operare Windows Server cu Active Directory instalat, unde grupurile si politicile de grup sunt create pentru a aloca accesul fiecaruia in zona necesara de lucru.
La nivel de Windows, integrarea functioneaza foarte usor,dar nu e la fel de usor de facut pe Ubuntu, asta in conditiile in care vrem sa integram astfel in cat sistemul de operare sa tina cont si de policiticle de grup ale DC-ului si nu doar la nivel de LDAP.

Astfel pentru Ubuntu 12.04 LTS am ales CentrifyDC pentru integrarea cu Active Directory.
Inainte de instalarea CentrifyDC trebuie sa urmam cativa pasi pana la descarcarea lui;

Adaugam repositorurile:

apt-get install python-software-properties

add-apt-repository „deb http://archive.canonical.com/ oneiric partner”

Actualizam repositourile:

apt-get update

apoi instalam CentrifyDC:

apt-get install centrifydc

Dupa ce s-a instalat centrifydc putem face integrarea sistemului in domeniu:

adjoin -u user_domeniu -w nume.domeniu.tld

Dupa introducerea parolei de domeniu sistemul necesita restart pentru a fi posibila logarea cu contul de domeniu.

Acum ca sa putem avea acces root pe sistem va trebui sa adaugam in /etc/sudoers grupurile sau userii care sa se poata autentifica root prin comanda sudo pe acel sistem.

nano /etc/sudoers

unde adaugam:

%Nume_Grup ALL=(ALL:ALL) ALL #pentru ca un grup de pe DC sa poata avea acces root prin sudo
user_name ALL=(ALL:ALL) ALL #pentru ca un anume user de pe DC sa poata avea acces root prin sudo

In cazul in care numele grupului este „Domain Users” in /etc/sudoers se adauga: %Domain\ Users

Acum ca am editat si /etc/sudoers sistemul poate fi repornit si logarea se poate face cu contul de domeniu.
Logarea prin SSH la un sistem integrat cu Active Directory se face: ssh user_domeniu@hostname sau ssh GRUP\\user_domeniu@hostname sau ssh ‘GRUP\user_domeniu’@hostname

Pana aici este procedura pentru integrarea Ubuntu SERVER.

Pentru integrarea versiunii Desktop cu LightDM, mai trebuie urmati urmatorii pasi care presupun adaugarea unui script care forteaza CentrifyDC sa porneasca la pornirea sistemului. Aceasta implementare e necesara din cauza ca la versiunile Desktop, dupa pornirea sistemului CentrifyDC se conecteaza la domeniu abia dupa 2-3 minute, ceea ce de multe ori ne pune pe ganduri daca vrem sa ne logam soi nu reusim.

Creem un script in script in /etc/network/if-up.d/

sudo vim /etc/network/if-up.d/centrify

Unde adaugam continutul:

#!/bin/sh

if [ „$IFACE” = lo ]; then
exit 0
fi

/etc/init.d/centrifydc restart
initctl emit centrify-connected

Apoi alocam drepturile necesare:

sudo chown root /etc/network/if-up.d/centrify
sudo chgrp root /etc/network/if-up.d/centrify
sudo chmod 755 /etc/network/if-up.d/centrify
sudo chown root /etc/init/lightdm.conf
sudo chgrp root /etc/init/lightdm.conf
sudo chmod 644 /etc/init/lightdm.conf

La final editam /etc/init/lightdm.conf pentru a forta CentrifyDC sa porneasca in timp util, unde adaugam o singura linie: and centrify-connected, astfel ca fisierul sa arate asa: Acest pas nu mai este necesar daca Ubuntu are ultimele actualizari inainte de a fi integrat in domeniu.

# LightDM – light Display Manager
#
# The display manager service manages the X servers running on the
# system, providing login and auto-login services
#
# based on gdm upstart script

description „LightDM Display Manager”
author „Robert Ancell”

start on ((filesystem
and runlevel [!06]
and started dbus
and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udev-fallback-graphics)
and centrify-connected)
or runlevel PREVLEVEL=S)

stop on runlevel [016]

emits login-session-start
emits desktop-session-start
emits desktop-shutdown

script
if [ -n „$UPSTART_EVENTS” ]
then
# Check kernel command-line for inhibitors, unless we are being called
# manually
for ARG in $(cat /proc/cmdline); do
if [ „$ARG” = „text” ]; then
plymouth quit || :
stop
exit 0
fi
done

[ ! -f /etc/X11/default-display-manager -o „$(cat /etc/X11/default-display-manager 2>/dev/null)” = „/usr/bin/lightdm” -o „$(cat /etc/X11/default-display-manager 2>/dev/null)” = „/usr/sbin/lightdm” ] || { stop; exit 0; }

if [ „$RUNLEVEL” = S -o „$RUNLEVEL” = 1 ]
then
# Single-user mode
plymouth quit || :
exit 0
fi
fi

exec lightdm
end script

post-stop script
if [ „$UPSTART_STOP_EVENTS” = runlevel ]; then
initctl emit desktop-shutdown
fi
end script

Acest tutorial a mai fost testat si pe versiunile Ubuntu: 10.04 Lucid Lynx, 11.10 Oneiric Ocelot, 12.10 Quantal Quetzal, si 13.04Beta Raring Ringtail.

srv StandDuPp
Articole recente