Category Archives: pribadi

Bitcoin Miner – Malware

Malwarebytes

Dalam beberapa bulan ini, issue yang mengganggu ritme kerja saya ‘hanyalah’ masalah virus. Sedikit bercerita, mengapa virus ?.. bukankah linux jauh dari kata virus (kecuali threats yang datang dari para peretas). Tidak, karena faktanya dalam pekerjaan sehari-hari pun saya tidak jauh juga dari environment windows. Membuat dokumen, timeplan, mengirim email, presentasi dsb (kecuali pekerjaan yang sifatnya coding (semua saya lakukan dengan customization vim dan byobu untuk membuatn session), troubleshooting, tuning, dan maintaining server mutlak semuanya saya lakukan via console).

Singkat cerita, sudah 2 kali laptop saya terjangkit virus bitcoin mining malware ini. Seluruh sumber daya CPU, terutama memori habis dilahap X( . Cara kerja virus ini sebenarnya masuk dari trojan sebagai trigger yang terinstall di komputer tanpa sepengetahuan kita.

These infections steal your computer’s CPU resources, GPU resources, and your electricity in order to generate profit.

Solusi

Akhirnya saya menggunakan malwarebytes antimalware (mbam) versi trial sebagai solusi. Mengapa mbam ?.. bukan yg lain ?.. 
Seriously, ini bukan promosi. Hanya saja mbam ini merupakan solusi tercepat saya yang sudah-sudah.

Advertisements

Ansible – Openshift

Pengantar

for you

Teknologi itu terkadang ‘mengganggu’ ya, dengan tanda kutip, teknologi itu kadang mengganggu dengan sifatnya yang selalu dinamis berkembang dari waktu ke waktu. Teringat hukum moore untuk grafik peningkatan kecepatan microprocessor, tidak saja kita dituntut untuk selalu update di setiap perkembangannya. Satu sisi, kita me-leverage diri memiliki kecakapan guna mendukung performansi di lingkungan pekerjaan. Salah satunya jika kita berbicara tentang sistem otomasi yang sangat berguna bagi para system administrator atau DevOps dalam mengelola puluhan atau bahkan ratusan server selain menggunakan kustomisasi script. Meksipun bukan hal yang baru, dilihat dari fitur yang disediakan ansible cukup mumpuni untuk hal ini. Ditambah kita bisa integrasikan dengan layanan openshift sebagai PaaS (Platform as a Service) atau container platform dimana kita bisa mengembangkan aplikasi yang kita buat (bisa menggunakan java, perl, javascript, php, python, ruby, atau .NET) dan dilakukan deployment.

Ansible

[root@master tifosilinux] # ansible –version
ansible 2.7.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Pada tulisan ini ansible 2.7 berjalan di atas OS CentOS 7 dengan tahap instalasi dan konfigurasi yang tidak sulit. Cukup menggunakan parameter berikut dan ansible sudah ada di dalam lingkungan sistem operasi kamu:

~# yum install -y epel-release && yum -y –enablerepo=epel install docker ansible git wget

Berikut konfigurasi yang digunakan di /etc/ansible/hosts :

[OSEv3:children]
masters
nodes

[OSEv3:vars]
ansible_ssh_user=tifosilinux

ansible_sudo=true
ansible_ask_sudo_pass=false
ansible_become=true

deployment_type=origin

#openshift_master_identity_providers=[{‘name’:’htpasswd_auth’,’login’:’true’,’challenge’:’true’,’kind’:’HTPasswdPasswordIdentityProvider’,’filename’: ‘/etc/origin/master/htpasswd’}]

containerized=true
openshift_release=v3.10
openshift_image_tag=v3.10
openshift_public_hostname=master.tifosilinux
# Untuk master default subdomain bisa di marking jika kita tidak melakukan pointing (menggunakan key) ke cloud hosting/ domain
#openshift_master_default_subdomain=apps.master.tifosilinux

[masters]
master.tifosilinux

[nodes]
master.tifosilinux openshift_node_labels=”{‘zone’:’west’}”
node.tifosilinux openshift_node_labels=”{‘zone’:’east’}”

Untuk result/ output dari versi ansible yang digunakan adalah sebagai berikut :

[root@master tifosilinux]# ansible –version
ansible 2.7.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] 

Tes dengan parameter berikut apakah master atau node me-reply dengan baik sesuai konfigurasi :

[root@master tifosilinux]# ansible -m ping master.tifosilinux
[DEPRECATION WARNING]: DEFAULT_ASK_SUDO_PASS option, In favor of Ansible Become, which is a generic framework. See become_ask_pass. , use become instead. This feature will be removed in
version 2.8. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: The sudo command line option has been deprecated in favor of the “become” command line arguments. This feature will be removed in version 2.9. Deprecation warnings can
be disabled by setting deprecation_warnings=False in ansible.cfg.
SUDO password:
master.tifosilinux | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

Sebelumnya jangan lupa untuk menambahkan fungsi di ansible untuk melewatkan password (biasanya cara ini dilakukan jika mengalami kendala saat master/ node melakukan shared connection) serta cara bagaimana me-setting hostname dan copying key agar passwordless untuk master dan per node. Namun jangan lupa lakukan setting hostname sebelumnya.

[tifosilinux@master ~]$ hostnamectl set-hostname master.tifosilinux # lakukan juga di node
[tifosilinux@master ~]$ ssh-copy-id tifosilinux@master.tifosilinux # lakukan juga ke node
[tifosilinux@master ~]$ export ANSIBLE_ASK_SUDO_PASS=true

Kurang lebih cara tersebut sudah bisa dilakukan sebelum lebih jauh mengenal inventory, playbooks as configuration, deployment, and orchestration language, dan best practice nya 

Openshift

Brought to you by redhat

Seperti yang telah diterangkan di awal, openshift ini sangat membantu para developer melakukan deployment dan me-scale up aplikasi mereka. Melalui git kita dapat mengunduh openshift yang telah di integrated dengan ansible dengan tujuan kemudahan maintenance aplikasi yang berjalan diatas container atau instance dalam skala besar. Objective membuat aplikasi dengan framework django (dengan bahasa python) pun bisa dilakukan di environment openshift.

[tifosilinux@master ~]$ cd
[tifosilinux@master ~]$ git clone https://github.com/openshift/openshift-ansible.git

Terakhir, tinggal kita eksekusi parameter dengan menampilkan seluruh informasi / debugging berikut :

[tifosilinux@master ~]$ ansible-playbook -i /etc/ansible/hosts -vvvv openshift-ansible/playbooks/deploy_cluster.yml

Testimonial

Sekarang, saatnya saya review secara pribadi 😀 kesan-kesan menggunakan teknologi ini 😛 dan dengan jujur dan spontan saya katakan : “Cukup membuat saya enggan dengan teknologi ini 😀 “, karena setelah saya baca prerequisites nya (semisal) untuk openshift ini, membutuhkan requirement yang tidak kecil juga untuk ukuran orang yang hanya ingin sekedar mengenal dan mempelajari. Bagaimana tidak ?, lihat minimum requirement vCPU dan Memory di point-point berikut (untuk saya pribadi sih tidak masalah 🙂 , namun bagaimana dengan personal yang lain yang hanya ingin sekedar mengenal atau mungkin tertarik mengimplementasikan dengan uji coba terlebih dahulu) :

Masters– Physical or virtual system, or an instance running on a public or private IaaS.
– Base OS: RHEL 7.3, 7.4, or 7.5 with the “Minimal” installation option and the latest packages from the Extras channel, or RHEL Atomic Host 7.4.5 or later.
Minimum 4 vCPU (additional are strongly recommended).
Minimum 16 GB RAM (additional memory is strongly recommended, especially if etcd is co-located on masters).
– Minimum 40 GB hard disk space for the file system containing /var/. Minimum 1 GB hard disk space for the file system containing /usr/local/bin/.
– Minimum 1 GB hard disk space for the file system containing the system’s temporary directory.
– Masters with a co-located etcd require a minimum of 4 cores. 2 core systems will not work.
Nodes– Physical or virtual system, or an instance running on a public or private IaaS.
– Base OS: link:RHEL 7.3, 7.4, or 7.5 with “Minimal” installation option, or RHEL Atomic Host 7.4.5 or later.NetworkManager 1.0 or later.1 vCPU.
– Minimum 8 GB RAM.Minimum 15 GB hard disk space for the file system containing /var/
– Minimum 1 GB hard disk space for the file system containing /usr/local/bin/.
– Minimum 1 GB hard disk space for the file system containing the system’s temporary directory. 
– An additional minimum 15 GB unallocated space per system running containers for Docker’s storage back end; see Configuring Docker Storage. Additional space might be required, depending on the size and number of containers that run on the node.
External etcd Nodes– Minimum 20 GB hard disk space for etcd data.
– See the Hardware Recommendations section of the CoreOS etcd documentation for information how to properly size your etcd nodes.
– Currently, OpenShift Container Platform stores image, build, and deployment metadata in etcd. You must periodically prune old resources. If you are planning to leverage a large number of these resources, place etcd on machines with large amounts of memory and fast SSD drives.

Hasilnya ? ya sudah bisa ditebak :

Node Logging
master logging

PLAY RECAP
localhost : ok=8 changed=0 unreachable=0 failed=0
master.tifosilinux : ok=40 changed=0 unreachable=0 failed=1
node.tifosilinux : ok=20 changed=0 unreachable=0 failed=1

INSTALLER STATUS 
Initialization : Complete (0:00:50)
Health Check : In Progress (0:02:19)
This phase can be restarted by running: playbooks/openshift-checks/pre-install.yml


openshift-ansible recapitulation

Belum lagi terkendala masalah konifgurasi yang masih butuh banyak penyesuaian, akan cukup menyulitkan bagi sebagian orang.

root@master tifosilinux]# vim /home/tifosilinux/openshift-ansible/playbooks/init/sanity_checks.yml

Marking fitur validate openshift node group seperti berikut :


name: Run variable sanity checks
sanity_checks:
check_hosts: “{{ l_sanity_check_hosts | default(groups[‘oo_all_hosts’]) }}”
# node_group_checks is a custom action plugin defined in lib_utils.
#- name: Validate openshift_node_groups and openshift_node_group_name
# node_group_checks: {}

Belum lagi masalah kompatibilitas versi dari setiap dependensi 😀  (dalam hal ini openshift dan ansible bisa kita lihat versinya dengan params : ~# openshift version && ansible –version).
Jadi ya.. cukup merepotkan.

Salam

superb


Superb !!.. it’s just that

The Power of Dos2Unix

Sudah menjadi hal yang lumrah jika terjadi masalah saat migrasi dari Windows ke Linux. Mulai dari ketidak familiar-an dengan aplikasi yang digunakan ( jangan panik, kamu bisa melihat alternative project GNU/ linux disini : https://www.linuxalt.com/ ) atau bahkan berkas yang inkompatibel saat akan diolah dari environment Windows ke GNU/ Linux.

Lagi-lagi jangan panik karena Linux selalu memberikan alternatif lewat komunitas-nya yg free. Sebagai contoh, jika kamu akan mengolah sebuah data dari berkas hasil ‘olahan’ di lingkungan Windows dan mengalami kendala saat pemrosesannya di web aplikasi kamu, coba gunakan langkah berikut untuk identifikasi dan penyesuaian.

~# cat -A <files> # Use this concatenation to show all hiden characters
~# dos2unix <files>

Maka secara singkat berkas kamu tidak akan mengalami kendala lagi untuk kemudian diolah lebih lanjut.

Extends Storage – Performing an online resize

RedhatThis is a dangerous & thrilling step because we do it on production server directly. I presumed you have read the following posts : LVM Subject  so we are focusing on How to Extends our Linux Storage – Performing an online resize (on the fly). It means without disturbing our traffic or other realtime activities.

STEP 1 : Check logical volume information after check filesystems disk space to ensure  which partition that we have to extends.
#####################################
root@svr-2:~# lvs
File descriptor 3 (pipe:[1244115786]) leaked on lvs invocation. Parent PID 16940: -bash
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
root ubuntu -wi-ao 398.75g
swap_1 ubuntu -wi-ao 1.00g

STEP 2 : Get the information about newly added hard drive using fdisk -l command
#####################################
Disk /dev/sdd: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

STEP 3 : Continue to create the partition on the newly added harddrive, type n , p (primary), 1 (partition number), t (filesystems type), 8e (for Linux LVM), w (write changes), then the partition table will be altered
#####################################
root@svr-2:/# fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3d67c672.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

STEP 4 : identify the already mounted lvm filesystems type (ext4 will be global filesystems we used)
#####################################
root@svr-2:/# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu-root ext4 412097132 316081888 75145552 81% /
udev devtmpfs 8208612 4 8208608 1% /dev
tmpfs tmpfs 1643540 300 1643240 1% /run
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 8217700 0 8217700 0% /run/shm
/dev/sda1 ext2 233191 27519 193231 13% /boot

Continue reading

Tips and Tricks AWK – Sed (Stream editor)

One day, we want to remove specific line or row from our files such as .txt, .csv, or even it has come from .sql files. Just using these params :
~# sed -e ‘5,10d;12d’ <your_files> #delete lines 5 through 10 and 12 temporarily ( options -e or permanently with -i )
In another case of awk, we want to parse data or word between delimiter of double quote which is containing two commas like : “hary”,”hary,harysmatta”,”nda”
Just use these params. Simply the best :

awk -vFPAT='([^,]*)|(“[^”]+”)’ -vOFS=, ‘{print $2}’

SSLS Procedure

In order to utilize the service from ssls for their certificate, first you have to make sure that the order status is in progress. It means that domain type, either you have order single or multiple domain are ready to use.
Next you have to choose activation method for domain. Manually upload by putting of comodo activation file *.txt to <DOCUMENT_ROOT>/.well-known/pki-validation/ then access it.
OR you contact the support to activated by email. They will sent you archive as requirement ssl like these : AddTrustExternalCARoot.crt , COMODORSAAddTrustCA.crt , COMODORSADomainValidationSecureServerCA.crt , and STAR_<domain_name>.crt .

Next just put it on these web service config :
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/<domain_directory>/STAR_<domain_name>.crt
SSLCertificateKeyFile /etc/apache2/ssl/<domain_directory>/<domain_name>.key
SSLProtocol All -SSLv2 -SSLv3

But do not forget to initiate <domain_name>.key first with these params:
openssl genrsa -des3 -out myupointid.key 2048
And generate first *.csr code on your server with this params:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr <==== put it on SSLS.com dashboard activation

Done

 

Noted :

Create a self-signed (wildcard) SSL certificate

mkdir /usr/share/ssl/certs/hostname.domain.com
cd /usr/share/ssl/certs/hostname.domain.com
(umask 077 && touch host.key host.cert host.info host.pem)
openssl genrsa 2048 > host.key
openssl req -new -x509 -nodes -sha1 -days 3650 -key host.key > host.cert
…[enter *.domain.com for the Common Name]…
openssl x509 -noout -fingerprint -text < host.cert > host.info
cat host.cert host.key > host.pem
chmod 400 host.key host.pem

Create a self-signed (wildcard) SSL certificate
1) If you received and uploaded the intermediate and root certificates separately, please use this method:

cat your_domain.crt intermediate.crt root.crt >> ssl-bundle.crt

For example, this particular command is applicable for PositiveSSL certificate:

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >> ssl-bundle.crt

2) If you received the intermediate certificates in one bundle file or downloaded the certificate files in your account with us, you can use this command:

cat example_com.crt bundle.crt >> ssl-bundle.crt