Si të sigurojmë FreeBSD me Firewall PF

Ky tutorial do t'ju tregojë se si të mbroni serverin tuaj FreeBSD duke përdorur firewall-in OpenBSD PF. Ne do të supozojmë se ju keni një instalim të pastër FreeBSD të vendosur nga Vultr pa asnjë përdorues të shtuar. Ne do të bëjmë disa gjëra të tjera përveç konfigurimit të Firewall-it, të cilat gjithashtu do të forcojnë sigurinë e serverit tonë FreeBSD. Përpara konfigurimit të murit të zjarrit, ne do të instalojmë disa paketa pasi instalimi i parazgjedhur i FreeBSD vjen me një grup minimal mjetesh dhe paketash (që është e saktë), për ta bërë më të lehtë punën për ne.

Predha e paracaktuar në FreeBSD është /bin/sh. Kjo është një guaskë bazë pa funksione të plotësimit automatik. Do të përdorim diçka më të mirë. Ne do të instalojmë zsh.

Së pari, instaloni këto paketa:

# 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 është lsprogrami nga Linux. Thjesht duam të kemi të njëjtën lskomandë në Linux dhe FreeBSD.

Shtoni një përdorues normal në sistem: (zëvendësoni John me emrin tuaj të përdoruesit dhe mos harroni të shtoni përdorues në grupin e rrotave)

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

Krijoni skedarin e konfigurimit zsh:

# ee /home/your-username/.zshrc

Kopjojeni këtë në skedarin tuaj .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

Ekzekutoni këtë komandë: (zëvendësoni John me emrin tuaj të përdoruesit)

chown john:john /home/john/.zshrc

Tani, identifikohuni në serverin FreeBSD me emrin tuaj të përdoruesit dhe ndryshoni fjalëkalimin e paracaktuar të rrënjës:

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

Nuk kemi nevojë për postë elektronike. Ndaloni dhe çaktivizoni këtë shërbim:

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

Më pas, ne do të ndryshojmë skedarin tonë rc.conf që të duket më i natyrshëm:

# ee /etc/rc.conf

Ndryshojeni që të duket kështu:

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

Redakto /etc/hostsskedarin:

# ee /etc/hosts

Shtoni adresën tuaj IP dhe emrin e hostit:

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

Cakto zonën kohore:

# bsdconfig

Sa herë që mundeni, çaktivizoni aksesin në distancë për përdoruesin rrënjë. Shumica e sulmeve në SSH do të përpiqen të hyjnë përmes llogarisë së përdoruesit rrënjë. Gjithmonë lidheni me emrin tuaj të përdoruesit dhe më pas sume root. Vetëm përdoruesit nga wheelgrupi mund sutë rrënjë. Kjo është arsyeja pse ne shtuam përdoruesin tonë në grupin e rrotave.

Çaktivizo hyrjen në rrënjë:

# ee /etc/ssh/sshd_config

Zhkomentoni këtë rresht:

PermitRootLogin no

Rinisja:

# reboot

Pasi të përfundojë rindezja, do të shihni një mesazh si ky në tastierën Vultr:

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

Kjo është arsyeja pse ne duhet të korrigjojmë orën me dorë. Ndiqni këto komanda, së pari supër të root:

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

Tani, ne do të konfigurojmë murin e zjarrit. OpenBSD PF përfshihet në kernelin FreeBSD, kështu që nuk keni nevojë të instaloni asnjë paketë.

Me eeredaktuesin, krijoni skedarin /etc/firewall:

# ee /etc/firewall

Fusni këtë: (zëvendësoni çdo adresë IP me tuajë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

Krijo /etc/trustedskedar. Në këtë skedar do të vendosim IP-të që i “besojmë”.

# ee /etc/trusted

Shtoni disa IP:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Tani disa shpjegime. Portat e padëshiruara dhe IP-të e padëshiruara janë vetëm disa porte/IP që ne nuk duam t'i shohim në regjistra. Ne e kemi bërë këtë me këtë rregull:

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

Këto janë vetëm parazgjedhje dhe nuk keni pse të shqetësoheni për këtë:

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

Ky rregull bllokon trafikun dalës SMTP nga serveri juaj (i cili është i paracaktuar në Vultr).

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

Përveçse bruteforcerspjesa tjetër është mjaft e drejtpërdrejtë.

# ---- 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 thjesht thotë: Lejo nga IP <trusted> në portin 22 por vetëm 10 lidhje të njëkohshme mund të bëhen nga një IP burimi. Nëse është më shumë se 10, bllokoni këtë IP dhe vendoseni në tabelën bruteforcers. E njëjta gjë vlen edhe për rregullin 20/60. Do të thotë maksimumi 20 lidhje në 60 sekonda.

Aktivizo murin e zjarrit:

# ee /etc/rc.conf

Zhkomentoni këto rreshta:

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

Rinisja:

# reboot 

Nëse keni bërë gjithçka siç duhet, atëherë do të jeni në gjendje të identifikoheni dhe muri i zjarrit do të aktivizohet. Ju nuk keni nevojë të rindizni çdo herë që ndryshoni /etc/firewallskedarin. Vetëm Bëje:

# /etc/rc.d/pf reload

Shihni kush po përpiqet të lidhet me serverin tuaj në kohë reale:

# tcpdump -n -e -ttt -i pflog0

Shfaq historikun:

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

Shihni nëse keni dikë në tabelën e bruteforcers:

# pfctl -t bruteforcers -T show

Dhe kjo eshte. Ju keni implementuar me sukses murin e zjarrit PF në serverin FreeBSD!

Lëreni një koment

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë