Các bước được đề xuất cho server FreeBSD 12.0 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ẽ cài đặt mộ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, 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 là cài đặt một firewall đơn giản để bảo mật server của bạn.
FreeBSD hỗ trợ và bao gồm ba firewall riêng biệt. Chúng được gọi là pf
, ipfw
và ipfilter
. Trong hướng dẫn này, ta sẽ sử dụng ipfw
làm firewall . ipfw
là một firewall trạng thái, an toàn được viết và duy trì như một phần của FreeBSD.
Cấu hình firewall cơ bản
Hầu hết tất cả cấu hình của bạn sẽ diễn ra trong file /etc/rc.conf
. Để sửa đổi cấu hình, bạn sẽ sử dụng lệnh sysrc
, lệnh này cho phép user thay đổi cấu hình trong /etc/rc.conf
một cách an toàn. Bên trong file này, bạn sẽ 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
. Bạn sẽ bắt đầu với các luật thiết yếu; chạy lệnh sau để bắt đầu:
- sudo sysrc firewall_enable="YES"
Mỗi lần bạn chạy sysrc
để sửa đổi cấu hình của bạn , bạn sẽ nhận được kết quả hiển thị các thay đổi:
Outputfirewall_enable: NO -> YES
Như bạn có thể mong đợi, lệnh đầu tiên này kích hoạt firewall ipfw
, tự động khởi động nó khi khởi động và cho phép khởi động nó bằng các lệnh service
thông thường.
Bây giờ chạy như sau:
- sudo sysrc firewall_quiet="YES"
Điều này cho biết 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ờ "quiet"
, 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 mới. 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 gián đoạn 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 lặng cho phép firewall xử lý các luật dưới dạng một tập hợp thay vì triển khai từng luật riêng lẻ.
Sau hai dòng này, bạn có thể bắt đầu cấu hình hoạt động của firewall . Bây giờ chọn "workstation"
làm loại firewall bạn sẽ cấu hình :
- sudo sysrc firewall_type="workstation"
Điều này đặt firewall để bảo vệ server mà bạn đang cấu hình firewall bằng các luật trạng thái. Tường lửa trạng thái theo dõi trạng thái của các kết nối mạng theo thời gian và lưu trữ thông tin về các kết nối này trong bộ nhớ trong một thời gian ngắn. Do đó, không chỉ có thể xác định các luật về những kết nối mà firewall sẽ cho phép, mà firewall trạng thái cũng có thể sử dụng dữ liệu mà nó đã học được về các kết nối trước đó để đánh giá kết nối nào có thể được thực hiện.
Các /etc/rc.conf
file cũng cho phép bạn tùy chỉnh các dịch vụ mà bạn 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.
Chạy lệnh sau để mở các cổng có thể truy cập được trên server của bạn, chẳng hạn như cổng 22
cho kết nối SSH của bạn và cổng 80
cho web server HTTP thông thường. 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
:
- sudo sysrc firewall_myservices="22/tcp 80/tcp 443/tcp"
Tùy chọn firewall_myservices
đượ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.
Lưu ý: 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ụ: bạn có thể thay đổi lệnh trước đó thành thông tin như sau:
- firewall_myservices="ssh http https"
Điều này sẽ có kết quả tương tự.
Tùy chọn firewall_allowservices
liệt kê các mục được phép truy cập các dịch vụ được cung cấp. Do đó, nó cho phép bạn giới hạn quyền truy cập vào các dịch vụ tiếp xúc của bạn (từ firewall_myservices
) đối với các máy hoặc phạm vi mạng cụ thể. Ví dụ: điều này có thể hữu ích nếu bạn muốn một máy lưu trữ nội dung web cho mạng nội bộ của công ty. Từ khóa "any"
nghĩa là bất kỳ IP nào cũng có thể truy cập các dịch vụ này, đặt chúng hoàn toàn công khai:
- sudo sysrc firewall_allowservices="any"
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
. Chạy lệnh sau để cài đặt điều này:
- sudo sysrc firewall_logdeny="YES"
Để kiểm tra những thay đổi bạn đã thực hiện đối với cấu hình firewall , hãy chạy lệnh sau:
- grep 'firewall' /etc/rc.conf
Phần này của file /etc/rc.conf
sẽ giống như sau:
Outputfirewall_enable="YES" firewall_quiet="YES" firewall_type="workstation" firewall_myservices="22 80 443" 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.
Cho phép kết nối UDP (Tùy chọn)
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
Bạn đã cấu hình firewall của bạn để sử dụng loại firewall "workstation"
, 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à bạn 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 vi
, nhấn i
để chuyển sang chế độ INSERT
và thêm nội dung của bạn, sau đó lưu file bằng cách nhấn ESC
, gõ :wq
và nhấn ENTER
. Trong ví dụ trước, bạn có thể để từ khóa "any"
nếu kết nối được cho 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
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 vào 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 server DNS để 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 sẽ khởi động 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.
Bạn 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à bạn sẽ ghi lại. Điều này sẽ ngăn không cho log của bạn đượ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 , bạn có thể giới hạn ghi log của bạn ở mức "5"
bằng cách thêm dòng sau:
... 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 mà không cần khởi động lại, bạn 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 bạn 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
Đầu tiên, bạn cần chọn khu vực trên thế giới mà server của bạn đặt:
Tiếp theo, bạn cần chọn một vùng phụ hoặc quốc gia:
Lưu ý: Để chuyển các menu này, bạn cần sử dụng phím PAGE UP
và PAGE DOWN
. Nếu bạn không có những thứ này trên bàn phím, bạn có thể sử dụng FN
+ DOWN
hoặc FN
+ UP
.
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
Đến đây bạn đã cấu hình múi giờ trên server của bạn , bạn có thể cài đặt NTP hoặc Giao thức thời gian mạng. Đ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.
, bạn 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
. Chạy lệnh sau để thêm dòng ntpd_enable="YES"
vào file :
- sudo sysrc ntpd_enable="YES"
Bạn cũng cần thêm dòng thứ hai sẽ đồng bộ thời gian trên máy của bạn với 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 bạn vượt quá giới hạn trôi bình thường khi khởi tạo. Server của bạn 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 bạn 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 bạn:
- sudo sysrc ntpd_sync_on_start="YES"
Nếu bạn không có dòng này, daemon NTP của bạn sẽ bị lỗi khi khởi động do cài đặt múi giờ làm lệch thời gian hệ thống của bạn trước khi quá trình khởi động.
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:
OutputDevice 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ực hiện bằng cách thêm một file swap .
Điều đầu tiên bạn cần làm là phân bổ một phần của hệ thống file cho file bạn muốn sử dụng để swap . Bạn sẽ sử dụng lệnh truncate
, lệnh này có thể nhanh chóng phân bổ không gian một cách nhanh chóng.
Ta sẽ đặt file swapfile trong /swapfile
cho hướng dẫn này nhưng bạn có thể đặt file ở bất kỳ đâu bạn muốn, như /var/swapfile
chẳng hạn. 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 phân bổ không gian, bạn 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 bạn và cấu hình nó để mount khi khởi động bằng lệnh :
- echo "md99 none swap sw,file=/swapfile,late 0 0" | sudo tee -a /etc/fstab
Lệnh này 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
bạn, bạn có thể kích hoạt file swap cho phiên bằng lệnh :
- sudo swapon -aqL
Bạn 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:
OutputDevice 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