Thứ tư, 14/01/2015 | 00:00 GMT+7

Các bước được đề xuất cho server FreeBSD 10.1 mới

Khi cài đặt server FreeBSD mới, bạn có thể thực hiện một số bước tùy chọn để đưa server của bạn sang trạng thái thân thiện với production hơn. Trong hướng dẫn này, ta sẽ đề cập đến một số ví dụ phổ biến nhất.

Ta sẽ xem xét cách cài đặt firewall đơn giản, dễ cấu hình để từ chối hầu hết lưu lượng truy cập. Ta cũng sẽ đảm bảo múi giờ server của bạn phản ánh chính xác vị trí của nó. Ta sẽ cài đặt tính năng thăm dò NTP để giữ cho thời gian của server chính xác và cuối cùng, ta sẽ trình bày cách thêm một số không gian swap bổ sung vào server của bạn.

Trước khi bắt đầu với hướng dẫn này, bạn nên đăng nhập và cấu hình môi trường shell của bạn theo cách bạn muốn. Bạn có thể xem cách thực hiện việc này theo hướng dẫn này .

Cách cấu hình firewall IPFW đơn giản

Nhiệm vụ đầu tiên mà ta sẽ giải quyết là cài đặt một firewall đơn giản để bảo vệ server của ta .

FreeBSD thực sự hỗ trợ và bao gồm ba firewall riêng biệt, mỗi firewall có điểm mạnh và điểm yếu riêng. Chúng được gọi là pf , ipfwipfilter . Trong hướng dẫn này, ta sẽ sử dụng ipfw vì ta có thể dễ dàng cài đặt và chạy với firewall trạng thái, an toàn.

Cấu hình firewall cơ bản

Hầu hết tất cả cấu hình của ta sẽ diễn ra trong file /etc/rc.conf . Mở file đó với quyền sudo trong editor :

sudo vi /etc/rc.conf 

Bên trong, ta sẽ phải thêm một số dòng khác nhau để kích hoạt và kiểm soát cách hoạt động của firewall ipfw . Hãy bắt đầu với các luật thiết yếu. Thêm những thứ này vào cuối file :

. . .  firewall_enable="YES" firewall_quiet="YES" 

Như bạn có thể mong đợi, dòng đầu tiên kích hoạt firewall ipfw , khởi động nó tự động khi khởi động và cho phép khởi động nó bằng các lệnh service thông thường.

Lệnh thứ hai yêu cầu ipfw không xuất bất kỳ thứ gì ra tiêu chuẩn khi nó thực hiện các hành động nhất định. Điều này có vẻ như là một vấn đề ưu tiên, nhưng nó thực sự ảnh hưởng đến chức năng của firewall .

Hai yếu tố kết hợp để làm cho điều này trở thành một lựa chọn quan trọng. Đầu tiên là kịch bản cấu hình firewall được thực thi trong môi trường shell hiện tại, không phải là tác vụ nền. Thứ hai là khi lệnh ipfw đọc một tập lệnh cấu hình mà không có cờ “yên tĩnh”, nó lần lượt đọc và xuất ra từng dòng theo tiêu chuẩn. Khi nó xuất ra một dòng, nó ngay lập tức thực hiện hành động liên quan.

Hầu hết các file cấu hình firewall xóa các luật hiện tại ở đầu tập lệnh để bắt đầu với một phương tiện chặn rõ ràng. Nếu firewall ipfw gặp một dòng như thế này mà không có cờ yên tĩnh, nó sẽ ngay lập tức xóa tất cả các luật và hoàn nguyên về policy mặc định của nó, thường là từ chối tất cả các kết nối. Nếu bạn đang cấu hình firewall qua SSH, điều này sẽ làm mất kết nối, đóng phiên shell hiện tại và không có luật nào tuân theo sẽ được xử lý, khóa bạn khỏi server một cách hiệu quả. Cờ yên tĩnh về cơ bản cho phép firewall xử lý các luật như một tập hợp thay vì triển khai từng luật riêng lẻ.

Sau hai dòng này, ta có thể bắt đầu cấu hình hành vi của firewall :

. . .  firewall_type="workstation" firewall_myservices="22 80" firewall_allowservices="any" firewall_logdeny="YES" 

Đầu tiên, ta chọn “máy trạm” làm loại firewall mà ta sẽ cấu hình. Đây là một firewall trạng thái với một số hành vi mặc định tốt. Nó cũng cho phép ta dễ dàng tùy chỉnh các dịch vụ ta muốn khách hàng để có thể truy cập bằng cách sử dụng các firewall_myservicesfirewall_allowservices tùy chọn. Cuối cùng, ta cấu hình ipfw để ghi lại bất kỳ kết nối nào bị từ chối bởi các luật đã cấu hình.

Tùy chọn firewall_myservices nên được đặt thành danh sách các cổng hoặc dịch vụ TCP, được phân tách bằng dấu cách, có thể truy cập được trên server của bạn. Bạn có thể sử dụng các cổng như ta có ở đây ( ta đã cấu hình cổng 22 cho kết nối SSH và cổng 80 cho web server HTTP thông thường). Bạn cũng có thể sử dụng các dịch vụ theo tên. Các dịch vụ mà FreeBSD biết theo tên được liệt kê trong file /etc/services . Ví dụ: ta có thể thay đổi ở trên thành thông tin như thế này:

firewall_myservices="ssh http" 

Điều này sẽ có kết quả tương tự. Nếu bạn sử dụng SSL trên web server của bạn , hãy đảm bảo thêm cổng 443 hoặc dịch vụ https vào danh sách này.

Các mục danh sách firewall_allowservices là các client nên được phép truy cập vào các dịch vụ được cung cấp. Từ khóa “bất kỳ” nghĩa là bất kỳ khách hàng nào cũng có thể truy cập các dịch vụ này. Nếu ta muốn giới hạn những khách hàng có thể kết nối với dịch vụ của ta , ta có thể làm điều đó tại đây.

Tùy chọn firewall_logdeny yêu cầu ipfw ghi lại tất cả các nỗ lực kết nối bị từ chối vào một file nằm tại /var/log/security .

Tất cả cùng nhau, phần này của file /etc/rc.conf sẽ trông giống như sau:

. . .  firewall_enable="YES" firewall_quiet="YES" firewall_type="workstation" firewall_myservices="22 80" firewall_allowservices="any" firewall_logdeny="YES" 

Hãy nhớ điều chỉnh tùy chọn firewall_myservices để tham chiếu đến các dịch vụ bạn muốn hiển thị cho khách hàng. Khi bạn hoàn tất, hãy lưu file .

Cho phép kết nối UDP

Các cổng và dịch vụ được liệt kê trong tùy chọn firewall_myservices trong file /etc/rc.conf cho phép truy cập các kết nối TCP. Nếu bạn có các dịch vụ mà bạn muốn hiển thị sử dụng UDP, bạn cần chỉnh sửa file /etc/rc.firewall :

sudo vi /etc/rc.firewall 

Ta đã cấu hình firewall của bạn để sử dụng loại firewall “máy trạm”, vì vậy hãy tìm phần giống như sau:

. . .  [Ww][Oo][Rr][Kk][Ss][Tt][Aa][Tt][Ii][Oo][Nn])  . . . 

Có một phần trong khối này là dành riêng cho xử lý firewall_allowservicesfirewall_myservices giá trị mà ta cài đặt . Nó sẽ trông giống thế này:

for i in ${firewall_allowservices} ; do   for j in ${firewall_myservices} ; do     ${fwcmd} add pass tcp from $i to me $j   done done 

Sau phần này, bạn có thể thêm bất kỳ dịch vụ hoặc cổng nào chấp nhận gói UDP bằng cách thêm các dòng như sau:

${fwcmd} add pass udp from any to me port_num 

Trong ví dụ trên, bạn có thể để từ khóa “bất kỳ” nếu kết nối được phép cho tất cả các client hoặc thay đổi nó thành địa chỉ IP hoặc dải mạng cụ thể. port_num ở trên phải được thay thế bằng số cổng hoặc tên dịch vụ mà bạn muốn cho phép truy cập UDP. Ví dụ: nếu bạn đang chạy một server DNS, bạn có thể cần có một dòng trông giống như sau:

for i in ${firewall_allowservices} ; do   for j in ${firewall_myservices} ; do     ${fwcmd} add pass tcp from $i to me $j   done done  ${fwcmd} add pass udp from 192.168.2.0/24 to me 53 

Điều này sẽ cho phép bất kỳ client nào từ trong phạm vi mạng 192.168.2.0/24 truy cập server DNS hoạt động trên cổng tiêu chuẩn 53. Lưu ý trong ví dụ này, bạn cũng muốn mở cổng này cho các kết nối TCP vì cổng này được sử dụng bởi DNS server để trả lời lâu hơn.

Lưu file khi bạn hoàn tất.

Khởi động firewall

Khi bạn hoàn thành cấu hình của bạn , bạn có thể khởi động firewall bằng lệnh :

sudo service ipfw start 

Tường lửa phải xuất hiện chính xác, chặn lưu lượng truy cập không mong muốn trong khi tuân theo các dịch vụ và cổng được phép của bạn. Tường lửa này sẽ tự động khởi động mỗi lần khởi động.

Ta cũng muốn cấu hình giới hạn về số lần từ chối trên mỗi địa chỉ IP mà ta sẽ ghi lại. Điều này sẽ ngăn không cho log của ta được lấp đầy bởi một user duy nhất, liên tục. Bạn có thể thực hiện việc này trong file /etc/sysctl.conf :

sudo vi /etc/sysctl.conf 

Ở cuối file , ta có thể giới hạn ghi log của bạn ở mức “5” bằng cách thêm:

net.inet.ip.fw.verbose_limit=5  

Lưu file khi bạn hoàn tất. Điều này sẽ cấu hình cài đặt đó trong lần khởi động tiếp theo.

Để thực hiện hành vi tương tự này cho phiên hiện đang hoạt động của bạn, ta có thể sử dụng chính lệnh sysctl , như sau:

sudo sysctl net.inet.ip.fw.verbose_limit=5 

Điều này sẽ ngay lập tức thực hiện giới hạn cho lần khởi động này.

Cách đặt múi giờ cho server của bạn

Bạn nên đặt đúng múi giờ cho server của bạn . Đây là bước quan trọng khi ta cấu hình đồng bộ hóa thời gian NTP trong phần tiếp theo.

FreeBSD đi kèm với một công cụ dựa trên menu gọi là tzsetup để cấu hình múi giờ. Để đặt múi giờ cho server của bạn, hãy gọi lệnh này với các quyền sudo :

sudo tzsetup 

Bạn sẽ thấy màn hình menu đầu tiên hỏi xem đồng hồ phần cứng của bạn được đặt thành UTC hay giờ local :

FreeBSD UTC hoặc giờ  local

Chọn “Không” ở đây. Tiếp theo, bạn cần chọn khu vực trên thế giới mà server của bạn đang đặt:

Khu vực FreeBSD trên thế giới

Tiếp theo, bạn cần chọn một vùng phụ hoặc quốc gia:

Quốc gia FreeBSD

Cuối cùng, chọn múi giờ cụ thể phù hợp với server của bạn:

Múi giờ FreeBSD

Xác nhận lựa chọn múi giờ được hiển thị dựa trên lựa chọn của bạn.

Đến đây, múi giờ của server của bạn phải trùng với lựa chọn bạn đã thực hiện.

Cách cấu hình NTP để giữ thời gian chính xác

Bây giờ ta đã cấu hình múi giờ trên server của bạn , ta có thể cài đặt NTP, hoặc Giao thức thời gian mạng, trên server của bạn . Điều này sẽ giúp giữ cho thời gian của server của bạn đồng bộ với những người khác trên toàn thế giới. Điều này rất quan trọng đối với các tương tác giữa client và server nhạy cảm với thời gian cũng như ghi log chính xác.

, ta có thể bật dịch vụ NTP trên server của bạn bằng cách điều chỉnh file /etc/rc.conf . Mở cái này với các quyền của sudo :

sudo vi /etc/rc.conf 

Trong file này, thêm dòng sau:

ntpd_enable="YES" 

Ta cũng cần thêm dòng thứ hai sẽ đồng bộ thời gian trên máy của ta với các server NTP từ xa khi khởi động. Điều này là cần thiết vì nó cho phép server của ta vượt quá giới hạn trôi dạt bình thường khi khởi tạo. Server của ta có thể sẽ nằm ngoài giới hạn trôi dạt khi khởi động vì múi giờ của ta sẽ được áp dụng trước khi khởi động daemon NTP, điều này sẽ bù đắp thời gian hệ thống của ta :

ntpd_enable="YES" ntpd_sync_on_start="YES" 

Nếu ta không có dòng này, daemon NTP của ta sẽ không thành công khi khởi động do cài đặt múi giờ làm lệch thời gian hệ thống của ta trước khi quá trình khởi động.

Lưu file khi bạn hoàn tất.

Bạn có thể bắt đầu dịch vụ ntpd của bạn bằng lệnh :

sudo service ntpd start 

Điều này sẽ duy trì thời gian của server của bạn bằng cách đồng bộ hóa với các server NTP được liệt kê trong /etc/ntp.conf .

Cách cấu hình không gian swap bổ sung

Trên các server FreeBSD được cấu hình trên DigitalOcean, 1 Gigabyte không gian swap được tự động cấu hình dù kích thước server của bạn. Bạn có thể thấy điều này bằng lệnh :

sudo swapinfo -g 

Nó sẽ hiển thị thông tin như thế này:

Device          1G-blocks     Used    Avail Capacity /dev/gpt/swapfs         1        0        1     0% 

Một số user và ứng dụng có thể cần nhiều không gian swap hơn mức này. Điều này có thể dễ dàng thực hiện bằng cách thêm file swap .

Điều đầu tiên ta cần làm là phân bổ một phần của hệ thống file cho file ta muốn sử dụng để swap . Ta sẽ sử dụng lệnh truncate , có thể nhanh chóng phân bổ không gian khi đang di chuyển.

Trong hướng dẫn này, ta sẽ đặt file swap tại /swapfile , nhưng bạn có thể sử dụng bất kỳ vị trí hợp lý nào trong hệ thống file . Tệp này sẽ cung cấp thêm 1 Gigabyte dung lượng swap . Bạn có thể điều chỉnh con số này bằng cách sửa đổi giá trị được cung cấp cho tùy chọn -s .

sudo truncate -s 1G /swapfile 

Sau khi ta phân bổ không gian, ta cần khóa quyền truy cập vào file . User bình thường sẽ không có bất kỳ quyền truy cập nào vào file :

sudo chmod 0600 /swapfile 

Tiếp theo, liên kết một thiết bị giả với file của ta và cấu hình nó để mount khi khởi động bằng lệnh :

sudo sh -c 'echo "md99 none swap sw,file=/swapfile,late 0 0" >> /etc/fstab' 

Lệnh trên thêm một dòng giống như thế này vào file /etc/fstab :

md99 none swap sw,file=/swapfile,late 0 0 

Sau khi dòng được thêm vào file /etc/fstab ta , ta có thể kích hoạt file swap cho phiên bằng lệnh :

sudo swapon -aqL 

Ta có thể xác minh file swap hiện đang hoạt động bằng cách sử dụng lại lệnh swapinfo :

sudo swapinfo -g 

Bạn sẽ thấy thiết bị bổ sung ( /dev/md99 ) được liên kết với file swap của bạn:

Device          1G-blocks     Used    Avail Capacity /dev/gpt/swapfs         1        0        1     0% /dev/md99               1        0        1     0% Total                   2        0        2     0% 

Tệp swap này sẽ được tự động gắn vào mỗi lần khởi động.

Kết luận

Các bước được nêu trong hướng dẫn này được dùng để đưa server FreeBSD của bạn vào trạng thái sẵn sàng production hơn. Bằng cách cấu hình các yếu tố cơ bản cần thiết như firewall , đồng bộ hóa NTP và không gian swap thích hợp, server của bạn được dùng làm cơ sở tốt cho các cài đặt và dịch vụ trong tương lai.


Tags:

Các tin liên quan