Komut Satırı ile MySQL Yedek Alma İşlemi

Gelin size güzel bir şekilde SSH kullanarak MySQL yedek nasıl alınır anlatayım.Genelde herkes panel kullanma peşinde ama kullanmayan arkadaşları da düşünmek lazım İngilizcesi olmayabilir Google de Türkçe aratıyor ama sonuç bulamıyor ve kafayı yiyor olabilir.

İşte kafayı yemesini önlemeye çalışıyorum ben ve en son bu yöntemi 2 ay önce sunucumda kullanmıştım sonrasında ise unutuldu gitti makalesini de anca yazabiliyorum farkındayım uzattım dönelim konumuza öncelikli olarak mysqldump denen bir şeyimiz var sunucuda bu bizim için önemli kullanımı ise şu şekilde

mysqldump --opt -u [kullanici] -p[şifre] [database] > [backupdosyaadi.sql]
  • [kullanici] = Database kullanıcı adınız
  • [şifre] = o kullanıcı adının şifresi
  • [database] = yedek alınacak olan veritabanı adı
  • [backupdosyaadi] = yedeğin adı
  • [–opt] = ek bir şeyler yaptıracaksanız gelecek olan parametrelerin yeri

Şeklinde kolay bir kullanımı var oldukça da basit zaten görüyorsunuz.

mysqldump -u root -p gborriQw38XOgl#VfxeA2wgfj mertg > backup26.10.2014new.sql

root kullanıcısı olarak mertg den yedek alıyoruz. tüm databaseleri yedeklemeye çalışırsak

mysqldump -u root -p gborriQw38XOgl#VfxeA2wgfj --all-databases > backupalldb26.10new.sql

böyle almanın şöyle bir sıkıntısı var ne varsa içine doluşacak belirli bir yönerge vermediğiniz için sisteme atarken de o şekilde atılacak yani sonradan tekini çıkartayım gibi bir fırsatınız bulunmuyor.

sistemde bir kaç komut da var

  • –no-data = sadece veritabanını alır içerisindeki içeriğe dokunmaz
  • –add-locks = veritabanına LOCK TABLE ekleyerek yedek alınmasını sağlar
  • –add-drop-table = DROP TABLE ekler sıkıntı çıkmasın diye kullanmayın bence

komut satısı ile genel olarak böyle alınıyor diye biliyorum. Yanlışımız varsa iletin düzeltelim.

Centos Üzerine SSH Kurulumu

Bu Makalemizde de OpenSSH yani herkesin bildiği SSH kuralım normalinde VPS,VDS,Dedicated alırsınız size verilir falan ama kendinize ait bi sunucu aldınız diyelim birşey kurdurmadınız ve elinizde KVM yetkisi var diyelim genelde otomasyon sistemleri buna bile ihtiyaç duymuyor ama biz en fakiri olalım. KVM bağlantısı ile bağlanalım artık hangi KVM ise bilemem sonra komut satırını alırız elimize ve aşağıdakileri yazar devam ederiz

Kurulum parametremiz

yum -y install openssh-server openssh-clients

Kurulumu otomatik yapıcak bunun dışında dokunmanızı gerektiren birşey yok bağlanmak içinde root kullanıcı adını kullanacaksınız sistemi kurarken yapmışsınızdır birşeyler geçmişsinizdir bi kıyak hadi hadi 🙂

chkconfig sshd on
service sshd start

Otomatik açılması içinde ekliyoruz ve başlatıyoruz SSH yi ohhh ne güzelde başladı ha şimdi ne yapacaz 22 portunu firewall dan tüm iplere açıcaz açmayın da göreyim bağlanmıyorsa da bağlanmıyor çıldırır durursunuz.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
service iptables save

Bundan sonra yapacağınız işler size kalıyor güvenlik işlemleri yada alacağınız önlemler aşırı derecede önemli şifrelerinizi dandik şeyler yapmayın kısa olmasın mantık çerçevesi içerisinde güzel şifreler oluşturun

Çalışıyomu çalışmıyomu diye kontrol içinde yanlış yazmadıysam şu iş görecektir.

netstat -tulpn | grep :22

Sorun falan olursa haber vermeniz yeterli

Kısaltılmış Web Adreslerini Uzatma

Kısaltılmış linklerin tehlikesini hepimiz biliyoruzdur diye ümit ediyorum.Bilmiyorsanız söyleyin bilmemek değil öğrenmemek ayıp demişler.Herneyse sahibinin türk olduğunu düşündüğüm ve gerçekten benimde aşırı bir şekilde işime yarayan hatta yakın bir zamanda masaüstü uygulamasını yazacak olduğum bir servis kısaca bu servis internet sitelerinde çokça dolaşan kısaltılmış linklerin decrypt edilmesi yani linki veriyorsunuz linkin nereye yönlendiğini sana gösteriyor aslında linklerin kısaltılması yer kazanma açısından iyi olsada kötü yanlarıda yok değil(phishing,tracker vb)

uzatinlogogorsel1-576x576

Uzat.in desteklediği siteler arasında bulunanlar şu şekildedir.

u.to, x.co, t.co, ow.ly, tr.im, is.gd, gg.gg, bin.wf, bit.ly, ufa.lt, goo.gl, bit.do, dyi.li, yep.it, qrf.in, zzb.bz, y2u.be, tim.pe, spal.co, fave.co, tiny.cc, youtu.be, doiop.com, moourl.com, kisaurl.com, tinyurl.com, snipurl.com, cnn.it, amzn.to, 1url.com, chilp.it, cort.as, fav.me, fb.me, ff.im, ito.mx, korta.nu, lurl.no, minu.me, shrinkurl.us, sn.im, snipr.com, snurl.com, soo.gd, sp2.ro, teq.mx, tighturl.com, tiny.pl, to.ly, urlcut.org, alturl.com, abe5.com, qr.net, b23.ru, clck.ru, flic.kr, getir.net, liip.to, lin.cr, ncane.com, ptiturl.com, shrtl.com, takemyfile.com, ur1.ca, url.ie, urlcut.com, yatuc.com

67 Tane servisi destekleyen uzat.in kendini geliştirmekte ve popülerliğini her geçen gün arttırmaktadır.Umuyorum ki herkes bir gün bu tarz sitelere yönelecek ve kısa linklere direk olarak tıklamaktan vazgeçecek.Bana kalırsa ben ummaya devam edeyim böyle birşeyin olması zor gibi ne dersiniz ?

uzat.in yakın bir zamanda adly.fy ve bc.vc gibi siteleride çözer hale gelir işte o zaman muazzam bir site olur gereksiz yere reklam görmekten herkes bıkmış olması lazım…

Proje durdurulmuştur.

Nginx WebServer Güvenliği

Sistemi az kasan ve yüksek performans veren çoğu yüksek trafiği olan sitenin kullandığı bir altyapıdır.peki nginx ne yapar da bu kadar sistem kaynaklarını iyi kullanır. Nginx geleneksek sunucu sistemlerinin aksine iş parçacıklarını farklı bir şekilde değerlendirir kategorize eder ve ona göre çalışır yani tamamını ele alıpda işlem yapmaz parça parça işlem yapar daha ölçeklenebilirdir. Nginx i hali hazırda wordpress, github,hulu gibi aşırı yüksek trafikli siteler kullanıyor bi bildikleri var illaki aynı anda milyonlarca adam girdimi apache gibi kitlenmesin diye engin abimize başvurmuşlar misler gibi şimdi bu engin abimiz arada açık verebiliyor vermese bile biz totomuzu koruyalım sonra sıkıntı çıkmasın diye popüler olan güvenlik yöntemlerinden 20 sini sizin için toparladım.Burada anlatacaklarım genel olarak tüm linux sistemlerinde sorunsuz çalışır ama söylememde fayda var anlatımları mı her zaman ki gibi Centos/RHEL için yaptım.

Varsayılan Nginx yolu ve port

  • /usr/local/nginx/conf/ nginx in tüm configlerinin bulunduğu klasör yoludur.burada bulunan “nginx.conf” ana config dosyamızdır.
  • /usr/local/nginx/html/ Ön tanımlı dosya ve klasör yolu web sitenizde gösterilecek dosyalar burada olacak
  • /usr/local/nginx/logs/ Ön tanımlı nginx sistem log klasörü
  • Ön tanımlı HTTP port 80
  • Ön tanımlı HTTPS port 443

Şimdi yaptınız ayarlamaları o kadar yaptınız çalışacakmı diye bi bakmanız lazım boşu boşuna nginx resetleyip siteyi çökertmeye luzum yok nginx işte bu konuda çok iyi nginx ayarlamalarını test ettirebilirsiniz.

/usr/local/nginx/sbin/nginx -t

Alttaki gibi bir yazı çıkarsa şanslısınız nginx resetleyerek devam edebilirsiniz ama hata verirse hiç reset atmayın sorunu bulup çözün sonra reset atarsınız bu ne acele yahu

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

1.SELinux Sisteminizde aktif olsun

Şimdi yum komutumuz ile 2 paket kurmamız lazım ama baştan söyleyim enforcing şeklinde açmayacağız yoksa başımızı ağrıtır bunun yerine permissive yapacaz ki uyarı verse bile sorun olmayacak

yum install policycoreutils setroubleshoot
nano /etc/selinux/config

Şu şekilde değiştiriyoruz.selinux tiğini targeted yapıyoruz çünkü sadece DNS,Apache,Nginx için kullanacağız.

SELINUX=permissive
SELINUXTYPE=targeted

yaptığımız işlemlerin geçerli olabilmesi için sistemi resetlememiz gerekiyor

reboot

 
Dikkat edin yapacağınız hata sunucuyu uçuracaktır SSH bağlanamayabilirsiniz yapacağınız en kötü sorun bu olur.

2.Disk yetkilerini Kısıtlayın

Nasıl disk oluşturacağınızı anlatmak isterdim ama herşeyi devletden beklemeyin oluşturun /etc/fstab da benim zamanında yapmış olduğum satırı sizlerle paylaşacağım önemli olan satır sonlarında bulunan komutlar zaten

LABEL=/nginx /nginx ext3 defaults,nosuid,noexec,nodev 1 2

kısıtlamalarımızı yaptık bi tık daha güvenliğimizi arttırdık.

3.Ufak çaplı DDOSlardan korunun

Ben bu ayarları internetden bulup kullandım nedir ne değildir yazıyor.Ancak teker teker açıklamayacağım ufak çaplı ddoslardan koruduğunu bilin yeter.Büyük çapta saldırı alıyorsanız ama işinize asla yaramaz

nano /etc/sysctl.conf

Dosyayı aşağıdaki gibi düzenliyip kayıt ediyoruz.

# Avoid a smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Turn on protection for bad icmp error messages
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Turn on syncookies for SYN flood attack protection
net.ipv4.tcp_syncookies = 1

# Turn on and log spoofed, source routed, and redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# No source routed packets here
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Turn on reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Make sure no one can alter the routing tables
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0


# Turn on execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# Tuen IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

# Optimization for port usefor LBs
# Increase system file descriptor limit
fs.file-max = 65535

# Allow for more PIDs (to reduce rollover problems); may break some programs 32768
kernel.pid_max = 65536

# Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000

# Increase TCP max buffer size setable using setsockopt()
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608

# Increase Linux auto tuning TCP buffer limits
# min, default, and max number of bytes to use
# set max to at least 4MB, or higher if you use very high BDP paths
# Tcp Windows etc
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1

4.Kullanılmayan Modülleri Kaldırın

Nginx hafif ve yüksek performanslı bir webserver olabilir ancak kullanmadığımız modülleri tutmanın ne anlamı var bu yüzden kullanmadıklarınızı kaldırın gitsin.ben mesela autoindex ve ssı kullanmıyorum durmasının ne anlamı var.dikkat edin nginx tekrar derliyor olacağız hatalı bir işlem yapmayın derleyemezsiniz mazallah.

./configure --without-http_autoindex_module --without-http_ssi_module
make
make install

tekrar söylüyorum işinize yaramayan Nginx modüllerini kaldırın.

5.Mod_Security Kullanın(backend Apache ise)

yum install mod_security

Kuruluma he dedikten sonra kurulum bitince

nano /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf

aşağıdaki gibi değiştirip kayıt edin

SecRuleEngine On

sonra apacheye restart atın işleminiz tamamdır.

service httpd restart

Çalıştığını anlamak istiyorum kardeşim ben bune böyle kuru kuru anlatıyorsun diyenlere

tail -f /var/log/httpd/error_log

Komutunu öneriyorum sonrasında aşağıdaki gibi başlayan bi satır gözlemlemeleri gerekecek

ModSecurity for Apache/....

6.SELinux Nginx İçin Zorlayın

şimdi yukarıda ne dedik targeted olarak ayarladık dedik heh işte orda dns apache gibi tanımlı servislerde çalışıyor ama bu şey nginx için özel ayar istiyor illa yapacan yoksa çalışmıyor.

yum -y install selinux-policy-targeted selinux-policy-devel

sistem için gerekli şeyleri yukarda kurmadıysanız şimdi kurdunuz varsayıyorum. ve nginx için kullanılacak olan dosyamızı indiriyoruz.

cd /root
wget http://sourceforge.net/projects/selinuxnginx/files/se-ngix_1_0_10.tar.gz/download?use_mirror=softlayer-ams
tar -zxvf se-ngix_1_0_10.tar.gz

Sonrasında dosyayı derlememiz falan gerekiyor aşağıdaki komut ile halledebilirsiniz.

cd se-ngix*/nginx
make

Gene Çalışmıyor ise dökümanlarda şöyle bi komut gördüm işinize yarayacaktır baya bi adamın derdine derman olmuş sonuçta

/usr/sbin/semodule -i nginx.pp

7.Güvenlik Duvarı Kurallarını belirleyin

Gene internetten bulduğum bir güvenlik duvarı shını atmak istiyorum tek tek yapacaklarımızı yapıyor diye arşivime ekledim şimdi kim uğraşacak bunları tek tek el ile yazmaya direk olarak bunu bi .sh olarak kayıt edip sistemde çalıştırın.yada kendinize göre düzenleyip çalıştırabilirsiniz.

#!/bin/bash
IPT="/sbin/iptables"

#### IPS ######
# Get server public ip
SERVER_IP=$(ifconfig eth0 | grep 'inet addr:' | awk -F'inet addr:' '{ print $2}' | awk '{ print $1}')
LB1_IP="204.54.1.1"
LB2_IP="204.54.1.2"

# Do some smart logic so that we can use damm script on LB2 too
OTHER_LB=""
SERVER_IP=""
[["$SERVER_IP" == "$LB1_IP"]] && OTHER_LB="$LB2_IP" || OTHER_LB="$LB1_IP"
[["$OTHER_LB" == "$LB2_IP"]] && OPP_LB="$LB1_IP" || OPP_LB="$LB2_IP"

### IPs ###
PUB_SSH_ONLY="122.xx.yy.zz/29"

#### FILES #####
BLOCKED_IP_TDB=/root/.fw/blocked.ip.txt
SPOOFIP="127.0.0.0/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32 168.254.0.0/16 224.0.0.0/4 240.0.0.0/5 248.0.0.0/5 192.0.2.0/24"
BADIPS=$( [[-f ${BLOCKED_IP_TDB}]] && egrep -v "^#|^$" ${BLOCKED_IP_TDB})

### Interfaces ###
PUB_IF="eth0" # public interface
LO_IF="lo" # loopback
VPN_IF="eth1" # vpn / private net

### start firewall ###
echo "Setting LB1 $(hostname) Firewall..."

# DROP and close everything
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Unlimited lo access
$IPT -A INPUT -i ${LO_IF} -j ACCEPT
$IPT -A OUTPUT -o ${LO_IF} -j ACCEPT

# Unlimited vpn / pnet access
$IPT -A INPUT -i ${VPN_IF} -j ACCEPT
$IPT -A OUTPUT -o ${VPN_IF} -j ACCEPT

# Drop sync
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -j DROP

# Drop Fragments
$IPT -A INPUT -i ${PUB_IF} -f -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL ALL -j DROP

# Drop NULL packets
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " NULL Packets "
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# Drop XMAS
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " XMAS Packets "
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# Drop FIN packet scans
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " Fin Packets Scan "
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# Log and get rid of broadcast / multicast and invalid
$IPT -A INPUT -i ${PUB_IF} -m pkttype --pkt-type broadcast -j LOG --log-prefix " Broadcast "
$IPT -A INPUT -i ${PUB_IF} -m pkttype --pkt-type broadcast -j DROP

$IPT -A INPUT -i ${PUB_IF} -m pkttype --pkt-type multicast -j LOG --log-prefix " Multicast "
$IPT -A INPUT -i ${PUB_IF} -m pkttype --pkt-type multicast -j DROP

$IPT -A INPUT -i ${PUB_IF} -m state --state INVALID -j LOG --log-prefix " Invalid "
$IPT -A INPUT -i ${PUB_IF} -m state --state INVALID -j DROP

# Log and block spoofed ips
$IPT -N spooflist
for ipblock in $SPOOFIP
do
         $IPT -A spooflist -i ${PUB_IF} -s $ipblock -j LOG --log-prefix " SPOOF List Block "
         $IPT -A spooflist -i ${PUB_IF} -s $ipblock -j DROP
done
$IPT -I INPUT -j spooflist
$IPT -I OUTPUT -j spooflist
$IPT -I FORWARD -j spooflist

# Allow ssh only from selected public ips
for ip in ${PUB_SSH_ONLY}
do
        $IPT -A INPUT -i ${PUB_IF} -s ${ip} -p tcp -d ${SERVER_IP} --destination-port 22 -j ACCEPT
        $IPT -A OUTPUT -o ${PUB_IF} -d ${ip} -p tcp -s ${SERVER_IP} --sport 22 -j ACCEPT
done

# allow incoming ICMP ping pong stuff
$IPT -A INPUT -i ${PUB_IF} -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -m limit --limit 30/sec -j ACCEPT
$IPT -A OUTPUT -o ${PUB_IF} -p icmp --icmp-type 0 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow incoming HTTP port 80
$IPT -A INPUT -i ${PUB_IF} -p tcp -s 0/0 --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o ${PUB_IF} -p tcp --sport 80 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


# allow outgoing ntp
$IPT -A OUTPUT -o ${PUB_IF} -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i ${PUB_IF} -p udp --sport 123 -m state --state ESTABLISHED -j ACCEPT

# allow outgoing smtp
$IPT -A OUTPUT -o ${PUB_IF} -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i ${PUB_IF} -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

### add your other rules here ####

#######################
# drop and log everything else
$IPT -A INPUT -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " DEFAULT DROP "
$IPT -A INPUT -j DROP

exit 0

8.SSL Kullanımına özen gösterin

SSL kullanmanız güvenliğinizi bir tık daha yukarıya çıkartıcaktır aynı zamanda son zamanlarda googlenin söylediği gibi SEO da önemli bir noktada bulunuyor SSL.

server {
    server_name example.com;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
    access_log /usr/local/nginx/logs/ssl.access.log;
    error_log /usr/local/nginx/logs/ssl.error.log;
}

Haliyle sistemi yeniden başlatmamız gerekiyor.

/usr/local/nginx/sbin/nginx -s reload

9. PHP de Güvenliğinizi arttırın

php.ini içerisindeki ayarları aşağıdaki yönergelere göre mutlaka değiştirin.

# Disallow dangerous functions
disable_functions = phpinfo, system, mail, exec

## Try to limit resources ##

# Maximum execution time of each script, in seconds
max_execution_time = 30

# Maximum amount of time each script may spend parsing request data
max_input_time = 60

# Maximum amount of memory a script may consume (8MB)
memory_limit = 8M

# Maximum size of POST data that PHP will accept.
post_max_size = 8M

# Whether to allow HTTP file uploads.
file_uploads = Off

# Maximum allowed size for uploaded files.
upload_max_filesize = 2M

# Do not expose PHP error messages to external users
display_errors = Off

# Turn on safe mode
safe_mode = On

# Only allow access to executables in isolated directory
safe_mode_exec_dir = php-required-executables-path

# Limit external access to PHP environment
safe_mode_allowed_env_vars = PHP_

# Restrict PHP information leakage
expose_php = Off

# Log all errors
log_errors = On

# Do not register globals for input data
register_globals = Off

# Minimize allowable PHP post size
post_max_size = 1K

# Ensure PHP redirects appropriately
cgi.force_redirect = 0

# Disallow uploading unless necessary
file_uploads = Off

# Enable SQL safe mode
sql.safe_mode = On

# Avoid Opening remote files
allow_url_fopen = Off

10.İçeriğiniz ve Dosyalarınız kolay kolay indirilemesin

adam wget ile çatır çutur sitenizdeki içeriklerden tutam tutam alıyor ise aşağıdaki komutumuz size çok iyi gelicek User-Agentleri yakalıyorsunuz.Sonrasında aşağıdaki gibi düzenliyorsunuz sonrasını onlar düşünsün

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
            return 403;
 }

Yapacağınız tüm bu işlemler sizin sistemlerinizin tamamen güvenli yapacağı anlamına gelmez.Sadece sisteminize saldıran kişileri bir nebze zorlamak bazı kişileri de engellemek için kullanılmaktadır.

Daha iyi güvenlik yapılandırmaları için Lütfen bizimle iletişime geçin

Centos 7 ve RHEL 7 EPEL Repo Yükleme

CENTOS ve RHEL 7 seçipde kullanan arkadaşların belkide sorunlarından bir tanesi de extra repoların yüklenmesinin nasıl olduğu çünkü centos/rhel 6 serisine bakıldığı zaman 7 de tamamen kurulumlarının farklı olduğunu görmekdeyiz.Aslında centos/rhel 6 ile neredeyse aynı denebilirdi ancak repoların hem versiyon farklılığı hem kullandıkları parametreler standartlara göre değişik şimdi öncelikle bize centos 7 bir sistem lazım ki şuanda kullandığım web server centos 7

cd /tmp
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
ls *.rpm

ilk önce tmp ye dosyamızı indiriyoruz.sonradan sistemde bulunmaması adına böyle birşey yapma gereği duydum tmp sonuçta crontab ile vakti gelince silinecektir.

sudo yum install epel-release-7-0.2.noarch.rpm

Parametremiz ile epel rapomuzun kurulum komutunu verdik ve aşağıdaki gibi bir çıktı aldık

centos7epelrepokurulumugorsel1

Harbiden kurulmuş mu diye bakıyoruz.Ama öncesinde "y" basıp ittiriyoruz ki kurulsun

sudo yum repolist

centos7epelrepokurulumugorsel2

ve nihayetinde kurulduğuna inanabiliriz.Çünkü listemizde gözükmekte peki bu epel reposunda neler var görmek istiyorsak epel içerisinde arama yapıyoruz ve tüm hepsini listeliyoruz.

sudo yum --disablerepo="*" --enablerepo="epel" list available

centos7epelrepokurulumugorsel3

Arama yapacak isek ve paket adımızı biliyorsak işimiz daha kolay aşağıdaki örnek ile yapabilirsiniz.

sudo yum search paketadı

Yönetim bilişim sistemleri vs enformatik

İşletme yönetimini ve bilgisayar bilimlerini kapsamakta olan işletme enformatiği sosyo – teknik bir disiplindir. İşletme enformatiği uzmanı olan kişiler, üniversitelerin lisans düzeyinde verilmekte olan işletme enformatiği bölümü mezunlarıdır.

Türkiye’de dahil olmak üzere dünyanın birçok ülkesinde lisans, yüksek lisans ve doktora düzeyinde işletme enformatiği eğitimleri üniversitelerde verilmektedir. verilen bu eğitimlerle, kurumsal yapılanmayı, iş süreçlerini ve bilişim ihtiyaçlarının çözümlenmesi, her geçen gün gelişmekte olan bilişim ve iletişim teknolojilerinin etkin bir şekilde kullanılması sayesinde kurumların ihtiyaç duyduğu bilişim çözümlerinin tasarlanması, hayata geçirilmesi ve uygulanması amaçlanmaktadır. Aynı zamanda tasarlanan ve hayat geçirilen çözümlerin kullanılması ile kurumların yapısı, işleyişi ve çevresel ilişkilerinin nasıl etkileneceğinin tespit edilmesi ile birlikte ileride bu alanlarda hem deneysel hem de kuramsal olarak yapılacak olan araştırmaların arttırılması amaçlanmaktadır.

Bir işletme içerisinde tabiri caizse birer arabulucu olarak görev yapan işletme enformatiği uzmanları, yöneticilerin, çalışanların ve bilişim uzmanlarının kullandıkları terminolojilere hakimdir. Bu nedenle işletmelerin devamlılığını sağlamakta olan bu üç faktör arasında bir köprü görevi görmektedir. Böylece üniversitelerin işletme enformatiği bölümlerinden mezun olan kişiler, pek çok sektör içerisinde farklı alanlarda iş olanaklarına sahip olabilmektedir.

“ işletme enformatiği “ terimi dilimize Almanca “ Wirtschaftsinformatik “ kelimesinden çevrilerek geçmiştir. Enformatik sözcüğü kısaca bilişim bilimi olarak açıklanabilmektedir. Yabancı dil olarak İngilizce konuşulan Amerika, İngiltere gibi ülkelerde ise işletme enformatiği Management İnformation System ( MİS ) olarak bilinmektedir. Management İnformation System ise dilimize “ Yönetim Bilişim Sistemleri “ olarak çevrilmektedir. Hem işletme enformatiği hem de yönetim bilişim sistemleri Almanca ve İngilizceden dilimize farklı şekillerde çevrildiği için genellikle herkes tarafından farklı kavramlar olduğu düşünülmekte ve farklı mesleki alanlar oldukları gibi bir yanılsama toplum arasında yaygın bir şekilde bulunmaktadır. Her iki bölüm arasındaki temel fark ise üniversitelerde verilmekte olan eğitimin dili olmaktadır. Yönetim bilişim sistemleri eğitimi İngilizce, işletme enformatiği eğitimi ise Almanca olarak verilmektedir. Ancak her iki alanda aynı eğitim aşamalarını içermekte ve sonuç olarak aynı işi yapma kabiliyetini sağlamaktadır.

yonetimbilisimsistemlerigorsel1

İşletme enformatiği ve yönetim bilişim sistemlerinde en temel amaç yöneticilerin karar vermesini kolaylaştıracak farklı bilgilerin bir araya getirilmesini sağlamak ve bu bilgileri bir bütün haline getirmektir. Bilindiği gibi “ bilgi “ günümüzün en önemli stratejik etkenlerinden birisi halini almıştır ve bu nedenle bilgiyi güçlü ve başarılı bir şekilde yönetebilen kişiler ya da kuruluşlar bulundukları alanda başarı şansını elde edebilmektedirler.

Böylece işletme enformatiği ya da bilinen diğer adıyla yönetim bilişim sistemleri, bilginin üretilmesi, yenilenmesi ve yayılması için çalışmalar yapmaktadır. Tüm bunların yapılabilmesi için ise işletme ve bilgisayar mühendisliği bilgileri kullanılmaktadır. Kısacası bilgisayar sistemleri aracılığı ile bilgiler elde ediliyor ve artık işletme bilgisi devreye sokularak, bu bilgilerin işletmenin yararına olacak şekilde nasıl kullanılacağına dair bir planlama ve programlama yapılıyor. Teknoloji bir sonuç aracı olarak kullanılıyor ve böylece verim artışı sağlanıyor.

Günümüzde modern iş dünyasında özellikle teknolojinin gelişmesi sayesinde e – ticaret, karar alma sistemleri, yazılım geliştirme gibi alanlarda uzman olan işletme enformatiği uzmanları firmaların olmazsa olmazları arasında yer almaktadır.

Bilgisayar bilimleri ve işletmenin bir arada harmanlandığı bir akademik dal olan işletme enformasyonu ya da YBS aynı zamanda birçok ana çalışma alanına da sahiptir. Sistem analizi ve tasarımı, bilişim teknolojisi yenilikleri ve proje yönetimi, bilişim teknolojisinin işletmeler etkisi ve bilişim teknolojilerinin altyapılarının yönetilmesi, web tabanlı bilgi sistemleri uygulamaları ve bu sistemlerin yönetilmesi, veri madenciliği, web madenciliği, sosyal işlem ve sosyal medya analizleri, hizmet işleme ve hizmet yönetimi, bilgi yönetimi, yeşil bilişim sistemleri gibi çalışma alanları bulunmaktadır. Tüm bu saydıklarımızın yanı sıra küresel bilgi sistemleri ve e – işletme, bilgi sistemlerinde güvenlik ve kişisel kullanım, insan ve bilgisayar arasındaki ilişki, insan davranışları ve örgüt çalışmaları, bilgi sistemlerinin sosyal ve kültürel yönleri, ekonomi ve bilgi sistemleri arasındaki ilişki, sağlık alanında, devlet kurumlarında ve diğer alanlarda gerekli olan bilgi sistemleri ve bu sistemlerinin kullanımı da işletme enformatiği ve YBS çalışma alanları arasında sayılmaktadır.

Bu alanda lisans eğitimi almış ve uzmanlaşmış olan kişiler, bir işletmenin tüm fonksiyonlarına hakim olmakla birlikte bilişim sistemlerini bu alanda başarılı bir şekilde kullanabilmektedir. Aynı zamanda proje döngüsü yönetimine hakim ve özel bilişim paket programlarını en iyi şekilde kullanabilmektedirler. Gerektiği takdirde işletmenin ihtiyaçlarına yönelik özgün programlar ya da internet uygulamaları geliştirebilmekte, işletme için kullanılan yazılım ve web uygulamalarının içeriğini kolayca yönetebilmekte, sistem analizleri oluşturabilmekte ve süreç yönetiminde başarılı olabilmektedirler. Kısacası bir karar bilimi uzmanı olan ve stratejik düşünerek hareket edebilme yeteneğine sahip kişilerdir. Bir işletmenin ihtiyaçlarını kolay bir şekilde fark ederek, bu ihtiyaçların en verimli şekilde marjinde düşünerek nasıl giderilebileceğine dair tasarımlar yapmakta ve bu tasarımları hayata geçirmektedirler.

Günümüzde YBS ya da işletme enformatiği sistemleri kuramsal zeka uygulamalarının bir bölümünü oluşturuyor. Böylece sistemin temelini oluşturan uygulamalar da raporlama yazılımı olarak adlandırılıyor. Veriler, veri tabanından sorgulandıktan sonra raporlama görevleri sunucu tarafından tamamlanmaktadır. Elektronik ortamda hazırlanmış olan raporlar, iletişim sistemleri aracılığı ile ilgili kişilere ulaştırılmaktadır. YBS sistemi ile düzenli raporlar, sapma raporları ve anlık raporlar olmak üzere 3 farklı rapor hazırlanabilmektedir. Düzenli raporlar belirli dönem sonlarında günlük, aylık, haftalık ya da yıllık olacak şekilde hazırlanmaktadır. Sapma raporları ise belirlenen ölçütlerde bir artış ya da azalış meydana geldiğinde, bu değişimin sebebinin tespit edilebilmesi için hazırlanmaktadır. Son olarak anlık raporlar ise yöneticilerin belirli bir anda ihtiyacı olan bilgiyi edinebilmesi için hazırlanmaktadır. Genellikle tek seferlik hazırlanan bu raporlara talep raporları da denilebilmektedir.

Ülkemizde YBS alanında yapılan ilk çalışmalar 1991 yılında, Marmara Üniversitesi’nde başlamıştır.

Centos Web Panel Nameserver Ayarları

Centos web panelimizi ilk kez kuruyorsak sistemimizde nameserver ayarlarınıda haliyle yapmamız gerekiyor.Bunun için centos web panel kullanıcıyı yormayan bir arayüz yapmış bu şekilde nameserver ayarlamalarını kolay bir şekilde yapabiliyoruz.

İlk olarak Panelimize güzel bir biçimde giriş yapıyoruz. sol menüden "DNS Functions" tıklıyoruz. Buradanda Edit Nameserver IPs Diyoruz. ve domaine tanımladığınız nameserveri birkezde buraya tanımlıyorsunuz.

nameservergorsel1

Sonrasında ise ip ve tanımlanacak domain vs bilgilerimizi giriyorz.

nameservergorsel2

Daha sonra ip adresimizi sisteme tanıtacağız. ön tanımlı olarak 127.0.0.1 tanımlıdır.değiştirmeniz şiddetle önerilir.Bunuda soldaki menünün yukarılarında bulunan "CWP Settings" adı altında "Edit Settings" diyerek yapıyoruz.

nameservergorsel3

Bilgilerinizi doğru bir şekilde girmeyi unutmayın bende apache portunun 82 olmasının nedeni sistemde Varnish cache nin aktif olmasından kaynaklanmaktadır.

nameservergorsel41

Bu işlemleri yaptıktan sonra alan adınızı oluşturduğunuz nameserver yönlendirebilirsiniz.24 ila 48 saat arasında tam olarak yönlenecektir.

Centos Web Panel Kurulumu

Centos web panel adındanda anlaşıldığı üzere Centos geniliştiricilerinin yapmış olduğu ve centos üzerinde muazzam bir stabilite ile çalışan bir kontrol panelidir.Centos web panel kolay kullanımı ve hızlı olmasıyla kullanıcıların dikkatini kendine çekmeyi başlardı SSH ile yapılabilen neredeyse tüm işlemleri bu panel sayesinde yapabilirsiniz.Dedicated,VPS,VDS serverlarınızda güvenle kullanabilirsiniz hemde ücretsiz olarak.

Özellikleri

  • Web Server
  • Varnish Cache server (improve your server performances by 3x)
  • Compiles Apache from source (improves up to 15% on performances)
  • Apache server status, configuration
  • Edit apache vhosts, vhosts templates, include configuration
  • Rebuild all apache Virtual hosts with one click
  • suPHP & suExec (improved security)
  • Mod Security + OWASP rules (one click install, easy management)
  • PHP
  • Compiles PHP from source (improves up to 20% on performances)
  • PHP switcher (switch between PHP versions like: 5.2, 5.3, 5.4, 5.5)
  • Simple php editor
  • PHP addons with one click
  • PHP.ini editor & PHP info & List modules
  • User Management
  • Add, List, Edit adn Remove Users
  • User Monitoring (list users open files, listening sockets…)
  • Shell access management
  • User Limit Managment (Quota and Inodes)
  • DNS
  • FreeDNS (Free DNS Server, no need for additional IPs)
  • Add, Edit, List and Remove DNS zones
  • Edit nameserver IPs
  • DNS zone template editor
  • Email
  • postfix & dovecot
  • MailBoxes, Alias
  • Roundcube webmail
  • Postfix Mail queue
  • System
  • Hardware Information (CPU core and clock info)
  • Memory Information (Memory usage info)
  • Disk Info (Detailed Disk status)
  • Software Info (kernel version, uptime…)
  • Services Status (Quick services restart eg. Apache, FTP,Mail…)
  • ChkConfig Manager (Quick list and manage your services)
  • Network port usage
  • Network configuration
  • SSHD configuration
  • Monitoring
  • Live Monitoring (Monitor services eg. top, apache stats, mysql…)
  • Use Java SSH Console within panel
  • Services Configuration (eg. Apache, PHP, MySQL…)
  • Run shell commands in screen/background
  • Security
  • CSF Firewall (Best Linux Firewall)
  • SSL generator
  • SQL
  • MySQL Database Managment
  • Add local or remote access user
  • Live Monitor MySQL process list
  • Create, Remove database
  • Add additional users per database
  • MySQL server configuration
  • PhpMyAdmin (database managment)
  • Additional options
  • TeamSpeak 3 Manager (Voice servers)
  • Shoutcast Manager (Shoutcast streaming servers)
  • Auto-update
  • Backup manager
  • File Manager

Kurulumumuzu yapmak için sistemin Centos 6 olması gerekmektedir.Sitesinde bahsettiği gibi centos 5 de çalışmaktadır ancak tam olarak test etmemişler test etmek size kalmış…

cd /usr/local/src
wget http://dl1.centos-webpanel.com/files/cwp-latest.sh
chmod 777 cwp-latest.sh
sh cwp-latest.sh

Komutundan sonra bizi sistem hızımıza göre bi sabır testi bekliyor.2Gb ramlı bir sunucuda yaklaşık 40 dk sürmektedir.

centoswebpanelgorsel1

centoswebpanelgorsel2

Sırasıyla sisteme kurduğu tüm modülleri teker teker derlemektedir bu yüzdende uzun sürüyor ancak sistem açısından gayet makul oluyor.

centoswebpanelgorsel3

Kurulumun son aşamasına geldiyseniz benim gibi bu şekilde bi ekranla karşılaşırsınız.Sonrasında ENTER dediğinizde sisteminiz uzun bi reboot sürecine geçecek sonrasında verilen parametreler ile panele girebilirsiniz.Dikkat edin oradaki bilgileri kayıt etmezseniz sonrasında sıkıntı çekebilirsiniz.

Wp-login.php Bruteforce Saldırısı

Son zamanlarda yüklü miktarda bruteforce saldırıları almaktaydım.Sonra internetten araştırınca milyonlarca wordpress kullanıcısına aynı anda bir saldırı gerçekleştirildiğini okudum haliyle bunu kesmemiz gerekiyordu çünkü tekde 40 kez şifre denemesi yapıyordu bulacağından değil ama CPU yu kastırma durumu vardı MySQL boşu boşuna yoracaktı ne yapalım ne yapalım derken saldırının nasıl geldiğine bi bakmamız gerekiyordu.Bir baktım ki gelen Saldırılar POST şeklinde bize ulaşıyor botlar aracılığı ile

"POST /wp-login.php HTTP/1.1" 302 4477 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)"
"POST /wp-login.php HTTP/1.1" 302 4479 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)"
"POST /wp-login.php HTTP/1.1" 302 4487 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
"POST /wp-login.php HTTP/1.1" 302 4643 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"

İlk olarak dedim ki 2.bir güvenlik şifresi ile doğrulatıp sonra wp-login e ulaşabilirdim ancak bu bana vakit kaybettirirdi ama botların ayağını keserdi.

AuthUserFile ~/.htpasswd

AuthName “Hop Dedik...”

AuthType Basic

Require valid-user

Ancak en kolayı olan htacc ile POST dan gelen botların önünü kesmek olurdu diye düşündüm bunu ben aynı zamanda spam yorum gelmemesi için kullanmaktaydım ve görüldüğü üzere spam namına birşey gelmemekteydi.

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_METHOD} POST
	RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login).php*
	RewriteCond %{HTTP_REFERER} !.*mertcangokgoz.com.* [OR]
	RewriteCond %{HTTP_USER_AGENT} ^$
	RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</ifModule>

Tabi önceleri ben bunu sadece spam için kullanıyordum o yüzden kodum farklı idi spam sorununuzu eklentisiz çözmek istiyorsanız böyle bir imkanda mevcut.

# BLOCK NO-REFERRER SPAM
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_REFERER} !(.*)mertcangokgoz.com(.*) [NC]
RewriteCond %{REQUEST_URI} /wp-comments-post.php [NC]
RewriteRule .* - [F]
</IfModule>
# END WordPress

Aynı şekilde bir yönlendirme yapmak istemiyorsanız ve direk forbidden döndürmek istiyorsanız bi üstdeki kod işinize yaramaz pek fazla

# BLOCK NO-REFERRER SPAM
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_REFERER} !(.*)mertcangokgoz.com(.*) [NC]
RewriteCond %{REQUEST_URI} /wp-login.php [NC]
RewriteRule .* - [F]
</IfModule>
# END WordPress

Buda wp-logine düzenlenmiş POST req engelleme komutumuz .htacc ye ekliyoruz ve botların ayaklarını bir güzel kesiyoruz ne eklenti nede başka birşey kurmamıza gerek kalıyor.

Nginx Kullanıyorsanız Yapmanız gereken config dosyasına aşağıdaki satırları eklemek.Bu sayede sizlerde spamlardan kurtulabilirsiniz.

location ~* (wp-comments-posts|wp-login).php$ {
        if ($http_referer !~ ^(https://mertcangokgoz.com) ) {
          return 405;
        }
      }

1Gb Sunucular için Mysql Optimizasyonu

1GB sunucunuz yada VPS iniz varsa ve sitenizi yayına sokmak istiyorsunuz ve mysqliniz sıkıntı çıkartıyor çöküyor,kitleniyor,şişiyor ve sorunlar yaşatmaya başladıysa size bu vereceğim ayarlar bir nebze olsun rahatlatmaya yarayacaktır.Ayrıca mysql tarafından sistem kaynaklarınızın daha efektif bir şekilde çalışmasına da olanak sağlayacaktır.

Öncelikle eski my.cnf dosyasının bir yedeğini alın ne olur ne olmaz diye bunun için

cp /etc/my.cnf /etc/my.cnf.old

bu sayede eski configlerinizi silmemiş olacaksınız sorun çıkarsa ismini my.cnf olarak değiştirmeniz yeterli olacaktır.

editleme işini yaparken istediğiniz editörü kullanabilirsiniz pico,vim,nano seçin birisini ben nano kullanacağım

nano /etc/my.cnf

nano editör sisteminizde kurulu değilse aşağıdaki komut ile kolaylıkla kurabilirsiniz.

yum install nano

İçerisini temizledikten hemen sonra aşağıdaki satırları ekliyoruz.

[mysqld]
max_connections = 200
key_buffer = 32M
myisam_sort_buffer_size = 32M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
table_cache = 1024
thread_cache_size = 286
interactive_timeout = 25
wait_timeout = 1000
connect_timeout = 10
max_allowed_packet = 16M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
tmp_table_size = 16M

[mysqld_safe]
open_files_limit = 8192

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

local-infile=0

Şimdi biraz daha karmaşıklaştırmamız gerekecek optimizasyon işini tam olarak ve daha güzel bir şekilde yapabilmemiz için yardımda almamız hoş olurdu.Bu yüzden aşağıdaki betiği de sistemimizde çalıştıyoruz. Betiği tedarik etmek için tıklayın

chmod 777 mysqltuning.sh
service apache restart
service nginx restart
service mysqld restart

sistemimizde bulunan tüm servisleri yeniden başlatıyoruz. 24 saat veya 48 saat sonrasında

sh mysqltuning.sh

komutunu sisteme veriyoruz size çıktı verecek sizde my.cnf ayarlamalarınızı buna göre yapabilirsiniz.