1. On the source database server run the following command to export all databases:
mysqldump -h localhost -u {username} -p --all-databases > database_dump.sql
Replace {username} with your MySql username.
You can also export a single database using this command:
mysqldump -h localhost -u {username} -p {database} > database_dump.sql
Replace {username} with your MySql username and {database} with the database you are going to export.
2. Move the database_dump.sql file to your destination server. You could grab it from FTP server or put it on a public web location and use wget on the destination server to receive the file. This process it outside the scope of this tutorial.
3. Import the dump to the destination MySql server by running the following command:
mysql -h localhost -u {username} -p < database_dump.sql
Replace {username} with your MySql username.
If you are only exporting a single database, use this command instead:
mysql -h localhost -u {username} -p {database} < database_dump.sql
Replace {username} with your MySql username and {database} with the database you are going to export.
fail2ban monitors log files such as /var/log/auth.log and /var/log/apache/access.log and temporarily or persistently bans failure-prone addresses by updating existing firewall rules. Currently, by default, fail2ban supports ssh/apache/vsftpd but configuration can be easily extended for monitoring any other ASCII file.
1. Install fail2ban
apt-get install fail2ban
2. Test by connecting via ssh and making three incorrect password attempts. By default fail2ban blocks the IP address for 10 minutes.
You can tail the fail2ban log file to monitor actions:
tail -f /var/log/fail2ban.log
Sample results
2010-06-21 22:27:58,953 fail2ban.jail : INFO Jail 'ssh' started
2010-06-21 22:29:36,430 fail2ban.actions: WARNING [ssh] Ban 192.168.1.18
3. (optional) Specify a list of IP addresses ignored by fail2ban. This can be useful to avoid getting locked out (pico /etc/fail2ban/jail.conf)
ignoreip = 127.0.0.1 192.168.1.0/24
Modify the ignoreip property and type a list of IP addresses or networks seperated by a space.
4. Restart fail2ban (only required if you modified the ignoreip property)
/etc/init.d/fail2ban restart
If you would like to setup a Virtual Private Network (VPN) for Windows clients, PPTP is a great choice. It's easy to set up on the server and you don't need any additional software for the Windows clients to connect.
1. Install the required packagesapt-get install pptpd
2. Configure the IP range assigned to clients (pico /etc/pptpd.conf)localip 192.168.1.2
remoteip 192.168.1.10-20
Using this config the clients are assigned any IP address between and including 192.168.1.10 and 192.168.1.20.
3. Restart the PPTP daemon/etc/init.d/pptpd restart
4. Create a user allowed to connect (pico /etc/ppp/chap-secrets)user1 pptpd secretpassword *
Passwords are not encrypted. This allows the a user with the username: user1 and the password: secretpassword to login from any ip address.
5. Enable IP forward at startup to allow the VPN clients to connect to the server's local network. (pico /etc/sysctl.conf)net.ipv4.ip_forward=1
Also run this command to activate the IP forward instantly:echo 1 > /proc/sys/net/ipv4/ip_forward
6. Create a routing rule to allow the VPN clients to route network traffic through the server.iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Read this tutorial to learn how to create iptables rules on startup:
Loading iptables rules on startup
By default iptables is setup on Debian etch but there are no rules configured. In this tutorial we'll configure some rules and load them into iptables on startup.
1. Rules file
Create a new file that will contain a shell script to insert rules into iptables (pico /etc/firewall-rules.sh) and add this content as template:
#!/bin/sh
IPT="/sbin/iptables"
echo -n "Loading iptables rules..."
# Flush old rules
$IPT --flush
$IPT --delete-chain
# By default, drop everything except outgoing traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# Allow incoming and outgoing for loopback interfaces
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# ICMP rules
$IPT -A INPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type timestamp-request -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type timestamp-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
# Block new connections without SYN
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# Allow established connections:
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# HTTP
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
# Block fragments and Xmas tree as well as SYN,FIN and SYN,RST
$IPT -A INPUT -p ip -f -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# Anti-spoofing rules
$IPT -A INPUT -s 200.200.200.200 -j DROP
$IPT -A INPUT -s 192.168.0.0/24 -j DROP
$IPT -A INPUT -s 127.0.0.0/8 -j DROP
echo "rules loaded."
You can customize this file as required, check the iptables manual for parameters and options.
Change the permissions to make the file executable by root:
chown root /etc/firewall-rules.sh
chmod 700 /etc/firewall-rules.sh
2. Load rules shell script on startup
Add this line above the address line for your default network interface (pico /etc/network/interfaces):
pre-up /etc/firewall-rules.sh
Now, every time you start the network interfaces including restarting the system, iptables rules are reloaded.
vsftpd is a secure, fast and stable FTP server. In this tutorial we'll install the server and make create a user database in MySql for virtual users.
1. Install required packages (make sure you have installed MySql)
apt-get install vsftpd libpam-mysql
2. Create database and insert the first user (mysql -u root -p)
CREATE DATABASE ftpd;
USE ftpd;
CREATE TABLE users (username varchar (30) NOT NULL, password varchar(50) NOT NULL, PRIMARY KEY (username)) TYPE=MyISAM;
INSERT INTO users (username, password) VALUES ('user1', PASSWORD('password1'));
GRANT SELECT ON ftpd.users to vsftpd@localhost identified by 'yourpassword';
exit;
Replace yourpassword with a strong password used later by vsftpd to authenticate
3. Configure vsftpd (pico /etc/vsftpd.conf)
Edit or add these variables in the config file and leave everything else with the default values.
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
Set the local_root to the parent directory where the user's home directories are located
4. Configure PAM to check the MySql database for users (pico /etc/pam.d/vsftpd)
auth required pam_mysql.so user=vsftpd passwd=yourpassword host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=yourpassword host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2
Make sure you remove everything else from the file
5. Create a local user that's used by the virtual users to authenticate
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
6. Restart vsftpd
/etc/init.d/vsftpd restart
7. Create user's home directory since vsftpd doesn't do it automatically
mkdir /var/www/user1
chown vsftpd:nogroup /var/www/user1
Sau một thời gian thử nghiệm, phiên bản chính thức của phần mềm văn phòng LibreOffice dành cho Linux đã chính thức xuất hiện. Nếu bạn muốn sử dụng để thay thế OpenOffice vốn cũ kỹ thì YêuMáyTính sẽ mách bạn cách sau đây :
1. Gỡ bỏ Open Office
Mở Terminal và gõ :sudo apt-get autoremove openoffice.org-*
2. Cài đặt LibreOffice thông qua PPAsudo add-apt-repository ppa:libreoffice/ppasudo apt-get updatesudo apt-get install libreoffice
3. Nếu bạn đang sử dụng Gnome thì cài thêm gói sau :sudo apt-get install libreoffice-gnome
4. Để mở chức năng biên tập file PDFsudo apt-get install libreoffice-pdfimport
5. Bật tính năng kiểm tra lỗi ngữ phápsudo apt-get install language-support-vi
Fix:
You could try to disable fastestmirror plugin and check if after that change yum will be working properly. To disable it do: edit /etc/yum/pluginconf.d/fastestmirror.conf and changeenabled = 1 to 0 or just remove plugin package: yum remove yum-fastestmirror or yum install yum-plugin-fastestmirror.
CHMOD – đó là phạm trù liên quan đến các files và thư mục, có chức năng chỉ ra cho server biết, ai có thể làm gì đối với file hay thư mục nào đó.
Chủ yếu CHMOD đưa ra các lệnh như quyền được đọc, viết vào file (hay thư mục), quyền thực hiện một công việc nhất định. Vì phần lớn các servers làm việc trên cơ sở hệ thống UNIX, nên chúng ta sẽ nghiên cứu về cách CHMOD chính cho các servers này.
Trên các hệ thống UNIX, người sử dụng được chia ra làm 3 nhóm: “user” (chủ nhân trực tiếp của các files), “group” (thành viên của nhóm mà người chủ nhân file có tham gia) và “world” (tất cả những trường hợp khác). Khi bạn kết nối với server, nó sẽ xác định xem bạn thuộc về nhóm nào.
Ví dụ bạn kết nối với server bằng FTP, khai báo tên truy cập như một thành viên, chính server sẽ quy bạn vào nhóm “user”. Còn những thành viên khác truy cập bằng FTP thuộc về nhóm “group”. Khi ai đó đến site của bạn bằng trình duyệt web, sẽ được quy vào nhóm “world”. Sau khi xác định nhóm, người sử dụng sẽ được gán quyền hạn nhất định đối với file hoặc thư mục nào đó.
Cụ thể là người sử dụng sẽ được đọc, ghi hay tạo mới (hoặc xóa) file. Để xem thư mục nào đó thì nó phải ủng hộ cho việc xem này. Để được xem nội dung thư mục, thì các files hay thư mục con trong đó cũng phải có chế độ “Cho phép đọc”.
Còn để tạo file hay thư mục mới nằm trong thư mục này lại đòi hỏi phải có quyền ghi. Tóm lại, để thực hiện một trong những việc trên, cần phải đặt vào thư mục chế độ “quyền đọc” và “quyền thực hiện”. Bây giờ chúng ta sẽ thực hành… Như trên đã nêu, có tất cả 3 nhóm người sử dụng và 3 “quyền hạn” đối với files hay thư mục.
Để xác định quyền hạn cho các nhóm nhất định, thống nhất sử dụng các ký hiệu bằng con số như sau: 4 = read (quyền được đọc) 2 = write (quyền được ghi) 1 = execute (quyền được thực hiện) Bằng phép cộng đơn giản các con số này có thể hiển thị được cả một “tổ hợp” quyền hạn khác nhau. Ví dụ:
* 3 (2+1) – quyền ghi và quyền thực hiện đối với file (hay thư mục);
* 5 (4+1) – quyền đọc và quyền thực hiện;
* 6 (4+2) – quyền đọc và quyền ghi;
* 7 (4+2+1) – quyền đọc, ghi và thực hiện.
Tóm lại có tất cả 7 phương án sau:
* 7 = read, write & execute
* 6 = read & write
* 5 = read & execute
* 4 = read
* 3 = write & execute
* 2 = write
* 1 = execute
Ký hiệu lệnh CHMOD thường có 3 con số: con số đầu thể hiện quyền hạn gán cho người sử dụng thuộc nhóm “user” (Tức là đối với bạn).
Con số thứ hai chỉ ra quyền hạn của người sử dụng thuộc nhóm “group” và con số thứ ba – dành cho nhóm “world”. Trong phần lớn các chương trình FTP hiện đại đều ủng hộ CHMOD theo kiểu nêu trên (Ví dụ, công cụ truy cập bằng FTP mạnh nhất hiện nay là CuteFTP) Thế nhưng cũng không thừa nếu như ta biết thêm về các lệnh của hệ thống UNIX. lệnh “chmod” trong UNIX có 2 chế độ: tuyệt đối (Bằng các con số) và bằng các ký hiệu chữ.
Khi sử dụng chế độ tuyệt đối (bằng các con số), thống nhất dùng tổ hợp 3 con số được nêu trên để thể hiện quyền hạn. Trong trường hợp sử dụng ký hiệu chữ, chúng ta sẽ bắt gặp những ký hiệu sau: “r” – quyền được đọc “w” – quyền được ghi “x” – quyền được thực hiện Ngoài ra còn có: “u” – đối với user “g” – đối với group “o” – đối với other (world) “a” – đối với all (tất cả)
Ví dụ: 755 = chmod u=rwx,go=rx filename; 644 = chmod u=rw,go=r filename; 600 = chmod u=rw,go= filename; 444 = chmod a=r filename.
CHMOD an toàn
Hiện nay có rất nhiều diễn đàn bị Local Attack và dẫn đến hiện tượng down forum rất nhiều . Bài hướng dẫn này không hoàn toàn có thể giúp các bạn chống được Local Attack mà chỉ hạn chế được phần nào. Nguyên nhân bị Local do những sai lầm chết người của các Admin, ngay cả VNMagic cũng mắc sai lầm rất đáng trách . – CHMOD sai, Forum của VNMagic CHMOD file conf_global. khong chap nhan php là 666 do đó dễ dàng bị Edit file và lỗi này được TQN khai thác liên tục mà Kingasawa không hề sửa đổi . Bản thân thư mục CHMOD la 755 do đó trên Server Linux, Config ko kỹ thì toàn bộ cấu trúc Folder và nội dung File đều có thể View được.
- Cấu trúc Forum ko có nhiều sửa đổi so với bản gốc nên attacker có thể dễ dành đoán biết vị trí các file quan trọng cần để lấy thông tin .
- Các thông tin quan trọng không hề được mã hóa .(cái này thì hạn chế một chút )
- Các thông tin quan trọng và các Action can thiệp đến CSDL ko được bảo vệ bởi các firewall Thực ra Local Attack có thể làm được rất nhiều thứ nguy hiểm hơn và khả năng chống cự là không thể nếu như bạn ko Zendcode và không có một Server tốt (có thể chống được Remview, CGI Telnet==> đây là hai công cụ Local rất tốt, chưa kể đến SSH Local nếu có Shell) Do đây là bài viết về bảo mật vả lại cũng ko muốn phổ biến kỹ thuật Hack nguy hiểm này nên tôi chỉ trình bày sơ qua các nguyên nhân dẫn đến tình trạng bị Local Attack rất phổ biến hiện nay ở VN .
Từ các phân tích trên có một số khuyến nghị tôi xin đưa ra để mọi người khắc phục :
- Mã hóa thông tin, các bạn có thể mã hóa thông tin lại và việc này sẽ vô hiệu hóa được việc các thông tin quan trọng của bạn bị đánh cắp .
- CHMOD cho đúng, các bước sau đây rất quan trọng để bạn chống Local nên đề nghị các bạn chú ý thực hiện cho đúng :
* CHMOD thư mục Public_html thành 710 thay vì 750 mặc định việc này sẽ giúp bạn bảo vệ được cấu trúc Website của mình.
* CHMOD thư mục là 701 và cố gắng đừng bao giờ CHMOD 777, có một số folder ko quan trọng, bạn có thể CHMOD 755 để có thể hiện thị đúng và đầy đủ một số nội dung trong Folder đó .
* CHMOD File là 604 và nhớ rằng đừng bao giờ để là 666 nếu có việc cần 666 thì bạn CHMOD tạm để sử dụng lúc đó, sau đó hãy CHMOD lại ngay. Đối với các Server hỗ trợ CHMOD file 404 bạn hãy CHMOD như vậy, ví dụ Server Eshockhost.net
Chú ý thế này, một số Server hỗ trợ CHMOD thư mục được 101, nếu Server của bạn hỗ trợ cái này thì hãy sử dụng nó, vì biện pháp CHMOD này rất an toàn, đến ngay cả Owner cũng ko thể xem được cấu trúc Folder ngay cả khi vào FTP. Hiện tôi chỉ thấy có Server của Eshockhost.net là hỗ trợ cái này
- Thay đổi cấu trúc, tên file mặc định có chứa các thông tin quan trọng . Nếu có thể hãy thay đổi cả cấu trúc CSDL nếu bạn làm được .
- Thiết lập các tường lửa truy cập Admin mà ko sử dụng đến CSDL, mã hóa User/Pass thì càng tốt, ngoài ra có hệ thống kiểm tra tác vụ của MOD, Admin … nếu quyền hạn xác nhận mới được thực hiện (cái này Matrix sử dụng rất thành công) .
Trên đây là hướng dẫn từng bước giúp các bạn cố gắng chống Local attack, dù sao đây cũng chỉ là hướng dẫn cơ bản, trong quá trình thực hiện, các bạn nên linh động hơn một chút, nếu có thêm ý tưởng gì mới thì hãy cùng nhau thảo luận tại đây.
Hy vọng bài viết sẽ giúp các Admin bảo mật tốt hơn cho site của mình.