[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
11/06/2009 20:45:29 (+0700) | #1 | 183249 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
Theo tài liệu sysctl chính thức của Linux, giá trị tcp_synack_retries trên kernel được diễn giải như sau:
The tcp_synack_retries setting tells the kernel how many times to retransmit the SYN,ACK reply to an SYN request. In other words, this tells the system how many times to try to establish a passive TCP connection that was started by another host.
This variable takes an integer value, but should under no circumstances be larger than 255 for the same reasons as for the tcp_syn_retries variable. Each retransmission will take aproximately 30-40 seconds. The default value of the tcp_synack_retries variable is 5, and hence the default timeout of passive TCP connections is aproximately 180 seconds.
Tạm dịch:
Ấn định tcp_synack_retries cho kernel biết sẽ nên thử hồi đáp SYN,ACK bao nhiêu lần đối với một SYN. Nói một cách khác, ấn định này cho hệ thống biết sẽ thử bao nhiêu lần để thiết lập một xuất TCP thụ động được máy đầu bên kia khởi tạo.
Giá trị biến này là một số nguyên nhưng không nên lớn hơn 255 trong bất cứ hoàn cảnh nào. Mỗi lần hồi đáp sẽ mất khoảng 30-40 giây. Giá trị mặc định của tcp_synack_retries là 5 và bởi thế, thời gian mãn hạn theo mặc định của một xuất TCP thụ động là khoảng 180 giây.
Xét trong tình trạng "half-open" của một TCP connection và hệ thống có số truy cập rất lớn, thậm chí đang bị DDoS, thử phân tích và đánh giá:
1) Chuyện gì xảy ra nếu giá trị tcp_synack_retries sẽ gia tăng?
1) Chuyện gì xảy ra nếu giá trị tcp_synack_retries sẽ gia giảm?
Mời bà con thảo luận |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
11/06/2009 21:48:37 (+0700) | #2 | 183251 |
|
muadauha
Member
|
0 |
|
|
Joined: 09/01/2007 10:21:08
Messages: 24
Location: JP
Offline
|
|
Hi anh
Theo em thì nếu tăng giá trị của tcp_synack_retries thì sẽ giảm thời gian kết nối xuống, và ngược lại . |
|
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
11/06/2009 21:56:08 (+0700) | #3 | 183252 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
muadauha wrote:
Hi anh
Theo em thì nếu tăng giá trị của tcp_synack_retries thì sẽ giảm thời gian kết nối xuống, và ngược lại .
Thử phân tích và đánh giá chi tiết hơn cho vui xem?
"Tăng giá trị của tcp_synack_retries thì sẽ giảm thời gian kết nối xuống" là sao? Lý do tại sao? |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
13/06/2009 01:32:19 (+0700) | #4 | 183367 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
SYN, SYN/ACK retransmission là cách thức TCP đối phó với việc các packets loại này bị mất trong network. Số lượng synack retranmissions quyết định lifetime của một half-opend connection: retries càng nhiều thì lifetime càng lâu, và ngược lại.
Khi một hệ thống bị DDoS (SYN-flooding), nhiều khả năng backlog sẽ bị đầy, và OS không thể nhận thêm connections, và phải đợi cho đến khi lifetime của một số connections kết thúc thì mới tiếp tục nhận SYN. Như vậy, việc tăng số lượng retries sẽ khiến tình hình trở nên tồi tệ hơn, vì OS sẽ không có khả năng nhận thêm connections trong một khoảng lớn thời gian (e.g., 180s).
Việc giảm số lượng retries ở một khía cạnh nhỏ có hiệu ứng tốt, vì half-opened connection lifetime sẽ giảm, dẫn đến OS sẽ nhanh chóng loại bỏ half-opened connections và nhận các SYN mới. Tuy nhiên, điều đó cũng có nghĩa là khả năng legitimate peer có thể connect đến cũng giảm mạnh, vì 2 lí do:
- Trong khi bị DDoS, legitimate peers có rất ít cơ hội để nhảy vào được backlog.
- (cũng) trong khi bị DDoS (massively), việc packets loss là đương nhiên (gồm syn, syn/ack, ack), nên retransmission là cần thiết.
Cuối cùng, việc giảm số lượng retries không thực sự cải thiện được tình hình DDoS, vì attacker chỉ cần tăng attack frequency thì mọi việc lại như cũ. |
|
Mind your thought. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
16/06/2009 14:21:17 (+0700) | #5 | 183679 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
Có mấy ý kiến phản hồi nhỏ với chuyên gia StarGhost.
StarGhost wrote:
Khi một hệ thống bị DDoS (SYN-flooding), nhiều khả năng backlog sẽ bị đầy, và OS không thể nhận thêm connections, và phải đợi cho đến khi lifetime của một số connections kết thúc thì mới tiếp tục nhận SYN. Như vậy, việc tăng số lượng retries sẽ khiến tình hình trở nên tồi tệ hơn, vì OS sẽ không có khả năng nhận thêm connections trong một khoảng lớn thời gian (e.g., 180s).
Điều này đúng, nhưng cũng là không đúng vì bất kể lifetime dài hay ngắn, OS cũng ko thể tiếp nhận được thêm kết nối khi đó => kết quả đều là toi như nhau và hầu như ko thể tồi tệ hơn.
StarGhost wrote:
Việc giảm số lượng retries ở một khía cạnh nhỏ có hiệu ứng tốt, vì half-opened connection lifetime sẽ giảm, dẫn đến OS sẽ nhanh chóng loại bỏ half-opened connections và nhận các SYN mới. Tuy nhiên, điều đó cũng có nghĩa là khả năng legitimate peer có thể connect đến cũng giảm mạnh, vì 2 lí do:
- Trong khi bị DDoS, legitimate peers có rất ít cơ hội để nhảy vào được backlog.
- (cũng) trong khi bị DDoS (massively), việc packets loss là đương nhiên (gồm syn, syn/ack, ack), nên retransmission là cần thiết.
Cuối cùng, việc giảm số lượng retries không thực sự cải thiện được tình hình DDoS, vì attacker chỉ cần tăng attack frequency thì mọi việc lại như cũ.
Đúng là giảm retries ở một mức độ nào đó thì mọi sự "có thể" vẫn có hiệu ứng tốt hơn, nhưng không phải mặt tạo thêm kết nối, nó chỉ giải quyết vấn đề là hệ thống không bị quá tải về tài nguyên CPU, memory, port number..., chứ server vẫn không tiếp nhận được kết nối, vì thế việc giảm retries không phải nhằm mục đích để server tạo được thêm kết nối mà là giảm sự lifetime tài nguyên vô giá trị (nếu có thể). Một điểm nữa là khi tấn công SYN ngưng lại thì server trở lại trạng thái phục vụ được sẽ nhanh hơn, do lifetime ngắn.
Nhưng giảm thấp quá, ví dụ retries 1 lần thôi, sẽ có thể ngăn trở các legitimate peer có đường truyền tệ hoặc đang bị tắc nghẽn, và vô tình làm cho các peer gửi đi gửi lại gói SYN nhiều lần và vô tinh trở thành ... máy tấn công.
- OK, đúng, khi bị DoS thì legitimate peers có ít cơ hội vào đc backlog, nhưng được khắc phục bằng cách khác, xem ở dưới.
- Sai: Khi bị SYN flooding, việc mất packet sẽ vẫn ít khi xảy ra (nghĩa là không có tắc nghẽn), bởi đơn giản là là gói SYN nó rất bé và thường thì khả năng đáp ứng của đg truyền của server là thừa sức. SYN flood là cách tấn công của những client có băng thông nhỏ, với mục tiêu tốn ít để đạt đc kết quả. Nó làm cho server đầy backlog không thể nhận thêm kết nối chứ không phải là nhằm làm cho đường truyền bị nghẽn. Nếu muốn làm đường truyền nghẽn, người ta gửi gói thật to như là ICMP to hay UDP to, chứ không gửi gói TCP SYN bé tí làm gì.
Cách người ta chống back-log bị đầy: ví dụ Linux nó dùng Syn Cookies http://en.wikipedia.org/wiki/Syn_cookies), Khi back-log bị đầy, linux host vẫn trả lời gói SYN gửi tới bằng 1 gói tin SYN-ACK với cái sequence là 1 giá trị được tính toán đặc biệt gọi là cookie, nó không cần lưu cái haft connection này và không cần back-log buffer đang bị đầy kia. Nếu client xịn, nó sẽ reply cái gói SYN-ACK của server kia bằng 1 gói ACK có chứa cái seq đúng là cái cookie của server kia. Server nhận được gói ACK, check được đúng cookies mà mình gửi, cho dù không tìm được haft connection trong backlog tương ứng với cái ACK này (lúc trước có lưu đâu?), nó vẫn cho tạo kết nối và kết nối được thiết lập với đủ 3 bước, và mặc kệ cái back-log đang bị full.
Tất nhiên lúc này sẽ chậm hơn 1 chút đối với các client xịn mà có đường truyền tệ, vì nếu SYN-ACK trả lời mà bị mất, server sẽ không retries việc gửi này (vì có lưu lại đâu mà biết retry?), client sẽ buộc phải gửi lại SYN mới và sẽ nhận SYN-ACK khác. Tham số retries lúc này cũng vô nghĩa.
Và mọi thứ vẫn chạy được, kệ SYN flooding. |
|
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
17/06/2009 07:53:25 (+0700) | #6 | 183741 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
myquartz wrote:
Có mấy ý kiến phản hồi nhỏ với chuyên gia StarGhost.
Ý gì đây?
myquartz wrote:
StarGhost wrote:
Khi một hệ thống bị DDoS (SYN-flooding), nhiều khả năng backlog sẽ bị đầy, và OS không thể nhận thêm connections, và phải đợi cho đến khi lifetime của một số connections kết thúc thì mới tiếp tục nhận SYN. Như vậy, việc tăng số lượng retries sẽ khiến tình hình trở nên tồi tệ hơn, vì OS sẽ không có khả năng nhận thêm connections trong một khoảng lớn thời gian (e.g., 180s).
Điều này đúng, nhưng cũng là không đúng vì bất kể lifetime dài hay ngắn, OS cũng ko thể tiếp nhận được thêm kết nối khi đó => kết quả đều là toi như nhau và hầu như ko thể tồi tệ hơn.
Bây giờ mình có một hệ thống có lifetime của half-open connections là 20s, bây giờ mình tăng số retries sao cho nó lên đến 100s, mình không hiểu bạn nghĩ sao mà lại nói hầu như không thể tồi tệ hơn.
myquartz wrote:
- Sai: Khi bị SYN flooding, việc mất packet sẽ vẫn ít khi xảy ra (nghĩa là không có tắc nghẽn), bởi đơn giản là là gói SYN nó rất bé và thường thì khả năng đáp ứng của đg truyền của server là thừa sức. SYN flood là cách tấn công của những client có băng thông nhỏ, với mục tiêu tốn ít để đạt đc kết quả. Nó làm cho server đầy backlog không thể nhận thêm kết nối chứ không phải là nhằm làm cho đường truyền bị nghẽn. Nếu muốn làm đường truyền nghẽn, người ta gửi gói thật to như là ICMP to hay UDP to, chứ không gửi gói TCP SYN bé tí làm gì.
Ồ, việc mất bất cứ một packet nào trong 3 thứ SYN, SYN_ACK, ACK đều dẫn đến việc legitimate users không thể tạo connection, sao bạn chỉ nhắc đến mỗi SYN thôi vậy. Hơn nữa, vấn đề không phải ở chỗ khả năng packet bị lost cao bao nhiêu, mà là khả năng packet cần retransmission cao bao nhiêu. Nếu bạn vẫn cho rằng không cao (đặc biệt là khi bị flooded), thì mình xin hỏi là do bạn đã thực nghiệm cẩn thận nhiều lần, hoặc tham khảo từ đâu đó, hay chỉ là ý kiến chủ quan. Về phần mình, mình đề nghị bạn xem qua paper titled "Studies of TCP's Retransmission Timeout Mechanism". À quên mất, mình thích dùng từ DDoS hơn là SYN flooding.
myquartz wrote:
Cách người ta chống back-log bị đầy: ví dụ Linux nó dùng Syn Cookies http://en.wikipedia.org/wiki/Syn_cookies), Khi back-log bị đầy, linux host vẫn trả lời gói SYN gửi tới bằng 1 gói tin SYN-ACK với cái sequence là 1 giá trị được tính toán đặc biệt gọi là cookie, nó không cần lưu cái haft connection này và không cần back-log buffer đang bị đầy kia. Nếu client xịn, nó sẽ reply cái gói SYN-ACK của server kia bằng 1 gói ACK có chứa cái seq đúng là cái cookie của server kia. Server nhận được gói ACK, check được đúng cookies mà mình gửi, cho dù không tìm được haft connection trong backlog tương ứng với cái ACK này (lúc trước có lưu đâu?), nó vẫn cho tạo kết nối và kết nối được thiết lập với đủ 3 bước, và mặc kệ cái back-log đang bị full.
Tất nhiên lúc này sẽ chậm hơn 1 chút đối với các client xịn mà có đường truyền tệ, vì nếu SYN-ACK trả lời mà bị mất, server sẽ không retries việc gửi này (vì có lưu lại đâu mà biết retry?), client sẽ buộc phải gửi lại SYN mới và sẽ nhận SYN-ACK khác. Tham số retries lúc này cũng vô nghĩa.
Và mọi thứ vẫn chạy được, kệ SYN flooding.
Hì, có vẻ bạn myquartz hay có bệnh lan man, topic nói về một chuyện thì bạn lại cứ bàn sang chuyện khác. |
|
Mind your thought. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
17/06/2009 12:28:20 (+0700) | #7 | 183754 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@StarGhost: mình thấy bạn myquartz đề cập đến cái syncookies vì bạn ấy cho rằng chỉ cần kích hoạt syncookies thì không cần quan tâm đến giá trị của tcp_synack_retries, điều mà mình tin là sai, còn sai như thế nào thì hai bạn thảo luận tiếp đi nha, mình chưa từng bao giờ coi code phần network stack của linux kernel cũng như chưa bị tấn công DDoS nặng nề nên mình không biết . |
|
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] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
17/06/2009 17:42:06 (+0700) | #8 | 183761 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
mrro wrote:
@StarGhost: mình thấy bạn myquartz đề cập đến cái syncookies vì bạn ấy cho rằng chỉ cần kích hoạt syncookies thì không cần quan tâm đến giá trị của tcp_synack_retries, điều mà mình tin là sai, còn sai như thế nào thì hai bạn thảo luận tiếp đi nha, mình chưa từng bao giờ coi code phần network stack của linux kernel cũng như chưa bị tấn công DDoS nặng nề nên mình không biết .
À, cái này có lẽ là do trong Linux khi set tcp_syncookies=1 không có nghĩa là lúc nào syn cookies cũng được dùng. Còn ý của bạn myquartz mình nghĩ là về mặt nguyên tắc thôi. Mà mrro cần gì phải đợi tấn công DDoS nặng nề, cứ tự tấn công mình là rõ ngay ấy mà. Với lại mrro có mấy con servers hàng khủng, làm công cụ tấn công thì quá ổn. |
|
Mind your thought. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
17/06/2009 20:40:26 (+0700) | #9 | 183763 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@StarGhost: uhm có lẽ mình sẽ làm thử nghiệm rồi gửi lên đây cho các bạn xem. tranh luận mà không có dữ liệu để chống lưng thì cũng hơi kỳ ha . hahah mấy con server hàng khủng thì dùng để chạy các dịch vụ cũng hàng khủng, lấy chúng nó để mà kiểm nghiệm DDoS thì coi bộ không được. chắc mình sẽ thử xài mấy con trên Amazon EC2, mình cũng muốn thử cái này lâu rồi, mà chưa có dịp. |
|
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] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
18/06/2009 09:47:08 (+0700) | #10 | 183858 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
Khi bật Syn cookies lên thì còn quan tâm gì được đến cái tcp_synack_retries nữa. OS lúc này nó có lưu được half-open mới vào back-log buffer nữa đâu mà giá trị đó còn ý nghĩa.
Nói chung không nói đến DDoS chung chung, về tấn công Syn flooding thì giờ ít hiệu quả lắm.
Với các site có cường độ hoạt động cao, nhiều kết nối, client hàng xịn là chính, vẫn phải tăng độ dài back-log buffer, nhưng tăng giảm tcp_synack_retries thì không nên (và cũng không cần thiết). Bởi trong điều kiện không bị nghẽn (coi là đường truyền đủ lớn đi), thì haft-open connection được dẹp bỏ khỏi back-log buffer rất nhanh, khi cái ACK của client tới được server, giá trị retries đó nói chung không cần sờ đến.
Cái này đôi khi phải kết hợp với giải pháp network nếu như là đường truyền nó đạt ngưỡng, hay bị nghẽn (vì data, ko phải vì syn/ack nhá), lúc này cần ưu tiên cho các gói ACK đơn thuần (của bất cứ trạng thái nào) tới được server và từ server đi, gói này nhỏ không tốn đường truyền, lại rất dễ làm rule trên router. |
|
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
18/06/2009 10:08:47 (+0700) | #11 | 183859 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
@myquartz: hình như bạn không rành lắm về việc linux kernel xử lý cái khoản network thế nào ấy nhỉ? Ở trên mrro đã có nhắc đến vấn đề cookies rồi.
SYN flooding ít hiệu quả không phải là vì đã có một fancy mechanism để chống lại nó (kể cả syn cookies cũng chỉ là cực chẳng đã thôi), mà là vì các tay admin có trình độ thì biết cách tune system để "sống chung với lũ", cộng thêm khả năng của hệ thống. Chính vì vậy, nếu một hệ thống hoặc là có ít tài nguyên, hoặc là được quản lý bởi một tay mơ thì việc SYN flooding thành công là đương nhiên, và không cần thiết phải làm nghẽn đường truyền, vì bản thân SYN flooding cũng khó mà làm được như vậy. Những hệ thống như vậy thì nhan nhản ra.
|
|
Mind your thought. |
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
19/06/2009 07:17:20 (+0700) | #12 | 183971 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
StarGhost wrote:
@myquartz: hình như bạn không rành lắm về việc linux kernel xử lý cái khoản network thế nào ấy nhỉ? Ở trên mrro đã có nhắc đến vấn đề cookies rồi.
SYN flooding ít hiệu quả không phải là vì đã có một fancy mechanism để chống lại nó (kể cả syn cookies cũng chỉ là cực chẳng đã thôi), mà là vì các tay admin có trình độ thì biết cách tune system để "sống chung với lũ", cộng thêm khả năng của hệ thống. Chính vì vậy, nếu một hệ thống hoặc là có ít tài nguyên, hoặc là được quản lý bởi một tay mơ thì việc SYN flooding thành công là đương nhiên, và không cần thiết phải làm nghẽn đường truyền, vì bản thân SYN flooding cũng khó mà làm được như vậy. Những hệ thống như vậy thì nhan nhản ra.
Hì tớ ko phải dân network chuyên nghiệp, chuyên gia StarGhost thi thoảng còn đố về kiến thức network cơ mà. Có cái thông tin gì mới hơn về cái đó thì nói ra đi, chớ úp mở làm gì. Nói ra có khi biết mình đúng/sai ra sao mà. |
|
|
|
|
[Discussion] Vai trò của tcp_synack_retries trên tcp/ip stack của Linux |
03/07/2009 04:12:42 (+0700) | #13 | 185193 |
|
PureMoon
Member
|
0 |
|
|
Joined: 21/07/2006 12:16:07
Messages: 41
Location: FullMoon
Offline
|
|
conmale wrote:
Tạm dịch:
Ấn định tcp_synack_retries cho kernel biết sẽ nên thử hồi đáp SYN,ACK bao nhiêu lần đối với một SYN. Nói một cách khác, ấn định này cho hệ thống biết sẽ thử bao nhiêu lần để thiết lập một xuất TCP thụ động được máy đầu bên kia khởi tạo.
Giá trị biến này là một số nguyên nhưng không nên lớn hơn 255 trong bất cứ hoàn cảnh nào. Mỗi lần hồi đáp sẽ mất khoảng 30-40 giây. Giá trị mặc định của tcp_synack_retries là 5 và bởi thế, thời gian mãn hạn theo mặc định của một xuất TCP thụ động là khoảng 180 giây.
Xét trong tình trạng "half-open" của một TCP connection và hệ thống có số truy cập rất lớn, thậm chí đang bị DDoS, thử phân tích và đánh giá:
1) Chuyện gì xảy ra nếu giá trị tcp_synack_retries sẽ gia tăng?
1) Chuyện gì xảy ra nếu giá trị tcp_synack_retries sẽ gia giảm?
Mời bà con thảo luận
E xin góp chút vào thảo luận .
Giả sử hệ thống ko sử dụng TCP SYN Cookies ,
TCP_SYNACK_RETRIES =0 , hệ thống tiếp nhận 1000 hit/s + 8000 SYN (Halfopen)/s (9000SYN/s) . CPU sử dụng tối đa 100%.Hệ thống sẽ phải đáp trả 1000+8000 = 9000 SYN-ACK . Cấu hình này không phải là tốt nhất nhưng tại sao thì e ko rõ .
TCP_SYNACK_RETRIES = 5 , hệ thống sẽ phải đáp trả khoảng 8000x6 + 1000x1 = 49,000 SYN-ACK . Do số lượng SYN-ACK tăng lên nên khả năng tiếp nhận SYN giảm xuống . >> so với trường hợp 1 chỉ là 9000 SYN-ACK >> Như vậy mình đã tự mình "hại" mình .
Theo một số tài liệu thông số TCP_SYNACK_RETRIES nằm trong khoảng từ 1~3 , backlog ~~ số Halfopen session .
|
|
|
|
|
|
|
|
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|
|
|