Thursday, June 26, 2014

Khoá IP đang tấn công DDos

Bước 1: Lấy danh sách những top connection:
netstat -anp |grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
Bước 2: chạy command
route add IP_ADDRESS reject
Bước 3: Gỡ bỏ IP khỏi bảng cấm:
route delete IP_ADDRESS reject
nguồn:https://xikebattu.wordpress.com/category/linux/

Saturday, June 21, 2014

backup và restore openldap server

Nhưng chúng ta đã biết tất cả file openldap đều luu dưới dạng file .ldif

Backup

The backup sẽ lưu trữ file  backup.ldif text file.
#!/bin/sh

slapcat -v -l ldap.diff

Restore

The restore sẽ thay thế dòng database hiện tại mình đang có bằng file ldif backup.
#!/bin/sh

# Stop slapd daemon
/etc/init.d/slapd stop

# Remove current database
rm -rf /var/lib/ldap/*

# Import directory tree from backup
slapadd -l backup.ldif

# Fix permissions
chown -R openldap:openldap /var/lib/ldap/*

# Start slapd daemon
/etc/init.d/slapd start
các thông số cơ bản của ldapadd có thể tham khảo tại đây
http://linux.die.net/man/8/slapadd

Monday, June 16, 2014

20 Cách Giúp Tăng Cường Bảo Mật Cho Linux Server – Phần 1

Bảo mật cho máy chủ Linux của bạn là điều hết sức quan trọng để bảo vệ dữ liệu, các sở hữu trí tuệ, và cả thời gian, tiền bạc khỏi “bàn tay đen” của các hacker. Trong phần đầu tiên của loạt bài viết về bảo mật Linux server, tôi sẽ giới thiệu tới các bạn 20 thủ thuật giúp tăng cường an ninh cho Linux server.


#1: Mã hóa dữ liệu được truyền đi

Tất cả các dữ liệu gửi qua môi trường mạng đều có nguy cơ bị hacker tóm được (sniff) ngay trên đường truyền. Vì vậy, bất cứ khi nào có thể bạn nên mã hóa dữ liệu được truyền đi với thuật toán mã hóa và mật khẩu đủ mạnh hay sử dụng các chứng thư số (certificate).

- Sử dụng các chương trình scp, ssh, rsync hoặc sftp để truyền file qua mạng. Với 2 công cụ fuse và sshfs, bạn cũng có thể mount các file system nằm trên server ở xa (remote server file system) một cách an toàn thông qua SSH.
GnuPG giúp mã hóa dữ liệu và tạo chữ ký số cho file, thêm vào đó là tính năng quản lý khóa mã hóa tiện lợi.

- Fugu là một frontend có giao diện đồ họa cho SFTP. SFTP cũng giống với FTP, chỉ khác là SFTP sẽ mã hóa toàn bộ phiên làm việc, có nghĩa rằng cả mật khẩu và các dữ liệu khác sẽ được mã hóa trước khi gửi đi. Và như vậy dù cho hacker có tóm được dữ liệu đó cũng không thể nào đọc được thông tin đã được mã hóa bởi SFTP. Một tùy chọn khác là FileZilla – chương trình client chạy trên nhiều nền tảng như Linux, Windows… (cross-platform), hỗ trợ các giao thức như FTP, FTPS (FTP over SSL/TSL), SFTP (SSH FTP)…

- OpenVPN chương trình SSL/VPN nhẹ nhàng, hiệu quả.

- Lighttpd SSL (Secure Server Layer) Https <= xem thêm cách cài đặt và cấu hình

- Apache SSL (Secure Server Layer) Https (mod_ssl) <= xem thêm cách cài đặt và cấu hình.


#1.1: Tránh sử dụng FTP, Telnet, và Rlogin / Rsh

Bất kỳ ai nằm trên cùng một mạng với bạn đều có thể sử dụng một trình bắt gói tin (packet sniffer) để tóm lấy các thông tin (như thông số cấu hình mạng, username, password, câu lệnh, file…) chưa được mã hóa được gửi bởi các chương trình như FTP, Telnet, Rlogin/Rsh. Giải pháp chung cho vấn đề này là chuyển sang sử dụng các chương trình nhưOpenSSH , SFTP, hoặc FTPS. Đối với Fedora/CentOS/RHEL, gõ câu lệnh sau để xóa bỏ NIS, rsh và các dịch vụ lỗi thời khác:

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

#2: Giảm tối thiểu các gói phần mềm được cài đặt

Bạn có thật sự cần cài đặt hết tất cả các loại web service (Apache, IIS…) không? Hãy tránh cài đặt các gói phần mềm không cần thiết để tránh nguy cơ lỗ hổng ẩn chứa trong các phần mềm đó bị khai thác. Sử dụng các trình quản lý gói như yum, rpm, apt-get, dpkg… để xem tất cả các gói đã cài trên hệ thống. Sau đó, xóa bỏ các gói không cần thiết.


Đối với Redhat-based Distro

# yum list installed
# yum list packageName
# yum remove packageName
Hoặc với Debian-based Distro
# dpkg –list
# dpkg –info packageName
# apt-get remove packageName
#3: Mỗi dịch vụ mạng chạy trên một hệ thống thực (hoặc máy ảo) riêng biệt
Nếu có thể, bạn nên chạy các dịch vụ mạng khác nhau trên các server tách biệt nhau. Điều này giúp giảm thiểu rủi ro các dịch vụ sẽ bị “chết chùm” khi chúng nằm trên cùng một server. Ví dụ, nếu một hacker có thể khai thác thành công một lỗ hổng của phần mềm như Apache, hắn sẽ có toàn quyền truy cập vào server và gây ảnh hưởng cho các dịch vụ khác như MySQL, e-mail nằm trên cùng server với Apache. Xem thêm cách cài đặt và cấu hình môi trường ảo hóa trên Linux:


Install and Setup XEN Virtualization Software on CentOS Linux 5

How To Setup OpenVZ under RHEL / CentOS Linux


#4: Cập nhật đầy đủ và thường xuyên cho Linux kernel và các phần mềm khác

áp dụng các bản vá bảo mật là một công việc quan trọng trong kế hoạch bảo trì Linux sever. Linux cung cấp tất cả các công cụ cần thiết để đảm bảo hệ thống của bạn luôn được cập nhật, đồng thời giúp nâng cấp dễ dàng giữa các phiên bản. Bạn nên kiểm duyệt và áp dụng tất cả các bản cập nhật ngay khi có thể. Một lần nữa, sử dụng yum, apt-get… để thực hiện việc cập nhật này.

# yum update
hoặc
# apt-get update && apt-get upgrade
Bạn có thể cấu hình cho Red hat / CentOS / Fedora để nhận thông báo về các bản cập nhật mới qua email (xem thêm update notification via email), dưới Debian / Ubuntu có thể sử dụng apticron. Một tùy chọn khác để cài đặt tất cả các bản cập nhật là sử dụng cron (xem thêm all security updates ).


#5: Sử dụng Linux Security Extensions

Có nhiều công cụ giúp bảo vệ Linux trước các lỗi bảo mật như cấu hình hệ thống lỏng lẻo, tạo kẽ hở cho kẻ xâm nhập, các chương trình bị tấn công… Nếu có thể, bạn nên sử dụng SELinux và các security extension khác để quản lý chặt chẽ các chương trình và mạng (xem thêm SELinux and other Linux security). Ví dụ, SELinux cung cấp khá nhiều các chính sách bảo mật khác nhau dành cho Linux kernel.


#5.1: SELinux

Khuyến khích các bạn sử dụng cơ chế Mandatory Access Control (MAC) mà SELinux cung cấp. Theo chuẩn DAC (Discretionary Access Control), một ứng dụng (hoặc tiến trình) được khởi chạy bởi người dùng nào đó thì ứng dụng này có các quyền hạn trên các đối tượng (file, socket,…) giống với quyền hạn của người dùng đã khởi chạy nó. Việc chạy MAC giúp bảo vệ hệ thống khỏi bị phá hoại bởi các chương trình độc hại (hoặc chứa lỗi). Giải thích chi tiết cấu hình cho SELinux có trong kho tài liệu chính thức của Redhat.


nguồn:
http://root.vn/

Sunday, June 15, 2014

Kinh nghiệm hạn chế DDOS với apache server

A/ Hiểu thế nào về DOS và DDOS
    1.Với DDOS chắc các bạn đã biết là rất tệ nạn hiện nay và về cơ bản nó rất độc hại và khó chống đỡ, chúng ta gọi là hạn chế thiệt hại.
    - Một cách hiểu nôm na thế này, DOS (Deny of service) thì là tấn công đơn lẻ từ một IP, nó tạo ra nhiều kết nối cùng lúc tới server, hoặc gửi các yêu cầu xử lý syn tới máy chủ apache, khiến cho máy chủ server không thể xử lý được, và treo và die,....
    - Với tấn công này thì rõ ràng xác định nó rất đơn giản, block IP đơn lẻ đó là xong. Hoặc viết 1 hàm bằng mã nguồn nào đó như PHP,... check số kết nối của nó tới server giới hạn là bao nhiêu vào deny tự động nếu quá mức là xong.
    2. Với DDOS (Distributed Denial Of Service) nó là kiểu tấn công phân tán, có nghĩa là để làm cho máy chủ treo, nó sẽ tạo ra nhiều kết nối, nhiều yêu cầu gửi gói dữ liệu (SYN) tới server không chỉ một IP mà nhiều IP, Nhiều ip như thế cộng lại = 1 IP với số kết nối lớn như DDOS = Server nghẻo. Các thức DDOS như thế thường bắt nguồn từ một chương trình tự động và cấu hình sẵn, và thiết lập cơ bản là giống nhau. Đây sẽ là tiền đề để ta ngăn chặn DDOS.
    B/ Cách thức ngăn chặn giảm thiệt hại
    - Chúng ta sẽ phân ra 2 lĩnh vực bảo vệ đó là với một máy chủ riêng hoặc một hosting.
    - Để chặn được DDOS bạn cần một kiến thức khá nhiều thứ để có thể ngăn chặn hiệu quả, như đọc file log của apache, biết sử dụng các rule hỗ trợ
    1. Với một máy chủ riêng (máy chủ ảo và máy chủ thật) . Trong kinh nghiệm của mình thì dựa trên máy chủ server linux là chính, máy chủ windows thì chưa dùng cũng chưa biết hạn chế nó ra sao, nhưng chắc chắn rằng bạn sẽ cần cài chương trình kiểu như KASpersky cho nó
    - Với máy chủ linux bạn có lợi thế firewall với nền tảng iptable.
    - Với máy chủ này, bạn nên cài ngay cho mình thêm một mod hỗ trợ đó là mod_sercurity cho apache server. mod này tạo firewall thì thật sự mạnh mẽ.
    - Bạn có thể tải nó và cách cài đặt bạn xem tại trang chủ: ModSecurity: Open Source Web Application Firewall
    Và việc viết rule của nó là cần thiết cho mỗi bạn, bạn có thể xem hướng dẫn tại:
    ModSecurity
    - Cũng nên hiểu về cấu trúc regular_expressions: Learning to Use Regular Expressions
    - Tôi nhấn mạnh rằng các bạn nên đọc tài liệu hướng dẫn tạo rule của Mod_sercurity thì các bạn hiểu và tạo Rule riêng của mình mới có thể ngăn chặn được. DDOS, được.
    - Khi bạn đã hiểu chút chút về nó, hãy phân tích log file apache của bạn nó liệt kê những gì? (Ip nào tấn công, Tấn công hình thức nào (GET, POST,...) vào đâu, từ nguồn nào (user-agent)....
    - Để hiểu rõ hơn về thông tin log apache bạn nên tìm hiểu tại đây:
    Log Files - Apache HTTP Server
    - Với mục đích bảo mật của forum này, mình sẽ không tiết lộ code rule bảo mật của nó, bạn có thể tự khai thác thông tin và viết rule giải quyết vấn đề.
    ---> Để an toàn cho server của mình, các bạn cũng nên cài thêm firewall quan trọng đó là CSF, nó cho phép chống gần như rất nhiều hình thức DDOS, cách cài đặt và cấu hình nó tham khảo tại:
    CSF Install Guide - How To
    Hi vọng các bạn sẽ có một kiến thức đủ lớn để giải quyết vấn đề DDOS
    2. Chặn DDOS với mod_rewrite (htaccess)
    - Với công cụ này cũng khá đơn giản để ngăn chặn. chúng ta sẽ quan tâm tới một số cách thức sử dụng sau:
    + Nếu xảy ra DDOS, các bạn hãy nhanh chóng đặt ngay pass website bằng cấu hình htaccess và htpaword để tiện xử lý.
    + Vô xem log file và tìm nguồn tấn công từ IP nào, - tính xem mỗi một phút IP đó tấn công liên tục vào đâu bao nhiêu lần, (liên tục vào cùng một địa chỉ - Có khác biệt so với member chỗ này, vì liên tục chỉ vào một vị trí - điểm yếu của auto)
    + Nếu là nguồn 1 IP thì ta thực hiện cấu hình chặn IP như sau: VD:
    order allow,deny
    deny from 192.168.1.1
    deny from 234.45.67.89
    deny from 123.45.67.89
    allow from all
    + Nếu từ nhiều IP, và các IP tấn công không quá nhiều, nhưng có chung một vị trí nện tại môt vị trí nào đó, chẳng hạn ( index.php), các IP đó có thể cùng một user-agent: VD log file:
    195.158.101.197 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    168.167.43.188 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    60.29.131.18 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    88.190.16.207 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 404 297 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    94.125.160.159 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    41.216.205.253 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    194.85.80.107 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    202.29.58.33 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    210.245.85.33 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    46.42.4.138 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    218.210.199.254 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 404 297 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    187.52.2.74 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    72.232.2.94 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    95.59.140.242 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    213.7.200.186 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.1" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    125.167.79.101 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    95.59.140.242 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
    186.114.191.133 - - [13/May/2011:18:19:48 -0700] "GET /@4rum/index.php HTTP/1.0" 403 301 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR
    Bạn sẽ thấy nó tấn công liên tiếp vào cùng một vị trí index.php nhưng nhiều IP khác nhau, nếu bạn chỉ sử dụng hàm chặn số lần kết nối trong 1 phút từ 1 IP này, chắc không tính ra được, và nhầm với IP thành viên thực.
    - Bạn sẽ chú ý tới các user-agent:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
    OK, rất giống nhau, ta block nó đi thôi.
    - Nếu bạn block cả cụm đó, bạn sẽ thấy các máy sử dụng windows 5.1 (XP sp2) và sử dụng IE 6 (MSIE 6.0) sẽ cũng không vô được, vậy bạn không nên block tất nó, bạn hãy quan tâm tới phần riêng của nó, ở đây phần riêng là CLR 1.0.3705
    OK, block nó thôi, sử dụng code htaccess:
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^(.*)$ http://tên-miền-muốn-gửi-sang
    -Cách làm này dựa theo user-agent, chẳng hạn ở trên thì user-agent có chứa từ “1.0.3705”. Thật đơn giản đúng không? Khi máy chủ web kiểm tra có bot mà user-agent có chứa chuỗi bắt đầu với “1.0.3705”. Khi đó nó sẽ redirects sang cái trang mà bạn định link đến. VD
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^(.*)$ http://tên-miền-muốn-gửi-sang
    Nếu không sử dụng được thì hãy dùng code sau:
    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^/$ /homepage.max.html [L]
    Thông tin thêm tại: mod_rewrite - Apache HTTP Server
    Để block một User-agent mà không chuyển sử dụng:
    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^.* - [F,L]
    Một code khác sử dụng khá hiệu quả, nó block luôn và không chuyển đi đâu
    SetEnvIfNoCase User-Agent "1.0.3705" bad_bot
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot
    Làm sao biết nó có hoạt động hay không? hãy thử với chỉnh user-agent của chính mình xem sau khi chặn, mình có vào được ko?
    Cách xác định user-agent của mình:
    - tại trình duyệt web, vào địa chỉ sau:
    HTTP User Agent - Browser User Agent ID
    Nó sẽ hiển thị user-agent của bạn tại Your Current Browser User Agent ID
    - Nếu không sử dụng trang web trên, bạn copy và paste vào trình duyệt đoạn code sau:
    javascript:alert(navigator.userAgent)
    và user-agent của bạn sẽ hiển thị
    Thông tin nhiều hơn tìm hiểu tại: Understanding User-Agent Strings
    - Nếu một site nào đó lấy thông tin get nhiều file của bạn từ một trang web, hãy block kết nối trang web đó tới website của bạn:
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://.*1-vài-ký-tự-trong-domain.com [NC]
    RewriteRule .* - [F]
    Hi vọng với việc làm này sẽ hạn chế được DDOS của bạn



bài viết lấy từ nguồn http://underworldbyg1.blogspot.com/