PF 방화벽으로 FreeBSD를 보호하는 방법

이 튜토리얼은 OpenBSD PF 방화벽을 사용하여 FreeBSD 서버를 보호하는 방법을 보여줍니다. 사용자가 추가되지 않은 상태로 Vultr에 의해 배포 된 FreeBSD 설치가 있다고 가정합니다. 방화벽 설정 이외에도 FreeBSD 서버의 보안을 강화하는 다른 작업을 수행 할 것입니다. 방화벽을 설정하기 전에 기본 FreeBSD 설치에는 최소한의 도구와 패키지 세트 (올바른)가 포함되어 있기 때문에 일부 패키지를 설치하여 작업하기 쉽도록합니다.

FreeBSD의 기본 쉘은 /bin/sh입니다. 자동 완성 기능이없는 기본 쉘입니다. 우리는 더 나은 것을 사용할 것입니다. 설치하겠습니다 zsh.

먼저 다음 패키지를 설치하십시오.

# 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는 lsLinux 의 프로그램입니다. 우리 ls는 Linux와 FreeBSD에서 같은 명령을 원합니다 .

시스템에 일반 사용자 추가 : (john을 사용자 이름으로 바꾸고 휠 그룹에 사용자를 추가하는 것을 잊지 마십시오)

# 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!

zsh 구성 파일을 작성하십시오.

# ee /home/your-username/.zshrc

이것을 .zshrc 파일로 복사하십시오.

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

다음 명령을 실행하십시오 : (john을 사용자 이름으로 바꾸십시오)

chown john:john /home/john/.zshrc

이제 사용자 이름으로 FreeBSD 서버에 로그인하고 기본 루트 비밀번호를 변경하십시오 :

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

sendmail은 필요하지 않습니다. 이 서비스를 중지하고 비활성화하십시오.

<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.

다음으로 rc.conf 파일을보다 자연스럽게 변경합니다 :

# ee /etc/rc.conf

다음과 같이 변경하십시오.

#----------- 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"

/etc/hosts파일 편집 :

# ee /etc/hosts

IP 주소와 호스트 이름을 추가하십시오 :

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

시간대 설정 :

# bsdconfig

가능하면 루트 사용자에 대한 원격 액세스를 비활성화하십시오. SSH에 대한 대부분의 공격은 루트 사용자 계정을 통해 액세스를 시도합니다. 항상 사용자 이름으로 연결 한 다음 su루트로 연결하십시오 . wheel그룹의 사용자 만 루팅 할 수 있습니다 su. 우리가 휠 그룹에 사용자를 추가 한 이유입니다.

루트 로그인 비활성화 :

# ee /etc/ssh/sshd_config

이 줄의 주석을 해제하십시오.

PermitRootLogin no

재부팅 :

# reboot

재부팅이 완료되면 Vultr 콘솔에 다음과 같은 메시지가 나타납니다.

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

그렇기 때문에 시계를 수동으로 수정해야합니다. 먼저 다음 명령을 따르십시오 su.

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

이제 방화벽을 구성하겠습니다. OpenBSD PF는 FreeBSD 커널에 포함되어 있으므로 패키지를 설치할 필요가 없습니다.

ee편집기, 파일을 생성 /etc/firewall:

# ee /etc/firewall

이것을 삽입하십시오 : (당신의 IP 주소를 대체하십시오)

#######################################################################
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

/etc/trusted파일을 작성 하십시오. 이 파일에서는 "신뢰할 수있는"IP를 넣습니다.

# ee /etc/trusted

일부 IP를 추가하십시오.

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

이제 몇 가지 설명입니다. 정크 포트와 정크 IP는 로그에서보고 싶지 않은 일부 포트 / IP입니다. 이 규칙을 사용하여이 작업을 수행했습니다.

# ---- 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

이것들은 단지 기본값이며 걱정할 필요가 없습니다.

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

이 규칙은 서버 (Vultr의 기본값)에서 나가는 SMTP 트래픽을 차단합니다.

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

를 제외하고 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)

Bruteforcers는 다음과 같이 말합니다. <trusted> IP에서 포트 22로 허용하지만 하나의 소스 IP에서 10 개의 동시 연결 만 가능합니다. 10보다 큰 경우이 IP를 차단하고 테이블 무차별 대입 장치에 넣습니다. 20/60 규칙도 마찬가지입니다. 60 초 동안 최대 20 개의 연결을 의미합니다.

방화벽을 활성화하십시오 :

# ee /etc/rc.conf

다음 줄의 주석을 해제하십시오.

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

재부팅 :

# reboot 

모든 것을 올바르게 수행했다면 로그인 할 수 있고 방화벽이 활성화됩니다. /etc/firewall파일 을 변경할 때마다 재부팅 할 필요는 없습니다 . 그냥 해:

# /etc/rc.d/pf reload

누가 실시간으로 서버에 연결하려고하는지 확인하십시오.

# tcpdump -n -e -ttt -i pflog0

역사 표시 :

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

bruteforcers 테이블에 누군가가 있는지 확인하십시오.

# pfctl -t bruteforcers -T show

그리고 그게 다야. FreeBSD 서버에서 PF 방화벽을 성공적으로 구현했습니다!


Tags: #BSD

Leave a Comment

FreeBSD 12에 Neos CMS를 설치하는 방법

FreeBSD 12에 Neos CMS를 설치하는 방법

다른 시스템을 사용하십니까? Neos는 CMS와 응용 프로그램 프레임 워크가 핵심 인 콘텐츠 응용 프로그램 플랫폼입니다. 이 가이드는 설치하는 방법을 보여줍니다

전체 디스크 암호화를 사용하여 OpenBSD 5.6 설정

전체 디스크 암호화를 사용하여 OpenBSD 5.6 설정

이 튜토리얼에서는 Vultr VPS에서 완전히 암호화 된 디스크로 OpenBSD 5.6을 설정하는 방법을 보여줍니다. 암호화 부분에 대한 참고 사항 : 대부분의 데이터 센터

FreeBSD 12에서 osTicket을 설치하는 방법

FreeBSD 12에서 osTicket을 설치하는 방법

다른 시스템을 사용하십니까? osTicket은 오픈 소스 고객 지원 티켓팅 시스템입니다. osTicket 소스 코드는 Github에서 공개적으로 호스팅됩니다. 이 튜토리얼에서

OpenBSD 6.2에 WordPress 설치

OpenBSD 6.2에 WordPress 설치

소개 WordPress는 인터넷에서 지배적 인 컨텐츠 관리 시스템입니다. 블로그에서 동적 컨텐츠가있는 복잡한 웹 사이트에 이르기까지 모든 것을 지원합니다.

FreeBSD 11 FAMP VPS에 ProcessWire CMS 3.0을 설치하는 방법

FreeBSD 11 FAMP VPS에 ProcessWire CMS 3.0을 설치하는 방법

다른 시스템을 사용하십니까? ProcessWire CMS 3.0은 간단하고 유연하며 강력하며 무료이며 오픈 소스 CMS (콘텐츠 관리 시스템)입니다. ProcessWire CMS 3.

PrestaShop 및 Apache를 사용한 전자 상거래 솔루션으로서의 OpenBSD

PrestaShop 및 Apache를 사용한 전자 상거래 솔루션으로서의 OpenBSD

소개이 튜토리얼은 PrestaShop 및 Apache를 사용한 전자 상거래 솔루션으로서 OpenBSD를 보여줍니다. PrestaShop에 복잡한 UR이 있으므로 Apache가 필요합니다.

OS 선택 : CentOS, Ubuntu, Debian, FreeBSD, CoreOS 또는 Windows Server

OS 선택 : CentOS, Ubuntu, Debian, FreeBSD, CoreOS 또는 Windows Server

이 기사는 Vultr에서 템플릿으로 제공되는 서버 운영 체제에 대한 간략한 개요를 제공합니다. CentOS CentOS는 RHEL의 공개 소스 버전입니다 (Re

FreeBSD 12에 X-Cart 5를 설치하는 방법

FreeBSD 12에 X-Cart 5를 설치하는 방법

다른 시스템을 사용하십니까? X-Cart는 다양한 기능과 통합 기능을 갖춘 매우 유연한 오픈 소스 전자 상거래 플랫폼입니다. X-Cart 소스 코드는 호스트입니다

FreeBSD 11에 PyroCMS를 설치하는 방법

FreeBSD 11에 PyroCMS를 설치하는 방법

다른 시스템을 사용하십니까? PyroCMS는 PHP로 작성된 오픈 소스 CMS입니다. PyroCMS 소스 코드는 GitHub에서 호스팅됩니다. 이 가이드에서는 입구를 잘 살펴보십시오.

FreeBSD 11로 자신 만의 메일 서버 만들기

FreeBSD 11로 자신 만의 메일 서버 만들기

자신의 이메일 서버를 운영하는 것은 매우 보람이있을 수 있습니다. 귀하는 귀하의 데이터를 담당합니다. 또한 배송 옵션을보다 유연하게 사용할 수 있습니다. 하나

FreeBSD 10에서 스왑 파일 생성

FreeBSD 10에서 스왑 파일 생성

기본적으로 Vultr FreeBSD 서버는 스왑 공간을 포함하도록 구성되어 있지 않습니다. 일회용 클라우드 인스턴스에 대한 의도라면

FreeBSD 10에서 iRedMail 설정

FreeBSD 10에서 iRedMail 설정

이 튜토리얼에서는 FreeBSD 10을 새로 설치할 때 그룹웨어 iRedMail을 설치하는 방법을 보여줍니다. 최소 1 기가 바이트 이상의 서버를 사용해야합니다

OpenBSD 6에서 MariaDB 구성

OpenBSD 6에서 MariaDB 구성

이 기사에서는 OpenBSD 6에 MariaDB를 설치하고 chroot 된 웹 서버 (Apache 또는 Nginx)에 액세스 할 수 있도록 구성하는 방법을 보여줍니다. 당신은 Als

FreeBSD 11 FAMP VPS에 Redaxscript 3.2 CMS를 설치하는 방법

FreeBSD 11 FAMP VPS에 Redaxscript 3.2 CMS를 설치하는 방법

다른 시스템을 사용하십니까? Redaxscript 3.2 CMS는 현대적이고 초경량이며 무료이며 공개 소스 인 CMS (로켓 관리 시스템)

FreeBSD 12에서 Craft CMS를 설치하는 방법

FreeBSD 12에서 Craft CMS를 설치하는 방법

다른 시스템을 사용하십니까? 소개 Craft CMS는 PHP로 작성된 오픈 소스 CMS입니다. Craft CMS 소스 코드는 GitHub에서 호스팅됩니다. 이 가이드는 요를 보여줍니다

FreeBSD 11에서 Nginx와 함께 Varnish 5 설치

FreeBSD 11에서 Nginx와 함께 Varnish 5 설치

Varnish는 웹 서버의 컨텐츠를 저장하는 오픈 소스 캐시 서버입니다. Apache 또는 Nginx와 같은 웹 서버 앞에 설치됩니다. Cachin

FreeBSD / TrueOS에서 ZFS 저장소 풀 크기 조정

FreeBSD / TrueOS에서 ZFS 저장소 풀 크기 조정

Vultr에서 VPS 인스턴스를 업그레이드하면 Linux 파일 시스템의 크기가 자동으로 조정됩니다. 고급 ZFS 파일 시스템으로 FreeBSD를 실행할 때 일부 수동 wor

FreeBSD 11 FAMP VPS에 TextPattern CMS 4.6.2를 설치하는 방법

FreeBSD 11 FAMP VPS에 TextPattern CMS 4.6.2를 설치하는 방법

다른 시스템을 사용하십니까? TextPattern CMS 4.6.2는 간단하고 유연하며 무료이며 오픈 소스 CMS (콘텐츠 관리 시스템)로 웹 디자이너는

FreeBSD 12에 eSpeak 설치

FreeBSD 12에 eSpeak 설치

다른 시스템을 사용하십니까? ESpeak는 TTS (text-to-speech) 오디오 파일을 생성 할 수 있습니다. 토리노를 직접 만드는 등 여러 가지 이유로 유용 할 수 있습니다.

Vultr Cloud 서버에 pfSense 설치

Vultr Cloud 서버에 pfSense 설치

pfSense는 다양한 기능을 네트워크에 추가하려는 시스템 관리자에게 이상적인 도구입니다. 주로 오픈 소스입니다

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 Vultr 시스템과 호환되는 Windows 사용자 지정 ISO를 만드는 방법을 단계별로 설명합니다. 최신 드라이버와 업데이트 통합을 포함한 완벽 가이드.

Vultr에서 BGP 구성

Vultr에서 BGP 구성

Vultr BGP 설정을 위한 단계별 튜토리얼. ASN 할당부터 IP 라우팅 구성, BIRD 데몬 설정, FreeBSD 특이사항 및 실전 문제 해결 팁 7가지 포함한 최종 가이드

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WebDAV (Web Distributed Authoring and Versioning)를 이용한 원격 파일 작성을 위한 프레임워크로, WsgiDAV 설치 및 구성 방법을 안내합니다.

데비안 7에 Mailcow 설치

데비안 7에 Mailcow 설치

Mailcow는 DoveCot, Postfix 및 기타 여러 오픈 소스 패키지를 기반으로 하는 경량 메일 서버입니다. 데비안에서 Mailcow 설치 방법을 안내합니다.

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구