Cách bảo mật FreeBSD với PF Firewall

Hướng dẫn này sẽ chỉ cho bạn cách bảo vệ máy chủ FreeBSD bằng tường lửa PF của OpenBSD. Chúng tôi sẽ cho rằng bạn có bản cài đặt FreeBSD sạch do Vultr triển khai mà không có người dùng nào được thêm vào. Chúng tôi sẽ làm một số thứ khác bên cạnh cấu hình Tường lửa cũng sẽ tăng cường bảo mật cho máy chủ FreeBSD của chúng tôi. Trước khi cấu hình tường lửa, chúng tôi sẽ cài đặt một số gói vì cài đặt FreeBSD mặc định đi kèm với một bộ công cụ và gói tối thiểu (chính xác), để giúp chúng tôi làm việc dễ dàng hơn.

Shell mặc định trong FreeBSD là /bin/sh. Đây là một shell cơ bản không có chức năng tự động hoàn thành. Chúng tôi sẽ sử dụng một cái gì đó tốt hơn. Chúng tôi sẽ cài đặt zsh.

Đầu tiên, cài đặt các gói này:

# pkg install zsh gnuls
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/freebsd:10:x86:64/latest, please wait...
...

GNULS là lschương trình từ Linux. Chúng tôi chỉ muốn có cùng một lslệnh trong Linux và FreeBSD.

Thêm người dùng bình thường vào hệ thống: (thay thế john bằng tên người dùng của bạn và đừng quên thêm người dùng vào nhóm bánh xe)

# adduser
Username: john
Full name: John Doe
Uid (Leave empty for default): 
Login group [john]: 
Login group is john. Invite john into other groups? []: wheel
Login class [default]: 
Shell (sh csh tcsh zsh rzsh nologin) [sh]: zsh
Home directory [/home/john]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: 
Use an empty password? (yes/no) [no]: 
Use a random password? (yes/no) [no]: 
Enter password: 
Enter password again: 
Lock out the account after creation? [no]: 
Username   : john
Password   : *****
Full Name  : John Doe
Uid        : 1001
Class      : 
Groups     : john wheel
Home       : /home/john
Home Mode  : 
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (john) to the user database.
Add another user? (yes/no): no
Goodbye!

Tạo tập tin cấu hình zsh:

# ee /home/your-username/.zshrc

Sao chép tệp này vào tệp .zshrc của bạn:

PS1="<%U%m%u>$[%B%1~%b]%(#.#.$) "

bindkey -e
alias su='su -m'
alias du='du -h -d0'
alias df='df -h'
alias l=less
alias ll='gnuls --color=always -l'
alias ls='gnuls --color=always'
alias pkg_ver='pkg version -v -l "<" | > upgrade'

export EDITOR=ee

autoload -U colors && colors
autoload -U promptinit && promptinit
autoload -U compinit && compinit

# History settings
SAVEHIST=1000
HISTSIZE=1000
HISTFILE=~/.history
setopt histignoredups appendhistory

Chạy lệnh này: (thay thế john bằng tên người dùng của bạn)

chown john:john /home/john/.zshrc

Bây giờ, đăng nhập vào máy chủ FreeBSD bằng tên người dùng của bạn và thay đổi mật khẩu gốc mặc định:

<vultr>[~]$ su
Password:
<vultr>[~]# passwd 
Changing local password for root
New Password:
Retype New Password:
<vultr>[~]# 

Chúng tôi không cần sendmail. Dừng và vô hiệu hóa dịch vụ này:

<vultr>[~]# /etc/rc.d/sendmail stop
Stopping sendmail.
Waiting for PIDS: 7843.
sendmail_submit not running? (check /var/run/sendmail.pid).
Stopping sendmail_msp_queue.
Waiting for PIDS: 7846.

Tiếp theo, chúng tôi sẽ thay đổi tệp RC.conf của chúng tôi để trông tự nhiên hơn:

# ee /etc/rc.conf

Thay đổi nó để trông như thế này:

#----------- NETWORKING ------------------------------------------------#
hostname="ceph.domain1.com" # replace ceph.domain1.com with your domain
ifconfig_vtnet0="dhcp"
static_routes=linklocal
route_linklocal="-net 169.254.0.0/16 -interface vtnet0"

#--------- SERVICES BSD LOCAL ----------------------------------------#
sshd_enable="YES"
ntpd_enable="YES"

#pf_enable="YES"
#pf_rules="/etc/firewall"
#pf_flags=""
#pflog_enable="YES"              
#pflog_logfile="/var/log/pflog"  
#pflog_flags=""    

sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

Chỉnh sửa /etc/hoststập tin:

# ee /etc/hosts

Thêm địa chỉ IP và tên máy chủ của bạn:

::1                     localhost localhost.ceph ceph
127.0.0.1               localhost localhost.ceph ceph
108.61.178.110          ceph.domain1.com       ceph

Đặt múi giờ:

# bsdconfig

Bất cứ khi nào bạn có thể, vô hiệu hóa truy cập từ xa cho người dùng root. Hầu hết các cuộc tấn công vào SSH sẽ cố gắng truy cập thông qua tài khoản người dùng root. Luôn kết nối với tên người dùng của bạn và sau đó suđể root. Chỉ người dùng trong wheelnhóm có thể suroot. Đó là lý do tại sao chúng tôi đã thêm người dùng của mình vào nhóm bánh xe.

Vô hiệu hóa đăng nhập root:

# ee /etc/ssh/sshd_config

Bỏ ghi chú dòng này:

PermitRootLogin no

Khởi động lại:

# reboot

Sau khi khởi động lại kết thúc, bạn sẽ thấy một thông báo như thế này trong bảng điều khiển Vultr:

time correction of 3600 seconds exceeds sanity limit (1000); set clock manually to
correct UTC time.

Đó là lý do tại sao chúng ta cần sửa đồng hồ bằng tay. Thực hiện theo các lệnh này, đầu tiên suđể root:

$ su
Password:
# ntpdate 0.europe.pool.ntp.org

Bây giờ, chúng ta sẽ cấu hình tường lửa. OpenBSD PF được bao gồm trong kernel FreeBSD, vì vậy bạn không phải cài đặt bất kỳ gói nào.

Với eetrình chỉnh sửa, tạo tệp /etc/firewall:

# ee /etc/firewall

Chèn cái này: (thay thế bất kỳ địa chỉ IP nào bằng của bạn)

#######################################################################
me="vtnet0"                
table <bruteforcers> persist    
table <trusted> persist file "/etc/trusted"
icmp_types = "echoreq"          
junk_ports="{ 135,137,138,139,445,68,67,3222 }"
junk_ip="224.0.0.0/4"           

set loginterface vtnet0           
scrub on vtnet0 reassemble tcp no-df random-id

# ---- First rule obligatory "Pass all on loopback"
pass quick on lo0 all           

# ---- Block junk logs
block quick proto { tcp, udp } from any to $junk_ip 
block quick proto { tcp, udp } from any to any port $junk_ports

# ---- Second rule "Block all in and pass all out"
block in log all                
pass out all keep state         

############### FIREWALL ###############################################
# ---- Allow all traffic from my Home
pass quick proto {tcp, udp} from 1.2.3.4 to $me keep state

# ---- block SMTP out 
block quick proto tcp from $me to any port 25

# ---- Allow incoming Web traffic
pass quick proto tcp from any to $me port { 80, 443 } flags S/SA keep state

# ---- Allow my team member SSH access 
pass quick proto tcp from 1.2.3.5 to $me port ssh flags S/SA keep state

# ---- Block bruteforcers
block log quick from <bruteforcers>

# ---- Allow SSH from trusted sources, but block bruteforcers
pass quick proto tcp from <trusted> to $me port ssh \
flags S/SA keep state \
(max-src-conn 10, max-src-conn-rate 20/60, \
overload <bruteforcers> flush global)

# ---- Allow ICMP 
pass in inet proto icmp all icmp-type $icmp_types keep state
pass out inet proto icmp all icmp-type $icmp_types keep state

Tạo /etc/trustedtập tin. Trong tệp này, chúng tôi sẽ đặt IP mà chúng tôi "tin tưởng".

# ee /etc/trusted

Thêm một số IP:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Bây giờ một số giải thích. Cổng rác và IP rác chỉ là một số cổng / IP mà chúng tôi không muốn thấy trong nhật ký. Chúng tôi đã làm điều này với quy tắc này:

# ---- Block junk logs
block quick proto { tcp, udp } from any to $junk_ip 
block quick proto { tcp, udp } from any to any port $junk_ports

Đây chỉ là mặc định và bạn không phải lo lắng về điều đó:

icmp_types = "echoreq"                                            
set loginterface vtnet0           
scrub on vtnet0 reassemble tcp no-df random-id
pass quick on lo0 all
block in log all                
pass out all keep state

Quy tắc này chặn lưu lượng truy cập SMTP đi từ máy chủ của bạn (là mặc định trên Vultr).

# ---- block SMTP out 
block quick proto tcp from $me to any port 25

Ngoại trừ bruteforcersphần còn lại là khá thẳng về phía trước.

# ---- Allow SSH from trusted sources, but block bruteforcers
pass quick proto tcp from <trusted> to $me port ssh \
flags S/SA keep state \
(max-src-conn 10, max-src-conn-rate 20/60, \
overload <bruteforcers> flush global)

Bruteforcin chỉ nói: Cho phép từ <tin cậy> IP đến cổng 22 nhưng chỉ có 10 kết nối đồng thời có thể được thực hiện từ một IP nguồn. Nếu nó nhiều hơn 10, hãy chặn IP này và đặt nó vào bảng bruteforcin. Điều tương tự cũng xảy ra với quy tắc 20/60. Nó có nghĩa là tối đa 20 kết nối trong 60 giây.

Kích hoạt tính năng tường lửa:

# ee /etc/rc.conf

Bỏ ghi chú những dòng này:

pf_enable="YES"
pf_rules="/etc/firewall"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""

Khởi động lại:

# reboot 

Nếu bạn đã làm mọi thứ đúng, thì bạn sẽ có thể đăng nhập và tường lửa sẽ được bật. Bạn không phải khởi động lại mỗi khi thay đổi /etc/firewalltệp. Cứ làm đi:

# /etc/rc.d/pf reload

Xem ai đang cố gắng kết nối với máy chủ của bạn trong thời gian thực:

# tcpdump -n -e -ttt -i pflog0

Hiển thị lịch sử:

# tcpdump -n -e -ttt -r /var/log/pflog

Xem nếu bạn có ai đó trong bảng bruteforcin:

# pfctl -t bruteforcers -T show

Và đó là nó. Bạn đã thực hiện thành công tường lửa PF trên máy chủ FreeBSD!


Tags: #BSD

Leave a Comment

ReactOS: Đây có phải là tương lai của Windows?

ReactOS: Đây có phải là tương lai của Windows?

ReactOS, một hệ điều hành mã nguồn mở và miễn phí đã có phiên bản mới nhất. Liệu nó có thể đáp ứng đủ nhu cầu của người dùng Windows hiện đại và hạ gục Microsoft? Hãy cùng tìm hiểu thêm về trải nghiệm hệ điều hành kiểu cũ nhưng mới hơn này.

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Các cuộc tấn công ransomware đang gia tăng, nhưng liệu AI có thể giúp đối phó với loại virus máy tính mới nhất? AI có phải là câu trả lời? Đọc ở đây biết là AI boone hay cấm

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Whatsapp cuối cùng đã ra mắt ứng dụng Máy tính để bàn cho người dùng Mac và Windows. Giờ đây, bạn có thể truy cập Whatsapp từ Windows hoặc Mac một cách dễ dàng. Có sẵn cho Windows 8+ và Mac OS 10.9+

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Hãy đọc phần này để biết Trí tuệ nhân tạo đang trở nên phổ biến như thế nào đối với các công ty quy mô nhỏ và làm thế nào nó đang tăng khả năng khiến họ phát triển và giúp đối thủ cạnh tranh của họ có thể cạnh tranh.

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Gần đây Apple đã phát hành macOS Catalina 10.15.4 một bản cập nhật bổ sung để khắc phục các sự cố nhưng có vẻ như bản cập nhật đang gây ra nhiều vấn đề hơn dẫn đến việc máy mac bị chai. Đọc bài viết này để tìm hiểu thêm

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Máy tính của chúng tôi lưu trữ tất cả dữ liệu một cách có tổ chức được gọi là hệ thống tệp Ghi nhật ký. Đây là một phương pháp hiệu quả cho phép máy tính tìm kiếm và hiển thị các tệp ngay khi bạn nhấn tìm kiếm. Https://wethegeek.com/? P = 94116 & preview = true

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Khi Khoa học phát triển với tốc độ nhanh chóng, chiếm rất nhiều nỗ lực của chúng ta, những rủi ro của việc phục tùng bản thân trước một Điểm kỳ dị không thể giải thích cũng tăng lên. Hãy đọc, điểm kỳ dị có thể có ý nghĩa gì đối với chúng ta.

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

AI trong lĩnh vực chăm sóc sức khỏe đã có những bước tiến nhảy vọt so với những thập kỷ trước. Vì vậy, tương lai của AI trong Chăm sóc sức khỏe vẫn đang phát triển từng ngày.