Viblo Code
+1

Thiết lập một máy chú Linux đa chức năng

Thiết lập một máy chủ Linux đa chức năng#

Linux® đang ở thời điểm phát triển mạnh. Tính đến năm 2013 thì Linux đã ra đời được 22 năm, một hệ điều hành hoàn thiện với sự hỗ trợ cho một loạt các mô hình sử dụng. Nhưng thật khó khi nghĩ rằng Linux chỉ là một hệ điều hành—nó giống như một con tắc kè hoa thì đúng hơn. Nhân mô đun và tính linh hoạt của nó có thể xử lý trong nhiều mô hình sử dụng (từ siêu máy tính lớn nhất đến các thiết bị nhúng nhỏ nhất) đến mức thật khó phân loại nó vào bất cứ thứ gì khác hơn là một công nghệ khả dụng. Trong thực tế, Linux là một nền tảng. Nó là một công nghệ then chốt cho phép tạo ra các sản phẩm mới, mà một vài trong số các sản phẩm đó mới chỉ được giới thiệu gần đây.

Chúng ta sẽ bắt đầu với một máy chủ, bạn có thể tìm thấy trên Internet, lưu trữ các trang web. Bởi vì bạn có thể thích ứng với một máy chủ Internet để làm nhiều nhiệm vụ bổ sung, chẳng hạn như quản lý xác thực người dùng, cung cấp dịch vụ in ấn và tập tin, xử lý email địa phương, và cung cấp truy cập từ xa. Bạn có thể đưa máy chủ vào một web lưu trữ cơ sở, cắm nó vào, và bắt đầu cung cấp các dịch vụ web. Bạn thậm chí có thể giữ nó trong nhà riêng của bạn, nếu bạn có được một địa chỉ IP tĩnh từ ISP của bạn.

Thiết lập một máy chủ trên Internet có thể thay đổi quan điểm của bạn về máy tính. Triển khai một mạng diện rộng (WAN) khác từ việc sử dụng Linux như một máy tính để bàn, một tập tin và máy chủ in, hoặc một tường lửa đơn giản.

Hệ thống sẽ triển khai

  • A web server (Apache 2.0.x)
  • A mail server (Postfix)
  • A DNS server (BIND 9)
  • An FTP server (ProFTPD)
  • Mail delivery agents (POP3/POP3s/IMAP/IMAPs)
  • Webalizer for web site statistics.

1. Yêu cầu máy chủ

Bạn có thể sử dụng hầu như bất kỳ distribution Linux để cài đặt một web server. Trong ví dụ chúng ta sẽ sử dụng Debian. Để thiết lập một máy chủ Linux Internet, bạn sẽ cần một kết nối đến Internet và một địa chỉ IP tĩnh. Nếu bạn không thể có được một địa chỉ IP tĩnh, bạn có thể thiết lập hệ thống với địa chỉ ISP cho thuê của bạn và cấu hình nó tĩnh. Hãy chắc chắn rằng bạn biết bạn có bao lâu thuê chạy, trong trường hợp thay đổi địa chỉ IP của bạn trong khi hệ thống đang chạy. Bạn cũng sẽ cần một máy tính có ít nhất một CPU Pentium III, tối thiểu là 256 MB RAM và ổ cứng 10 GB. Rõ ràng, một CPU mới hơn và bộ nhớ bổ sung sẽ cung cấp hiệu suất tốt hơn.

2. Cài đặt Debian

Trình cài đặt sẽ hướng dẫn bạn thông qua một loạt các màn hình cài đặt. Khi bạn đạt đến màn hình được gọi là "Cấu hình Network," Debian đầu tiên cho thấy cấu hình của bạn mạng với DHCP. Bạn có thể làm điều đó nếu bạn có DHCP sẵn. Nếu không, Debian sẽ mặc định chọn một màn hình cho phép bạn cấu hình mạng của bạn bằng tay. Bạn sẽ được yêu cầu cung cấp tên máy của máy chủ, một tên miền, một gateway một địa chỉ IP, một netmask, và tên một máy chủ. Nếu bạn có một tên miền đã đăng ký và một địa chỉ IP tĩnh, bạn đã sẵn sàng để tiếp tục Nếu bạn không có một tên miền đã đăng ký, bạn sẽ cần một IP tĩnh. Bây giờ bạn đã cấu hình mạng của bạn, bạn có thể tiếp tục cài đặt nhiệm vụ đó hoàn thiện hệ thống cơ sở. Các kịch bản cài đặt Debian sẽ dẫn bạn thông qua các phần tiếp theo.

3. Đăng nhập từ xa

Khi bạn hoàn thành cài đặt, bạn phải đăng nhập vào máy chủ từ một giao diện điều khiển từ xa trên máy tính của bạn. Chúng tôi khuyên bạn nên tạo thêm administration từ hệ thống khác (thậm chí một máy tính xách tay), vì một máy chủ an toàn thường chạy trong chế độ calledheadless-có nghĩa là, nó không có màn hình hoặc bàn phím là gì. Nhận được sử dụng để điều hành của bạn máy chủ như thế này, như thể bạn đang ở một nơi sản xuất. Trên máy tính từ xa bạn cần chỉ một máy khách SSH, mà hầu như tất cả các bản phân phối Linux có và có thể được tải cho hệ điều hành khác.

Sau đây là điển hình của những gì bạn sẽ gặp phải trong lần đầu tiên bạn SSH tơi máy chủ Linux mới:

$ssh [email protected]
The authenticity of host 'server1.centralsoft.org (70.253.158.42)' can't
be established.
RSA key fingerprint is 9f:26:c7:cc:f2:f6:da:74:af:fe:15:16:97:4d:b3:e6.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added 'server1.centralsoft.org,70.253.158.42' (RSA)
to the list of known hosts.
Password:enter password for admin user here
Linux server1 2.6.8-2-386 #1 Thu May 19 17:40:50 JST 2005 i686 GNU/Linux
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 25 19:07:38 2005 from 70.255.197.162
[email protected]:~$

Tại thời điểm này, bạn đã thiết lập một kết nối từ xa và có thể thực hiện các nhiệm vụ như bạn đang nhìn vào hệ thống của bạn từ màn hình máy chủ của bạn. Nếu bạn muốn, bạn có có thể loại bỏ bất kỳ màn hình, bàn phím, chuột mà bạn đã kết nối với máy chủ của bạn.

4. Cấu hình mạng

Nếu bạn sử dụng DHCP trong khi cài đặt Debian, bây giờ bạn nên cấu hình của bạn máy chủ với một địa chỉ IP tĩnh, do đó bạn có thể thực hiện các thử nghiệm cần thiết sau này trong mục này. Nếu bạn đã có một địa chỉ IP công cộng và cấu hình nó như tĩnh, bạn có thể bỏ qua cho phần tiếp theo.

Nếu bạn đã cài đặt Debian với DHCP client từ router hoặc nhà cung cấp dịch vụ Internet, bạn cần phải cấu hình lại mạng.

Để thay đổi các thiết lập để sử dụng một địa chỉ IP tĩnh, bạn sẽ cần phải trở thành root và chỉnh sửa các tập tin /etc/network/interfaces để phù hợp với nhu cầu của bạn. Như một ví dụ, chúng ta sẽ sử dụng IP 70.153.258.42.

Tập tin cấu hình bắt đầu như thế này

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian
# installation
# (network, broadcast, and gateway are optional)
# The primary network interface
iface eth0 inet dhcp

Để thêm địa chỉ IP 70.153.258.42 đến giao diện eth0, chúng ta phải thay đổi tập tin giống như thế này (bạn sẽ có được một số thông tin từ ISP của bạn)

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian
# installation
# (network, broadcast, and gateway are optional)
auto eth0
iface eth0 inet static
address 70.153.258.42
netmask 255.255.255.248
network 70.153.258.0
broadcast 70.153.258.47
gateway 70.153.258.46

Sau khi sửa /etc/network/interfaces, khởi động lại network bằng cách:

$: /etc/init.d/networking restart

Sau đó, bạn sẽ cần phải chỉnh sửa /etc/resolv.conf và thêm nameserver để giải quyết Internet hostname tới địa chỉ IP tương ứng của chúng. Mặc dù chúng ta vẫn chưa cấu hình của chúng nameserver riêng, chúng tôi sẽ làm như vậy sau này trong chương này. Tại thời điểm này, chúng ta sẽ chỉ cần đặt một máy chủ DNS tối thiểu. Các máy chủ tên khác nên xác định địa chỉ IP của các máy chủ DNS được cung cấp bởi ISP của bạn. resolv.conf như sau:

search server
nameserver 70.153.258.42
nameserver 70.253.158.45
nameserver 151.164.1.8

Bây giờ sửa /etc/hosts và thêm địa chỉ IP:

127.0.0.1 localhost.localdomain localhost server1
70.153.258.42 server1.centralsoft.org server1

Để đặt hostname, nhập command như sau:

$: echo server1.centralsoft.org > /etc/hostname
$: /bin/hostname -F /etc/hostname

Bạn sẽ cần phải sử dụng các lệnh tương tự khi bạn thiết lập kết nối mạng thay thế tên miền forserver1.centralsoft.org bằng tên miền của bạn.

Tiếp theo, xác minh rằng bạn đã cấu hình tên máy của bạn một cách chính xác bằng cách chạy hostname command:

~$:hostname
server1
~$:hostname -f
server1.centralsoft.org

Nếu bạn nhận được kết quả này, bạn đã sẵn sàng để chuyển sang phần tiếp theo. Nếu không, hãy tìm trong các /etc/hostname file. Bạn có thể thấy rằng nó trông như thế này:

#less /etc/hostname
server1

Rất tiếc. Nó nên đọc server1.centralsoft.org. Bạn có thể thay đổi nó bây giờ

5. Thay đổi Default Debian Packages

Debian team đã chọn cài đặt theo mặc định các dịch vụ thích hợp cho một mạng LAN như Network File System (NFS). Nhưng chúng ta đang đặt máy chủ trên Internet, vì vậy chúng ta sẽ xóa NFS và một số dịch vụ khác, trong khi bổ sung những thứ khác như OpenSSL.

Để lấy các thông tin cần thiết cho mục này, thực hiện lệnh sau:

~$:apt-get install wget bzip2 rdate fetchmail libdb3++-dev \
unzip zip ncftp xlispstat libarchive-zip-perl \
zlib1g-dev libpopt-dev nmap openssl lynx fileutils

Sau đó bạn sẽ thấy Debian tải file trong giao diện console. Ngay sau đó, các hoạt động download sẽ dừng lại và bạn sẽ thấy một câu hỏi như sau đây yêu cầu bạn nếu bạn muốn tiếp tục:

0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.2MB of archives.
After unpacking 35.8MB of additional disk space will be used.
Do you want to continue? [Y/n]

Nhập Y để hoàn thành việc download các files bổ sung.

Tiếp theo, bạn sẽ muốn loại bỏ những service mà bạn sẽ không sử dụng. Thực hiện lệnh sau, và bạn sẽ thấy kết quả sau đó:

~$:apt-get remove lpr nfs-common portmap pidentd pcmcia-cs \
pppoe pppoeconf ppp pppconfig
Reading Package Lists... Done
Building Dependency Tree... Done
Package pcmcia-cs is not installed, so not removed
The following packages will be REMOVED:
lpr nfs-common pidentd portmap ppp pppconfig pppoe pppoeconf
0 upgraded, 0 newly installed, 8 to remove and 0 not upgraded.
Need to get 0B of archives.
After unpacking 3598kB disk space will be freed.
Do you want to continue? [Y/n]Y
(Reading database ... 22425 files and directories currently installed.)
Removing lpr ...
Stopping printer spooler: lpd .
Removing nfs-common ...
Stopping NFS common utilities: statd.
Removing pidentd ...
Removing portmap ...
Stopping portmap daemon: portmap.
Removing pppoeconf ...
Removing pppoe ...
Removing pppconfig ...
Removing ppp ...
Stopping all PPP connections...done.

Kể từ khi bạn đã thực hiện những thay đổi trong package databases, bạn cần phải thay đổi kịch bản bắt đầu vào lúc khởi động. Sử dụng các lệnh sau đây để thay đổi khởi động kịch bản:

~$:update-rc.d -f exim remove
Removing any system startup links for /etc/init.d/exim ...
~$:update-inetd --remove daytime
~$:update-inetd --remove telnet
~$:update-inetd --remove time
~$:update-inetd --remove finger
~$:update-inetd --remove talk
~$:update-inetd --remove ntalk
~$:update-inetd --remove ftp
~$:update-inetd --remove discard

Để khởi động lại inetd bằng cách sử dụng tập tin cấu hình mặc định, nhập:

#/etc/init.d/inetd reload

Bạn sẽ thấy message sau ở console:

Reloading internet superserver: inetd

6. Thiết lập Quotas

Máy chủ web Apache cho Linux khả năng cung cấp hosting ảo, nghĩa là máy chủ có thể lưu trữ một số trang web với các tên miền khác với tên của máy chủ vật lý. Trong tập tin cấu hình máy chủ web, bạn có thể xác định các tên miền khác nhau sử dụng các khoản lưu trữ ảo. Ví dụ, mặc dù các tên miền được sử dụng là centralsoft.org, chúng ta có thể có mothersmagic.com, wildbills.info, hoặc bất kỳ tên miền khác mà chúng ta đăng ký và sử dụng địa chỉ IP giống nhau.

Linux cung cấp một phương tiện để quản lý việc sử dụng ổ cứng cho nhiều tên miền thông qua một cơ sở gọi là quota. Ban đầu, Unix cung cấp hạn ngạch trên tài khoản người dùng để họ sẽ không chiếm quá nhiều chỗ trên một máy chủ. Ví dụ, nếu bạn đã có 50 người sử dụng chia sẻ không gian ổ cứng trên một máy chủ tập tin, mà không có một hệ thống hạn ngạch một người sử dụng có thể điền vào các ổ cứng, gây nên việc tất cả các ứng dụng của người dùng từ chối lưu nhiều hơn bất kỳ dữ liệu.

Một quota bắt buộc người sử dụng dưới giới hạn tiêu thụ ổ cứng của họ, lấy đi khả năng tiêu thụ không gian ổ cứng không giới hạn trên một hệ thống. Hệ thống theo dõi hạn ngạch cho mỗi người dùng và mỗi hệ thống tập tin. Nếu bạn có nhiều hơn một hệ thống tập tin mà người sử dụng có thể tạo ra các tập tin, thiết lập cơ sở cho mỗi hệ thống tập tin riêng biệt.

Đầu tiên, cài đặt quota package sử dụng apt-get:

#apt-get install quota quotatool

Bạn sẽ gặp một câu hỏi như sau:

Enable this option if you want the warnquota utility to be run daily to alert users
when they are over quota.
Send daily reminders to users over quota?
<Yes>             <No>

Tại thời điểm này, chọn No.

Debian sẽ được cài đặt và cấu hình hai gói, nhưng bạn sẽ phải chỉnh sửa /etc/fstab cho phép hạn ngạch trên mỗi hệ thống tập tin mà bạn muốn. Bởi vì hệ thống của chúng tôi đã chỉ một phân vùng cho tất cả các tập tin người dùng, bạn có thể chỉ cần thêm usrquotagrpquota lựa chọn để phân vùng với những điểm mount /:

# /etc/fstab: static filesystem information.
#
# <filesystem> <mount point>   <type>   <options> <dump> <pass>
proc           /proc           proc     defaults  0      0
/dev/sda1      /               ext3     defaults,errors=remountro,usrquota,grpquota 0 1
/dev/sda5      none            swap     sw        0      0
/dev/hdc       /media/cdrom0   iso9660  ro,user,noauto 0 0
/dev/fd0       /media/floppy0  auto     rw,user,noauto 0 0

Bây giờ, hãy thực hiện các câu lệnh sau để add các file vào thư mục root:

#touch /quota.user /quota.group
#chmod 600 /quota.*
#mount -o remount /
#quotacheck -avugm

Bạn sẽ thấy thông báo sau trên console:

quotacheck: Scanning /dev/hda1 [/] done
quotacheck: Checked 1912 directories and 28410 files

Thực hiện tiếp câu lệnh sau:

#quotaon -avug

Bạn sẽ thấy thông báo

/dev/hda1 [/]: group quotas turned on
/dev/hda1 [/]: user quotas turned on

Như vậy, usrquotagrpquota đã được cài đặt và bật lên.

7. Cung cấp tên miền dịch vụ

Debian cung cấp một phiên bản ổn định của BIND trong các repositories của nó. Chúng tôi sẽ cài đặt và thiết lập BIND và đảm bảo nó trong môi trường chroot, có nghĩa là nó sẽ không thể nhìn thấy hoặc truy cập các file bên ngoài cây thư mục riêng của mình. Đây là một kỹ thuật bảo mật quan trọng. Thuật ngữ chroot đề cập đến những thủ thuật của việc thay đổi hệ thống tập tin gốc (thư mục /) cho một quá trình nhìn thấy, vì vậy mà hầu hết các hệ thống này là có hiệu quả không thể tiếp cận với nó.

Để cài đặt BIND trên server của bạn, thực hiện câu lệnh sau:

#apt-get install bind9

Debian sẽ tải và cấu hình các tập tin như là một dịch vụ Internet. Bạn sẽ nhìn thấy thông báo sau trên console:

Setting up bind9 (9.2.4-1)
Adding group `bind' (104)
Done.
Adding system user `bind'
Adding new user `bind' (104) with group `bind'.
Not creating home directory.
Starting domain name service: named.

Để đặt BIND trong một môi trường an toàn, bạn cần phải tạo một thư mục nơi mà các dịch vụ có thể chạy không tiếp xúc với các quá trình khác. Bạn cũng sẽ chạy nó như một đặc quyền, người sử dụng, nhưng chỉ có root sẽ có thể truy cập vào thư mục đó.

Dừng service sử dụng lệnh sau:

#/etc/init.d/bind9 stop

Tiếp theo, chỉnh sửa các tập tin /etc/default/bind9 để các daemon sẽ chạy như là không có đặc quyền người sử dụng bind, chroot /var/lib/named. Thay đổi dòng:

OPTS="-u bind"

để nó đọc

OPTIONS="-u bind -t /var/lib/named"

Để cung cấp một môi trường hoàn chỉnh cho việc chạy BIND, tạo ra các thư mục cần thiết dưới /var/lib:

#mkdir -p /var/lib/named/etc
#mkdir /var/lib/named/dev
#mkdir -p /var/lib/named/var/cache/bind
#mkdir -p /var/lib/named/var/run/bind/run

Sau đó di chuyển các thư mục config từ /etc sang /var/lib/named/etc

#mv /etc/bind /var/lib/named/etc

Tiếp theo, tạo ra một liên kết tượng trưng đến thư mục config mới từ vị trí cũ, để tránh các vấn đề khi BIND được nâng cấp trong tương lai:

#ln -s /var/lib/named/etc/bind /etc/bind

Làm cho thiết bị null hoặc ngẫu nhiên để sử dụng bởi BIND, và sửa chữa các điều khoản của thư mục:

#mknod /var/lib/named/dev/null c 1 3
#mknod /var/lib/named/dev/random c 1 8

Sau đó, thay đổi quyền và quyền sở hữu trên các tập tin:

#chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
#chown -R bind:bind /var/lib/named/var/*
#chown -R bind:bind /var/lib/named/etc/bind

Bây giờ khởi động lại quá trình logging với lệnh:

#/etc/init.d/sysklogd restart

Bạn sẽ thấy thông báo sau:

Restarting system log daemon: syslogd.

Cuối cùng bắt đầu BIND:

#/etc/init.d/bind9 start

Kiểm tra bất kỳ lỗi nào tại /var/log/syslog:

#less /var/log/syslog

Bây giờ, chúng ta hãy kiểm tra xem liệu tên là hoạt động mà không có bất kỳ rắc rối. thi hành lệnh này, và bạn sẽ thấy những kết quả:

server1:/home/admin#rndc status
number of zones: 6
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running
server1:/home/admin#

Nếu DNS không chạy đúng, sẽ xuất hiện thông báo giống như sau:

server1:~#rndc status
rndc: neither /etc/bind/rndc.conf nor /etc/bind/rndc.key was found
server1:~#

Đối với thời điểm này, chúng tôi đã không thiết lập primary zone files hoặc cấu hình DNS cho hệ thống cho bất cứ điều gì khác hơn là một máy chủ bộ nhớ đệm, mà phổ biến là bộ nhớ cache mỗi khi ai đó yêu cầu một trang web.

Mặc dù nhiều người không để nhấn mạnh tầm quan trọng của DNS,nhưng làm chủ DNS là rất quan trọng bởi vì rất nhiều các dịch vụ khác phụ thuộc vào nó. Bạn sẽ tìm thấy DNS là một thành phần quan trọng của hầu hết các dịch vụ Internet hệ thống perform.

Nội dung phần tiếp theo sẽ được trình bày trong bài viết sau:

  • Adding a Relational Database: MySQL
  • Cấu hình thư an toàn với Postfix, POP3 và IMAP
  • Làm việc với Apache
  • Thêm FTP service với ProFTPD
  • Tổng kết thống kê Web với Webalizer
  • Đồng bộ hóa đồng hồ hệ thống
  • Việc cài đặt Perl module cần thiết bởi SpamAssassin

Tài liệu tham khảo


All Rights Reserved