FreeIPA ile windows / ubuntu hesap yönetimi

Hedef : tamamen opensource kaynaklar kullanarak client ve user tanımlarını merkezi olarak yönetmek. Peki Microsoft Active Directory var, sen neden bahsediyorsun diyen arkadaşlara OS ve Core CAL lisanslarının selamı var 🙂

 

Kullanılan işletim sistemleri :

IPA server : CentOS

Test Client1 : Ubuntu

Test Client2 : Windows 2012

 

Vazgeçilenler :

MS Active Directory’nin sağladığı konfor alanı ve alışkanlıklar.

Kazançlar :

Tamamen duygusal 🙂

 

IPA server kurulumu :

setup öncesi ipa server’ın çalışacağı sunucunun hostname tanımı düzenliyoruz ve yum ile ipa server’ın kurulumunu tamamlıyoruz.

[root@ipa01 ~]# hostnamectl set-hostname ipa01.kanux.local,

[root@ipa01 ~]# hostname
ipa01.kanux.local

…..

[root@ipa01 ~]# yum install ipa-server

…..

[root@ipa01 ~]# rpm -qa|grep ipa-server
ipa-server-4.5.4-10.el7.centos.4.4.x86_64

setup tamamlandığında artık IPA server tanımlarını yapabiliriz.

[root@ipa01 ~]# ipa-server-install

realm ve management password tanımlarını sırasıyla istenen adımlarda belirliyoruz.

IPA server kurulumu tamamlandığında web ui üzerinden user ve host yönetimini yapabiliriz.

https://ipa01.kanux.local/ipa/ui/#/e/user/search

 

Ubuntu client setup :

ipa-client-install –hostname=`ClientIPAddress -f` \
–mkhomedir \
–server=ipa01.kanux.local \
–domain kanux.local \
–realm kanux.local

 

Windows client setup:

1.adım :

[root@ipa01 ~]# ipa-getkeytab -s ipa01.kanux.local -p host/testwin.kanux.local -e arcfour-hmac -k krb5.keytab.windows -P

2.adım :

ksetup /setdomain KANUX.LOOCAL
ksetup /addkdc KANUX.LOOCAL ipa01.kanux.local
ksetup /addkpasswd KANUX.LOOCAL ipa01.kanux.local
ksetup /setcomputerpassword “password”
ksetup /mapuser * *

ahmetay@gmail.com
Reklamlar

dotnet core on docker container

Merhaba, bu yazımda sizlere bir dotnet core projesinin docker container üzerinde çalıştırılmasını anlatacağım. Tüm işlemler basic setup CentOS 7 ve docker 18.04.0-ce üzerinde yapılmıştır.

Basitçe hazırlanmış bir dotnet core projesini ; önce microsoft/aspnetcore imajını kullanarak bir container oluşturup daha sonra bu container’ı kullanarak projemizi aynı host üzerinde çalıştıracağız.

[root@lynx-test v1]# docker pull microsoft/aspnetcore
………
[root@lynx-test v1]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
microsoft/aspnetcore-build latest a183b62f414b 21 hours ago 1.97GB
microsoft/dotnet latest 2e537f28e47b 3 days ago 1.75GB
microsoft/aspnetcore-build 2.0 b397a6198a04 5 days ago 1.97GB
microsoft/aspnetcore 2.0 6accbd9bed02 5 days ago 325MB
microsoft/aspnetcore latest 6accbd9bed02 5 days ago 325MB

Artık projemizi çalıştırabileceğimiz bir docker imajına sahip olduğumuzu görüyoruz. bundan sonra dotnet core imajını kullanacak kendi projemize ait container oluşturabiliriz. Burada daha önceden derlenmiş olan kodlarımızı kullanacağımızdan ve  oluşturulan container sadece bu yazıya özel olduğundan siz kendi container’ınızı projenizin derlenmemiş hali ile de oluşturup kullanabilirsiniz.

örn.:

FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY –from=build-env /app/out .
ENTRYPOINT [“dotnet”, “aspnetapp.dll”]

biz yazımıza yukarıda bahsettiğim, derlenmiş kod üzerinden devam ediyoruz.

derlenmiş kodlarımızın bulunduğu folder altına “Dockerfile” oluşturuyoruz;

# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY . ./
ENTRYPOINT [“dotnet”, “CoreServices.Chat.Api.dll”]
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM microsoft/aspnetcore:2.0
—> 6accbd9bed02
Step 2/4 : WORKDIR /app
—> Using cache
—> 6b920348796e
Step 3/4 : COPY . ./
—> 6d14ee68e14d
Step 4/4 : ENTRYPOINT [“dotnet”, “CoreServices.Chat.Api.dll”]
—> Running in ff20a4ee7a40
Removing intermediate container ff20a4ee7a40
—> 4b6aee92dc23
Successfully built 4b6aee92dc23
Successfully tagged v1:latest
Dockerfile’ımızı kullanarak çalışacan cotainer’ı build ediyoruz.
[root@lynx-test v1]# docker build -t donet_core_test .

 

[root@lynx-test v1]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
v1 latest 4b6aee92dc23 5 minutes ago 325MB
microsoft/aspnetcore-build latest a183b62f414b 22 hours ago 1.97GB
microsoft/dotnet latest 2e537f28e47b 3 days ago 1.75GB
microsoft/aspnetcore-build 2.0 b397a6198a04 5 days ago 1.97GB
microsoft/aspnetcore 2.0 6accbd9bed02 5 days ago 325MB
microsoft/aspnetcore latest 6accbd9bed02 5 days ago 325MB

son adım olarak, container’ımızı kullanarak dotnet core uygulamamızı çalıştırıyoruz :

docker run -it –rm -p 80:4000 –name docker-app-name v1 (conainer name)
[root@lynx-test v1]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 906/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1341/master
tcp6 0 0 :::80 :::* LISTEN 11492/docker-proxy
tcp6 0 0 :::22 :::* LISTEN 906/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1341/master
artık tarayıcımıza docker servisinin çalıştığı IP adresini yazdığımızda (80 portundan) dotnet core uygulamıza erişebileceğiz.

 

ahmetay@gmail.com

Web API management (Kong)

Web API’larını yönetmek her zaman sorun olmuştur. Bu konuda MS Azure, AWS, CA benzeri yetenekleri oldukça gelişmiş API Management servisleri bulunmakta fakat bu araçları kullanmak için belirli bir ücret ödemeniz sözkonusu. Web API’larınızı ücretsiz olarak yönetebileceğiniz kong, tyk vb. araçlar alternatif çözüm olarak kullanılabilir.
Bu yazımda sizlere kong ile Web API yönetimini anlatacağım.
* OS olarak CentOS 7.3 kullanılmıştır.
** DB Server PostgreSQL 9.6 kullanılmıştır.
https://getkong.org/install/centos/ adresinden kong repository download edilebilir.
[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum install kong
*kong DB olarak cassandra ve PostgreSQL 9.4+ desteklemektedir.
kong için DB oluşturmamız gerekiyor;
CREATE USER kong; CREATE DATABASE kong OWNER kong;
DB oluşturduktan sonra erişim bilgilerini kong.conf içine yazıyoruz.
############### PGSQL config start #################
database = postgres
pg_host = xxx.xxx.xxx.xxx
pg_port = 5432

pg_user = yyyy

pg_password = zzzzz

pg_database = kong

############### PGSQL config end #################
artık uygulamayı çalıştırabiliriz.
[root@localhost ~]# kong start
# Kong is running
erişim için curl http://kong-ip-address:8001
kong setup bittikten sonra Web API’larınızı web üzerinden yönetmek için kong-dashboard kullanabilirsiniz.
kong-dashboard setup için ; https://github.com/PGBI/kong-dashboard
gereksinimler : nodejs & npm
[root@localhost ~]# npm install -g kong-dashboard
[root@localhost ~]# kong-dashboard start
web tarayıcınızdan http://kong-ip-address:8080/#/config

dashboard

Artık API’ınız kong ile yönetmeye hazırsınız, APIs sekmesinden API ekliyoruz.
kong üzerinden artık eklediğiniz API’ınız çağırabilirsiniz. http://kong-ipaddress:port/api/path
Kong üzerinden yönetmeye başladığınız API’ınız için kod değişikliği yapmadan örneğin basic authenticaion ekleyebilirsiniz.
Consumer sekmesinden test için bir kayıt ekliyoruz ve plugin sekmesinden basic authentication plugin’i aktif ediyoruz.
http://kong-ipaddress:port/api/path adresinden çağırdığınız API için artık user/password ile erişmeniz gerekecek. consumer altına eklediğiniz user/password ile erişim yapabilirsiniz.

basic-auth2

ahmetay@gmail.com

IIS logs import elasticsearch and view kibana (with logstash)

Merhaba, bu yazımda IIS server loglarının logstash ile elasticsearch üzerine aktarımını anlatacağım.
Anlatılan bu setup; Windows server 2012 R2, CentOS 7.2 işletim sistemleri üzerinde yapılmıştır.
Elasticsearch version : 2.4.0
Kibana version : 4.6.0
Logstash version : 2.4.0
IIS sunucu üzerinde log tanımını yapıyoruz.
https://www.elastic.co/downloads/logstash adresinden logstash (ZIP version) download yapıyoruz.
Download edilen dosyayı “C:\Program Files\logstash” altına açıyoruz.

 

conf

input {
 file {
 #type => "iis"
 path => "%IIS log files path%/*.log"
 start_position => "beginning" 
 }
}

filter {
 
 #ignore log comments
 if [message] =~ "^#" {
 drop {}
 }


 grok {
 # check that fields match your IIS log settings
 match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IPORHOST:site}
 %{WORD:method} %{URIPATH:page} %{NOTSPACE:querystring} %{NUMBER:port}
 %{NOTSPACE:username} %{IPORHOST:clienthost} %{NOTSPACE:useragent}
 %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus}
 %{NUMBER:time_taken}"]
 }
 
 #Set the Event Timesteamp from the log
 date {
 match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ]
 timezone => "Etc/UTC"
 } 
 
 
 useragent {
 source=> "useragent"
 prefix=> "browser"
 }
 
 mutate {
 remove_field => [ "log_timestamp"]
 }
}

output {
stdout {}
elasticsearch {
hosts => ["elastisearch_server_IP:9200"]
}
stdout { codec => rubydebug }
}

 

NSSM (non-sucking service manager) ile windows servis olarak logstash’i ekliyoruz.
https://nssm.cc/

 

logstash servisini çalıştırdıktan sonra artık kibana tarafına geçebiliriz.
elasticsearch kurulumu için yazımı okuyabilirsiniz
Kibana için adresinden güncel versiyonu download ediyoruz, kibana yükleme işleminden sonra /opt/kibana/conf/kibana.yml içindeki elasticsearch için gerekli olan düzenlemeyi resimdeki gibi yapıyoruz.
kibana için http://kibanaserverIP:5601/app/kibana adresinden erişim yapabilirsiniz.

 

kibana3

 

ahmetay@gmail.com

 

Redis monitoring (redis-stat)

Merhaba, daha önce sizlere redis kurulumunu anlattığım yazımdan sonra çalışan redis sunucunuzu monitor etmek için
basit, işlevsel ve ücretsiz bir monitoring aracı olan redis-stat kurulumunu CentOS 7 üzerinde anlatmak istiyorum.
redis-stat kurulumuna geçmeden önce ihtiyacımız olan ön hazırlık paketlerini yüklüyoruz

yum install ruby-devel.x86_64 gcc-c++.x86_64 -y

3

paketlerin yüklemesi tamamlandıktan sonra redis-stat kurulumuna geçebiliriz.
gem install redis-stat

2.PNG

artık redis-stat monitorunu çalıştıralım.
redis-stat REDIS-SERVER-IP:6379 –verbose –server=8080 –daemon 5
verilen parametreleri ihtiyacınıza göre değiştirebilirsiniz.

1

 

ahmetay@gmail.com

PowerShell grep & count

Merhaba, powershell ile dosya(lar) içindeki her hangi bir kelime ya da cümleyi arama ve count almak için aşağıdaki yöntemi deneyebilirsiniz.

PS-1

sls “search keyword” -Path *.log -ca komutuyla klasör içindeki *.log uzantılı tüm dosyalarda istediğiniz kelime için search yapabilirsiniz.
(Select-String -Path *.log -Pattern “search keyword”).count komutuyla aradığınız kelimenin kaç kez geçtiği bilgisini alabilirsiniz.

PS-2

 

ahmetay@gmail.com

Redis kurulum (v 3.0.6)

Merhaba, bu yazımda size CentOS 7 üzerinde stand alone Redis server (v 3.0.6) kurulumunu anlatacağım.
Redis server kurulumuna başlamadan önce ruby, rubygems-devel ve gcc paketlerini yüklüyoruz. Bu işlem tamamlandıktan sonra “gem install redis” komutunu çalıştırıyoruz.

rsetup3.PNG

artık Redis server kurulumuna başlayabiliriz. Güncel stabil versiyonu http://redis.io/download adresinden indirebilirsiniz.

rsetup1.PNG

indirdiğiniz tar paketini /usr/share/ altına açıyoruz. (/usr/share/redis-3.0.6/)

rsetup2

“make” komutuyla redis server kurulumunu tamamlıyoruz.

rsetup4.PNG

artık redis serverı çalıştırabiliriz. “src/redis-server redis.conf”

rsetup5.PNG

redi serverı test için:  src/redis-cli -h “redis server IP” komutuyla redis servisine bağlanıyoruz. Artık redis servisimize key atabilir ve daha sonra atadığımız key üzerinden değer okuyabiliriz.

rsetup6.PNG

 

*CLI ekranını sevmiyorsanız windows üzerinden “redis desktop manager” ile redis sunucularınıza bağlanabilirsiniz.
ahmetay@gmail.com