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 , ipfw và ipfilter . 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_myservices và firewall_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_allowservices và firewall_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 :
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:
Tiếp theo, bạn cần chọn một vùng phụ hoặc quốc gia:
Cuối cùng, chọn múi giờ cụ thể phù hợp với server của bạn:
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.
Các tin liên quan
 

