Thursday, October 31, 2013

cài đặt mod_security for apache2.2.x

đây la cài đặt cơ bản cho mod_security phiên bản mới nhất (ngày 1/11/2013), chưa có config và create  new rule for mod_security (only rule basic)
máy yếu Ram nên bị đen :D

Giới thiệu sơ qua về mod_security

Giới thiệu sơ qua về mod_security
Mở đầu:
1. Mob_security là gì: là một firewall  dành riêng cho lớp ứng dụng Web (WAF) nó bảo vệ và ngăn cản các cuộc tấn công nhằm vào ứng dụng web như:

    •       Suspicious HTTP requests (for example, missing User-Agentor cceptheaders)
    •          SQL injection
    •          Cross-Site Scripting (XSS)
    •          Remote code injection
    •          File disclosure            
2. Mob_apache hoạt đọng như thế nào:

Các gói  http request  khi gửi đến httpd phải thông qua Mod_security, Mob_security có nhiệm vụ cản lọc các gói tin không hợp lệ giúp bảo vệ server web chúng ta tốt hơn. Cũng giống như snort các rule thương mại được viết sẳn chúng ta phải trả phí. Chúng ta tiến hành cài đặt Mod_security  


Yum các gói hổ trợ:
Cài đặt epel
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@web ~]# rpm -Uvh epel-release-6-8.noarch.rpm
cài đặt gói hổ trợ:
yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel -y
 mkdir /tmp/mod;cd /tmp/mod
download mod_security:
[root@web mod]# wget https://www.modsecurity.org/tarball/2.7.5/modsecurity-apache_2.7.5.tar.gz
giải nén file vừa download:
[root@web modsecurity-apache_2.7.5]# tar xzvf modsecurity-apache_2.7.5.tar.gz
[root@web mod]# cd modsecurity-apache_2.7.5
[root@web modsecurity-apache_2.7.5]# ./configure
[root@web modsecurity-apache_2.7.5]# make install
[root@web modsecurity-apache_2.7.5]# cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
Mod_security yêu cầu phải có OWASP (Open Web Application Security Project) để tạo rule cấu hình cơ bản

[root@web /]# cd /etc/httpd

[root@web httpd]# mv owasp-modsecurity-crs-2.2.8 modsecurity-crs
[root@web httpd]# cd modsecurity-crs/
[root@web modsecurity-crs]# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
Tiếp theo quay lại cấu hình http.conf
Add line:
LoadModule security2_module modules/mod_security2.so
And add after line:
<IfModule security2_module>
    Include modsecurity-crs/modsecurity_crs_10_setup.conf
    Include modsecurity-crs/base_rules/*.conf
</IfModule>

Kiểm tra lại với :
Httpd –v

Tail –f /var/log/httpd/error_log

Saturday, October 26, 2013

Xây dựng web apache(bảo mật web )




FOLOW SITE
http://www.tecmint.com/apache-security-tips/

Cấu hình bảo mật Webserver Apache



·         Thư mục đường dẫn nơi lưu trữ trang web :
 /var/www/html  hoặc /var/www
·         Cấu hình chính apache tại /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) and/etc/apache/apache2.conf (Debian/Ubuntu).
  • Default HTTP Port: 80 TCP
  • Default HTTPS Port: 443 TCP
·         Xem file log của apache tại 2 file
1.       Xem file log truy cập tại /var/log/httpd/access_log
2.     Xem file log lỗi tại  /var/log/httpd/error_log
Tiếp theo ngoài việc xây dựng hệ thống web với apache chạy tốt, một điều kiện cũng khá bắt buộc đó là bảo mật hệ thống web server apache.Dưới đây là một trong những bước giúp hoàn thiện cho hệ thống web apache.

1.    Không hiển thị các lỗi show version của apache và hệ điều hành khi truy cập bị lỗi.
-          Theo đường dẫn /etc/httpd/conf/httpd.conf ta sửa lại các default như sau
ServerSignature“(line 536) mặc đinh nó là On chúng ta sữa lại Off và chỉnh sửa  ServerTokens Prod” (line 44)nó dấu version cho chúng ta


   2.      Disable chức năng hiển thị danh sách trong các thư mục
Mặc định apache hiển thị hết tất cả các file có trông thư mục root như bên dưới.

Chúng ta có thể disable chức năng này bằng cách cấu hình trong  đường dẫn đặc biệt mà không muốn show các file trong đó bằng cách:
<Directory /var/www/html>
    Options -Indexes
</Directory>

3.    Dữ apache luôn được update bản mới nhất
Muốn xem version hiện tại của apache chúng ta đánh lệnh như sau:
Httpd –v
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

Muốn update apache chúng ta đánh lệnh sau
Yum update apache
4.    Disable những module không cần thiết 
Để hạn chế rủi ro cho web server chúng ta nên loại bỏ bớt một số module không cần thiết.
Lệnh sau giúp chúng ta xem các module ta đang có:
grep LoadModule /etc/httpd/conf/httpd.conf
chúng ta có thể loại bớt  một phần module, hầu như chúng ta không dùng đến, trong đó chúng ta chú ý tới các module thường chúng ta không cần đến. mod_imap,mod_include, mod_info, mod_userdir, mod_autoindex
chỉ việc thêm dấu # trước mỗi module chúng ta cần bỏ
5.      Disable tính năng Symboliclinks
Mặc định apache cho phép tính năng symbolic chúng ta có thể tắc tính nắng FollowSymLinks  với Options directive. Chúng ta cấu hình chúng trong file httpd.conf
Options -FollowSymLinks
Nếu có User hay website nào cần sử dụng chức năng FollowSymLinks . chúng ta đơn giản viết 1 rule trong file .htaccess từ web site đó
# Enable symbolic links
Options +FollowSymLinks
Chú ý: ta enable chứng năng Rewrite thì chúng ta cấu hình trong file httpd.conf là AllowOverride All 
6.    Tắt chức năng server side include và CGI execution
Chúng ta cũng tắt các chức năng server side include (mod_include) and CGI execution trong thư mục gốc
Options -Includes
Options -ExecCGI
                Trong các trang web con chúng ta cũng cấu hính tương tự
 <Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>


7.    Giới hạn kích thước REQUEST
Mặc định apache không giới hạn kích thướt request HTTP , khi chúng ta không giới hạn có thẻ trở thành nạn nhân của tấn công  DDOS. Chúng ta cần giới hạn kích thước thư mục LimitRequestBody” .
 Chúng ta có thể giới hạn gia trị từ  0 ( không giới hạn) tới 2147483647 (2GB) cho phép request body . Bạn có thể thiết lập giới hạn này theo nhu cầu trang web của bạn, Giả sử bạn có một trang web mà bạn cho phép cập nhật và bạn muốn giới hạn kích thước tải lên một thư mục cụ thể.
Đây trong ví dụ này, user_uploads là một thư mục chứa các tập tin tải lên bởi người sử dụng. Chúng tôi đang đặt một giới hạn của 500K cho việc này.

<Directory "/var/www/myweb1/user_uploads">
   LimitRequestBody 512000
</Directory>


8.    Bảo vệ tấn công DDOS
Chúng ta không thể bảo vệ chống lại tấn công DDOS hoàn toàn mà chỉ hạn chế 1 phần nào đó thôi,
·         TimeOut :  thời gian máy chủ chờ một kết nối, mặc định 300  giây, tốt hơn nên để giá trị này nhỏ để hạn chế tấn công DDOS
·         MaxClients :  giới hạn số lượng kết nối  phục vụ cùng lúc, quá số lượng này sẽ phải sếp hàng đợi
·         KeepAliveTimeout:   thời gian đợi đóng một kết nối,  mặc định là 5 giây
·         LimitRequestFields:   giới hạn số  lượng HTTP Request  header  đượ chấp nhận bởi  client, mặc định là 100 , chúng ta nên để giá tri thấp hơn
·         LimitRequestFieldSize:  giới hạn kích thước của HTTP request header
9.    Enable log web server .
Apache cho phép chúng ta xem 2 file log như trên, nhưng nếu host có nhiều site thì chúng ta phải có file log riêng cho từng site để tránh nhầm lẫn.
<VirtualHost *:80>
DocumentRoot /var/www/html/example.com/
ServerName www.example.com
DirectoryIndex index.htm index.html index.php
ServerAlias example.com
ErrorDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log combined
</VirtualHost>

10.     Cài đặt thêm mod.
Cài thêm các mod để gia tăng sự bảo mật, Mod không thể thiếu là  mod_security. Bài tiếp theo có TUT về mod này  

Wednesday, October 2, 2013

Squid làm proxy phần 2(by dienhuynhit)

phần này giơi thiệu sơ qua về chứng thực user LDAP:
 Squid hổ trợ chúng ta chứng thực với Server LDAP qua file squid_ldap_auth. Điều này có nghĩa là chúng ta có thể sử dụng user & password để chứng thực cho giao thức HTTP. File này nằm trong đường dẫn: Đầu tiên chúng ta có thể kiểm tra máy đã kết nối với LDAP server chưa ( ở đây là PDC đã xây dựng từ bài trước). Sử dụng lệnh:
 /usr/lib/squid/squid_ldap_auth -b "dc=tencongty,dc=com" -f "uid=%s" ldap.tencongty.com
Khi nhấn Enter thì nó yêu cầu ta nhập UID & password: nếu có thể kết nồi với mấy LDAP PDC là ok
Tiếp theo config file : # vi /etc/squid/squid.conf
Add thêm 1 số code:
auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "dc=tencongty,dc=com" -f "uid=%s" -h ldap.tencongty.com
 acl ldapauth proxy_auth REQUIRED
 http_access allow ldapauth
 http_access deny all
 chú ý : thư mục đường dẫn sữa lại cho phù hợp phiên bản mới hơn có thể sử dụng : usr/lib/squid/ldap_auth -b “dc=mydc” -D cn=admin,dc=mydc -w passwd -H ldap://ldapserver -v 3 -f “uid=%s”

----------------------------------------------------------------------------------------------------------
bài tập cơ bản về SQUID PROXY
1. cam truy cap web
 acl allowip src "/etc/squid/allowip.txt"
 acl denywebsite dstdom_regex "/etc/squid/denywebsite.txt"
 http_access deny denywebsite
 http_access allow allowip

2. Han che truy theo thoi gian

 acl home_network src 192.168.1.0/24
 acl allow_hours time M T W H F 9:00-17:00
 http_access allow home_network allow_hours

3. Han che truy cap theo dinh dang File

 acl home_network src 192.168.1.0/24
 acl denyfiletypes url_regex -i .mp3$ .mpg$ .mpeg$ .mp2$ .avi$ .wmv$ .wma$ .exe$
 acl magic_words2 url_regex -i ftp  .mp3$ .mpg$ .mpeg$ .mp2$ .avi$ .wmv$ .wma$ .exe$
 http_access deny denyfiletypes
 http_access allow home_network

4. Chan IP
 acl RestrictedHost src 192.168.1.200
 http_access deny RestrictedHost

5. Chan File Download
 acl blockfiles urlpath_regex “/etc/squid/blocks.files.acl”
 http_access deny blockfiles
  #vi /etc/squid/blocks.files.acl
     \.[Ee][Xx][Ee]$
     \.[Aa][Vv][Ii]$
     \.[Mm][Pp][Gg]$
     \.[Mm][Pp][Ee][Gg]$
     \.[Mm][Pp]3$

     \.[Rr][Pp][Mm]$