#chuyencuasys.com

“DevOps is bullshit”

10 cách để trở thành một ông bố TỐT HƠN July 8, 2018

Đôi khi bạn phải phân vân khi chọn lựa giữa những điều quan trọng, cái nào ưu tiên làm trước, cái nào có thể làm sau, nhưng khi tới 1 thời điểm nào đó trong cuộc đời của bạn, gia đình thực sự là điều gì rất quan trọng và “không điều gì quan trọng bằng gia đình”.

Bài viết mình vô tình thấy được sau khi google search, cảm thấy khá hay nên mình xin chia sẻ lại ở đây.

10 cách để trở thành một ông bố TỐT HƠN

  1. Trân trọng người mẹ của trẻ
    Một trong những điều tốt nhất người cha có thể làm cho con mình đó là trân trọng mẹ của con. Nếu hai người đã kết hôn, hãy giữ cho cuộc hôn nhân vững bền và hạnh phúc. Ngay cả nếu hai người không sống bên nhau, điều rất quan trọng là bạn vẫn cần trân trọng và giúp đỡ mẹ của trẻ. Khi người bố và người mẹ tôn trọng lẫn nhau và để cho trẻ thấy được điều đó, sẽ tạo nên một môi trường an toàn và yên ổn cho trẻ. Khi đứa trẻ thấy cha mẹ mình trân trọng nhau, chúng cũng sẽ cảm thấy chính mình được chấp nhận và được trân trọng hơn.
  2. Dành ra thời gian để ở bên con
    Cách người bố sử dụng thời gian như thế nào thể hiện điều gì là quan trọng với ông, dưới con mắt của người con. Nếu bạn luôn tỏ cho con thấy bạn quá bận rộn, con bạn sẽ cảm thấy mình không được quan tâm, coi trọng, bất kể bạn có nói thế nào đi nữa. Dành thời gian cho lũ trẻ luôn đồng nghĩa với việc bạn phải hy sinh một vài điều khác, nhưng điều đó là căn bản và tối cần thiết. Lũ trẻ lớn lên rất nhanh, những cơ hội một khi đã mất đi sẽ mất đi mãi mãi.
  3. Dành lấy quyền lắng nghe
    Thông thường một khi người bố nói chuyện với con, đều là những lúc chúng đã mắc lỗi lầm gì đó. Đó là lí do vì sao rất nhiều đứa trẻ cảm thấy sợ hãi khi mẹ chúng nói: “Bố con muốn nói chuyện với con đấy.” Hãy bắt đầu nói chuyện với con từ khi chúng con bé bỏng để rồi những chủ đề khó khăn hơn sẽ được giải quyết 1 cách đơn giản hơn khi con bạn lớn lên. Hãy dành thời gian, lắng nghe tất cả những ý tưởng cũng như những vấn đề của con.
  4. Phạt trẻ một cách yêu thương
    Tất cả những đứa trẻ đều cần sự chỉ bảo và đôi khi là nguyên tắc cứng rắn, nhưng không phải là để trừng phạt, mà là để đặt ra những giới hạn hợp lý. Hãy nhắc nhở con bạn về hậu quả có thể xảy ra từ những hành động của con, và dành cho con những phần thưởng ý nghĩa nếu chúng thể hiện như mong đợi. Những người cha nghiêm khắc một cách điềm tĩnh và công bằng chính là đang thể hiện tình yêu của mình dành cho con.
  5. Trở thành một hình mẫu tốt
    Những người cha chính là hình mẫu cho con mình bất kể họ có nhận ra hay không. Một cô gái nếu được lớn lên trong tình yêu thương của bố sẽ trường thành trong niềm tin và nhận thức rằng mình xứng đáng được tôn trọng như thế nào bởi các chàng trai, và cần phải tìm kiếm điều gì ở một người chồng. Những người bố có thể dạy cho con trai mình điều gì trong cuộc sống là quan trọng thông qua chính sự chân thành, trách nhiệm và đạo đức trong cách sống của mình. “Thế giới này là một sân khấu lớn…” và người bố đang đóng một trong những vai chính yếu nhất.
  6. Trở thành một người thầy
    Rất nhiều người bố nghĩ rằng việc dạy dỗ là công việc của người khác chứ không phải mình. Nhưng nếu một người bố dạy cho con mình biết đúng-sai, và khuyến khích con luôn làm hết sức mình, sẽ nhận được phần thưởng lớn lao khi nhận thấy con họ thường có những quyết định đúng đắn. Những người bố tốt dùng những ví dụ nhỏ hàng ngày để giúp con mình có được những bài học cơ bản về cuộc sống.
  7. Thường xuyên có những bữa cơm gia đình
    Cùng ăn với nhau (ăn sáng, ăn trưa, ăn tối….) là một phần quan trọng cho một cuộc sống gia đình hạnh phúc. Ngoài việc giúp giữ cấu trúc rõ ràng cho một ngày bận rộn, không để công việc chen lấn các phần khác của cuộc sống, những bữa ăn đó còn mang đến cho lũ trẻ cơ hội được nói về chúng, chúng đã làm gì, muốn làm gì. Đó là thời điểm tuyệt vời để người bố có thể lắng nghe và đưa ra những lời khuyên. Quan trọng nhất, đó là thời gian để cả gia đình có thể ở bên nhau mỗi ngày.
  8. Đọc sách cho con nghe
    Trong một thế giới mà truyền hình và internet thường chiếm trọn cuộc sống của lũ trẻ, việc những người bố có ý thức dành ra thời gian đọc sách cho con là rất quan trọng. Trẻ em học hỏi tốt nhất thông qua việc đọc, cũng như quan sát và lắng nghe. Hãy bắt đầu việc đọc sách cho con ngay từ khi chúng còn rất nhỏ. Khi chúng lớn hơn 1 chút, hãy khuyến khíchchúng tự đọc. Khiến sự yêu thích việc đọc trở thành một phần tự nhiên của con cái là một trong những cách tốt nhất để chắc chắn rằng chúng sẽ có một cuộc sống thành đạt cả trên góc độ con người và sự nghiệp.
  9. Thể hiện tình thương yêu
    Trẻ em cần có cảm giác an toàn khi biết rằng chúng được chấp nhận, chào đón, và yêu thương bởi gia đình. Những người lớn, đặc biệt là người bố, cần phải cảm thấy thoải mái khi, và mong muốn được, ôm hay vỗ về con họ. Thể hiện tình thương yêu mỗi ngày qua những hành động là cách tốt nhất để con bạn hiểu rằng bạn yêu chúng.
  10. Nhận thức rằng công việc của một người bố không bao giờ hoàn thành
    Ngay cả khi con cái đã trưởng thành, chúng vẫn hướng về người bố để tìm đến những lời khuyên và sự thông thái từ ông. Bất kể đó là việc nên học tiếp hay không, một công việc mới, hay một đám cưới tới gần, người bố luôn tiếp tục đóng một vai trò quan trọng trong cuộc sống của con cùng với việc chúng lớn lên, và có thể, tiến tới hôn nhân và xây dựng gia đình riêng của chúng.

No Comments on 10 cách để trở thành một ông bố TỐT HƠN

Hướng dẫn cài đặt và cấu hình Elasticsearch trên Centos 7 May 27, 2018

Giới thiệu

Elasticsearch là một phần mềm mã nguồn mở và miễn phí  của Elastic, dựa trên Apache Lucene, là platform được sử dụng cho việc phân phối tìm kiếm và phân tích dữ liệu trong thời gian thực, được sử dụng rộng rãi do tính dễ sử dụng, tính năng mạnh mẽ và khả năng mở rộng tốt, bạn có thể sử dụng các phương thức HTTP để giao tiếp qua RESTful để thao tác với dữ liệu, thân thiện với người sử dụng cũng như các nhà phát triển.

Elasticsearch được sử dụng rộng rãi cho các dự án cá nhân cũng như là search engine chính trong các công ty lớn.
Tuy có rất nhiều bài viết, tutorial đề cập tới việc hướng dẫn cài đặt cũng như cấu hình, nhưng hi vọng bài viết này sẽ cung cấp cho bạn 1 cách chi tiết và trọn vẹn nhất để thực hiện trên bản Centos 7 và Elasticsearch phiên bản mới nhất 6.2

Các bước cài đặt

1. Cài đặt Java 8

Do Elasticsearch được viết bằng Java nên bạn cần có 1 JRE để chạy nó, ở đây mình sử dụng JDK 8 bản update 171 mới nhất.

Link download:

wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz
tar -xvzf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171 /opt/

Cấu hình biến môi trường cho toàn bộ user:

vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile

Verify:

java -version
java version “1.8.0_171”
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

2. Download và cài đặt Elasticsearch

 

Vào trang chủ https://www.elastic.co/downloads và download bản mới nhất hiện tại là 6.2.4

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
tar -xvzf elasticsearch-6.2.4.tar.gz
mv elasticsearch-6.2.4 /data/elastic/elasticsearch

Tạo user elasticsearch và thư mục /data/elatic/

adduser elasticsearch
chown -R elasticsearch. /data/elastic/
su – elasticsearch
cd /data/elastic/elasticsearch/

Cấu trúc thư mục như sau:

ls
bin lib logs NOTICE.txt README.textile
config LICENSE.txt modules plugins

3. Cấu hình Elasticsearch

Các file cấu hình cần chú ý:

ls config/
elasticsearch.yml jvm.options log4j2.properties

Bạn có thể sửa lại theo ý mình cho các file config này, nếu không cần thiết thì để nguyên và thực hiện sau trong phần tunning cho Elasticsearch.

Khởi chạy Elasticsearch

./bin/elasticsearch

Sample output:

[2018-05-28T02:56:03,739][INFO ][o.e.n.Node ] [] initializing …
[2018-05-28T02:56:03,846][INFO ][o.e.e.NodeEnvironment ] [zqsXYde] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [10.4gb], net total_space [17.4gb], types [rootfs]
[2018-05-28T02:56:03,846][INFO ][o.e.e.NodeEnvironment ] [zqsXYde] heap size [1007.3mb], compressed ordinary object pointers [true]
[2018-05-28T02:56:03,850][INFO ][o.e.n.Node ] node name [zqsXYde] derived from node ID [zqsXYdeEQ8ifax0sYq72gg]; set [node.name] to override
[2018-05-28T02:56:03,850][INFO ][o.e.n.Node ] version[6.2.4], pid[1624], build[ccec39f/2018-04-12T20:37:28.497551Z], OS[Linux/3.10.0-693.5.2.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_171/25.171-b11]
[2018-05-28T02:56:03,851][INFO ][o.e.n.Node ] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch.BOVwKawi, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/data/elastic/elasticsearch, -Des.path.conf=/data/elastic/elasticsearch/config]

….

[2018-05-28T02:56:09,185][INFO ][o.e.t.TransportService ] [zqsXYde] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2018-05-28T02:56:09,200][WARN ][o.e.b.BootstrapChecks ] [zqsXYde] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2018-05-28T02:56:09,201][WARN ][o.e.b.BootstrapChecks ] [zqsXYde] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2018-05-28T02:56:12,290][INFO ][o.e.c.s.MasterService ] [zqsXYde] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300}
[2018-05-28T02:56:12,311][INFO ][o.e.c.s.ClusterApplierService] [zqsXYde] new_master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300}, reason: apply cluster state (from master [master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-05-28T02:56:12,361][INFO ][o.e.g.GatewayService ] [zqsXYde] recovered [0] indices into cluster_state
[2018-05-28T02:56:12,368][INFO ][o.e.h.n.Netty4HttpServerTransport] [zqsXYde] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2018-05-28T02:56:12,368][INFO ][o.e.n.Node ] [zqsXYde] started

Trong output trên có warning những thứ cần phải tunning cho phù hợp, mình sẽ đề cập ở bài viết sau.

4. Kiểm tra hoạt động

Ctrl + Z để thoát và bg để chạy backgroud

^Z
[1]+ Stopped ./bin/elasticsearch
bg
[1]+ ./bin/elasticsearch &

Verify process đang chạy:

ps aux |grep elastic |grep java
elastic+ 1624 11.3 66.0 3626528 1233032 pts/0 Sl 02:55 0:20 /opt/jdk1.8.0_171/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.BOVwKawi -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/data/elastic/elasticsearch -Des.path.conf=/data/elastic/elasticsearch/config -cp /data/elastic/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch

Verify port đang lắng nghe

netstat -aonp |grep java |grep 9*00
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 ::1:9200 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 127.0.0.1:9300 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 ::1:9300 :::* LISTEN 1624/java off (0.00/0/0)

Bằng HTTP

curl -X GET ‘http://localhost:9200’
{
“name” : “zqsXYde”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “jvbM2A4XRhmYoDgD_tmzSg”,
“version” : {
“number” : “6.2.4”,
“build_hash” : “ccec39f”,
“build_date” : “2018-04-12T20:37:28.497551Z”,
“build_snapshot” : false,
“lucene_version” : “7.2.1”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}

Testing:

Thử POST 1 document

curl -X POST -H ‘Content-Type: application/json’ ‘http://localhost:9200/chuyencuasys/elastic_note/1’ -d ‘{ “message”: “Hello World!” }’

[2018-05-28T03:04:24,379][INFO ][o.e.c.m.MetaDataCreateIndexService] [zqsXYde] [chuyencuasys] creating index, cause [auto(bulk api)], templates [], shards [5]/[1], mappings []
[2018-05-28T03:04:24,814][INFO ][o.e.c.m.MetaDataMappingService] [zqsXYde] [chuyencuasys/tpb7MoIpRSqLobimaUFVZg] create_mapping [elastic_note]
{“_index”:”chuyencuasys”,”_type”:”elastic_note”,”_id”:”1″,”_version”:1,”result”:”created”,”_shards”:{“total”:2,”successful”:1,”failed”:0},”_seq_no”:0,”_primary_term”:1}

Sau đó GET:

curl -X GET ‘http://localhost:9200/chuyencuasys/elastic_note/1’

{“_index”:”chuyencuasys”,”_type”:”elastic_note”,”_id”:”1″,”_version”:1,”found”:true,”_source”:{ “message”: “Hello World!” }}

View cho dễ nhìn hơn với pretty

curl -X GET ‘http://localhost:9200/chuyencuasys/elastic_note/1?pretty’

{
“_index” : “chuyencuasys”,
“_type” : “elastic_note”,
“_id” : “1”,
“_version” : 1,
“found” : true,
“_source” : {
“message” : “Hello World!”
}
}

Như vậy là chúng ta đã xong phần cơ bản với cài đặt và cấu hình Elasticsearch, rất đơn giản và dễ hiểu phải không nào? Phần tiếp theo mình sẽ viết thêm về tunning và cấu hình nâng cao, cũng như một số thành phần có liên quan để xây dựng 1 hệ sản phẩm Elastic.

No Comments on Hướng dẫn cài đặt và cấu hình Elasticsearch trên Centos 7

Hướng dẫn fix lỗi “not enough physical memory” trên VMWare Workstation/Player trên Ubuntu March 29, 2018

VMWare Player là 1 phần mềm ảo hóa được sử dụng rộng rãi trong cộng đồng system admin, phục vụ cho việc làm lab cũng như thử nghiệm những hệ điều hành mới mà không cần phải cài đặt trên máy host và đây là phần mềm ưa thích của mình thay vì cài VirtualBox hay VMWare Workstation.

Thông tin về hệ thống, VMWare Player 14.0.0 trên OS kernel 4.13.0-37-gerenic

Tuy nhiên, sau khi cài đặt bản VmWare Workstation 14 Player trên Ubuntu 16.04 thì mình gặp phải lỗi sau khi tạo 1 VM.

Mặc dù RAM của host còn available rất nhiều 😕

Sau khi search google thì mình được biết đây là bug của VMWare trên host kernel 4.13 và mình đã follow thực hiện hotfix theo các bước sau.

Thông tin hotfix ở đây https://github.com/mkubecek/vmware-host-modules/commit/770c7ffe611520ac96490d235399554c64e87d9f

cd /tmp/
sudo cp -r /usr/lib/vmware/modules/source/vmmon.tar .
tar xf vmmon.tar
sudo rm -rf vmmon.tar
wget https://raw.githubusercontent.com/mkubecek/vmware-host-modules/fadedd9c8a4dd23f74da2b448572df95666dfe12/vmmon-only/linux/hostif.c
mv -f hostif.c vmmon-only/linux/
tar cf vmmon.tar vmmon-only
sudo mv -f vmmon.tar /usr/lib/vmware/modules/source/
sudo vmware-modconfig –console –install-all

Như vậy là đã fix xong lỗi trên rồi, tiếp tục làm việc thôi 🙂

 

 

No Comments on Hướng dẫn fix lỗi “not enough physical memory” trên VMWare Workstation/Player trên Ubuntu

Hướng dẫn compile nginx support gRPC trên Centos 7 March 26, 2018

Nginx đã bắt đầu hỗ trợ gRPC từ bản 1.13.10, tuy nhiên vẫn trang trên mainline, chưa stable, thông tin được cập nhật từ trang chủ https://www.nginx.com/blog/nginx-1-13-10-grpc/

Sau đây, mình sẽ hướng dẫn các bạn complie nginx từ source theo document https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/ trên Centos 7.

Fact:

cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

Cài các gói phụ thuộc cần thiết bao gồm, openssl, zlib, pcre

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
$ tar -zxf pcre-8.41.tar.gz
$ cd pcre-8.41
$ ./configure
$ make
$ make install

$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make
$ make install

$ wget http://www.openssl.org/source/openssl-1.0.2k.tar.gz
$ tar -zxf openssl-1.0.2k.tar.gz
$ cd openssl-1.0.2k
$ ./config–prefix=/usr
$ make
$ make install

Download source

$ wget http://nginx.org/download/nginx-1.13.10.tar.gz
$ tar zxf nginx-1.13.10.tar.gz
$ cd nginx-1.13.10

Nhớ thêm 2 module –with-http_ssl_module –with-http_v2_module
./configure –sbin-path=/usr/local/nginx/nginx –conf-path=/usr/local/nginx/nginx.conf –pid-path=/usr/local/nginx/nginx.pid –with-http_ssl_module –with-stream –with-pcre=../pcre-8.41 –with-openssl=../openssl-1.0.2k –with-zlib=../zlib-1.2.11 –with-http_v2_module
$make
$make install

/usr/local/nginx/nginx -v
nginx version: nginx/1.13.10

Như vậy là đã hoàn thành.

No Comments on Hướng dẫn compile nginx support gRPC trên Centos 7
Categories: Tài liệu

Top 11 sai lầm người Quản trị hệ thống hay mắc phải March 9, 2018

Top 11 sai lầm người Quản trị hệ thống hay mắc phải

Một người Quản trị hệ thống (System Admin) giữ một vai trò trong lĩnh vực Công nghệ thông tin/Mạng máy tính. Họ chịu trách nhiệm về các hoạt động của máy chủ dịch vụ làm sao để không bị gián đoạn và ảnh hưởng đến việc kinh doanh của công ty. Nhận thức của một quản trị viên hệ thống về các lỗ hỏng bảo mật hệ thống và việc ảnh hưởng đến các máy chủ liên quan hoạt động công ty là một đức tính rất cần cho bất kỳ tổ chức/công ty nào đang thuê họ. Trong công việc của mình các Quản trị viên thường mắc phải 11 sai lầm sau, cùng Cuongquach.com tìm hiểu nhé.

top 11 sai lầm người quản trị hệ thống hay mắc phải

Có thể bạn cũng quan tâm chủ đề khác:
– Top 14 DevOps Blog bạn nên theo dõi mỗi ngày
– Top 8 Email Blacklist bạn nên quan tâm khi email bị dính spam
– Top 11 công cụ mã nguồn mở giám sát hệ thống trên Linux
– Top 11 công cụ thay thế chương trình Google Analytics
– Top 10 công cụ mã nguồn mở kiểm tra tải website

Contents

  • 1. Thực thi scripts với quyền root
  • 2. Sử dụng lại mật khẩu trong hệ thống quản lý
  • 3. Chia sẻ tài khoản quản trị
  • 4. Quên gia hạn SSL
  • 5. Không theo dõi log file
  • 6. Lưu trữ mật khẩu dạng plain-text
  • 7. Báo cáo lỗi
  • 8. Không giữ hệ thống cập nhật thường xuyên
  • 9. Superuser tasks
  • 10. Không chấm dứt các tài khoản đang hoạt động
  • 11. Thực thi các script không rõ nguồn gốc
  • Tổng kết

1. Thực thi scripts với quyền root

Một trong những vấn đề về bảo mật quan trọng nhất là hạn chế cho người dùng đặc quyền quá cao. Các ứng dụng cũng như vậy, chỉ cần đáp ứng theo đúng requirement của ứng dụng yêu cầu là được.

Khi một ứng dụng thực thi với quyền root, đồng nghĩa nó có thể kiểm soát máy chủ của bạn. Nếu đó là ứng dụng nhiễm mã độc thì hacker hoặc kẻ xấu có thể truy cập được vào máy chủ của bạn và kiểm soát nó.

2. Sử dụng lại mật khẩu trong hệ thống quản lý

Đôi khi máy chủ được thiết lập với mật khẩu yếu, hoặc theo thói quen quản trị viên hệ thống thường sử dụng cùng một mật khẩu trên cùng hệ thống. Điều này là không nên tí nào. Việc sử dụng cùng mật khẩu dẫn đến nguy cơ tiềm tàng rất cao.

Brute force là dạng tấn công đoán mật khẩu, nếu sử dụng cùng mật khẩu thì việc có được một mật khẩu đồng nghĩa có cả một hệ thống trong tay. Hacker có thể làm bất cứ điều gì nguy hiểm mà ta không lường trước được.

Thay vì sử dụng mật khẩu, quản trị viên nên cân nhắc sử dụng private/public key để đăng nhập vào máy chủ. Bằng cách sử dụng mật mã bất đối xứng, public key được lưu trên server và người quản trị giữ private key thì kẻ tấn công còn lâu mới khai thác được ta.

3. Chia sẻ tài khoản quản trị

Các tài khoản quản trị thường có đặc quyền rất cao, quản trị viên thường hay sử dụng tài khoản quản trị mà không kiểm soát tốt. Nhiều người còn chia sẻ tài khoản quản trị cho nhau. Rồi đến một thời điểm nào đó, khi người quản trị rời khỏi công ty, mật khẩu cũng không thay đổi hoặc không thu hồi tài khoản. Vì vậy các tài khoản này thường có khả năng bị truy cập trái phép vào hệ thống.

Quản trị viên nên thay đổi mật khẩu định kỳ, bất kỳ ai rời khỏi tổ chức nên rà soát và thu hồi tài khoản.

4. Quên gia hạn SSL

Các chứng chỉ SSL certificate đều có thời gian hết hạn, sau khi hết hạn kết nối sẽ không còn đảm bảo tính bảo mật, người truy cập sẽ thấy cảnh báo bảo mật ngay. Hacker có thể tận dụng trang web hết hạn này để khai thác để lấy dữ liệu khách hàng hoặc sử dụng cho mục đích xấu. Quản trị viên thường là những người thực hiện việc xin cấp SSL, nhưng họ lại quên gia hạn và khách hàng của tổ chức họ trở thành nạn nhân khi web mất SSL.

5. Không theo dõi log file

Duy trì file log và theo dõi nó rất quan trọng đối với quản trị hệ thống. Các file này sẽ có ích khi khắc phục sự cố, cho phép quản trị viên thấy vấn đề xảy ra. Quản trị viên nên theo dõi file log và khi nào chúng được tạo, phải biết chúng chứa thông tin gì và sao lưu để khi cần sử dụng.

6. Lưu trữ mật khẩu dạng plain-text

Việc lưu trữ mật khẩu dạng ký tự thường không được mã hóa dễ dẫn đến rủi ro bị khai thác. Vì mật khẩu dạng thường bất ký ai cũng có thể đọc được và sử dụng để truy cập trái phép tài nguyên. Quy tắc quản lý mật khẩu đòi hỏi rằng mật khẩu không nên được lưu dưới dạng text như vậy. Các quản trị viên có thể xem xét sử dụng các extension hoặc app tích hợp ở các trình duyệt như Lastpasss, Dashlane, KeePass, Roboform 8 để ghi nhớ password giúp mình.

7. Báo cáo lỗi

Khi mọi người báo cáo vấn đề của hệ thống thông qua email hay các ứng dụng chat nhóm, trong mô tả vấn đề quản trị viên thường cung cấp thông tin đăng nhập vào hệ thống, điều này không nên. Khi có vấn đề về hệ thống thì phải được chuyển tiếp đến bộ phận liên quan để nhóm này giải quyết.

8. Không giữ hệ thống cập nhật thường xuyên

Một vài quản trị viên không chú ý đến cập nhật bảo mật thường xuyên khi có, như lỗi Meltdown và Spectre gần đây mình xin hỏi các bạn đã update hay chưa? Mình cá rằng chắc cũng 30% chưa đâu. Bất kỳ khi nào có bản vá bảo mật, quản trị viên nên kiểm tra các nghiên cứu các lỗi đó ảnh hưởng ra sao đến hệ thống mình và xem xét cập nhật.

9. Superuser tasks

Quản trị viên không nên cho người dùng khả năng truy cập hoặc sử dụng các lệnh đặc quyền. Đặc biệt khi lỡ như người dùng bị tấn công, hacker có thể leo thang đặc quyền chiếm quyền kiểm soát hệ thống, lấy đi các thông tin quan trọng.

Người dùng nên đăng nhập bằng tài khoản cá nhân của mình và sử dụng lệnh SUDO (Linux) cho các lệnh được chỉ định khi cần.

10. Không chấm dứt các tài khoản đang hoạt động

Với các tài khoản không sử dụng nữa, hacker có thể nhắm mục tiêu đến những tài khoản này và khai thác chúng, đặc biết là nếu họ có mật khẩu mặc định. Quản trị viên nên vô hiệu hóa các tài khoản không sử dụng nữa bằng cách chỉnh sửa tệp mật khẩu và thay bằng chuổi mã hóa.

11. Thực thi các script không rõ nguồn gốc

Ngay cả khi có nguồn gốc tin cậy, quản trị viên cũng nên biết rằng việc tải script về qua internet là không an toàn. Vì vậy khi thực thi bạn nên xem các lệnh thực hiện trong script có dẫn đến hành động bất chính nào không nhé.

sudo task

Tổng kết

Hy vọng qua bài viết “Top 11 sai lầm người Quản trị hệ thống hay mắc phải” này các quản trị viên hệ thống sẽ có thêm kiến thức trước các vấn đề bảo mật như hiện tại. Tin tặc ngày càng phát triển và tinh vi hơn, điều quan trọng là luôn bổ sung kiến thức bảo mật để bảo đảm hệ thống mình luôn ổn định. Cám ơn các bạn đã theo dõi.

Nguồn: https://cuongquach.com/top-11-sai-lam-nguoi-quan-tri-he-thong-hay-mac-phai.html

No Comments on Top 11 sai lầm người Quản trị hệ thống hay mắc phải
Categories: Chuyện nghề

Hướng dẫn enable tapping cho touchpad Ubuntu 16.04.03 LTS November 4, 2017

Sau khi update OS cho lappi thân yêu của mình từ bản Ubuntu 14.04 lên bản 16.04.03 mới hơn thì mình gặp một số vấn đề, trong đó có việc là cái touchpad của mình không còn tapping được nữa, do bị disable mặc định bởi cái libinput gì đó của hệ thống. Sau 1 thời gian google và tìm cách giải quyết thì mình note lại những cái mình đã thực hiện, sẽ giúp cho các bạn bớt 1 chút thời gian vàng ngọc.

Mình cài phiên bản GNOME Ubuntu 16.04.03 LTS

uname -a
Linux x091s-X250 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Thực hiện cài đặt libinput mới

sudo apt-get install xserver-xorg-input-libinput

Nhưng sẽ gặp lỗi như sau:

The following packages have unmet dependencies:
xserver-xorg-input-libinput : Depends: xorg-input-abi-22
Depends: xserver-xorg-core (>= 2:1.17.99.902)
E: Unable to correct problems, you have held broken packages.

Tương tự như trong link:

https://askubuntu.com/questions/610505/broken-packages-error-while-trying-to-install-xserver-xorg-input-mtrack

Cách giải quyết

sudo apt-get install xserver-xorg-core

để cài gói xorg-core, libinput cũng đã bao gồm ở trong này.

sudo apt-get install xserver-xorg-core
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following package was automatically installed and is no longer required:
libxfont2
Use ‘sudo apt autoremove’ to remove it.
The following additional packages will be installed:
xserver-common
Suggested packages:
xfonts-100dpi | xfonts-75dpi
The following packages will be REMOVED:
ubuntu-gnome-desktop xorg xserver-xorg-core-hwe-16.04 xserver-xorg-hwe-16.04 xserver-xorg-input-all-hwe-16.04 xserver-xorg-input-evdev-hwe-16.04
xserver-xorg-input-synaptics-hwe-16.04 xserver-xorg-input-wacom-hwe-16.04 xserver-xorg-video-all-hwe-16.04 xserver-xorg-video-amdgpu-hwe-16.04
xserver-xorg-video-ati-hwe-16.04 xserver-xorg-video-fbdev-hwe-16.04 xserver-xorg-video-intel-hwe-16.04 xserver-xorg-video-nouveau-hwe-16.04
xserver-xorg-video-qxl-hwe-16.04 xserver-xorg-video-radeon-hwe-16.04 xserver-xorg-video-vesa-hwe-16.04 xserver-xorg-video-vmware-hwe-16.04
The following NEW packages will be installed:
xserver-xorg-core
The following packages will be upgraded:
xserver-common
1 upgraded, 1 newly installed, 18 to remove and 171 not upgraded.

Sau đó thực hiện

sudo vi /usr/share/X11/xorg.conf.d/90-libinput.conf

Đây là file cấu hình quy định cách input cho mouse hay touchpad.

Thêm 2 dòng Tapping True và DisableWhileTyping True để config cho touchpad.

Section “InputClass”
Identifier “libinput touchpad catchall”
MatchIsTouchpad “on”
MatchDevicePath “/dev/input/event*”
Driver “libinput”
Option “Tapping” “True”
Option “DisableWhileTyping” “True”
EndSection

Sau đó logout và tận hưởng thôi !!!

Link tham khảo:

https://askubuntu.com/questions/649103/proper-touchpad-thumb-palm-detection-with-libinput

https://askubuntu.com/questions/838061/touchpad-tap-stopped-working

No Comments on Hướng dẫn enable tapping cho touchpad Ubuntu 16.04.03 LTS

10 Ways To Step Out Of Your Comfort Zone And Enjoy Taking Risks October 23, 2017

The ability to take risks by stepping outside your comfort zone is the primary way by which we grow. But we are often afraid to take that first step. In truth, comfort zones are not really about comfort, they are about fear. Break the chains of fear to get outside. Once you do, you will learn to enjoy the process of taking risks and growing in the process. Here are seven ways to help you get started:

1. Become aware of what’s outside of your comfort zone

three_meerkats
In other words: What are the things that you believe are worth doing but are afraid of doing yourself because of the potential for disappointment or failure? Draw a circle and write those things down outside the circle. This process will not only allow you to clearly identify your discomforts, but your comforts. Write identified comforts inside the circle.

2. Become clear about what you are aiming to overcome

dog

Take the list of discomforts and go deeper. Remember, the primary emotion you are trying to overcome is fear. How does this fear apply uniquely to each situation? Be very specific. Are you afraid of walking up to people and introducing yourself in social situations? Why? Is it because you are insecure about the sound of your voice? Are you insecure about your looks? Or, are you afraid of being ignored?

3. Get comfortable with discomfort

kermit

One way to get outside of your comfort zone is to literally expand it. Make it a goal to avoid running away from discomfort. Let’s stay with the theme of meeting people in social settings. If you start feeling a little panicked when talking to someone you’ve just met, try to stay with it a little longer than you normally would before retreating to comfort. If you stay long enough and practice often enough, it will start to become less uncomfortable.

4. See failure as a teacher

tux

Many of us are so afraid of failure, that we would rather do nothing than take a shot at our dreams. Begin to treat failure as a teacher. What did you learn from the experience? How can you take that lesson to your next adventure to increase your chance of success?

5. Take baby steps

baby

Don’t try to jump outside your comfort zone, you will likely become overwhelmed and jump right back in. Take small steps toward the fear you are trying to overcome. If you want to do public speaking, start by taking every opportunity to speak to small groups of people. You can even practice with family and friends.

6. Hang out with risk takers

dogs
 There is no substitute for this step. If you want to become better at something, you must start hanging out with the people who are doing what you want to do and start emulating them. Almost inevitably, their influence will start have an effect on your behavior.

7. Be honest with yourself when you are trying to make excuses

duck
Don’t say “Oh, I just don’t have the time for this right now.” Instead, be honest and say “I am afraid to do this.” Don’t make excuses, just be honest. You will be in a better place to confront what is truly bothering you and increase your chance of moving forward.

8. Identify how stepping out will benefit you

sunset
What will the ability to engage in public speaking do for your personal and professional growth? Keep these potential benefits in mind as motivations to push through fear.

9. Don’t take yourself too seriously

squirrel
 Learn to laugh at yourself when you make mistakes. Risk taking will inevitably involve failure and setbacks that will sometimes make you look foolish to others. Be happy to roll with the punches when others poke fun.

10. Focus on the fun

horse
 Enjoy the process of stepping outside your safe boundaries. Enjoy the fun of discovering things about yourself that you may not have been aware of previously.
No Comments on 10 Ways To Step Out Of Your Comfort Zone And Enjoy Taking Risks

Làm thế nào để pass vị trí System Engineer tại VNG (Part 2+) October 3, 2017

Như các bạn cũng đã theo dõi trong 2 phần trước, đáng lý giờ này mình phải viết part 3 cho việc “cách bày tỏ thái độ và deal lương như thế nào cho hiệu quả”, tuy nhiên mình vẫn chưa pass được vòng technical 🙁 và cũng chưa thực sự đề cập về những vấn đề technical trong bài viết trước, nên mình sẽ viết phần 2+ này để bổ sung.

Trong bài viết này sẽ viết ra những câu hỏi và gợi ý câu trả lời, không biết là có chính xác hay không nữa, vì người đánh giá và cho điểm câu trả lời câu hỏi là người khác, có thể đây là 1 dạng “tips and tricks” nhưng cũng có thể là những điều vớ vẫn nào đó, bạn chỉ có thể đọc và tham khảo, không nên đặt quá nhiều niềm tin vào nó nhé.:)

Ở VNG sẽ không có kiểu đưa ra 1 câu hỏi dạng đánh đố ứng viên, nhất là ở vị trí SE, tùy vào job detail mà bạn apply, ví dụ như vị trí Senior và SE ở đây. Các bạn nộp resume vào để thử sức và review vòng technical nhé.

Hôm nay có 1 bạn chia sẻ với mình 1 câu hỏi bạn ấy gặp khi phỏng vấn ở 1 công ty của Pháp, văn phòng tại HCM, theo mình thì nó là 1 dạng đánh đố, mặc dù nó không hề khó, nhất là lúc bạn có thời gian google hay suy nghĩ kỹ, tuy nhiên, trong lúc phỏng vấn, đây thực sự là vấn đề nếu bạn không thực sự “cứng”.

Câu hỏi: Không dùng vòng lặp (for, while), tạo được 1000 thư mục với prefix do bạn chỉ định?

Bạn mất bao nhiêu lâu để trả lời câu hỏi này? Đáp án ở cuối bài nhé!!!

Ngoài ra còn số câu hỏi có liên quan tới các kiến thức “thực sự rất cơ bản” mà bắt buộc bạn phải trả lời như sau:

  • Trình bày tổng quát về mô hình OSI, TCP/IP
  • Trình bày 1 số giao thức ở tầng 2/3
  • Trình bày 2 mode của FTP và điểm khác nhau

Ở mức độ cao hơn, câu hỏi sẽ tương tự như sau:

  • So sánh ưu khuyết điểm của nginx và haproxy khi làm 1 LB
  • Docker và các khái niệm liên quan
  • Database mysql, postgres, cassandra
  • Câu hỏi về IPTables

Ngoài ra còn 1 số câu hỏi khác như:

  • Giao thức Socket ở tầng mấy của mô hình OSI?
  • Một số lỗi bảo mật nghiêm trọng và cách xử lý

Trên đây là 1 số câu hỏi  mà mình sưu tầm được và theo trí nhớ của mình sau những lần phỏng vấn rớt ở đây, mong các bạn đóng góp thêm nhưng câu hỏi và câu trả lời tại đây nhé.

Đáp án của câu hỏi ở phía trên

Dùng shell bash :

mkdir -p yourprefix{1..1000}

 

No Comments on Làm thế nào để pass vị trí System Engineer tại VNG (Part 2+)

Đằng sau hệ thống Stack Overflow trông như thế nào? (Part 2) August 30, 2017

Tiếp tục câu chuyện ở part 1, trong bài viết này sẽ trình bày các thành phần tiếp theo của hệ thống Stack Overflow theo kiến trúc được cập nhật đến năm 2016.

Cache & Pub/Sub (Redis)

SO sử dụng Redis cho 2 việc là caching và pub/sub cho hệ thống, mặc dù chịu tải khoảng 160 tỷ câu lệnh trong vòng 1 tháng, những mỗi instance chỉ chạy khoảng 2% CPU, ở mức rất thấp. (Chắc chỉ tốn RAM).

SO sử dụng Redis làm caching 2 lớp L1/L2, L1 sử dụng cho HTTP Cache cho web server và bất kỳ ứng dụng nào đang chay, còn L2 dùng để lấy giá trị từ Redis, có thể hiểu là L1 dùng để write, còn L2 dùng để read. Giá trị của key trong Redis theo định dạng protobuf thông qua thư viện protobuf-dot-net của Marc Gravell.  Thư viện sử dụng cho client là StackExchange.Redis là một opensource và tự phát triển. Khi mà web server bị miss ở cả 2 L1 và L2, chúng sẽ lấy dữ liệu từ database thông qua query hoặc gọi API…và ghi kết quả vào cache local và Redis, khi đó 1 web server khác muốn lấy giá trị nào đó, có thể miss ở L1 nhưng chắc chắn sẽ lấy được ở L2 hoặc database hoặc thông qua việc gọi API.

Các trang Q&A đều có caching theo dạng key prefix thì đặt ở L1 còn L2 thì chứa database ID.

Bên cạnh 2 server Redis chạy master/slave cho toàn bộ các site hiện có, thì SO còn có thêm 1 server slave machine learning sử dụng cho việc thể hiện các câu hỏi khuyến nghị, job matching …được gọi là Providence.

Server Redis chính thì có 256GB RAM (96GB đã sử dụng) và Providence thì có 384GB RAM (125GB đã sử dụng).

Và tất nhiên không chỉ dùng để caching, SO còn dùng Redis theo cơ chế pub/sub để public 1 message cho toàn bộ subcriber bao gồm đã downstream ở Redis slave, SO dùng cơ chế này để xóa 1 lưu trữ trên L1 của 1 web server khi 1 web server khác bị loại bỏ khỏi tính đồng bộ của hệ thống.

Redis isn’t just for cache though, it also has a publish & subscriber mechanism where one server can publish a message and all other subscribers receive it—including downstream clients on Redis slaves. We use this mechanism to clear L1 caches on other servers when one web server does a removal for consistency, but there’s another great use: websockets.

(Đoạn này hơi rắc rối, mình xin phép để nguyên văn)

NetGain WebSockets

SO sử dụng websocket để push real-time cập nhật  của user ví dụ như các thông báo trên top bar, số lượng vote, hay câu hỏi hay câu trả lời mới và 1 vài thứ khác.

Và các server socket này sử dụng raw socket và chạy trên các web tier sử dụng thư viện StackExchange.NetGain, trong peak time( giờ cao điểm) ,số lượng kết nối đồng thời lên tới 500.000, và có những kết nối kéo dài 18 tháng, tác giả không chắc là người đó có tắt browser của mình hay có còn sống không nữa?

Search (Elasticsearch)

Nói chung là không có điều gì thú vị ở đây cả, SO sử dụng Elasticsearch 1.4 và thư viện StackExchange.Elastic cho client và sử dụng cho đường /search trên website, tính toán các câu hỏi có liên quan, và đề xuất khi đặt câu hỏi.

Mỗi cụm cluster ES đều có 3 node trên từng datacenter , và mỗi site đều đánh 1 index. Như site Careers thì có nhiều index hơn và được cấu hình theo 1 cách khác không theo dạng chuẩn, với 3 cụm cluster lớn hơn với SSD và 192 GB RAM và 2x10GBps cho card mạng.

Lý do chính để sử dụng ES là cho việc tìm kiếm full-text SQL một cách dễ dàng và ít chi phí hơn so với việc sử dụng database SQL. Vậy tại sao lại không dùng Solr thay thế cho ES? Việc này có thể xảy ra trong tương lai với version 2.x.

Databases (SQL Server)

SO sử dụng SQL Server là Single_source_of_truth , mọi dữ liệu trên Redis hay ES đều đến từ database và có 2 cụm cluster SQL Server được cài đặt, với mỗi cluster đều có 1 master và 1 replica ở New York, thêm vào đó là 1 replica ở Colorado, và tất cả các bản sao đều chạy bất đồng bộ.

Cụm đầu tiên bao gồm server Dell R720xd, mỗi con có 384GB Ram, 4TB PCIe SSD và 2×12 cores, chúng chứa Stack Overflow, Sites, PRIZM, và dữ liệu Mobile.

Cụm thứ 2 bao gồm server Dell R730xd, mỗi con có 768GB RAM, 6TB PCIe SSD và 2×8 core, chạy những thứ còn lại, bao gồm Talent, OpenID, Chat, Exception log và toàn bộ các trang Q&A ví dụ Super UserServer Fault

 

Mức sử dụng CPU hiện tại còn khá cao mặc dù đã được optimize, có thể thấy trong biểu đồ sau, với 04 là master, 01 và 03 là replica.

Thư viện

Dưới đây là toàn bộ các thư viện tự phát triển hoặc opensource được sử dụng cho SO.

  • Dapper (.Net Core) – High-performance Micro-ORM for ADO.Net
  • StackExchange.Redis – High-performance Redis client
  • MiniProfiler – Lightweight profiler we run on every page (also supports Ruby, Go, and Node)
  • Exceptional – Error logger for SQL, JSON, MySQL, etc.
  • Jil – High-performance JSON (de)serializer
  • Sigil – A .Net CIL generation helper (for when C# isn’t fast enough)
  • NetGain – High-performance websocket server
  • Opserver – Monitoring dashboard polling most systems directly and feeding from Orion, Bosun, or WMI as well.
  • Bosun – Backend monitoring system, written in Go

 

Sau một bài viết khá dài và chi tiết của tác giả Nick Craver, chúng ta có thể thấy được toàn bộ những gì phía sau của 1 hệ thống website vô cùng đồ sộ và đáp ứng được hàng triệu người dùng trên toàn thế giới. Bài viết của mình xin dừng ở đây và hi vọng sẽ trở lại với việc tìm hiểu những hệ thống lớn khác.

No Comments on Đằng sau hệ thống Stack Overflow trông như thế nào? (Part 2)