Đam mê còn một nghĩa khác mà đa số không biết

Đăng lại từ http://www.triethocduongpho.com/2014/04/18/dam-me-con-mot-nghia-khac-ma-da-so-khong-biet/

Đam mê còn một nghĩa khác mà đa số không biết

Chắc chắc bạn đã nghe đến thối tai về “đam mê” và hàng tá thứ xoay vòng vòng xung quanh nó: “Phải có đam mê và sống với đam mê”  “Phải biết đam mê và chỉ có đam mê mới có thể dẫn đến thành công” “IQ chẳng là cái đinh gì, mà PQ (Passion Quotient) mới đáng giá”…  Những khẩu hiệu muôn thuở. Có bạn còn làm luôn bài thơ ngắn như thế này:

“Cuộc đời ai cũng có quê
Có cha có mẹ có niềm đam mê
Dù công việc khó không chê
Bởi vì mình thích say mê trong lòng
Công việc không thích chẳng hòng
Không làm việc đó khi lòng không mê
Đã làm thì phải cho “phê”
Thì là gọi đó “đam mê”…chứ gì?”

Không biết các bạn nghĩ thế nào, chứ với tôi thì đam mê – passion có vẻ hứa hẹn thứ gì đó dễ chịu, êm ái và ngây ngất, tuyệt vời vô cùng. Chẳng thế mà rất nhiều người muốn “xách ba lô lên và đi” tìm niềm đam mê của mình, mong thoát khỏi sự nhàm chán của cuộc sống, công việc hiện tại.

Nhưng… Passion – Đam mê còn một lớp nghĩa ẩn chứa khác mà đa số chẳng hề biết

Từ “passion” xuất hiện lần đầu tiên vào thế kỉ XII, nó có nghĩa ban đầu là suffer (chịu đựng) trong ý nghĩa thuần khiết nhất. Không đơn thuần là chịu đựng – nó phải là sự chịu đựng tự nguyện và trong sáng. Từ này xuất phát từ việc Jesus tự nguyện nhận khổ hình trên thập tự giá.

Xung quanh bạn hẳn có ai đó mà bạn biết rằng, người đó đang sống với đam mê của chính mình. Quan sát họ kỹ hơn xem, bạn sẽ thấy với “đam mê” của mình họ chịu đựng những thứ ta không chịu được – và họ vượt qua nó.

Tôi chắc chắn không thể xoạc chân, kiễng chân từ sáng tới tối như các bạn tập ba lê – ĐAU lắm! Không thể ngồi lỳ từ sáng tới tối trước máy tính hoặc trước tấm voan để sáng tác, vẽ vời như các bạn artist, concept game – CHÁN lắm! Không thử đi thử lại sau mỗi lần startup, mở cửa hàng , làm dự án thất bại như các bạn kinh doanh – NẢN lắm! Không đủ kiên nhẫn tập thể hình cải thiện cái body còm cõi của mình, rồi guitar, thổi sáo, viết truyện,… Vẫn nghĩ rằng: “Mình chưa đủ đam mê chăng?”  Tôi chạy khắp nơi mong tìm cho ra đam mê của mình – cái gì mà mình thấy THÍCH cơ.

Dù trong bất cứ công việc nào , sẽ đến một lúc mà người ta cảm thấy chán nản lắm, vô vọng lắm, muốn bỏ cuộc lắm, không thể chịu đựng hoặc tiếp tục nữa! PASSION!

Những người có passion sẵn sàng chấp nhận chịu đựng những khoảng thời gian đó – và họ vượt qua những cột mốc thử thách đó. Và, đó chính là sự khác nhau giữa amateur và master; sự chênh lệch giữa trung bình và xuất sắc trong bất cứ lĩnh vực nào.

Đó – Không đơn giản chỉ là sở thích, sự vui thú. Đam mê là chịu đựng, là gian khổ, là không hề dễ dàng

Đam mê như một lời thề nguyện, cam kết gắn bó và cống hiến hết lòng sự sống của bạn cho thứ bạn đã chọn trong mọi hoàn cảnh,vui hay buồn, tốt hay xấu, giàu hay nghèo, khỏe mạnh hay đau yếu, nghe như lời thề trong lễ đính hôn nhỉ? Nó chính – xác – là – thế.

Sau khi biết tất cả những điều đó mà bạn vẫn chọn nó, chân thành chúc mừng bạn. Và, nhớ messenger cho tôi nhé, tôi ao ước muốn được nhìn thấy, sờ tận tay những người như bạn đấy.

————-

Lời của trungduc1104: Đó chính xác là những gì tôi đã từng nghĩ. Tôi thật sự không thể biết mình THÍCH hay ĐAM MÊ thứ gì. Tôi chỉ biết trong 2 con đường trước mắt sẽ có một con đường tôi THÍCH hơn, và khi tôi đã chọn con đường mình thích hơn thì chịu đựng gian khổ là điều tôi sẵn sàng chấp nhận.

Tam thập nhi lập, người ta làm được, bạn thì sao?

Đăng lại từ http://www.triethocduongpho.com/2014/04/21/tam-thap-nhi-lap-nguoi-ta-lam-duoc-ban-thi-sao/

Tam thập nhi lập, người ta làm được, bạn thì sao?

Với kiến thức, kinh nghiệm của một người đã ngoài 30, tôi tự nhận thấy mình phải viết đôi dòng cho các bạn còn trẻ và rất trẻ để hiểu hơn cuộc đời và sự lựa chọn của các bạn sẽ, phải thế nào cho đến 30. Và cũng xin nói trước, đây chỉ là quan điểm cá nhân, bạn có thể thấy hoặc không thấy mình giống như tôi muốn chia sẻ, nhưng tốn 5 phút đọc, đỡ cả một quãng đường phía trước thì có nên không nhỉ? (Bài viết có sử dụng một vài kiến thức từ khá nhiều sách đã được đọc, nên thấy giống giống ở đâu đó cũng là chuyện bình thường)

Ở các nước tư bản, việc tự kinh doanh, việc đi du lịch, sống với ước mơ của bản thân, người dân tại đó đã được trải nghiệm từ lúc nhỏ. Bằng chứng là nếu đọc Cha Giàu Cha Nghèo, bạn sẽ thấy được Robert Kyosaky đã phải đi làm kiếm tiền từ lúc cấp 1, làm cho cha giàu mà không hề được cha nghèo lên tiếng; đọc sách của Clement Stone thì đã đi bán báo, bán nước cũng từ tuổi 9,10. Về chuyện giáo dục giới tính, ở các nước tư bản cũng đã được học từ nhỏ thông qua các trò chơi, các hình thức tương tác và bản thân người làm cha mẹ cũng được yêu cầu dạy con tự bảo vệ bản thân mình, cụ thể trên facebook, mình cũng đã share một bài về cách hướng dẫn con lý do vì sao không được để người khác động chạm vào thân thể, cách để bé nói cho bố mẹ biết. Đối với việc thất bại, ở các nước tư bản họ không phán xét nhiều lắm, bạn có thể thấy khi xem các điều luật tuyên bố về phá sản, các hình thức đầu tư, cho vay tiền từ các tổ chức tài chính.

Trở về các nước Châu Á, các nước Nho giáo, cụ thể là Việt Nam thì ta có thể nhận thấy khá ít các gia đình dám làm, dám cho con cái được sống như triết lý dạy con của các nước tư bản. Việc kiếm tiền được xem là xấu, nên vì thế mùa lễ, tết nếu trẻ con có tiền thì chỉ được mua đồ chơi, bỏ tiền ống heo hoặc đem làm từ thiện cho biết quý trọng đồng tiền. Nếu trẻ nào có đầu óc kinh doanh một tý, trẻ có thể mua đồ chơi, mua truyện vào trường bán từ các tiền này, thì y như rằng chỉ sau 1,2 buổi học được bạn bè biết đến, cô giáo chủ nhiệm đã buộc phải mời phụ huynh lên làm việc với lý do “sợ bé làm vấy bẩn môi trường giáo dục, con nít như thế là không tốt”.

Việc giáo dục giới tính thì còn phức tạp hơn, gia đình hoàn toàn không dám dạy dỗ con về vấn đề này, và cố gắng ngăn cản mỗi khi con trẻ tìm hiểu. Hình ảnh thường thấy ở các gia đình khi tới giờ xem phim tối, bố mẹ tới mỗi cảnh hôn nhau, cảnh abc nào đó thì thường bảo trẻ phải nhắm mắt lại do “xấu”, nếu có ý kiến thì được đánh giá là không ngoan, nhưng họ quên rằng hiện nay tuổi dậy thì đến khá sớm, và con cái có rất nhiều cách để tìm hiểu kiến thức.

Khi đọc cuốn sách “Những Kẻ Xuất Chúng” hay “Nghĩ Giàu Và Làm Giàu”, tôi luôn tự hỏi nó có liên quan gì đến việc thành công khá sớm ở các nước tư bản, và việc sử dụng câu nói “tam thập nhi lập” ở các nước Châu Á? Và sau thời gian trải nghiệm, đọc thêm khá nhiều sách, tôi tóm được bằng 2 chia sẻ và phân tích ở trên là xem như khá đầy đủ. Nếu bạn muốn thành công ở vấn đề gì, bạn phải tập trung vào nó, tốn ít nhất 10.000 giờ cho nó để trở thành người số 1, bạn phải đam mê để hành động vì nó.

Ở Việt Nam, bạn học xong lớp 12 là 18 tuổi, học thêm 4 năm đại học là 22 tuổi, trước tuổi 22, nếu có ai tự kinh doanh thì thường chỉ là tự phát chứ không tập trung, trước 18 nếu có thì chỉ là kinh doanh chơi cho vui, nên vì thế 10.000 giờ sẽ không đủ, còn ở nước ngoài, thì 6,7 tuổi đã có cơ hội, nên vì thế CEO trẻ xuất hiện khá nhiều. Vấn đề tình dục cũng thế (bao gồm tình yêu, tình bạn tuổi mới lớn, sự ham muốn), nó luôn làm bạn mất tập trung khi cho việc kinh doanh, cho việc đi theo ước mơ của mình. Nên nếu ở nước ngoài, Bạn sẽ có cơ hội trải nghiệm, nếu chán, cứ việc tập trung toàn thời gian cho đam mê, cho điều mình thích, còn ở Việt Nam thì như đã nói, nó luôn là một điều tò mò khá thú vị.

Đây là lý do vì sao ở Châu Á, sau 30 thường bạn mới thành công được, vì lúc này bạn đã tập trung vào việc kinh doanh, do gia đình đã có, con cái đã có nên không phân tâm nữa, chứ không hẳn đến 30 thì bạn mới có thể thành công, mà thành công hoàn toàn có thể có trước đó nếu bạn tập trung và dám chấp nhận thất bại. Nhưng 30 lại là một cột mốc khá quan trọng, nó chứng tỏ bạn đã đi được ½ cuộc đời, và lúc này bạn khá lo sợ nếu phải thay đổi, do phạm vi an toàn đã thu nhỏ do gánh nặng trên vai là gia đình, con cái, cha mẹ già. Theo sự đánh giá, nhận định của cá nhân, nam là 30 tuổi, nữ thì ít hơn là 28 tuổi, nếu bạn không dám khởi nghiệp, không dám làm theo ước mơ của mình thì xem như cả nữa cuộc đời còn lại bạn sẽ chấp nhận an phận nếu sau đó không có biến cố lớn lao xảy ra với mình.

Chọn cột mốc 30, nếu chịu nhìn nhận, bạn sẽ thấy nhiều điều khá thú vị. Nếu 30 bạn lập gia đình, trừ đi 1 năm để lo mọi chuyện cho việc cưới xin, sắm sửa, xem ngày, bạn phải có ai đó dẫn về trình với gia đình lúc bạn 29 tuổi. Nếu trung bình một cuộc tình quen từ  1,2 năm mới cưới, bạn buộc lòng phải có một nửa của mình năm 27 tuổi, cũng không sớm đâu nhỉ. Và thường thì chẳng có mối tình đầu nào mà lại đi đến hôn nhân cả (theo bác Gúc nói chỉ có tầm 5% mà thôi), bạn quen và chia tay cho một mối tình là 6 tháng, thì năm 25 tuổi buộc lòng bạn phải yêu đầu tiên, nên nếu bạn 25 mà chưa yêu là trễ rồi đấy nhé.

Còn về việc làm giàu, khởi nghiệp, đây là một sự thật khá đau lòng mà tôi đã tự kiểm chứng trong 3 năm qua, bạn chẳng thể giàu được khi ra doanh nghiệp đầu tiên của mình, mà thường bạn phải phá sản nó ở năm đầu tiên để học kinh nghiệm. Việc để doanh nghiệp tự chạy, kiếm tiền để bạn giàu thì phải hoạt động ít nhất là 3 năm thì mới ổn, nên nếu bạn quyết định kiếm 1 triệu đô (theo mấy ông diễn giả nói) trong 5 năm, tức mỗi năm bạn kiếm được 200.000 USD là nhiệm vụ bất khả thi tại Việt Nam (trừ khi bạn ở dạng 5C – con cháu các cụ cả). Đấy, 30 làm giàu thì chỉ có vỡ mộng. Nên nếu bạn 30, không quyết định làm giàu để năm 35 tuổi hưởng thành quả, thì sống với cuộc đời an phận là điều phải tính đến.

Thế đấy, người ta làm được, bạn cũng có thể làm được, người ta làm được, bạn có muốn làm cũng không được, nói sao cũng đúng. Miễn là bạn có chấp nhận trả giá bởi khá nhiều thời gian phải bỏ ra cho đam mê, sống với lựa chọn của mình hay không mà thôi. Nhưng tốt nhất thì nên làm sớm, yêu sớm, trả giá sớm, thì bạn sẽ còn nhiều thời gian để làm lại.

Đừng vì một tình yêu lừa dối, mà cả đời đóng cửa mãi con tim.

Install MySql from source on CentOS

Ở bài này sử dụng mysql-5.6.14.tar.gz trên CentOS 6.4 (64bit).
Các gói cần thiết để cài mysql-5.6.14:

  • cmake 2.8.12
  • gcc-c++
  • ncurses-devel
  • bison-devel

Cài hết các gói trên thì đến bước cài mysql:

# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

Password file (orapwd utility) in Oracle

Oracle password file stores passwords for users with administrative privileges.

If the DBA wants to start up an Oracle instance there must be a way for Oracle to authenticate the DBA. Obviously, DBA password cannot be stored in the database, because Oracle cannot access the database before the instance is started up. Therefore, the authentication of the DBA must happen outside of the database. There are two distinct mechanisms to authenticate the DBA:

  1. Using the password file or
  2. Through the operating system (groups). Any OS user under dba group, can login as SYSDBA.

The default location for the password file is:
$ORACLE_HOME/dbs/orapw$ORACLE_SID on Unix, %ORACLE_HOME%\database\PWD%ORACLE_SID%.ora on Windows.

1. REMOTE_LOGIN_PASSWORDFILE

The init parameter REMOTE_LOGIN_PASSWORDFILE specifies if a password file is used to authenticate the Oracle DBA or not. If it set either to SHARED or EXCLUSIVE, password file will be used.

REMOTE_LOGIN_PASSWORDFILE is a static initialization parameter and therefore cannot be changed without bouncing the database.

Following are the valid values for REMOTE_LOGIN_PASSWORDFILE:

NONE – Oracle ignores the password file if it exists i.e. no privileged connections are allowed over non secure connections. If REMOTE_LOGIN_PASSWORDFILE is set to EXCLUSIVE or SHARED and the password file is missing, this is equivalent to setting REMOTE_LOGIN_PASSWORDFILE to NONE.

EXCLUSIVE (default) – Password file is exclusively used by only one (instance of the) database. Any user can be added to the password file. Only an EXCLUSIVE file can be modified. EXCLUSIVE password file enables you to add, modify, and delete users. It also enables you to change the SYS password with the ALTER USER command.

SHARED – The password file is shared among databases. A SHARED password file can be used by multiple databases running on the same server, or multiple instances of an Oracle Real Application Clusters (RAC) database. However, the only user that can be added/authenticated is SYS.

A SHARED password file cannot be modified i.e. you cannot add users to a SHARED password file. Any attempt to do so or to change the password of SYS or other users with the SYSDBA or SYSOPER or SYSASM (this is from Oracle 11g) privileges generates an error. All users needing SYSDBA or SYSOPER or SYSASM system privileges must be added to the password file when REMOTE_LOGIN_PASSWORDFILE is set to EXCLUSIVE. After all users are added, you can change REMOTE_LOGIN_PASSWORDFILE to SHARED.

This option is useful if you are administering multiple databases or a RAC database.

If a password file is SHARED or EXCLUSIVE is also stored in the password file. After its creation, the state is SHARED. The state can be changed by setting REMOTE_LOGIN_PASSWORDFILE and starting the database i.e. the database overwrites the state in the password file when it is started up.

 

2. ORAPWD
You can create a password file using orapwd utility. For some Operating systems, you can create this file as part of standard installation.

Users are added to the password file when they are granted the SYSDBA or SYSOPER or SYSASM privilege.

The Oracle orapwd utility assists the DBA while granting SYSDBA, SYSOPER and SYSASM privileges to other users. By default, SYS is the only user that has SYSDBA and SYSOPER privileges. Creating a password file, via orapwd, enables remote users to connect with administrative privileges.

$ orapwd file=password_file_name [password=the_password] [entries=n] [force=Y|N] [ignorecase=Y|N] [nosysdba=Y|N]

Examples:
$ orapwd file=orapwSID password=sys_password force=y nosysdba=y
$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=secret
$ orapwd file=orapwprod entries=30 force=y
C:\orapwd file=%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora password=2012 entries=20
C:\orapwd file=D:\oracle11g\product\11.1.0\db_1\database\pwdsfs.ora password=id entries=6 force=y
$ orapwd file=orapwPRODB3 password=abc123 entries=10 ignorecase=n
$ orapwd file=orapwprodb password=oracle1 ignorecase=y

There are no spaces permitted around the equal-to (=).

The following describe the orapwd command line arguments.

FILE
Name to assign to the password file, which will hold the password information. You must supply complete path. If you supply only filename, the file is written to the current directory. The contents are encrypted and are unreadable. This argument is mandatory.

The filenames allowed for the password file are OS specific. Some operating systems require the password file to adhere to a specific format and be located in a specific directory. Other operating systems allow the use of environment variables to specify the name and location of the password file.

If you are running multiple instances of Oracle Database using Oracle Real Application Clusters (RAC), the environment variable for each instance should point to the same password file.

It is critically important to secure password file.

PASSWORD
This is the password the privileged users should enter while connecting as SYSDBA or SYSOPER or SYSASM.

ENTRIES
Entries specify the maximum number of distinct SYSDBA, SYSOPER and SYSASM users that can be stored in the password file.

This argument specifies the number of entries that you require the password file to accept. The actual number of allowable entries can be higher than the number of users, because the orapwd utility continues to assign password entries until an OS block is filled. For example, if your OS block size is 512 bytes, it holds four password entries. The number of password entries allocated is always a multiple of four.

Entries can be reused as users are added to and removed from the password file. When you exceed the allocated number of password entries, you must create a new password file. To avoid this necessity, allocate a number of entries that is larger than you think you will ever need.

FORCE
(Optional) If Y, permits overwriting an existing password file. An error will be returned if password file of the same name already exists and this argument is omitted or set to N.

IGNORECASE
(Optional) If Y, passwords are treated as case-insensitive i.e. case is ignored when comparing the password that the user supplies during login with the password in the password file.

NOSYSDBA
(Optional) For Oracle Data Vault installations.

 

3. Granting SYSDBA or SYSOPER or SYSASM privileges
Use the V$PWFILE_USERS view to see the users who have been granted SYSDBA or SYSOPER or SYSASM system privileges for a database.

SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------- ------ ------- ------
SYS      TRUE   TRUE    FALSE

The columns displayed by the view V$PWFILE_USERS are:

Column Description
USERNAME This column contains the name of the user that is recognized by the password file.
SYSDBA If the value of this column is TRUE, then the user can log on with SYSDBA system privilege.
SYSOPER If the value of this column is TRUE, then the user can log on with SYSOPER system privilege.
SYSASM If the value of this column is TRUE, then the user can log on with SYSASM system privilege.

 

If orapwd has not yet been executed or password file is not available, attempting to grant SYSDBA or SYSOPER or SYSASM privileges will result in the following error:
SQL> grant sysdba to satya;
ORA-01994: GRANT failed: cannot add users to public password file

If your server is using an EXCLUSIVE password file, use the GRANT statement to grant the SYSDBA or SYSOPER or SYSASM system privilege to a user, as shown in the following example:

SQL> grant sysdba to satya;
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------- ------ ------- ------
SYS      TRUE   TRUE    FALSE
SATYA    TRUE   FALSE   FALSE

SQL> grant sysoper to satya;
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------- ------ ------- ------
SYS      TRUE   TRUE    FALSE
SATYA    TRUE   TRUE    FALSE

SQL> grant sysasm to satya;
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------- ------ ------- ------
SYS      TRUE   TRUE    FALSE
SATYA    TRUE   TRUE    TRUE

When you grant SYSDBA or SYSOPER or SYSASM privileges to a user, that user’s name and privilege information are added to the password file. If the server does not have an EXCLUSIVE password file (i.e. if the initialization parameter REMOTE_LOGIN_PASSWORDFILE is NONE or SHARED, or the password file is missing), Oracle issues an error if you attempt to grant these privileges.

Use the REVOKE statement to revoke the SYSDBA or SYSOPER or SYSASM system privilege from a user, as shown in the following example:

SQL> revoke sysoper from satya;
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------- ------ ------- ------
SYS      TRUE   TRUE    FALSE
SATYA    TRUE   FALSE   TRUE

A user’s name remains in the password file only as long as that user has at least one of these three privileges. If you revoke all 3 privileges, Oracle removes the user from the password file.

Because SYSDBA, SYSOPER and SYSASM are the most powerful database privileges, the WITH ADMIN OPTION is not used in the GRANT statement. That is, the grantee cannot in turn grant the SYSDBA or SYSOPER or SYSASM privilege to another user. Only a user currently connected as SYSDBA can grant or revoke another user’s SYSDBA or SYSOPER or SYSASM system privileges. These privileges cannot be granted to roles, because roles are available only after database startup.

If you receive the file full error (ORA-01996) when you try to grant SYSDBA or SYSOPER or SYSASM system privileges to a user, you must create a larger password file and regrant the privileges to the users.

 

4. Removing Password File
If you determine that you no longer require a password file to authenticate users, you can delete the password file and then optionally reset the REMOTE_LOGIN_PASSWORDFILE initialization parameter to NONE. After you remove this file, only those users who can be authenticated by the OS can perform SYSDBA or SYSOPER or SYSASM database administration operations.

Source: http://satya-dba.blogspot.com/2009/11/password-file-in-oracle.html

IPsec (IP security) là gì?

IPsec (IP security) bao gồm một hệ thống các giao thức để bảo mật quá trình truyền thông tin trên nền tảng Internet Protocol (IP). Bao gồm xác thực và/hoặc mã hoá (Authenticating and/or Encrypting) cho mỗi gói IP (IP packet) trong quá trình truyền thông tin. IPsec cũng bao gồm những giao thức cung cấp cho mã hoá và xác thực.

1. Tổng quan

ipsec1

Giao thức IPsec được làm việc tại tầng Network Layer – layer 3 của mô hình OSI. Các giao thức bảo mật trên Internet khác như SSL, TLS và SSH, được thực hiện từ tầng transport layer trở lên (Từ tầng 4 tới tầng 7 mô hình OSI). Điều này tạo ra tính mềm dẻo cho IPsec, giao thức này có thể hoạt động từ tầng 4 với TCP, UDP, hầu hết các giao thức sử dụng tại tầng này. IPsec có một tính năng cao cấp hơn SSL và các phương thức khác hoạt động tại các tầng trên của mô hình OSI. Với một ứng dụng sử dụng IPsec mã (code) không bị thay đổi, nhưng nếu ứng dụng đó bắt buộc sử dụng SSL và các giao thức bảo mật trên các tầng trên trong mô hình OSI thì đoạn mã ứng dụng đó sẽ bị thay đổi lớn.

2. Cấu trúc bảo mật

Khi IPsec được triển khai, cấu trúc bảo mật của nó gồm:

(1) Sử dụng các giao thức cung cấp mật mã (cryptographic protocols) nhằm bảo mật gói tin (packet) trong quá trình truyền

(2) Cung cấp phương thức xác thực

(3) Thiết lập các thông số mã hoá.

Xây dựng IPsec sử dụng khái niệm về bảo mật trên nền tảng IP. Một sự kết hợp bảo mật rất đơn giản khi kết hợp các thuật toán và các thông số (ví như các khoá – keys) là nền tảng trong việc mã hoá và xác thực trong một chiều. Tuy nhiên trong các giao tiếp hai chiều, các giao thức bảo mật sẽ làm việc với nhau và đáp ứng quá trình giao tiếp. Thực tế lựa chọn các thuật toán mã hoá và xác thực lại phụ thuộc vào người quản trị IPsec bởi IPsec bao gồm một nhóm các giao thức bảo mật đáp ứng mã hoá và xác thực cho mỗi gói tin IP.

Trong các bước thực hiện phải quyết định cái gì cần bảo vệ và cung cấp cho một gói tin outgoing (đi ra ngoài), IPsec sử dụng các thông số Security Parameter Index (SPI), mỗi quá trình Index (đánh thứ tự và lưu trong dữ liệu – Index ví như một cuốn danh bạ điện thoại) bao gồm Security Association Database (SADB), theo suốt chiều dài của địa chỉ đích trong header của gói tin, cùng với sự nhận dạng duy nhất của một thoả hiệp bảo mật (tạm dịch từ – security association) cho mỗi gói tin. Một quá trình tương tự cũng được làm với gói tin đi vào (incoming packet), nơi IPsec thực hiện quá trình giải mã và kiểm tra các khoá từ SADB.

Cho các gói multicast, một thoả hiệp bảo mật sẽ cung cấp cho một group, và thực hiện cho toàn bộ các receiver trong group đó. Có thể có hơn một thoả hiệp bảo mật cho một group, bằng cách sử dụng các SPI khác nhau, tuy nhiên nó cũng cho phép thực hiện nhiều mức độ bảo mật cho một group. Mỗi người gửi có thể có nhiều thoả hiệp bảo mật, cho phép xác thực, trong khi người nhận chỉ biết được các keys được gửi đi trong dữ liêu. Chú ý các chuẩn không miêu tả làm thế nào để các thoả hiệp và lựa chọn việc nhân bản từ group tới các cá nhân.

3. Hiện trạng

IPsec là một phần bắt bược của IPv6, có thể được lựa chọn khi sử dụng IPv4. Trong khi các chuẩn đã được thiết kết cho các phiên bản IP giống nhau, phổ biến hiện nay là áp dụng và triển khai trên nền tảng IPv4.

Các giao thức IPsec được định nghĩa từ RFCs 1825 – 1829, và được phổ biến năm 1995. Năm 1998, được nâng cấp với các phiên bản RFC 2401 – 2412, nó không tương thích với chuẩn 1825 – 1929. Trong tháng 12 năm 2005, thế hệ thứ 3 của chuẩn IPSec, RFC 4301 – 4309. Cũng không khác nhiều so với chuẩn RFC 2401 – 2412 nhưng thế hệ mới được cung cấp chuẩn IKE second. Trong thế hệ mới này IP security cũng được viết tắt lại là IPsec.

Sự khác nhau trong quy định viết tắt trong thế hệ được quy chuẩn bởi RFC 1825 – 1829 là ESP còn phiên bản mới là ESPbis.

4. Thiết kế theo yêu cầu.

IPsec được cung cấp bởi Transport mode (end-to-end) đáp ứng bảo mật giữa các máy tính giao tiếp trực tiếp với nhau hoặc sử dụng Tunnel mode (portal-to-portal) cho các giao tiếp giữa hai mạng với nhau và chủ yếu được sử dụng khi kết nối VPN.

IPsec có thể được sử dụng trong các giao tiếp VPN, sử dụng rất nhiều trong giao tiếp. Tuy nhiên trong việc triển khai thực hiện sẽ có sự khác nhau giữa hai mode này.

Giao tiếp end-to-end được bảo mật trong mạng Internet được phát triển chậm và phải chờ đợi rất lâu. Một phần bở lý do tính phổ thông của no không cao, hay không thiết thực, Public Key Infrastructure (PKI) được sử dụng trong phương thức này.

IPsec đã được giới thiệu và cung cấp các dịch vụ bảo mật:

1. Mã hoá quá trình truyền thông tin

2. Đảm bảo tính nguyên vẹn của dữ liệu

3. Phải được xác thực giữa các giao tiếp

4. Chống quá trình replay trong các phiên bảo mật.

5. Modes – Các mode

Có hai mode khi thực hiện IPsec đó là: Transport mode và tunnel mode.

Transport mode

Trong Transport mode, chỉ những dữ liệu bạn giao tiếp các gói tin được mã hoá và/hoặc xác thực. Trong quá trình routing, cả IP header đều không bị chỉnh sửa hay mã hoá; tuy nhiên khi authentication header được sử dụng, địa chỉ IP không thể biết được, bởi các thông tin đã bị hash (băm). Transport và application layers thường được bảo mật bởi hàm băm (hash), và chúng không thể chỉnh sửa (ví dụ như port number). Transport mode sử dụng trong tình huống giao tiếp host-to-host.

Điều này có nghĩa là đóng gói các thông tin trong IPsec cho NAT traversal được định nghĩa bởi các thông tin trong tài liệu của RFC bởi NAT-T.

Tunnel mode

Trong tunnel mode, toàn bộ gói IP (bao gồm cả data và header) sẽ được mã hoá và xác thực. Nó phải được đóng gói lại trong một dạng IP packet khác trong quá trình routing của router. Tunnel mode được sử dụng trong giao tiếp network-to-network (hay giữa các routers với nhau), hoặc host-to-network và host-to-host trên internet.

5. Technical details.

Có hai giao thức được phát triển và cung cấp bảo mật cho các gói tin của cả hai phiên bản IPv4 và IPv6:

IP Authentication Header giúp đảm bảo tính toàn vẹn và cung cấp xác thực.

IP Encapsulating Security Payload cung cấp bảo mật, và là option bạn có thể lựa chọn cả tính năng authentication và Integrity đảm bảo tính toàn vẹn dữ liệu.

Thuật toán mã hoá được sử dụng trong IPsec bao gồm HMAC-SHA1 cho tính toàn vẹn dữ liệu (integrity protection), và thuật toán TripleDES-CBC và AES-CBC cho mã mã hoá và đảm bảo độ an toàn của gói tin. Toàn bộ thuật toán này được thể hiện trong RFC 4305.

a. Authentication Header (AH)

AH được sử dụng trong các kết nối không có tính đảm bảo dữ liệu. Hơn nữa nó là lựa chọn nhằm chống lại các tấn công replay attack bằng cách sử dụng công nghệ tấn công sliding windows và discarding older packets. AH bảo vệ quá trình truyền dữ liệu khi sử dụng IP. Trong IPv4, IP header có bao gồm TOS, Flags, Fragment Offset, TTL, và Header Checksum. AH thực hiện trực tiếp trong phần đầu tiên của gói tin IP. dưới đây là mô hình của AH header.

Các modes thực hiện

ipsec2

Ý nghĩa của từng phần:

Next header: Nhận dạng giao thức trong sử dụng truyền thông tin.

Payload length: Độ lớn của gói tin AH.

RESERVED: Sử dụng trong tương lai (cho tới thời điểm này nó được biểu diễn bằng các số 0).

Security parameters index (SPI): Nhận ra các thông số bảo mật, được tích hợp với địa chỉ IP, và nhận dạng các thương lượng bảo mật được kết hợp với gói tin.

Sequence number: Một số tự động tăng lên mỗi gói tin, sử dụng nhằm chống lại tấn công dạng replay attacks.

Authentication data: Bao gồm thông số Integrity check value (ICV) cần thiết trong gói tin xác thực.

b. Encapsulating Security Payload (ESP)

Giao thức ESP cung cấp xác thực, độ toàn vẹn, đảm bảo tính bảo mật cho gói tin. ESP cũng hỗ trợ tính năng cấu hình sử dụng trong tính huống chỉ cần bảo mã hoá và chỉ cần cho authentication, nhưng sử dụng mã hoá mà không yêu cầu xác thực không đảm bảo tính bảo mật. Không như AH, header của gói tin IP, bao gồm các option khác. ESP thực hiện trên top IP sử dụng giao thức IP và mang số hiệu 50 và AH mang số hiệu 51.

ipsec3

Ý nghĩa của các phần:

Security parameters index (SPI): Nhận ra các thông số được tích hợp với địa chỉ IP.

Sequence number:Tự động tăng có tác dụng chống tấn công kiểu replay attacks.

Payload data: Cho dữ liệu truyền đi

Padding: Sử dụng vài block mã hoá

Pad length: Độ lớn của padding.

Next header: Nhận ra giao thức được sử dụng trong quá trình truyền thông tin.

Authentication data: Bao gồm dữ liệu để xác thực cho gói tin.

6. Implementations – thực hiện

IPsec được thực hiện trong nhân với các trình quản lý các key và quá trình thương lượng bảo mật ISAKMP/IKE từ người dùng. Tuy nhiên một chuẩn giao diện cho quản lý key, nó có thể được điều khiển bởi nhân của IPsec.

Bởi vì được cung cấp cho người dùng cuối, IPsec có thể được triển khai trên nhân của Linux. Dự án FreeS/WAN là dự án đầu tiên hoàn thành việc thực hiện IPsec trong mã nguồn mở cụ thể là Linux. Nó bao gồm một nhấn IPsec stack (KLIPS), kết hợp với trình quản lý key là deamon và rất nhiều shell scripts. Dự án FreeS/WAN được bắt đầu vào tháng 3 năm 2004. Openswan và strongSwan đã tiếp tục dự án FreeS/WAN. Dự án KAME cũng hoàn thành việc triển khai sử dụng IPsec cho NetBSB, FreeBSB. Trình quản lý các khoá được gọi là racoon. OpenBSB được tạo ra ISAKMP/IKE, với tên đơn giản là isakmpd (nó cũng được triển khai trên nhiều hệ thống, bao gồm cả hệ thống Linux).

(Theo VNE Research Department)

[securityoverride.org] Basic Mission 15

Đây là challenge tốn không ít thời gian khám phá và search google cũng như forum bàn luận của trang này mà tôi mới làm được nó. Nó không sử dụng các kĩ thuật mà tôi đã biết trước đó nên khi làm xong cảm thấy bổ ích hơn các challenge khác (cả bài 14 nữa).

Quyết định viết “writeup” để hiểu chi tiết về nó một chút.

Khi bắt đầu thì nó cho cái form submit thế này:

pic1

Mục tiêu đề ra là phải tạo được một cái messagebox với nội dung là xss.

Cũng như bao challenge khác, tôi cặm cụi tìm cách bypass filter:

Đầu tiên chắc chắn là phải thử cái này:

<script>alert(‘xss’);</script>

Thử cho vui chứ chắc chắn là không được rồi vì các dấu < > đã được html encode.

Xong rồi thử hết các kiểu thông thường mà tôi nghĩ là có thể được như:

base64 encode:

PHNjcmlwdD5hbGVydCgneHNzJyk7PC9zY3JpcHQ+

hex encode:

%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%27%78%73%73%27%29%3b%3c%2f%73%63%72%69%70%74%3e

String.fromCharCode:

alert(String.fromCharCode(88, 83, 83))

Rồi thử tùm lum các kiểu nhưng thử hoài mà không được nên tôi phải dừng lại và suy nghĩ.

Nghĩ không ra mới vào forum xem họ bàn luận thế nào. Các pro đã giải challenge này có hint là phải xác định được chỗ bị lỗi rồi mới khai thác.

Tức là có khả năng tôi đã xác định sai entry point để tấn công, mà đúng là sai thật!!!

View source và thấy cái comment này:

<div style='color: #fff;'>Note: Sorry to all the legitimate bbcode users,
but previously, some jerk exploited them, and so I had to remove bbcodes all together
my <!--php_-->self... So no more bbcodes. :(</div><br />
<form action='/challenges/basic/15/index.php' method='post'>
<textarea name='comment' cols='70' rows='7' class='textbox' style='width:98%;'></textarea>
<br />
<input type='submit' value='Post Comment' />
</form>

Chú ý cái chỗ:

<!–php_–>self…

cái chỗ này nó chả phải là ngẫu nhiên rồi :((

Search Google về PHP_SELF rồi đọc một hồi, tôi hiểu ra vấn đề ở chỗ cái form submit.

Cái chỗ:

action=’challenges/basic/15/index.php

nó không phải là fix cứng mà coder đã set nó bằng cái này:

action= $SERVER[‘PHP_SELF’]

Cái biến này cụ thể nó là như sau:

Nếu như file php của mình mà đặt tại địa chỉ:

http://www.yourserver.com/form-action.php

thì PHP_SELF sẽ có giá trị là:

“/form-action.php”

Nếu file php đặt tại vị trí:

http://www.yourserver.com/dir1/form-action.php

thì PHP_SELF lúc này nó sẽ có giá trị:

“/dir1/form-action.php”

Sau khi hiểu về cái PHP_SELF này thì áp dụng vào bài của mình:

PHP file đang đặt tại:

http://securityoverride.org/challenges/basic/15/index.php

và cái thằng action của form nó có giá trị:

‘/challenges/basic/15/index.php’

=> chuẩn cmnr. Nó đã dùng PHP_SELF ở cái chỗ này.

Bây giờ không submit ở form nữa mà phải ở URL:

http://securityoverride.org/challenges/basic/15/index.php/'><script>alert('xss');</script>

và nó đã hiện lên cái messagebox:

pic2

Form của chúng ta bây giờ nó đã trở thành:

<form action=’/challenges/basic/15/index.php/’><script>alert(‘xss’);</script>’ method=’post’>

Chốt lại bài này sau khi làm xong biết thêm 1 entry point khi khai thác XSS, nó chính là thuộc tính action của form

Thanks!