[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
27/11/2010 23:56:45 (+0700) | #1 | 225692 |
|
vitcon01
Member
|
0 |
|
|
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
|
|
-Mục đích :tiếp nối truyền thống của anh quanta(Vài 3 ngày học một lệnh(hoặc một tiện ích) trên Linux, mình lập topic với mục đích mong muốn cùng nhau thảo luận học hỏi về các dịch vụ mạng trên linux.Nâng cao chuyên môn của mình, học hỏi kinh nghiệm...
-Nội dung:
+Cấu hình cơ bản các dịch vụ mạng(bất kỳ distro Linux nào).
+Đặt câu hỏi thảo luận.
+Đưa ra các vấn đề và giải pháp để giải quyết vấn đề liên quan đến dịch vụ.
-Thời gian:
+Mỗi tuần chỉ thảo luận 1 dịch vụ mạng.
+Các câu hỏi hay các vấn đề sẽ được thảo luận trong tuần đó, qua 1 tuần sẽ chuyển sang dịch vụ khác.
-Yêu cầu:
+Người trình bày phải đưa thông tin cấu hình dịch vụ trên bản distro nào, phiên bản bao nhiêu.
+Nội dung câu hỏi và vấn đề cũng phải đưa ra thông tin về distro mà mình đang dùng.
+Mọi người thảo luận trong khuôn khổ các dịch vụ, tập trung chủ đề.
Cảm ơn!Mọi ý kiến đóng góp sẽ là động lực cho mọi người cùng học hỏi và phát triển.
Em xin mở màng đầu tiên Tuần 1: Dịch vụ DNS
-Tài liệu tham khảo: Fedora® Bible 2010 Edition Featuring Fedora Linux® 12 [Christopher Negus Eric Foster-Johnson ]
-Distro: Fedora 13
-Chuẩn bị:
Code:
[root@localhost ~]# rpm -qa bind*
bind-chroot-9.7.0-9.P1.fc13.i686
bind-libs-9.7.0-9.P1.fc13.i686
bind-9.7.0-9.P1.fc13.i686
bind-utils-9.7.0-9.P1.fc13.i686
-Cấu hình:
+ File named.conf:
Code:
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// --->luôn chú ý dòng trên nếu không có file named.conf thì vô thư mục này lấy.
options {
listen-on port 53 { 127.0.0.1;192.168.137.222; };
//cổng lắng nghe, giao diện nào được lằng nghe
listen-on-v6 port 53 { ::1; }; //dành cho IP v6
directory "/var/named"; //thư mục chứa các file cơ sở dữ liệu
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
//allow-query { localhost; }; //cho phép truy vấn đến domain nào.
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
//Chú ý dòng này, nếu đằng trước có //, thì cấu hình các zone trong này luôn, nếu không //xem tiếp phần tiếp theo.
include "/etc/named.rfc1912.zones";
//include -->hàm gọi file ví dụ, có 1 file a có nội dung là abc, 1 file b có nội dung d, dùng //hàm include gọi file b:include “b” trong file a, lúc này file a sẽ có nội dung là abcd.
//---------------Kết thúc quá trình cấu hình cho file named.conf
+Cấu hình file named.rfc*.zone .
Code:
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
//zone thuận localhost
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
//zone nghich localhost dành cho địa chỉ IPV6
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
//zone nghịch localhost dành cho ip v4
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
//ZONE thuan network.com
zone "network.com" IN {
type master;
file "network.zone";
//file cơ sở dữ liệu chứa các bản ghi . tí nữa tạo file này trong
// /var/named/chroot/var/named
allow-update { none; };
};
zone "137.168.192.in-addr.arpa" IN {
type master; //DNS chính
file "network.rev"; //file cơ sở dữ liệu chứa các bản ghi
// /var/named/chroot/var/named
allow-update { none; }; //update
};
+Cấu hình file network.zone:
Code:
$TTL 86400
@ IN SOA ns.network.com. root.ns.network.com. (
2010091101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns.network.com.
ns A 192.168.137.222
www A 192.168.137.222
+Cấu hình file network.rev:
Code:
$TTL 86400
@ IN SOA ns.network.com. root.ns.network.com. (
2010091101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns.network.com.
222 PTR ns.network.com.
222 PTR www.network.com.
|
|
JK - JH
()()()
LTKT - LTT |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
28/11/2010 11:40:06 (+0700) | #2 | 225717 |
CuteFTP
Member
|
0 |
|
|
Joined: 25/05/2009 02:07:45
Messages: 60
Offline
|
|
Thread này hay và bổ ích đó anh . Cho em hỏi vài câu:
1. Về whois
Giả sử whois lên thì ta đc kết quả site hva.net là
ns1.dns.net
ns2.dns.net
trong khi đó nslookup ta đc chỉ 1 cái là ns1.dns.net?
2. Giả sử có nhiều domain trỏ về thì thêm bản ghi chổ nào? |
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
28/11/2010 12:41:07 (+0700) | #3 | 225722 |
|
vitcon01
Member
|
0 |
|
|
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
|
|
CuteFTP wrote:
Thread này hay và bổ ích đó anh . Cho em hỏi vài câu:
1. Về whois
Giả sử whois lên thì ta đc kết quả site hva.net là
ns1.dns.net
ns2.dns.net
trong khi đó nslookup ta đc chỉ 1 cái là ns1.dns.net?
--->
Khi bạn cấu hình DNS resolv.conf phía client bạn luôn cấu hình tối đã là 2 địa chỉ nameserver(trên window thì có Prefered DNS server và Alternate DNS server).Thế hai địa chỉ này có tác dụng gì, khi máy client này cần phân giải một tên miền nào đó thì cái tên miền sẽ được ưu tiên gửi đến nameserver thứ nhất(Prefered DNS server)trước để phân giải.nếu nameserver thứ nhât( Prefered DNS server) không thể phân giải thì lúc đó mới sử dụng địa chỉ máy nameserver 2 (Alternate DNS server).
Chú ý:trong linux nameserver thứ tự được tihs từ trên xuống, nghĩa là cái nào nằm trên cái kia là thứ nhất.
Thủ gõ:
Code:
[root@network ~]# nslookup
> set type=any
>hva.net
.
2. Giả sử có nhiều domain trỏ về thì thêm bản ghi chổ nào?
-Trong file cấu hình các zone thuận và zone nghịch(thường named.conf) ở đây mình cấu hình trong named.rfc1912.zones.Thêm domain :
Code:
zone "langla.com" IN {
type master;
file "langla.zone";
allow-update { none; };
};
-Tạo thêm file dữ liệu cho domain của bạn mới thêm vào ví dụ langla.zone
Code:
$TTL 86400
@ IN SOA ns.network.com. root.ns.network.com. (
2010091101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns.network.com.
ns A 192.168.137.222
www A 192.168.137.222
@ A 192.168.137.222
mail A 192.168.137.222
-Cấu hình file zone nghịch thêm các bản ghi của domain mà bạn mới thêm vào, ở đây mihf sử dụng luôn file cơ sở dữ liệu zone nghịch network.rev của domain network.
Code:
$TTL 86400
@ IN SOA ns.network.com. root.ns.network.com. (
2010091101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns.network.com.
222 PTR ns.network.com.
222 PTR www.network.com.
222 PTR network.com.
222 PTR mail.network.com.
222 PTR langla.com.
222 PTR www.langla.com.
|
|
JK - JH
()()()
LTKT - LTT |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
28/11/2010 23:22:23 (+0700) | #4 | 225769 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
Tiếp chiêu
SSH service ( cơ bản )
Mức độ khó: trung bình
Tham khảo: https://help.ubuntu.com/7.04/server/C/openssh-server.html
Mô tả: SSH là dịch vụ truy cập từ xa thông qua một kết nối đã được mã hoá ( rất an toàn ). Dịch vụ này tương tự như Remote Desktop của Windows như mạnh và bảo mật hơn nhiều. Tuy nhiên, nó đúng là dành cho *nix vì vậy nó chỉ có giao diện dòng lệnh mà không có GUI gì ráo trọi tức là khi kết nối tới máy chủ SSH từ xa bạn chỉ có được giao diện dòng lệnh
Distro hướng dẫn: Ubuntu 10.10
Các gói cần cài đặt: openssh-server , openssh-client
-----------------
CÀI ĐẶT:
Code:
sudo apt-get install openssh-server openssh-client
CHẠY DỊCH VỤ:
Code:
sudo /etc/init.d/ssh start
tắt
Code:
sudo /etc/init.d/ssh stop
CẤU HÌNH:
File cấu hình của ssh được đặt tại
Code:
etc/ssh/sshd_config ( file sshd_config là file dạng "text" chứa cấu hình )
để mở file cấu hình thì chạy lệnh
Code:
gedit etc/ssh/sshd_config ( gedit là tên chương trình soạn thảo văn bản thông dụng trên *nix như là notepad trên windows vậy )
nếu bạn sử dụng *nix bạn nên tập dần để quen với việc cấu hình trên file *nix không giống Windows chúng chứa hầu hết các cấu hình trên các file text như vầy và ít khi có giao diện đồ hoạ để trỏ và nhấn, thế nhưng khi bạn mở file cấu hình của *nix ra bạn sẽ thấy yêu nó hơn Windows nhiều vì nó có hướng dẫn sơ về từng cấu hình để bạn dễ hiểu và chọn ( dù là sơ nhưng chi tiết hơn nhiều lần so với mấy cái tooltip bé tẹo của Windows )
Trong này có rất nhiều cấu hình bạn có thể tham khảo bằng lệnh
Code:
lệnh này sẽ cho bạn coi một hướng dẫn vô cùng chi tiết về các cấu hình của SSH , chúng rất quan trọng nếu bạn mong muốn tạo được một server siêu an toàn ( ví dụ như HVA đây :-P )
Có một vài cấu hình cơ bản rất dễ hiểu nên tôi đề cập luôn:
Port 2222 : dòng này cấu hình cổng dịch vụ SSH , cổng như là cái cửa để vào bên trong một căn nhà vậy , bạn nên đổi cổng mặc định này thành một cổng khác ví dụ ngày sinh của bạn, vợ bạn, mẹ bạn, kẻ thù của bạn ... . Vì dùng cổng mặc định chả khác nào khai "nhà em có cửa đấy phá cửa mà vào" T_T
Banner /etc/issue.net : dòng này mặc định sẽ có cái dấu thăng # ở đầu dòng, dấu thăng sẽ có tác dụng vô hiệu hóa ( tức là để đó mà ko sử dụng tới ) dòng cấu hình này .
Dòng cấu hình này có tác dụng đưa ra dòng chữ bạn ghi trong file /etc/issue.net . Ví dụ bạn muốn ghi dòng "Chao mung dai thieu gia da ve nha" thì bạn ghi vào trong file trên , khi bạn truy cập vào máy chủ ssh nó sẽ hiện ra
PubkeyAuthentication yes : dòng cấu hình này là một tính năng vô cùng thú vị và bảo mật của SSH . Tính năng này khi bạn chọn yes ( trái lại bạn xóa chữ yes thay bằng no ) thì nó sẽ bật tính năng đăng nhập ( xác thực ) bằng Public/Private Key
Bạn có thể tham khảo thêm về cách sử dụng tính năng đăng nhập bằng Public Key Authentition tại: http://www.spy-hill.com/~myers/help/PublicKey.html
Đây là tính năng rất quan trọng của SSH bạn nên sử dụng qua để tăng level sử dụng *nix của mình vì tính năng này còn được dùng nhiều trong các dịch vụ khác của *nix
Sau khi bạn chỉnh sửa cấu hình trong file này thì hãy save nó lại rồi chạy lệnh sau để khởi động lại dịch vụ SSH ( khiến nó sử dụng các cấu hình mới thiết lập )
Code:
sudo /etc/init.d/ssh restart
Nhớ nhé các cấu hình sau khi thay đổi thường phải khởi động lại dịch vụ để nó load lại các cấu hình mới, điều này đúng cho hầu hết các dịch vụ ( chương trình ) của *nix
------------------------------------------------------------------------------
- xNohat -
P/s: ai có kinh nghiệm mấy món khác thì tiếp tay viết cho nó xôm im lặng là giấu nghề --> xấu tính |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 08:16:43 (+0700) | #5 | 225784 |
antiadmin
Member
|
0 |
|
|
Joined: 29/09/2008 17:48:32
Messages: 17
Offline
|
|
Cho mình hỏi.
Nếu muốn authentication từ cả 2 phía Sever <=> Client. Phải cấu hình thế nào?
Khi đó quá trình bắt tay, chứng thực, mã hoá sẽ diễn ra như thế nào?
|
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 10:22:41 (+0700) | #6 | 225792 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 11:07:49 (+0700) | #7 | 225800 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
antiadmin wrote:
Cho mình hỏi.
Nếu muốn authentication từ cả 2 phía Sever <=> Client. Phải cấu hình thế nào?
Khi đó quá trình bắt tay, chứng thực, mã hoá sẽ diễn ra như thế nào?
Thử hình dung xem, cái gì kiểm soát authentication từ cả 2 phía server và client? Chưa nghĩ ra cái này thì khoan hẵng nghĩ đến chuyện "quá trình bắt tay chứng thực mã hoá" gì hết. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 12:23:11 (+0700) | #8 | 225808 |
|
Ikut3
Elite Member
|
0 |
|
|
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
|
|
@ sửa máy xnohat : có cần thêm dòng
Code:
chkconfig [--level <levels>] SSH on
không ta |
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 12:28:01 (+0700) | #9 | 225809 |
antiadmin
Member
|
0 |
|
|
Joined: 29/09/2008 17:48:32
Messages: 17
Offline
|
|
Em chưa hiểu lắm câu hỏi của anh Conmale.
Nhưng theo em biết về dịch vụ SSH thì thế này:
Trường hợp Authentication phía server (Vì em thấy rất nhiều website đang để ssh như vậy):
1. Server cung cấp dịch vụ sshd, tự tạo ra một cặp key private/public.
2. Client request kết nối ssh đến server được Sever đẩy cho 1 public key (hoặc được copy, add bằng tay vào Client) chứa các thông tin định danh server.
3. Client kiểm tra và trusted public key này và sử dụng nó để mã hóa session key gửi lên.
4. Server sử dụng private key để giải mã lấy session key
Đây chính là bước kiểm soát authentication bằng cặp key trên. Không tính user/password.
Kiểm soát bằng việc trust hoặc không trust key được tạo ra.
Vấn đề em gặp phải ở đây là bất kỳ Client nào tạo request kết nối đến SSH server đều được Server đẩy cho public key của mình. Như vậy Client nào cũng có thể kết nối được đến Server miễn là chỉ cần user/password.
Vậy làm cách nào để Server kiểm tra Client đó có "trust" thật ko?. Để có user/pass cũng không kết nối được.
Theo em nghĩ phải có thêm bước ngược lại ở trên: Client tự tạo public và private key của mình, sau đó copy, add bằng tay lên server. Mỗi khi khởi tạo kết nối, client sẽ trình public key của mình ra cho server thấy nếu đúng thì mới tiếp tục các bước tiếp theo.
Có đúng vậy không anh?
@ xnohat: thank bài viết của bạn. Mình muốn biết khi bật tính năng đăng nhập ( xác thực ) bằng Public/Private Key cụ thể nó hay như thế nào?
|
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
29/11/2010 12:36:27 (+0700) | #10 | 225811 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
antiadmin wrote:
Em chưa hiểu lắm câu hỏi của anh Conmale.
Nhưng theo em biết về dịch vụ SSH thì thế này:
Trường hợp Authentication phía server (Vì em thấy rất nhiều website đang để ssh như vậy):
1. Server cung cấp dịch vụ sshd, tự tạo ra một cặp key private/public.
2. Client request kết nối ssh đến server được Sever đẩy cho 1 public key (hoặc được copy, add bằng tay vào Client) chứa các thông tin định danh server.
3. Client kiểm tra và trusted public key này và sử dụng nó để mã hóa session key gửi lên.
4. Server sử dụng private key để giải mã lấy session key
Đây chính là bước kiểm soát authentication bằng cặp key trên. Không tính user/password.
Kiểm soát bằng việc trust hoặc không trust key được tạo ra.
Vấn đề em gặp phải ở đây là bất kỳ Client nào tạo request kết nối đến SSH server đều được Server đẩy cho public key của mình. Như vậy Client nào cũng có thể kết nối được đến Server miễn là chỉ cần user/password.
Vậy làm cách nào để Server kiểm tra Client đó có "trust" thật ko?. Để có user/pass cũng không kết nối được.
Theo em nghĩ phải có thêm bước ngược lại ở trên: Client tự tạo public và private key của mình, sau đó copy, add bằng tay lên server. Mỗi khi khởi tạo kết nối, client sẽ trình public key của mình ra cho server thấy nếu đúng thì mới tiếp tục các bước tiếp theo.
Có đúng vậy không anh?
@ xnohat: thank bài viết của bạn. Mình muốn biết khi bật tính năng đăng nhập ( xác thực ) bằng Public/Private Key cụ thể nó hay như thế nào?
----> tìm hiểu "ssh key-based authentication" |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
30/11/2010 07:55:32 (+0700) | #11 | 225880 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
Ikut3 wrote:
@ sửa máy xnohat : có cần thêm dòng
Code:
chkconfig [--level <levels>] SSH on
không ta
à trên Ubuntu thì không cần lệnh này do nó có gốc xứ từ họ Debian , nó vẫn sử dụng các script trong init để khởi chạy các tiến trình dịch vụ trong suốt quá trình khởi động hệ thống . Do đó ngay lệnh chkconfig cũng không có sẵn trên các hệ thống Ubuntu
vì thấy Ikut3 hỏi lệnh chkconfig nên anh nghĩ là em thường sử dụng distro thuộc họ Red Hat ? Nếu đúng vậy thì với họ Red Hat thì chuyện chạy lệnh trên là nên vì Red Hat chặt chẽ hơn Ubuntu , nó buộc quản lý các dịch vụ theo runlevel ( Ubuntu cũng có upstart nhưng hình như ít dùng lắm ), việc quản lý theo runlevel giúp kiểm soát các hoạt động của dịch vụ trên hệ thống kĩ lưỡng hơn |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
30/11/2010 11:46:04 (+0700) | #12 | 225894 |
|
vitcon01
Member
|
0 |
|
|
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
|
|
xnohat wrote:
Ikut3 wrote:
@ sửa máy xnohat : có cần thêm dòng
Code:
chkconfig [--level <levels>] SSH on
không ta
à trên Ubuntu thì không cần lệnh này do nó có gốc xứ từ họ Debian , nó vẫn sử dụng các script trong init để khởi chạy các tiến trình dịch vụ trong suốt quá trình khởi động hệ thống . Do đó ngay lệnh chkconfig cũng không có sẵn trên các hệ thống Ubuntu
vì thấy Ikut3 hỏi lệnh chkconfig nên anh nghĩ là em thường sử dụng distro thuộc họ Red Hat ? Nếu đúng vậy thì với họ Red Hat thì chuyện chạy lệnh trên là nên vì Red Hat chặt chẽ hơn Ubuntu , nó buộc quản lý các dịch vụ theo runlevel ( Ubuntu cũng có upstart nhưng hình như ít dùng lắm ), việc quản lý theo runlevel giúp kiểm soát các hoạt động của dịch vụ trên hệ thống kĩ lưỡng hơn
Code:
--->Tình hình tuần này chúng ta sẽ thảo luận SSH, như vậy DNS sẽ cho tuần sau.Huy vọng mọi người sẽ tham gia thảo luận sôi nổi. |
|
JK - JH
()()()
LTKT - LTT |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
30/11/2010 12:06:14 (+0700) | #13 | 225898 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
mình nghĩ ngoài việc thảo luận cách cài đặt dịch vụ, thì nên mở rộng theo chiều sâu thế này:
* nên bắt đầu bằng giao thức. ví dụ thảo luận về dịch vụ DNS mà lại không nói về giao thức DNS thì dễ dẫn đến nhầm lẫn *đã hiểu về DNS nhưng thật ra không hiểu gì về DNS*. hoặc thảo luận về OpenSSH thì cũng nên thảo luận về giao thức SSH, chẳng hạn như ai cũng nói là Public-Key Authentication an toàn, vậy thực chất nó an toàn hơn ở mức độ nào? nếu nói PKA là an toàn, vậy thì Password-Based Authentication không an toàn ở chỗ nào? đóng góp của bạn antiadmin là điểm khởi đầu tốt, nên đào sâu hơn nữa.
* nên nói thêm về các rủi ro thường gặp, và cách để kiện toàn các dịch vụ này. ví dụ như OpenSSH thường bị scan, vậy làm thế nào để phòng ngừa? cách tốt nhất là gì?
* bàn thêm về việc đảm bảo tính sẵn sàng cao cho các dịch vụ này. ví dụ như DNS là một dịch vụ rất quan trọng, vậy làm thế nào để đảm bảo nó luôn chạy?
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
01/12/2010 08:42:24 (+0700) | #14 | 225998 |
|
vitcon01
Member
|
0 |
|
|
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
|
|
mrro wrote:
mình nghĩ ngoài việc thảo luận cách cài đặt dịch vụ, thì nên mở rộng theo chiều sâu thế này:
* nên bắt đầu bằng giao thức. ví dụ thảo luận về dịch vụ DNS mà lại không nói về giao thức DNS thì dễ dẫn đến nhầm lẫn *đã hiểu về DNS nhưng thật ra không hiểu gì về DNS*. hoặc thảo luận về OpenSSH thì cũng nên thảo luận về giao thức SSH, chẳng hạn như ai cũng nói là Public-Key Authentication an toàn, vậy thực chất nó an toàn hơn ở mức độ nào? nếu nói PKA là an toàn, vậy thì Password-Based Authentication không an toàn ở chỗ nào? đóng góp của bạn antiadmin là điểm khởi đầu tốt, nên đào sâu hơn nữa.
* nên nói thêm về các rủi ro thường gặp, và cách để kiện toàn các dịch vụ này. ví dụ như OpenSSH thường bị scan, vậy làm thế nào để phòng ngừa? cách tốt nhất là gì?
* bàn thêm về việc đảm bảo tính sẵn sàng cao cho các dịch vụ này. ví dụ như DNS là một dịch vụ rất quan trọng, vậy làm thế nào để đảm bảo nó luôn chạy?
-m
-->em xin ghi nhận ý kiến của anh Thái.
-Sau khi đọc lại tài liệu về SSL cũng như SSH em lại có một số thắc mắc như sau.
+SSL là một giao thức, SSH cũng là một giao thức, có phải SSH thuộc tầng ứng dụng sử dụng SSL hoạt động ở lớp phiên hay không, vì khi em đọc về 2 giao thức này có rất nhiều điểm giống nhau.
+Thứ 2 đó là vấn đề MAC trong SSL cũng như trong SSH, nó có phải là nội dung của văn bản được gửi đi được mã hoá bằng thuật toán băm(hình như rất ít khả năng dịch ngược lại) và gắn vào cùng nội dung được gửi, mục đích có phải để đối chiếu với với nội dung được gửi đi có toàn vẹn hay đã bị thay đổi rùi không.
+Thứ 3 :Khái niệm về host key và Server key em không thể hiểu thấu được, có thể cho em một ví dụ. |
|
JK - JH
()()()
LTKT - LTT |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
01/12/2010 16:52:45 (+0700) | #15 | 226056 |
antiadmin
Member
|
0 |
|
|
Joined: 29/09/2008 17:48:32
Messages: 17
Offline
|
|
SSH và SSL là 2 giao thức độc lập với nhau.
Còn service SSH đang trình bày ở đây là dịch vụ remote login sử dụng giao thức SSH. (Ngoài ra còn có SFTP, SCP, ..) Cụ thể ở đây sử dụng OpenSSH là một free tool cho phép thực hiện kết nối SSH.
2 giao thức này khá giống nhau ở việc mã hóa, kiểm tra toàn ven, xác thực.
Khác nhau: + SSH có nhiều cơ chế xác thực client hơn: public-key như ở trên, password và keyboard-interactive còn SSL chỉ sử dụng public-key
- đúng như bạn nói, MAC được sử dụng để kiểm tra tính toàn vẹn của dữ liệu được gửi đi, dùng các thuật toán hash, one way hashing, khó có khả năng dịch ngược.
MAC = hash(key, sequence_number, unencrypted_packet)
Một số thuật toán hash như SHA, MD5 được lựa chọn và thống nhất giữa Client - Server trong quá trình khởi tạo kết nối.
@ anh mrro: đây cũng là mục đích của em, ngoài tìm hiểu về service, cần hiểu rõ hơn về giao thức để từ đó xem nó mạnh yếu thế nào và tìm cách khắc phục.
|
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
04/12/2010 10:50:50 (+0700) | #16 | 226328 |
|
giobuon
Member
|
0 |
|
|
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
|
|
antiadmin wrote:
Vấn đề em gặp phải ở đây là bất kỳ Client nào tạo request kết nối đến SSH server đều được Server đẩy cho public key của mình. Như vậy Client nào cũng có thể kết nối được đến Server miễn là chỉ cần user/password.
Vậy làm cách nào để Server kiểm tra Client đó có "trust" thật ko?. Để có user/pass cũng không kết nối được.
Chào bạn,
Theo mình để làm rõ vấn đề này đầu tiên chúng ta nên xác định chúng ta cần gì ở đây. Chúng ta cần làm sao để server xác định được người dùng đăng nhập đến là người dùng hợp lệ có quyền truy nhập vào hệ thống (hay theo bạn nói là "trust thật"). Server có thể đưa ra nhiều cách để xác định: user/password, key-based... Tại sao user và pass không thể dùng để trust được mà cặp pub/pri key lại có thể trust được? Nói đơn giản thì thế này: server trust client chính bằng cặp user/pass, client có thể đưa ra cặp user/pass chứng tỏ client đó trust được (chúng ta - server quy định điều đó cơ mà). Client có user/pass thì trên server cũng phải lưu giữ cặp giá trị này (hoặc tương đương) để từ đó xác định người dùng có quyền ko, tương tự với cặp pub/pri key, như bạn nói server cũng phải lưu public key của client phải ko nào. Nếu bạn nghĩ: "Ồ, user và pass nguy hiểm lắm, nhỡ lộ thì sao, làm sao mà trust được?", vậy private key thì sao, cũng dễ dàng bị chẩm mất lắm chứ . Về mặt logic, không có sự khác nhau nào giữa 2 thứ mà bạn kể trên trong việc trust cả.
Mình nghĩ topic này khá hay, tuy nhiên theo mình nên chuyển 1 tuần thành 1 tháng hoặc hơn. Có quá nhiều thứ để nói đến dù chỉ với 1 dịch vụ.
-giobuon |
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
04/12/2010 15:10:33 (+0700) | #17 | 226342 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
giobuon wrote:
antiadmin wrote:
Vấn đề em gặp phải ở đây là bất kỳ Client nào tạo request kết nối đến SSH server đều được Server đẩy cho public key của mình. Như vậy Client nào cũng có thể kết nối được đến Server miễn là chỉ cần user/password.
Vậy làm cách nào để Server kiểm tra Client đó có "trust" thật ko?. Để có user/pass cũng không kết nối được.
Chào bạn,
Theo mình để làm rõ vấn đề này đầu tiên chúng ta nên xác định chúng ta cần gì ở đây. Chúng ta cần làm sao để server xác định được người dùng đăng nhập đến là người dùng hợp lệ có quyền truy nhập vào hệ thống (hay theo bạn nói là "trust thật"). Server có thể đưa ra nhiều cách để xác định: user/password, key-based... Tại sao user và pass không thể dùng để trust được mà cặp pub/pri key lại có thể trust được? Nói đơn giản thì thế này: server trust client chính bằng cặp user/pass, client có thể đưa ra cặp user/pass chứng tỏ client đó trust được (chúng ta - server quy định điều đó cơ mà). Client có user/pass thì trên server cũng phải lưu giữ cặp giá trị này (hoặc tương đương) để từ đó xác định người dùng có quyền ko, tương tự với cặp pub/pri key, như bạn nói server cũng phải lưu public key của client phải ko nào. Nếu bạn nghĩ: "Ồ, user và pass nguy hiểm lắm, nhỡ lộ thì sao, làm sao mà trust được?", vậy private key thì sao, cũng dễ dàng bị chẩm mất lắm chứ . Về mặt logic, không có sự khác nhau nào giữa 2 thứ mà bạn kể trên trong việc trust cả.
Mình nghĩ topic này khá hay, tuy nhiên theo mình nên chuyển 1 tuần thành 1 tháng hoặc hơn. Có quá nhiều thứ để nói đến dù chỉ với 1 dịch vụ.
-giobuon
Ý kiến của bồ đưa ra cơ bản là đúng và thể hiện rõ kinh nghiệm sử dụng. Mình góp ý thêm như sau.
Việc sử dụng cơ chế PKA có thể an toàn hơn trong việc Server và Client được trust bằng một cặp khóa Pub/Pri key được mã hóa tới 1024 bit ( vô phương trong việc BruteForce ), đành rằng đúng như bạn nói Khóa Private trên máy có thể bị steal nếu máy bạn bị thâm nhập bất hợp pháp, thế như rủi ro có thể được giảm bằng một Passphrase có độ dài đủ lớn.
Mặt khác sử dụng phương pháp xác thực bằng User/Pass có điểm yếu như sau:
1. Một cuộc tấn công vào DNS Phising có thể dẫn đường cho bạn tới một SSH server giả mạo khiến bạn bị mất cặp user/pass này
2. Password yếu có thể bị bruteforce
Thân,
- xNohat - |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
04/12/2010 23:03:29 (+0700) | #18 | 226358 |
|
giobuon
Member
|
0 |
|
|
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
|
|
Hi,
Mình không có ý định so sánh mức độ an toàn của các loại xác thực trên, mình chỉ muốn nói rằng khái quát hoá thì không có gì khác nhau giữa việc bạn lựa chọn cái gì để trust.
Ps: các điểm yếu mà bạn nêu ra đều tránh được (hơi mất công nhưng cũng tương tự việc bạn nhớ một passphrase rất dài )
-giobuon |
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
06/12/2010 09:08:09 (+0700) | #19 | 226453 |
antiadmin
Member
|
0 |
|
|
Joined: 29/09/2008 17:48:32
Messages: 17
Offline
|
|
@ giobuon
Tất nhiên là cả 2 cơ chế đều có thể dùng để xác thực. Nhưng cái gì để "trust" tốt hơn thì vẫn hơn.
Về logic thì cả 2 đều là thông tin và đều có thể mất trộm, còn xét tổng quát cả quá trình quản lý, phân phối mật khẩu, key, quá trình truyền thông tin, .. thì PKA vẫn an toàn hơn mật khẩu nhiều. Đấy là sự khác nhau giữa việc chọn cái gì để trust
1 - Không có mật khẩu nào dài bằng key . Do vậy pass yếu có thể bị brute force còn key thì rất khó. Để đặt mật khẩu như key thì sẽ rất khó nhớ.
2 - Cơ chế làm việc của PKA cũng an toàn hơn cặp user/pass: user/pass phải được truyền qua network mỗi khi đăng nhập, nhưng PKA thì khác: trong trường hợp Client authentication, cặp key được lưu sẵn trên cả 2 máy, không có thông tin nhậy cảm nào được truyền qua mạng. Khó mất trộm hơn.
3 - Nếu kết hợp thêm passphrase thì còn an toàn hơn nữa, vì để vượt qua cơ chế này cần đẩy đủ cả 2 thông tin: key và passphrase: 1 cái lưu sẵn trong máy, 1 cái lưu trong đầu
@ xNohat: Theo mình biết thì RSA 1024 bit đã bị phá vỡ. Key-lengh là 1024 bit chứ không phải cặp khóa Pub/Pri key được mã hóa tới 1024 bit?
|
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
06/12/2010 15:00:12 (+0700) | #20 | 226481 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
@antiadmin: đúng là ý tớ nói tới key-length có độ dài 1024 bit
antiadmin wrote:
- Cơ chế làm việc của PKA cũng an toàn hơn cặp user/pass: user/pass phải được truyền qua network mỗi khi đăng nhập,
điểm này tớ đồng ý một phần, đúng là cặp user/pass dc truyền qua network nhưng với trường hợp của service SSH thì nó không phải là rủi ro lắm khi mà đường truyền giữa client và server được mã hoá trước khi các tác vụ trung chuyển dữ liệu xảy ra. Các cuộc tấn công phải xảy ra tại "Source" hoặc "Destination" chứ tấn công vào ngay giữa quá trình trung chuyển ( ví dụ sniff dg truyền ) sẽ chẳng dc gì vì chỉ thu dc 1 mớ hash tèm lem. |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
08/12/2010 10:38:31 (+0700) | #21 | 226630 |
|
vitcon01
Member
|
0 |
|
|
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
|
|
Đăng nhập qua SSH không có mật khẩu
Tài liệu: Fedora® Bible 2010 Edition Featuring Fedora Linux® 12 [Christopher Negus Eric Foster-Johnson ]
----
Giới thiệu
Nó hữu ích cho các vấn đề liên quan đến việc thỏa thuận lớn(great deal) giữa các máy, ví dụ như việc sử dụng tiện ích rsync để backup dữ liệu đến một máy khác từ xa(có thể tham khảo từ đây) an toàn.Các thủ tục sau đây sẽ bạn biết như thế nào để thực hiện điều đó.
Ý định của việc này là thiết lập một phiên làm việc thông qua SSH với một chứng thực không có mật khẩu từ máy cục bộ đến một máy khác.Trong ví dụ này máy cục bộ là máy network.com(192.168.137.222) và máy từ xa là gns.com(192.168.137.223).Cả hai máy điều sử dụng tài khoản người dùng root(chú ý không bắt buộc phải là root).
----
Các bước thực hiện
1.Đăng nhập vô máy cục bộ network.com
2.Tạo SSH key
Code:
[root@network .ssh]# ssh-keygen -t dsa
Nhấp Enter mặc định tất cả các bước.
Chú ý: chỉ chạy bước này ở người dung cục vộ và máy cục bộ.Không chạy lại bước này trừ trường hợp ssh key cảu bạn bị mất.
3.Bạn hãy đảm bảo phân quyền đến các keys chứng thực của bạn bằng cách phân quyền đến các thư mục sau.
Code:
chmod go-w $HOME
chmod 700 $HOME/.ssh
chmod go-rwx $HOME/.ssh/*
4.Tiến hành copy key đến máy từ xa(gns.com), sử dụng tài khoản người dùng root.
Code:
scp id_dsa.pub <a href="mailto:root@gns.com">root@gns.com</a>:/tmp
5.Thêm ssh key đến các khóa chứng thực người dùng từ xa(to the remote user’s authorization keys).Đoạn mã trong ssh key chỉ có 1 dòng và không cuộn.
Code:
ssh <a href="mailto:root@gns.com">root@gns.com</a> 'cat /tmp/id_dsa.pub >> /root/.ssh/authorized_keys2'
Sau khi hoàn thành bước này, 2 bước tiếp theo bạn thực hiện mà không cần phải nhập mật khẩu người dùng root.
6.Để dịch vụ sshd chấp nhận file mà bạn vừa tạo authorized_keys2.Thư mục chủ của bạn và các file chứng thực cần đảm bảo được phan quyền.
Code:
[root@network .ssh]# chmod go-w $HOME
[root@network .ssh]# ssh <a href="mailto:root@gns.com">root@gns.com</a> chmod 700 $HOME/.ssh
[root@network .ssh]# ssh <a href="mailto:root@gns.com">root@gns.com</a> "chmod go-rwx $HOME/.ssh/*"
Chú ý: chú ý này rất quan trọng trong việc bạn triển khai công việc này.Công việc này sẽ làm việc bình thường khi bạn thay đổi địa chỉ IP trên bất kỳ máy nào.Nghĩa là nó chỉ làm việc với tên máy, và không làm việc với địa chỉ IP.
Phiền các anh, bác có kinh nghiệm giải thích em cơ chế hoạt động giúp em, thực sự vẫn còn mơ hồ.Cảm ơn
|
|
JK - JH
()()()
LTKT - LTT |
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
09/12/2010 09:07:00 (+0700) | #22 | 226703 |
|
azteam
Member
|
0 |
|
|
Joined: 17/03/2007 21:12:46
Messages: 177
Location: /dev/null
Offline
|
|
Vấn đề này liên quan đến SSH key authentication đang được thảo luận ở trên đấy bạn. Quá trình trên tạo một private key cho client và public key cho server. |
|
|
|
|
[Discussion] 1 tuần nghiên cứu một dịch vụ trên Linux ! |
09/12/2010 09:17:46 (+0700) | #23 | 226705 |
neverwon
Member
|
0 |
|
|
Joined: 08/08/2006 13:38:43
Messages: 89
Offline
|
|
Đã có thread thảo luận về chủ đề này (ở mục Bao mật)
/hvaonline/posts/list/29272.html#180586
Bài trả lòi này khá rõ ràng:
MrNothing wrote:
Cho 3 ngày cơ mà
Thiếu Key Generation và đi kèm với nó là khái niệm Euler's totient function.
Encryption và Decryption chưa trình bày tử tế. Lại còn thiếu Digital Signature nữa chứ!
Client nhận server public key sau khi click yes nó được lưu vào known_hosts của client.
Server: Đây là public key của tao, mày chấp nhận không, chấp nhận thì ghi vào know_hosts của mày đi. Nhớ mặt tao nhé. Lần sau mày sẽ không bị hỏi có chấp nhận không.
Client: Ok, tao tin mày, coi như tao đã biết mặt mày, lần tới gặp lại thể nào tao cũng nhận ra.
Lần tới server gửi PU của nó, client check trong known_hosts của nó, so sánh thấy trùng nhau thì ok.
Client muốn connect tới server mà không bị hỏi pass thì public key của client phải nằm ở server:/.ssh/authorized_keys
Copy client identity id_dsa.pub hoặc id_rsa.pub lên server rồi "cat" nó vào authorized_keys của server.
ý nghĩa là:
Client: Ê cu thẻ ra vào của tao đây!
Server: À thẻ thằng này có trong authorized_keys, ok vào đi ku!
trong thư mục server:/ssh/ là public key và private key của server
Ví dụ có id_dsa và id_dsa.pub, id_rsa và id_rsa.pub là identity của server
ơ thế còn ssh_host_dsa_key.pub và ssh_host_dsa_key, lại còn cả ssh_host_key và ssh_host_key.pub
ssh_host_rsa_key.pub và ssh_host_rsa_key
? mấy cái này là cái gì? dsa và rsa ý nghĩa là dùng giải thuật nào đấy. Như kiểu tiếng Lào tiếng Thái đấy.
Mấy file đó có ý nghĩa gì? xem ssh_config và sshd_config.
cẩn thận id_dsa.pub của client được copy lên .ssh của server mà lại quên chưa xóa thì nó là của client đấy.
Các Identity của server nằm ở thư mục hiện /ssh/ chứ ko phải thư mục ẩn /.ssh/. Xem thêm các file config
Dùng client connect đến server sau đó xem trong know_hosts của client có chứa cái entry nào trùng với cái file .pub nào trong thư mục ssh trên server.
Nếu chỉ dùng E (PU, M) thì trong M phải có thông tin thằng gửi . Thằng nào gửi? Có toàn vẹn(integrity) không? Ở đây cần digital signature của client nếu nó dùng public key.
Còn không xác thực bằng pass thì nó sinh session key na ná SSL protocol.
Với môi trường mà chỉ cần server broadcast messages tới clients ko cần bí mật chỉ cần E(PR của server, M+hash(M)) là đủ (chống replay attack có thể thêm time stamp vào). Nơi nhận dùng PU của server để giải mã.
Mô tả RSA thế kia là chưa đủ. Chả khác gì PKI không mà còn chưa đủ. Còn Elgamal nữa. Lại còn EC và Pailler cũng là Public Key, chưa kể thiên hạ còn bịa ra một số loại khác nữa!
Hiểu PKI, RSA, Egamal đi, có lợi cho cậu chứ ko cho tớ đâu!
# đã chỉnh thành Euler's totient function theo comment của bác Starghost
|
|
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|