Posts Tagged with cpanel

posted by qubix on April 30, 2016

Αν διαχειρίζεστε cpanel server και λάβετε email σχετικά με κάποιο process upcp που ήδη τρέχει τα πράγματα είναι απλά:

μην πάτε να κλείσετε το process! Εκτός από κάποιες κουφές περιπτώσεις όπου το cpanel update process έχει κολλήσει από την προηγούμενη φορά που έτρεξε, το πιθανότερο είναι απλά να έχει ξεμείνει κάποιο process του crond.

Τρέξτε

ps aux | grep crond

και αν δείτε παραπάνω από ένα process ή σκοτώστε αυτό που νομίζετε πως είναι περιττό ή σκοτώστε τα όλα και τρέξτε ξανά το crond

easy ;)

posted by qubix on October 24, 2015

Ως γνωστόν το plain FTP θεωρείται και είναι ανασφαλές. Στο πνεύμα αυτό λοιπόν, το filezilla αποφάσισε και καλά έκανε να βάλει default τη σύνδεση με FTP over TLS...

Κάπου εκεί λοιπόν ανακάλυψα πως ο server στον οποίο ήθελα να συνδεθώ, μετά από ένα warning για το tls certificate, όταν έφτανε στην εντολή MLSD για να δείξει τα περιεχόμενα του directory (PWD -> TYPE I -> PASV -> MLSD) πέταξε ένα ωραιότατο timeout..

Προφανώς το πρόβλημα ήταν στην PASV όπου προσπαθούσε να συνάψει σύνδεση σε passive mode(*). Έλα που όμως δεν υπήρχαν πόρτες ανοιχτές για το σκοπό αυτό...

O server αυτός έτρεχε cpanel και pureftpd οπότε ήταν απλά ..θέμα configuration:

1) κάνουμε uncomment τη γραμμή
PassivePortRange 30000 50000

στο αρχείο /etc/pure-ftpd.conf

προφανώς μπορούμε να βάλουμε οποιοδήποτε port range θέλουμε

2) κάνουμε restart τον pureftp daemon

/etc/init.d/pureftpd restart

3) για να κάνουμε τις αλλαγές μόνιμα πρέπει να πειράξουμε το conf του cpanel για τον pureftpd

/var/cpanel/conf/pureftpd/main

προσθέτουμε τη γραμμή

PassivePortRange: '30000 50000'

4) σιγουρευόμαστε πως οι πόρτες είναι ανοιχτές στο firewall

- αν δεν χρησιμοποιούμε κάποιο plugin (πχ csf)
iptables -t filter -I INPUT -p tcp –dport 30000:50000 -j ACCEPT

- αν χρησιμοποιούμε το csf (ή οποιοδήποτε άλλο plugin) πάμε στο interface του και σετάρουμε από εκεί τις πόρτες

5) δοκιμάζουμε τη νέα μας ασφαλή FTP over TLS σύνδεση :]

Τις παραπάνω εντολές τις τρέχουμε ως root ή ως privileged user


(*) passive ftp mode είναι ο τρόπος σύνδεσης ενός client με τον ftp server κατά τον οποίο ο client συνδέεται ο ίδιος με τον server και στο command channel και στο data channel σε κάποιες τυχαίες unprivileged ports, σε αντίθεση με τον active mοde, στον οποίο ο server συνδέεται με τον client στο data channel, πράγμα το οποίο συνήθως δεν επιτρέπουν τα firewalls και πρόβλημα το οποίο λύνει ο passive τρόπος σύνδεσης.

posted by qubix on October 11, 2015

I tried some days ago to transfer some accounts from a plesk vps to a cpanel one. Having root access to both machines and using cpanel's transfer tool I thought it would be a simple task but upon the first transfer something went wrong..

------------------------------------------------
Starting “TRANSFER” for “Account” “asdasd”.
Copy Destination: /home
Remote server type: “plesk”.
Packaging the account with the command: /scripts/pkgacct.MYSERVERHOST.com asdasd '' --split --compressed --mysql 5.5 --allow-multiple …
Unknown option: compressed
Unknown option: mysql
MySQL error: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) at /tmp/.perl-ppk-Kh2FBV/lib/Cpanel/Foreign/Plesk/DB.pm line 117.
Done
Target “/home” on host “myserver.net” has 412 GB free and requires at least 0 bytes free, which includes space for temporary files.
WARNING: The remote server failed to send the location of the transfer archive.
WARNING: Attempting to guess the location of the remote transfer archive.
Fetching md5sum of “/home/cpmove-asdasd.tar.gz” from the remote server … …
Done
Removing copied archive on remote server. …
Done

Failed: The remote execution of “pkgacct.myserver.net” was not sucessful, or the requested account, “asdasd” was not found on the server: “IP ADDRESS”.
-----------------------------

as we can see, the process stopped because the migration script could not connect to plesks mysql.

trying to find out what happened I realized that I couldn't connect either manually.

In plesk the password is stored in a file: /etc/psa/.psa.shadow
that ".shadow" doesn't look good and indeed tha password in that file is AES encrypted,something like
$AES-128-CBC$xR2nUGJY6HA8q8eGQUT38w==$EiTB+LFuWnRSHWFkqOgtKg==

According to plesk documentation you can see the password with the command:
/usr/local/psa/bin/admin --show-password

Amazingly it worked. What it didn't work is logging into mysql with it...again the same error trying
mysql -uadmin -ptheabovepassword

It turns out that mysql in plesk wants the encrypted version of it not the plaintext.So the correct command would be:
mysql -uadmin -p`cat /etc/psa/.psa.shadow`

well..that was weird :P

Now you can populate the file /root/.my.cnf with the correct credentials so cpanel can connect to plesk mysql and account transfer be completed successfully!

And the contents of .my.cnf file (place them without the lines!)
----------------
[client]
user=admin
password='$AES-128-CBC$xR2nUGJY6HA8q8eGQUT38w==$EiTB+LFuWnRSHWFkqOgtKg=='
----------------
 

posted by qubix on February 19, 2015

Πρόσφατα χρειάστηκε να μεταφέρω κάποια mail accounts με αρκετά gbytes μέγεθος και κάποια χιλιάδες mail το καθένα από έναν cpanel server σε έναν ubuntu based zimbra.
Αρχικά πήγα με την "πεπατημένη" οδό, το imapsync αλλά δυστυχώς στο ubuntu έπαψε να υπάρχει στα repos από την έκδοση 11.10 και εγώ είχα μπροστά μου έναν 14.04, οπότε πήγα με το imapcopy, ένα παλαιό utility γραμμένο σε ..pascal το οποίο υπήρχε στα repos μιας που γίνεται crosscompile με τη freepascal

Προφανώς για να γίνει το migration πρέπει να έχουμε δημιουργήσει τα accounts που θέλουμε και στον zimbra server, ίδια με του cpanel

Ενημερωτικά, τα logs που μας ενδιαφέρουν είναι:
/opt/zimbra/log/mailbox.log
/var/log/zimbra.log

όταν και αν κάτι προκύψει μπορούμε να ίσως να βρούμε άκρη κοιτάζοντας τα εν λόγω logs

εγκατάσταση
apt-get install imapcopy

χρηση
πολύ απλά γράφουμε ένα αρχείο το imapcopy.cfg όπου νομίζουμε πχ στο /root/imapcopy/

τα περιεχόμενα έχουν ως εξής:
SourceServer imap.server.tld
SourcePort 143

DestServer imap.server.tld
DestPort 143

# SourceUser SourcePassword DestinationUser DestinationPassword

Copy "user@domain.tld" "Passowrd" "user@domain.tld" "Password"
Copy "user2@domain.tld" "Passowrd" "user2@domain.tld" "Password"

και εκτελούμε από εκεί την εντολή
imapcopy -t

για να τεστάρουμε πως οι συνδέσεις γίνονται κανονικά

σε περίπτωση που έχουμε προβλήματα και βλέπουμε μηνύματα αποτυχίας σύνδεσης χρειάζεται να γνωρίζουμε 2 πράγματα:
1) στον zimbra πρέπει να είναι ενεργοποιημένη η επιλογή "Enable Cleartext Login" για τον server (home->configure->servers->o_server_mas->edit (κλίκ πάνω στον σέρβερ)->IMAP
2) για κάποιο λόγο όταν το password αρχίζει με συγκεκριμένους χαρακτήρες δεν μπορεί να γίνει login οπότε καλύτερα στα passwords στα accounts του zimbra να είναι της μορφής 123456 ή κάτι ανάλογο "ασφαλές" :P

Αν όλα πάνε καλά λοιπόν μπορούμε να προχωρήσουμε στο migration των email. Αλλά πριν το κάνουμε, για να αποφύγουμε μηνύματα του στυλ

BAD maximum literal size exceeded

χρειάζεται να αλλάξουμε τα διάφορα default size restrictions που χρησιμοποιεί το zimbra

1) γινόμαστε zimbra user
su zimbra

2) εκτελούμε τις παρακάτω εντολές και σημειώνουμε κάπου τα default values
zmprov getConfig zimbraFileUploadMaxSize
zmprov getConfig zimbraImapMaxRequestSize
zmprov getConfig zimbraMailContentMaxSize
zmprov getConfig zimbraMtaMaxMessageSize

3) βάζουμε κάποιο μεγάλο limit σε όλα (εδώ είναι 150Μ)
zmprov modifyConfig zimbraFileUploadMaxSize 150000000
zmprov modifyConfig zimbraImapMaxRequestSize 150000000
zmprov modifyConfig zimbraMailContentMaxSize 150000000
zmprov modifyConfig zimbraMtaMaxMessageSize 150000000

4) κάνουμε restart τον postfix και το mailbox
postfix reload
zmmailboxdctl restart

5) βεβαιωνόμαστε πως περάσανε οι νέες τιμές
zmprov getConfig zimbraFileUploadMaxSize
zmprov getConfig zimbraImapMaxRequestSize
zmprov getConfig zimbraMailContentMaxSize
zmprov getConfig zimbraMtaMaxMessageSize
postconf message_size_limit

6) βγαίνουμε από zimbra user και εκτελούμε το imagecopy. Λογικά τώρα η μεταφορά θα γίνει χωρίς απρόοπτα!

posted by qubix on April 18, 2014

Πάμε τώρα να εγκαταστήσουμε το snmp σε έναν centos server, ώστε με κάποιο cacti πχ να κάνουμε monitoring εκ του μακρώθεν...
Αρχίζουμε με τα βασικά, δηλαδή να εγκαταστήσουμε τα απαραίτητα πακέτα στο σύστημα:

yum install net-snmp net-snmp-utils



αφού μπούν τα πακέτα και κάνα δυο εξαρτήσεις, πάμε να βάλουμε τον snmp daemon να ξεκινά με την κάθε εκκίνηση του συστήματος:
chkconfig snmpd on


τώρα στα ενδιαφέροντα πράγματα, το configuration. Χωρίς πολλά πολλά αυτό είναι ένα minimal configuration:

rwuser   noauth
rouser   noauth
rocommunity  mycommunity 8.8.8.8
syslocation  "datacenter"
proc  init 1 1
proc  httpd 10 1
disk  /
load  12 12 12


Όπως λοιπόν είναι προφανές:
- δεν έχουμε authentication
- βάλαμε μια community read-only η οποία είναι συγκεκριμένη ip και της δώσαμε το όνομα mycommunity
- και καλά το location είναι το "datacenter", προφανώς μπορεί να έχει κάποιο όνομα με ..νόημα!
- τσεκάρουμε την init process ώστε να ξέρουμε αν τρέχει ο server
- τσεκάρουμε την process του web server και βάζουμε όρια να τρέχουν 10 το πολύ και μία το λιγότερο processes
- τσεκάρουμε το μέγεθος του root partition, προφανώς μπορούμε να προσθέσουμε και άλλα partions/δισκους/arrays σε ανάλογες directives
- και τέλος τσεκάρουμε το load με 1minute, 5minutes, 15minutes max averages

μετά από αυτά, κάνουμε restart τον snmpd και βλέπουμε αν όλα παίζουν καλά από το remote cacti μας

προφανώς πρέπει να έχουμε ανοίξει την 161 udp port για να παίξει το οτιδήποτε!


posted by qubix on March 7, 2014

Ξαφνικά και ενώ πήγαιναν όλα καλά, το cpanel το οποίο συνδέεται με το mysql server μέσω ενός socket file, πέταξε το μήνυμα
cpanel Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Μετά τον αρχικό πανικό, διαπίστωσα πως τα site στον server έπαιζαν κανονικά, o mysql server ήταν επάνω χωρίς προβλήματα..άρα..σε κάποιο update του cpanel κάτι άλλαξε..

Τέλος πάντων, η λύση είναι στο /tmp να γίνει symlink ένα mysql.sock στο /var/lib/mysql/mysql.sock . Το ωραίο είναι πως στο /tmp υπήρχε ένα mysql.sock αρχείο το οποίο όμως δεν ήταν ούτε socket, ούτε symlink στο socket. Συνεπώς:

rm /tmp/mysql.sock ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock chown mysql.mysql /tmp/mysql.sock

posted by qubix on February 23, 2014

install on cpanel centos server svn


mkdir /usr/local/src/subversion
cd /usr/local/src/subversion
wget http://www.apache.org/dist/subversion/subversion-1.7.14.tar.bz2
tar xjvf subversion-1.7.14.tar.bz2
cd subversion-1.7.14
./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache/bin/apr-1-config --with-apr-util=/home/cpeasyapache/src/httpd-2.2/srclib/apr-util/apu-1-config

Θα δούμε το σφάλμα:


checking for sqlite3.h... no
checking sqlite library version (via pkg-config)... no
An appropriate version of sqlite could not be found.  We recommmend
3.7.6.3, but require at least 3.6.18.
Please either install a newer sqlite on this system
or
get the sqlite 3.7.6.3 amalgamation from:
    http://www.sqlite.org/sqlite-amalgamation-3.7.6.3.tar.gz
unpack the archive using tar/gunzip and copy sqlite3.c from the
resulting directory to:
/usr/local/src/subversion/subversion-1.7.14/sqlite-amalgamation/sqlite3.c
Οπότε πάμε να βάλουμε το αρχείο που λείπει!

wget http://www.sqlite.org/2013/sqlite-amalgamation-3080200.zip
mkdir sqlite-amalgamation
mv sqlite-amalgamation-3080200.zip sqlite-amalgamation/
cd sqlite-amalgamation/
unzip sqlite-amalgamation-3080200.zip
cp sqlite-amalgamation-3080200/sqlite3.c ../

Ξανά configure το svn και make , make install

./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache/bin/apr-1-config --with-apr-util=/home/cpeasyapache/src/httpd-2.2/srclib/apr-util/apu-1-config
make
make install


posted by qubix on May 8, 2013

Apache Logs

General Error and Auditing Logs:
Location : /usr/local/apache/logs/error_log
Info : Όλα τα σφάλματα που "πιάνει" ο httpd daemon μαζί με το στάνταρ output από cgi εφαρμογές πάει εδώ.

Domain Access Logs:
Location : /usr/local/apache/domlogs/domain.tld
Info : γενικό access log για κάθε domain

Apache Access Logs:
Location : /usr/local/apache/logs/access_log
Info : πλήρες access log με όλα τα requests που ικανοποιεί ο server.

MySQL Logs

MySQL General Information and Errors:
Location : /var/lib/mysql/$(hostname).err
Info : τα log αυτά μπορεί να βρίσκονται και στο /var/log/mysql.log e

Exim Logs
Location: /var/log/exim_mainlog
Info: To mainlog έχει τα πάντα, incoming, outgoing etc
    
Location: /var/log/exim_rejectlog
Info: Το rejectlog περιέχει όλες τις συνδέσεις που δεν έγιναν. Αυτή η πληροφορία υπάρχει και στο mainlog

cPanel logs

Όλα τα logs του cpanel βρίσκονται στο /usr/local/cpanel/logs directory.

Location: /usr/local/cpanel/logs/access_log
Info:
This access_log contains all traffic to WHM, cPanel, and webmail over http.

Location: /usr/local/cpanel/logs/error_log
Info: This error_log contains all errors that occur when accessing a cPanel related site over http or https.

FTP logs

Location: /var/log/messages
Info: Άσχετα από τον ποιό FTP server χρησιμοποιείτε, το cpanel λογκάρει τις συνδέσεις, τα uploads, downloads κλπ. Ο ίδιος ο FTP server όμως δεν έχει logfile και όλα καταγράφονται στο system messages logfile μαζί με όολα τα υπόλοιπα συστεμικά μηνύματα τα οποία καταγράφονται εκεί.

hyperworks