Birçok server sahibinin kendi sunucularına WHM ve CPANEL kurulumu yapmak için gerekli bilgileri bu yazıda bulacaksınız.
Ayrıntılı WHM Kurulum bilgileri :
Öncelikli bilgi olarak WHM/Cpanel yazılımı lisanslı olarak satın alınmalıdır. Lisansı alırken IP numarası belirtilmesi gerekmektedir. Alınan buWHM/CPanel lisansı sadece bu IP adresi için geçerlidir. Bununla birlikte sadece deneme yapmak istiyorsanız www.cpanel.net üzerinden 15 günlük test lisansları edinmek mümkündür. WHM-CPANEL Lisansı alırken sunucunun ram’i 1 GB altında ise VPS lisansı almak daha uygundur.
WHM Kurulum bilgileri için aşağıdaki adımları takip etmek gerekir.
SSH ile servera bağlanarak (Örneğin: putty ile ssh’a bağlanıp…) Şunları yazınız;
- cd /home — ( Home klasörüne giriş yapın. Home klasörü yok ise otomatik olarak oluşturacaktır. )
- wget -N http://layer1.cpanel.net/latest — ( Cpanel’i kurabilmeniz için gerekli olan son sürümü içeren dosyayı indirmek için. )
- sh latest — (İndirdiğiniz whm sürüm dosyasını çalıştırarak kuruluma başlamak için. )
- /usr/local/cpanel/cpkeyclt — ( WHM Kurulum bittiğinde lisansınız geçerli olacaktır. Ancak IP değişikliği veya oluşabilecek hatalardan sonra lisansı tekrar aktifleştirmek için gerekli olan komuttur. )
Bu bilgileri takip ederek sistemin kurulumunu yapmak yeterli değildir. Çünkü bundan çok daha önemli bir husus vardır. O da WHM ayarları.
WHM-Cpanel ayarları sunucu güvenliği ve sistem performansı açısından çok önemli ayarlardır. Bunun için aşağıda önerilen ayarları yapmanız çok önemli olup, ihtiyaç olmayan eklentileri (cpanel addons) kurmamanız gerekmektedir. Şimdi aşağıda anlatılacak whm kurulum ayarları standart, güvenlikli ve optimum bir server için gerekli ayarlardır.
Yukarıda anlatılan whm kurulum işlemi bittikten sonra whm ayarları yapmak üzere browser’ımıza
http://IP-numarasi:2086 yazarak giriş yapıyoruz.
Username (Kullanıcı adı) ve Password (şifre) linux root bilgileri ile aynıdır.
Karşınıza WHM Kurulumu yeni yapıldığı için öncelikle sözleşme gelecektir. I agree/Go to Step 2 tıklayarak sözleşmeyi kabul edip, 2. adıma geçin.
Server Contact Email Address: server@domainadi.com ( Sistem oluşan sorunlarda buraya mail gönderecektir. )
Server Contact SMS Address: SMS ile bilgilendirilmeniz içindir. Boş bırakın.
Server Contact AIM Name: AIM bilgileriniz. Boş bırakın.
Server Contact ICQ Number: ICQ numaranız. Boş bırakın.
This Server’s Hostname: Server’ınızın hostname’idir. Genelde NS adresinizle aynı yapınız.
Primary Resolver: DNS server’ınızın IP numarasıdır. Hizmet aldığınız Datacenter’ın IP numarasıdır.
Secondary Resolver: DNS server’ınızın 2.ci IP numarasıdır. Hizmet aldığınız Datacenter’ın IP numarasıdır.
Third Resolver: DNS server’ınızın 3.cü IP numarasıdır. Hizmet aldığınız Datacenter’ın IP numarasıdır.
Main Network/Ethernet Device: Ethernet kartınızı seçmeniz gerekmektedir. Default değer neyse o doğrudur.
Save & Go to Step 3′e tıklayarak yeni adıma geçin.
Add New IP Address(es): Yeni IP adresi eklemek için kullanılır. Alt tarafda ekli olan IP numaralarını görebilirsiniz.
Go to Step 4′e tıklayıp 4. adıma geçin.
Nameserver Configuration: Server’ımızın DNS yazılımını seçmeye yarar. Bind DNS başarılıdır, ancak sorunlar çıkarttığı için tercih etmeyebilirsiniz. NSD DNS şu anda en sağlıklı çalışan sistemlerden birisidir.
Choose which nameservers domains on this server will use: Domain’i yönlendirmek için kullanacağınız NS’leri yazınız.
Add “A Entries” for all Nameservers: NS’lerimizin sağlıklı çalışması için bunu aktif ediyoruz. NS’lerimize karışık gelen A kayıtlarını oluşturacaktır.
Add A Entries for Nameservers & Hostname: Yazmış olduğunuz NS’lere karşılık gelen IP’leri belirtiniz.
Add “A Entries” for Hostname: Aktif ediniz. Hostname’in karşılığına gelen A kaydını oluşturacaktır.
Save & Go to Step 5′e tıklayarak 5. adıma geçin.
FTP Configuration: FTP server’ımızı seçmemizi istiyor. ProFTPD sorunsuz çalışan bir sistem olduğu için tercih edebilirsiniz.
Mail Configuration: Mail server’ımızı seçmemiz gerekiyor. Courier’i tercih edebilirsiniz.
Convert Mailbox Format: Aktif ediniz.
Configure cPHulk: Aktif ediniz. Brute force ataklara karşı güvenlik sağlayacaktır.
Extend account lockout time upon additional authentication failures: Aktif ediniz.
Save & Go to 6 Step tıklayarak 6. adıma geçiyoruz.
Use file system quotas.
Seçilip finish setup wizard’a tıklayarak kurulumu tamamlıyoruz.
Sıra geldi önemli ince ayarlara;
İlk yapacağımız şey, Tweak Settings bölümüne girerek BoxTrapper Spam Trap bulmak ve etkisizleştirmektir.
BoxTrapper Spam Trap server’ımızın IP adresini SPAM’a düşürebileceği için kapatıyoruz. Save edip, devam ediyoruz.
Exim Configuration Editor kısmına giriyoruz ve alt taraftan “Advanced Editor” linkine tıklıyoruz. Bu açılan sayfada, ilk kısma (ilk textarea’ya) tırnak işaretleri olmadan “log_selector = +arguments +subject” ibaresini ekleyip save’liyoruz, cPanel de Exim’i baştan başlatıp ayarlarımızı kaydediyor. Bu işlem, Exim’in daha sorunsuz ve daha düzgün şekilde log tutmasına yarıyor.
PHP Configuration Editor’e girip Switch to advanced mode’e tıklıyoruz.
“disable_functions” kısmını bularak tırnaklar olmadan ve boşluklar olmadan aynen şunu yapıştırıyoruz:
PLAIN TEXTCODE:
shell_exec,exec,system,glob,cat,dl,openbasedir,popen,proc_close,proc_get_status,proc_nice,proc_open,escapeshellcmd,escapeshellarg,
show_source,posix_mkfifo,mysql_list_dbs,get_current_user,
getmyuid,pconnect,link,symlink,pcntl_exec,ini_alter,parse_ini_file,
leak,apache_child_terminate,posix_kill,posix_setpgid,posix_setsid,
posix_setuid,proc_terminate,syslog,fpassthru,allow_url_fopen,
stream_select,socket_select,socket_create,socket_create_listen,
socket_create_pair,socket_listen,socket_accept,socket_bind,
socket_strerror,pcntl_fork,pcntl_signal,pcntl_waitpid,
pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,
pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,openlog,
apache_get_modules,apache_get_version,apache_getenv,
apache_note,apache_setenv,virtual,name
Not: Üstteki komutları yazarken kesinlikle boşluk vs. bırakmayınız. Düz satır olarak aralarında boşluk olmadan yana yana yazınız.
Sonrasında ise, “enable_dl” ayarını bularak “Off” konumuna getirip ayarlarımızı kaydediyoruz. Artık güvenli bir PHP’imiz var.
FTP Server Configration kısmına giriyoruz ve “Allow Anonymous Logins”, “No” olarak seçip, kaydediyoruz. Böylece, FTP’miz de güvenli. Tabi ki, isimsiz FTP server çalıştıracaksanız, yani FTP server’a kullanıcı adı ve şifre olmadan halka açık bağlantı yapacaksanız, ilk seçeneği “Yes” olarak seçmelisiniz.
Manage Plugins bölümüne giriyoruz. “pro”, “clamavconnector” seçerek alttaki Save butonuna tıklıyoruz ve bu eklentiler sunucumuza kuruluyor. Uzun sürebilir ancak bu eklentiler bizim için önemli.
Sıra geldi derleme işlemine. Ben daha çok hosting firmalarının ihtiyacı olacak, en çok kullanılacakları aktif ederek devam ediyorum.
Önemli: Bu derleme işlemi kesinlikle yarıda kesilmemelidir. Yarıda kesilmesi durumunda sunucunuza format atılması ve tekrar kurulması gerekebilir. Eğer tarayıcı pencereniz kapansa bile derleme işlemi arkaplanda çalışmaya devam edecektir, yeter ki derleme işleminin bittiğinden emin olmadan sunucunuza kesinlikle resetlemeyin yaptırmayın.
EasyApache (Apache Update) kısmına giriyoruz. “Start customizing based on profile” tıklıyoruz. Apache 2.2 seçip next step diyoruz. PHP 5 seçiyoruz. Next step tıklıyoruz ve en alttaki, yani en günel seçeneği seçiyoruz. Şu anda en güncel PHP versiyonu 5.3.1 seçiyoruz. Next step tıklıyoruz,
- Frontpage,
- Mod SuPHP,
- Ioncube Loader for PHP,
- Mod Security
dışında seçili olan varsa seçimleri kaldırıyoruz.
Alttan “Exhaustive Options List” tıklıyoruz. Apache Build-In Modules kısmından sadece şunların seçili olduğundan emin oluyoruz:
- Asis,
- AuthnDefault,
- Env,
- Expires,
- Fileprotect,
- Frontpage,
- Headers,
- imagemap,
- Mod SuPHP,
- Proxy,
- UniqueID,
- Version.
Daha sonra Other Modules kısmında sadece şunların seçili olduğundan emin oluyoruz:
- IonCube Loader for PHP,
- Mod Security.
Şimdi ise, PHP ayarlarına geliyoruz ve sadece aşağıdakilerin seçili olduğundan emin oluyoruz:
- Bcmath,
- CGI,
- Calendar,
- Curl,
- CurlSSL,
- FTP,
- GD,
- Gettext,
- Iconv,
- Imap,
- Magic Quotes,
- Mbregex,
- Mbstring,
- Mcrypt,
- Mysql,
- Mysql of the system,
- OpenSSL,
- PDO,
- PDO Mysql,
- POSIX,
- Path Info Check,
- Pear,
- SQLite3,
- Sockets,
- TTF (Free Type),
- Zlib.
Sadece bunların seçili olduğundan emin olduktan sonra, Prefrences ve diğer kısımlara dokunmadan en alttaki “Save and Build” butonunu tıklıyoruz ve build, yani yapılandırma başlıyor. Sorduğu sorulara Yes ve I Understand seçip, işleme başlıyoruz.
Derleme bittiğinde PHP and SuExec Configuration hakkında sorular soracak. Biz PHP4 kurmadığımız, default olarak PHP 5 seçiyoruz. Burada PHP5′i CGI olarak seçiyoruz. Eğer PHP4 kurduysanız onuda seçmeyi ihmal etmeyin. Apache SuExec ON yapıyoruz ve Do a dryrun kutucuğunu işaretlemeden Save New Configuration seçip derleme işlemini bitiriyoruz. Close’e tıklayıp işlemi sonlandırıyoruz.
Apache-PHP ile ilgili son ayar olarak Apache Configuration’a giriyoruz ve “Memory Usage Restrictions” kısmını tıklayıp Proceed diyoruz. Artık arızalı scriptlerin sunucumuzu şişirmesi, kilitlemesi gibi şeyler de sözkonusu olmayacak.
Bu ayarları tamamladıktan sonra, cPHulk Brute Force Protection kısmına girip enable ediyoruz. PHP open_basedir Tweak bölümüne girip Enable php open_basedir protection seçip save ediyoruz. Apache mod_userdir Tweak bölümüne gelip Enable mod_userdir protection seçip save ediyoruz. SMTP Tweak kısmında ise Enable ediyoruz. Shell Fork Bomb Protection kısmında ise Enable Protection seçiyoruz. Compiler Access kısmında ise “Disable Compilers” tıklıyoruz. Artık, son derece güvenli bir sunucuya sahibiz.
WHM ayarları tamamlandı. Şimdi sunucumuza root olarak SSH ile giriş yapıyoruz. Öncelikle
$ nano /etc/ssh/sshd_config
Komutunu vererek sshd_config dosyasını editliyoruz ve “Protocol 2,1″ ayarının başına # koyarak etkisizleştiriyoruz, “Protocol 2″ ayarının başındaki # işaretini ise kaldırıyoruz. Dilerseniz, Port 22 kısmından portu da değiştirebilirsiniz, SSH bağlanmak isteyen yetkisiz kişileri engelleyecektir, fakat önce, değiştireceğiniz portun kullanılmadığından ve herhangi bir firewall kullanıyorsanız firewall’da bu portun açık olduğundan emin olmalısınız. Bu dosyayı kaydedip çıkıyoruz ve “service sshd restart” yazarak SSH server’ı baştan başlatıyoruz, böylece yaptığımız ayarlar geçerli oluyor.
Şimdi, tmpfs bölümünü güvenli hale getirmek için
$ nano /etc/fstab
dosyasını editliyoruz. Bu dosyayı düzenlerken çok dikkatli olmalısınız, yapacağınız bir hata sunucunuza format atılmasını gerektirecektir. Söylediğimin dışında kesinlikle başka bir işlem yapmayınız. buradan tmpfs bölümünü buluyoruz ve aynı satırdaki defaults yazısının yanına ,noexec,nosuid ekliyoruz. Yani o satır şu şekilde görünmeli:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
Dosyayı kaydetmeden önce defalarca kontrol ediyoruz, özellikle bu eklemeyi yapınca txt editörün herhangi bir kısmı alt satıra almadığından emin oluyoruz, alt satıra almışsa alta alınan kısmı tekrar yukarı çıkarıyoruz ve dosyamızı kaydedip çıkıyoruz. Bu ayarın da etkin olması için
$ mount -o remount,noexec,nosuid /dev/shm komutunu çalıştırıyoruz.
Bunu da hallettikten sonra, sunucuda gerek duyulmayan, gereksiz yere sunucuyu yoracak bütün fonksiyonları kapatıyoruz. Sırasıyla, hata verirse önemsemeden (failed yazabilir, başka hata verebilir, önemli değil) aşağıdaki komutları çalıştırıyoruz:
Dikkat: Servisi durdurmak için stop, tekrar çalışmaması için off kullanıyoruz;
service cups stop
chkconfig cups off
service xfs stop
chkconfig xfs off
service atd stop
chkconfig atd off
service nfslock stop
chkconfig nfslock off
service canna stop
chkconfig canna off
service FreeWnn stop
chkconfig FreeWnn off
service cups-config-daemon stop
chkconfig cups-config-daemon off
service iiim stop
chkconfig iiim off
service mDNSResponder stop
chkconfig mDNSResponder off
service nifd stop
chkconfig nifd off
service rpcidmapd stop
chkconfig rpcidmapd off
service bluetooth stop
chkconfig bluetooth off
service anacron stop
chkconfig anacron off
service gpm stop
chkconfig gpm off
service saslauthd stop
chkconfig saslauthd off
service avahi-daemon stop
chkconfig avahi-daemon off
service avahi-dnsconfd stop
chkconfig avahi-dnsconfd off
service hidd stop
chkconfig hidd off
service pcscd stop
chkconfig pcscd off
service sbadm stop
chkconfig sbadm off
service webmin stop
chkconfig webmin off
service ossec stop
chkconfig ossec off
Bunların hepsini sırasıyla çalıştırdıktan sonra, gereksiz bütün servisler kapanmış oluyor.
Bu kadar çok ayar yaptık, şimdi cPanel’in bu ayarlar karşısında kendini kaybetmesini önleyelim. İlk olarak
$ /scripts/upcp
Komutunu çalıştırarak cPanel update yapıyoruz. Bu işlemin bitmesini bekliyoruz, bittiğinden emin olmadan daha sonraki adımlara geçmiyoruz. Bittiğinden emin olamıyorsanız, ne olur ne olmaz diyeek yarım saat beklemenizi öneririm. Eğer yavaş bir bağlantı varsa, 2 saat bekleyin ki bir sorun çıkmasın. Bu işlem bittikten sonra da,
$ /scripts/makecpphp
Komutunu çalıştırarak cpanelin kendine çeki düzen vermesini sağlıyoruz. Bu işlem de bittikten sonra,
$ service cpanel restart
Komutuyla cPanel’imizi baştan başlatıyoruz. Artık Her anlamda taş gibi çalışan bir sistemimiz var. Son olarak da, apache derlemesi apache’nin aklını bulandırabileceğinden,
$ /scripts/rebuildhttpdconf
Komutuyla apache ayarlarını tekrar düzenletiyoruz ve
$ service httpd restart
Komutuyla apache’mizin sağlam ayarlama ile çalışmasını sağlıyoruz.
İşte hepsi bu kadar, artık sapasağlam ve son derece güvenli bir Whm cPanel sunucunuz oldu.
Ama bu aşamadan sonra size çok daha güvenli bir sunucu için http://www.configserver.com/cp/csf.html adresindeki bedava firewall kurulumunu şiddetle öneriyorum. Firewall kurulumu çok kolay olduğu gibi sistemi test ederek size önerilerde bulunan ücretsiz bir firewall ve server test addon’u.(Cpanel ve directadmin’e de uyumlu). Dikkat bu firewall’ı kurduğunuzda yukarıda standart whm kurulum bilgileri için önerdiğimiz bazı servisleri kapatmanın daha uygun olacağını göreceksiniz. Mesela frontpage işe yaramıyorsa en baştan kapatabilirsiniz. Biz sadece standart bir server kurulumu yaptık… Daha güvenli ve optimize bir whm için config server firewall ayarları kullanmak hack tehlikelerine karşı maksimum koruma sağlar. (Hacklenmeyecek sistem yoktur).
Yararlanılan kaynaklar: