Moved blog

My VPS on Contabo started to act funny, probably they overloaded their KVM hosts. I started to see messages like “[27941.674540] sh (9100): drop_caches: 3” on dmesg (totally not cool bro).

So I’ve switched to DigitalOcean. Thanks to systemd-nspawn, moving entire system was really easy: rsync one big data file, mount it and start the container.

 

Kopmayın [Tr]

Bugünkü saldırının ardından zaten yalama olan Twitter, bir süre tekrar erişime engellendi. Burdan gelen ilham ve sinirle, bu yazıda ucuz bir VPS ile nasıl kısıtlamaların etrafından dolanabileceğinizi anlatacağım. Konuyla ilgili hevesi teknik bilgisinden fazla insanların sayısı gayet çok.

Öncelikle bant genişliği berbat olmayan ve saçma kotalar koymayan ucuz bir VPS (sanal sunucu) sağlayıcısı bulmanız gerekli (elbette bedava alternatifler de var, ancak bu yazının konusu değil). Sunucunun Türkiye’de olmaması gerektiğini söylememe gerek yok sanırım. Deneyimlerimden OVH ve Contabo‘daki seçenekleri önerebilirim. Buralardaki en düşük ücretli paketi almanız yetecektir. Sonuçta yapacağınız iş pek işlemci/ram harcamayacak.

VPS’iniz hazırlanıp, hesabınızın bilgileri gönderildiğinde, sizin için önemli olan bilgiler SSH giriş bilgileri. Sunucunuzun IP adresinin yanı sıra bir kullanıcı adı (muhtemelen root) ve karmaşık bir parola alacaksınız. Yapacağımız işlem bu sunucuya bir tünel açarak, bağlantılarınızın bu tünel üzerinden yapmak. Tüneli açmak için gereken işlemleri Linux/OSX ve Windows kullananlar olarak ikiye ayırabiliriz.

Linux/OSX kullanıcıları:

Terminali açıp şu komutu vermeniz yeterli

$ ssh -v -C2qTnN -D 8080 -p22 kullanıcıadı@ipadresi

Windows kullanıcıları:

Kitty‘i indirip çalıştırın. Yapmanız gerekenler sırayla

– Açılışta karşınıza gelen Session sekmesinde Host name (or IP address) bölümüne sunucunuzun IP adresini, Port sekmesine de 22 yazın.
Connection > SSH > Tunnels bölümünü açın, source port bölümüne 8080 yazıp alt kısımdan Dynamic‘i seçtikten sonra Add‘e tıklayın. Üst alana D8080 olarak eklenecektir.
Connection > Data bölümünü açın. Auto-login username bölümüne size iletilen kullanıcı adını, alt taraftaki Auto-login password bölümüne de parolayı yazın.
Session sekmesine geri dönüp Saved Sessions yazan kutucuğa proxybaglantisi gibi bir tanımlayıcı ifade yazarak Save‘e tıklayın. Bu şekilde sonradan ayar yapmadan hızlıca bağlanabilirsiniz.
– Save’e tıkladığınızda aşağıdaki listeye eklenen bağlantınıza çift tıklayın, ilk bağlantıda bir yes/no sorusu çıkacaktır. Kabul etmeniz yeterli. Pencere açık kaldıkça tünel aktif olacaktır.

Tünel kuruldu, şimdi bu tünel üzerinden bağlanmak var. Tarayıcınız Chrome ise TunnelSwitch kurun, Firefox ise Proxy Selector. Yapılandırmalarınızı aşağıdaki gibi yapabilirsiniz.

TunnelSwitch:

chrome-tunnelswitch

Proxy Selector:

ff-proxyselector

Ardından eklentinin simgesini kullanarak 8080 portu üzerinden sağladığınız tünel ve direkt erişim arasında seçim yapabilirsiniz. İnternete tünel üzerinden çıktığınıza emin olmak için Google’da where am i yazıp aratarak TC sınırları içerisinde görünmediğinizi onaylayabilirsiniz.

Bu konularda daha detaylı bilgi almak istiyorsanız, Kame‘yi (özellikle kitap bölümünü) şiddetle tavsiye ederim.

 

Examining ulimits of running processes on AIX

Seems like only reasonable way to use “dbx” tool (like dbx -a PID and issuing proc rlimit inside attached dbx). But somehow everyone just “quit“s dbx and sending SIGTRAP to process.

kills

Only if there is a way that you can “detach” before. Maybe this is new to AIX (probably came with 6, I’m still a rookie on AIXland) but it seems possible with “detach” command in dbx.

 

Plasma desktop can’t unlock session?

If you tried this topic and didn’t help, you’re probably using gentoo. I came across this bug with ~5.3.1.

Stracing gave me following sequence:

$ cat dafuqtrace.out | grep pam.d
stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/etc/pam.d/kde", O_RDONLY) = 3
open("/etc/pam.d/other", O_RDONLY) = 3
read(3, "auth required\tpam_deny.so\n"..., 4096) = 128

What the hell? Looking for kde pam module and skips right to “other”, which denies auth without a question.

If you have the same problem, try symlinking:

$ ln -s /etc/pam.d/system-auth /etc/pam.d/kde
 

Portable servers w/ questionable security benefits

I’ve discovered systemd added a container utility called systemd-nspawn. It’s basically chroot on steroids. I don’t think it’s comparable with Docker. (I think Docker is an overengineered solution on the microkernel path anyway)
Well, I decided to give it a shot even they don’t consider it stable yet.

I tried to implement encryption a bit. Data normally sitting duck on bare-metal unencrypted servers (mainly because encryption seems hard or you trust your data center & country). If someone reboots the server and adds “rescue” to grub kernel line, (s)he will get a root user prompt, bye to personal/commercial sensitive info!

I’m not sure about the security aspect, yet I’m still exploring possibilities. But at least I can say it’s “good enough”.

Here is the plan;

  • Install your favorite distro on the server (with systemd) (Let’s call it L0)
  • Create and mount an encrypted block device large enough for you (use luks for example)
  • Create a chrooted install inside this partition (L1)
  • Dive in and setup your apps inside this chroot. Everything is inside; your apps, your configs, your data.
  • Backup this block device in binary form (from L0). rsync’s “copy-devices” parameter can use diffs on the encrypted files.
  • Profit!?

This prevents someone with a physical touch to interfere with data. If someone reboots the server, (s)he will need to remount encrypted partition manually (needs decryption password). You can also copy the partition n times (L2, L3…) for other services (lol Docker?!).

Also moving your fully-working server will be copying one big file with this method, a.k.a. portability.
One other plus should be using cgroups-related benefits on containers (didn’t try this one) for example: resource-limiting!!

Maybe you can create more secure/easy solution with an encrypted lvm partition and even Docker/LXC but hey, we’re experimenting here!

So far, my experiment works (you can access my blog, right?).