Tag Archives: centos

Reinstalare GRUB2 in modul recovery

Dupa actualizarea grub2 pe un server CentOS, incarcarea sistemului se blocheaza imedat dupa POST fara sa afiseze vreun mesaj de eroare. Concluzia a fost ca o data cu actualizarea grub2 a fost deteriorat fie sectorul de boot (MBR), fie fisierul de configurarea /boot/grub2/grub.conf.

Pentru remedierea situatiei au fost urmati pasii urmatori:

  1. Se porneste sistemul folosind DVD-ul de instalare CentOS (7.5), iar la pornire se va alege optiunea Troubleshooting, apoi Rescue a CentOS Linux system.
  2. Dupa pornirea interfetei de recovery se va alege optiunea 1 (Continue) pentru identificarea instalarii actuale a sistemului de operare si montarea lui sub /mnt/sysimage
  3. chroot /mnt/sysimage
  4. Montarea DVD-ului de instalare CentOS:
    mkdit /test
    blkid (pentru a vedea calea spre DVD-ul de instalare, ar trebui sa fie /dev/sr0)
    mount /dev/sr0 /test/
  5. Pentru ca in modul recovery implicit nu exista conxiune la internet, pornirea interfetei de retea si configurarea acesteia se va face manual:
    ip link (listarea interfetelor de retea existente)
    ip link set dev em1 up
    ip addr add 192.168.1.2/24 dev em1 (stabilirea adresei ip a interfetei de retea)
    ip route add default via 192.168.1.1
  6. Dupa ce interfata de retea este activa mai trebuie configurata adresa serverului de DNS:
    vi /etc/resolv.conf
    nameserver 192.168.1.1
  7. Reinstalarea kernel3.10:
    cd test/
    cd Packages/
    yum reinstall kernel-3.10.0-957.el7.x86_64.rpm
  8. Pentru reconfigurarea grub2 este necesara prezenta pachetului grub2-efi-modules. Se va incerca reinstalarea pachetelor: grub2-efi, grub2-efi-modules si shim
    yum reinstall grub2-efi grub2-efi-modules shim
  9. Rescrierea MBR:
    grub2-install /dev/sda
    grub2-install /dev/sdb (in cazul in care hdd-urile sunt in RAID)
  10. Regenerarea fisierului grub.conf:
    grub2-mkconfig -o /boot/grub2/grub.conf
  11. Demontarea unitatii optice:
    umount /test/
  12. Iesirea din interfata de recovery si repornirea sistemului:
    exit
    exit

Instalare libssh2 si php-ssh2 pe un server CentOS

yum install php-devel
yum install libssh2-devel

Descarcare pachet libssh2 de la http://libssh2.org:

cd /opt
wget https://libssh2.org/download/libssh2-1.8.0.tar.gz
tar vxzf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
./configure
make
make install

Descarcare pachet php-ssh2 de la http://pecl.php.net/package/ssh2:

cd /opt
wget http://pecl.php.net/get/ssh2-0.13.tgz
tar vxzf ssh2-0.11.3
cd ssh2-0.11.3
phpize
./configure --with-ssh2
make
make install

La finalul instalarii fisierul ssh2.so va fi copiat la locatia /usr/lib64/php/modules.

Modifica fisierul php.ini adaugand linia urmatoare in sectiunea extensions:

extension=ssh2.so

Verificare utiliand functia phpinfo().

La final trebuie restartat serviciul httpd.

Cautarea in Atmail nu returneaza niciun rezultat

Aceasta este o problema (un bug nerezolvat) in Atmail si poate fi rezolvata doar de un utilizator cu drepturi de root pentru ca implica modificarea unui fisier sursa.

/var/www/atmail/search.php

Cauza problemei este o interogare SQL in care in fata anului este adaugat un prefix din doua cifre:

FROM "test search" BEFORE "31-Dec-202011" SINCE "25-Sep-202010"

Pentru corectare trebuie facute urmatoarele moificari:

//linia 364
$before = "$BeforeDay-$BeforeMonth-$BeforeYear";

//linia 369
$after = "$AfterDay-$AfterMonth-$AfterYear";

 

Rezolvare problema “Unable To Resolve UUID”

Dupa clonarea unui HDD dintr-un server web care ruleaza CentOS 6, la pornire apare eroarea:

Unable To Resolve UUID = 39344b35-14dc-49e2-b6d7-e1d6fd33e484

Cauza, a fost faptul ca la efectuarea clonei a fost modificat identificatorul HDD-ului destinatie.

Solutia era ca acest identificator sa fie corectat in fisierul /etc/fstab de pe HDD-ul sursa (cel de pe care booteaza sistemul de operare). Pasii urmati au fost urmatorii:

  1. Aflarea identificatorului corect
    Comanda blkid  returneaza identificatorii corecti pentru toate HDD-urile instalate/montate. De aici se va nota identificatorul pentru discul sdb1 (in cazul meu).
  2. Corectarea identificatorului in fisierul /etc/fstab
    Implicit fisierul /etc/fstab va fi read-only, deci nu vom putea face modificarile necesare. Prin urmare se vor rula comenzile urmatoare:

    [root@web etc]# mount –o remount, rw /
    [root@web etc]# chmod a+rw fstab

    Abia apoi vom putea edita fisierul /etc/fstab pentru a face modificarile necesare:

    [root@web etc]# vi /etc/fstab

     

Administrare utilizatori in Linux

Adaugare utilizator in unul sau mai multe grupuri:

useradd -G group-name1[,group_name2][,group_name3] username

Adaugare grup:

groupadd group_name

Modificare parola utilizator:

passwd username

Verificare grupuri utilizator:

id username

Adaugare utilizator existent intr-un grup existent:

usermod -a -G group_name username

Modificare grup primar pentru un utilizator:

usermod -g group_name username

Activare acces pentru root via ssh

In fisierul /etc/ssh/sshd_config  se seteaza:

PermitRootLogin yes

 

Instalare Plesk 12 pe un server CentOS 7

Partitionare recomandata pentru Plesk

Partitiile si dimensiunile acestora sunt stabilite in functie de recomandarile Plesk si recomandarile CentOS, pe un harddisk cu capacitatea de 500GB. Sistemul CentOS 7 a fost instalat cu profilul Minimal install.

/swap = 4GB
/boot = 500MB
/ (root) = 15-20GB
/tmp = 3-5GB (min 3GB)
/var = restul

Configurare/Pregatire instalare

Hostname: web.example.com
IP fix: 192.168.2.7

Dezactivare SELINUX:

In fisierul /etc/selinux/config  se efectueaza modificarea:

SELINUX=disabled

Oprire si dezactivare serviciu firewalld:

[root@web tmp]# systemctl stop firewalld
[root@web tmp]# systemctl mask firewalld

Instalare serviciu iptables:

[root@web tmp]# yum install iptables-services

Activare serviciu iptables:

[root@web tmp]# systemctl enable iptables

Generare/salvare fisier configuratie iptables:

[root@web tmp]# service iptables save

Acest fisier se poate edita pentru a deschide anumite porturi,

-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8447 -j ACCEPT

dupa care serviciul iptables trebuie restartat:

[root@web tmp]# service iptables restart

Instalare diverse utilitare:

[root@web tmp]# yum install wget mc gcc php-devel

Dupa ce toate setarile au fost efectuate este recomandat sa fie restartat si server-ul inainte de pornirea instalarii Plesk. Asadar:

[root@web tmp]# reboot

Instalare

[root@web tmp]# wget http://autoinstall.plesk.com/plesk-installer
[root@web tmp]# sh ./plesk-installer

Daca, in schimb, se doreste instalarea din interfata web se va rula comanda:

[root@web tmp]# ./plesk-installer --web-interface

apoi se va deschide in browser adresa https://ip-address:8447.

Daca instalarea se opreste cu eroarea ca psa-mod_fcgid intra in conflict cu mod_fcgid, atunci trebuie dezinstalat mod_fcgid (conform http://kb.sp.parallels.com/en/116134), dupa care se reporneste manual instalarea:

[root@web tmp]# yum remove mod_fcgid
[root@web tmp]# sh ./plesk-installer

Documentatia Plesk:
http://download1.parallels.com/Plesk/PP12/12.0/Doc/en-US/online/plesk-installation-upgrade-migration-guide/index.htm?fileName=65780.htm

Instalare SAPRFC 7.20 pe un server CentOS 7

Libraria SAPRFC este o extensie pentru php4 si php5 si permite comunicarea cu sistemele SAP R/3. Este distribuita sub licenta PHP si nu este creata de SAP AG. Pentru instalare este necesara si libraria RFCSDK, care poate fi obtinuta din Sap Service Marketplace, asa cum este descris mai jos. Pentru descarcarea din Sap Service Marketplace este necesar un ID de client SAP.

In continuare sunt detaliati pasii pentru instalarea librariei SAPRFC pe un server CentOS 7. Server-ul CentOS 7 a fost instalat cu profilul Basic Web Server si include PHP Support.

1. Descarcare SAPCAR

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components

Se descarca utilitarul SAPCAR pentru platforma corespunzatoare. Pentru ca SAPCAR e mai usor de utilizat in Windows, am descarcat versiunea pentru Windows si toate dezarhivarile le-am efectuat sub Windows apoi am transferat fisierele pe server-ul Linux.

SAPCAR este un utilitar pentru arhivare/dezarhivare construit de SAP. Cateva detalii despre utilizarea lui pot fi gasite aici: http://www.easymarketplace.de/SAPCAR.php. Pentru dezarhivarea unui fisier de tip .sar cu utilitarul SAPCAR, indiferent de platforma, se foloseste comanda:

SAPCAR_[version].exe -xvf [SAR filename].sar

2. Descarcare SAP RFC SDK (Non-Unicode)

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components

De aici se descarca pachetul SAP RFC SDK Non-UNICODE pentru platforma corespunzatoare (in cazul meu am descarcat versiunea 7.20 pentru Linux on x86_64 64bit).  Dupa dezarhivare, folderul rfcsdk se copiaza pe serverul Linux la locatia /usr/src/rfcsdk.

3. Descarcare librfc

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components > SAP Kernel > SAP Kernel 64bit > SAP Kernel 7.20 64bit > Linux on x86_64 64bit > #Database independent

De aici se descarca fisierul librfc_715-10007252.sar. Se dezarhiveaza cu utilitarul SAPCAR, apoi se copiaza fisierul librfccm.so pe serverul Linux la locatia /usr/src/rfcsdk/lib. Daca exista deja acolo un fisier cu acelasi nume trebuie suprascris.

Nota 413708 – detalii despre libraria RFC curenta.
Nota 955397 – detalii despre utilizarea RFC SDK sub Linux
Nota 27517 – detalii despre instalarea RFC SDK (sub Windows)

4. Download si instalare re2c (optional)

wget http://pkgs.repoforge.org/re2c/re2c-0.13.5-1.el6.rf.x86_64.rpm
rpm -Uvh re2c-0.13.5-1.el6.rf.x86_64.rpm

Detalii: http://pkgs.repoforge.org/re2c/

5. Instalare instrumente suplimentare

yum install php-devel
yum group install Development Tools

6. Instalare SAPRFC

[root@localhost tmp]# cd /tmp
[root@localhost tmp]# wget http://nchc.dl.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.tar.gz
[root@localhost tmp]# tar -zxf saprfc-1.4.1.tar.gz
[root@localhost tmp]# cp -R saprfc-1.4.1 /usr/src
[root@localhost tmp]# cd /usr/src/saprfc-1.4.1
[root@localhost saprfc-1.4.1]# export SAPRFC_DIR=/usr/src/rfcsdk/
[root@localhost saprfc-1.4.1]# export PATH=$SAPRFC_DIR/bin:$PATH
[root@localhost saprfc-1.4.1]# phpize
[root@localhost saprfc-1.4.1]# ./configure
[root@localhost saprfc-1.4.1]# make (se ignora erorile zend deprecated)
[root@localhost saprfc-1.4.1]# make install

Daca comanda make se finalizeaza cu eroare:

compilation terminated.
make: *** [saprfc.lo] Error 1

atunci se editeaza fisierul saprfc.c, la linia 47, si se modifica  function_entry in zend_function_entry (detalii aici).

Daca eroarea se refera la lipsa fisierului rfcsi.h, atunci acest fisier trebuie copiat in /usr/src/rfcsdk/include. Fisierul se poate obtine dintr-o librarie rfcsdk mai veche (versiunea 6.40), care poate fi descarcata dupa instructiunile de la pasul 2.

La final, pentru adaugarea extensiei saprfc in php, se editeaza fisierul /etc/php.ini si se adauga linia:

extension=saprfc.so

dupa care se restarteaza serviciul httpd.

Pentru a testa daca instalarea a avut succes, se copiaza fisierul /usr/src/saprfc-1.4.1/saprfc_test.php in locatia /var/www/html (sau /var/www/vhosts/default – in cazul unui server administrat cu Plesk). Se acceseaza adresa http://sever-ip/saprfc_test.php, si daca se incarca formularul de autentificare inseamna ca libraria a fost instalata cu succes.

Toate fisierele utilizate pentru instalarea SAPRFC pot fi descarcate si de aici:
SAPCAR (windows)
SAPCAR (linux)
SAP RFC SDK Non-UNICODE
LIBRFC (librfc_715-10007252.sar)

Detalii: http://saprfc.sourceforge.net/

Instalare si activare serviciu iptables in CentOS

Oprire si mascare serviciu firewalld:

systemctl stop firewalld
systemctl mask firewalld

Instalare pachet iptables-services:

yum install iptables-services

Activare serviciu iptables la pornirea sistemului:

systemctl enable iptables

Managementul serviciului:

systemctl [stop|start|restart] iptables

Salvarea regulilor de firewall:

service iptables save

Instalare DKIM cu sendmail sau postfix pe un server CentOS

Instalare OpenDKIM

Pentru instalarea OpenDKIM se foloseste comanda:

yum install opendkim

Generare cheie pentru semnarea mesajelor

Trebuie generata cate o cheie privata si una publica pentru fiecare domeniu pentru care se doreste semnarea email-urilor. Cheia privata se stocheaza pe server si nu este accesibila public, iar cheia publica va fi publicata in inregistrarile DNS asa incat serverele care primesc email-urile sa le poata verifica semnaturile.

La prima rulare, opendkim va genera un set implicit de chei care vor fi stocate in /etc/opendkim/keys/ folosind numele de domeniu al serverului si selectorul “default”. Pentru generarea manuala a cheilor se poate folosi acelasi selector, “default”.

Crearea cheilor se realizeaza cu comenzile urmatoare (se va inlocui example.com cu numele real al domeniului):

mkdir /etc/opendkim/keys/example.com
/usr/sbin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default

Optiuni utilizate:
-D: directory
-d: domain
-s: selector

Modificarea fisierelor de configurare

Trebuie create/modificate urmatoarele 4 fisiere de configurare:

1. /etc/opendkim.conf – fisierul principal de configurare
2. /etc/opendkim/KeyTable – lista cheilor disponibile pentru semnarea mesajelor
3. /etc/opendkim/SigningTable – lista domeniilor si conturilor pentru care se permite semnarea
4. /etc/opendkim/TrustedHosts – lista serverelor “de incredere” (trusted) la semnarea sau verificarea mesajelor

Editarea /etc/opendkim.conf si stabilirea valorilor ca mai jos:

## CONFIGURATION OPTIONS

# Specifies the path to the process ID file.
PidFile /var/run/opendkim/opendkim.pid

# Selects operating modes. Valid modes are s (signer) and v (verifier). Default is v.
Mode sv

# Log activity to the system log.
Syslog yes

# Log additional entries indicating successful signing or verification of messages.
SyslogSuccess yes

# If logging is enabled, include detailed logging about why or why not a message was
# signed or verified. This causes a large increase in the amount of log data generated
# for each message, so it should be limited to debugging use only.
#LogWhy yes

# Attempt to become the specified user before starting operations.
UserID opendkim:opendkim

# Create a socket through which your MTA can communicate.
Socket inet:8891@127.0.0.1

# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
Umask 002

# This specifies a file in which to store DKIM transaction statistics.
#Statistics /var/spool/opendkim/stats.dat

## SIGNING OPTIONS

# Selects the canonicalization method(s) to be used when signing messages.
Canonicalization relaxed/simple

# Domain(s) whose mail should be signed by this filter. Mail from other domains will
# be verified rather than being signed. Uncomment and use your domain name.
# This parameter is not required if a SigningTable is in use.
Domain example.com

# Defines the name of the selector to be used when signing messages.
Selector default

# Gives the location of a private key to be used for signing ALL messages.
#KeyFile /etc/opendkim/keys/default.private

# Gives the location of a file mapping key names to signing keys. In simple terms,
# this tells OpenDKIM where to find your keys. If present, overrides any KeyFile
# setting in the configuration file.
KeyTable refile:/etc/opendkim/KeyTable

# Defines a table used to select one or more signatures to apply to a message based
# on the address found in the From: header field. In simple terms, this tells
# OpenDKIM how to use your keys.
SigningTable refile:/etc/opendkim/SigningTable

# Identifies a set of "external" hosts that may send mail through the server as one
# of the signing domains without credentials as such.
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts

# Identifies a set internal hosts whose mail should be signed rather than verified.
InternalHosts refile:/etc/opendkim/TrustedHosts

Trebuie decomentate optiunile Domain, KeyTable, SigningTable, ExternalIgnoreList si InternalHosts, iar, din moment ce se va folosi KeyTable se poate comenta optiunea KeyFile.

Urmeaza crearea/modificarea celor 3 fisiere pe care le-am decomentat in fisierul de configurare.

Crearea/modificarea fisierului /etc/opendkim/KeyTable cu urmatorul continut:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

Pentru cazul in care se vor folosi mai multe chei (pentru semnarea mesajelor de pe diferite domenii virtuale cu diferite chei) se va adauga cate o linie pentru fiecare domeniu, dupa exemplul:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default
default._domainkey.example2.com example2.com:default:/etc/opendkim/keys/example2.com/default

Crearea/modificarea fisierului /etc/opendkim/SigningTable, in care trebuie doar decomentata linia:

*@example.com default._domainkey.example.com

Crearea/modificarea fisierului /etc/opendkim/TrustedHosts, dupa modelul:

127.0.0.1
hostname1.example.com
hostname2.example.com
example.com

Modificarea configurarii MTA (Mail Transport Agent)

Pentru Postfix, doar trebuie adaugate urmatoarele linii in fisierul main.cf:

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Daca se foloseste o versiune a Postfix mai veche de 2.6 mai trebuie adaugata si linia:

milter_protocol = 2

Pentru detalii suplimentare: http://www.postfix.org/MILTER_README.html#version

Nu se restarteaza acum serviciul Postfix, pentru ca mai intai trebuie pornit serviciul opendkim, altfel vor fi generate erori.

Pentru Sendmail trebuie adaugata urmatoarea linie in fisierul /etc/mail/sendmail.mc:

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')

Se genereaza fisierul sendmail.cf folosind comanda:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Pornirea OpenDKIM si repornirea MTA

Pornirea OpenDKIM:

service opendkim start

Repornirea Postfix:

postfix reload

Sau, dupa caz, repornirea Sendmail:

service sendmail restart

Pentru pornirea serviciului opendkim la pornirea serverului se executa comanda chkconfig:

chkconfig opendkim on

Adaugarea inregistrarii DNS

Informatia care trebuie publicata in DNS este continuta in fisierul /etc/opendkim/keys/example.com/default.txt si poate fi vizualizata cu comanda:

cat /etc/opendkim/keys/example.com/default.txt

Informatia arata cam asa:

default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHY7Zl+n3SUldTYRUEU1BErHkKN0Ya52gazp1R7FA7vN5RddPxW/sO9JVRLiWg6iAE4hxBp42YKfxOwEnxPADbBuiELKZ2ddxo2aDFAb9U/lp47k45u5i2T1AlEBeurUbdKh7Nypq4lLMXC2FHhezK33BuYR+3L7jxVj7FATylhwIDAQAB" ; ----- DKIM default for example.com

Aceasta informatie trebuie adaugata la finalul fisierului cu zonele DNS pentru domeniul respectiv.

Testarea configuratiei

Configurata poate fi testata folosind instrumentul http://www.brandonchecketts.com/emailtest.php
sau prin trimiterea unui email cu semnatura DKIM catre una (sau mai multe) din urmatoarele adrese de email:
autorespond+dkim@dk.elandsys.com
sa-test@sendmail.net
check-auth@verifier.port25.com

Alte articole pe aceeasi tema

http://www.dkim.org/
http://www.opendkim.org/
http://blog.mixu.net/2009/11/03/setting-up-spf-senderid-and-dkim-on-centos-5-3-using-sendmail/
http://www.mylinuxtips.info/linuxtipstutorials/setup-dkim-keys-with-sendmail/
http://server-support.co/blog/sysadmin/centos-configure-dkim-sendmail-multiple-domains/
http://www.elandsys.com/resources/sendmail/dkim.html

Eroare sendmail

Pe un server CentOS proaspat instalat, la trimiterea email-urilor, am observat in maillog urmatoarea eroare:

Sep 12 03:38:32 server sendmail[27862]: s9B9BnMZ003758: to=user@destination.com, ctladdr=user@mydomain.com (501/502), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30099, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, <span style="color: #ff0000;" data-mce-style="color: #ff0000;">stat=Deferred: Connection refused by [127.0.0.1]</span>

Pentru ca sendmail rula numai pe level 4, s-a rezolvat asa:

sudo chkconfig --levels 235 sendmail on
sudo service sendmail restart