Како да обезбедите ФрееБСД са ПФ заштитним зидом

Овај водич ће вам показати како да заштитите свој ФрееБСД сервер користећи ОпенБСД ПФ заштитни зид. Претпоставићемо да имате чисту ФрееБСД инсталацију коју је поставио Вултр без додатих корисника. Урадићемо још неке ствари осим конфигурације заштитног зида које ће такође ојачати безбедност нашег ФрееБСД сервера. Пре конфигурисања заштитног зида, ми ћемо инсталирати неке пакете пошто подразумевана инсталација ФрееБСД-а долази са минималним скупом алата и пакета (што је тачно), да би нам олакшали рад.

Подразумевана шкољка у ФрееБСД-у је /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...
...

ГНУЛС је lsпрограм из Линук-а. Само желимо да имамо исту lsкоманду у Линуку и ФрееБСД-у.

Додајте нормалног корисника у систем: (замените јохн својим корисничким именом и не заборавите да додате корисника у групу точкова)

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

Креирајте зсх конфигурациону датотеку:

# ee /home/your-username/.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

Покрените ову команду: (замените јохн својим корисничким именом)

chown john:john /home/john/.zshrc

Сада се пријавите на ФрееБСД сервер са својим корисничким именом и промените подразумевану роот лозинку:

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

Не треба нам сендмаил. Зауставите и онемогућите ову услугу:

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

Затим ћемо променити нашу рц.цонф датотеку да изгледа природније:

# 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

Додајте своју ИП адресу и име хоста:

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

Подесите временску зону:

# bsdconfig

Кад год можете, онемогућите даљински приступ за роот корисника. Већина напада на ССХ ће покушати да приступи преко роот корисничког налога. Увек се повежите са својим корисничким именом, а затим suса роот-ом. Само корисници из wheelгрупе могу suда рутирају. Због тога смо додали нашег корисника у групу точкова.

Онемогући роот пријаву:

# ee /etc/ssh/sshd_config

Одкоментирај овај ред:

PermitRootLogin no

Рестарт:

# reboot

Након што се рестартовање заврши, видећете поруку попут ове на Вултр конзоли:

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

Сада ћемо конфигурисати заштитни зид. ОпенБСД ПФ је укључен у ФрееБСД кернел, тако да не морате да инсталирате никакве пакете.

Помоћу eeедитора креирајте датотеку /etc/firewall:

# ee /etc/firewall

Унесите ово: (замените све ИП адресе својом)

#######################################################################
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датотеку. У овај фајл ћемо ставити ИП адресе којима „верујемо“.

# ee /etc/trusted

Додајте неке ИП адресе:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Сада мало објашњења. Нежељени портови и нежељени ИП-ови су само неки портови/ИП-ови које не желимо да видимо у евиденцији. Ово смо урадили са овим правилом:

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

Ово правило блокира одлазни СМТП саобраћај са вашег сервера (што је подразумевано на Вултр-у).

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

Брутефорцерс само каже: Дозволи са <поузданих> ИП-ова на порт 22, али само 10 истовремених веза може бити направљено са једне изворне ИП адресе. Ако је више од 10, блокирајте ову ИП адресу и ставите је у табеле брутефорцера. Исто важи и за правило 20/60. То значи максимално 20 веза за 60 секунди.

Омогући заштитни зид:

# 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

Видите да ли имате некога у табели брутефорцера:

# pfctl -t bruteforcers -T show

И то је то. Успешно сте имплементирали ПФ заштитни зид на ФрееБСД серверу!

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више