PF Güvenlik Duvarı ile FreeBSD Güvenliği

Bu eğitici, FreeBSD sunucunuzu OpenBSD PF güvenlik duvarını kullanarak nasıl koruyacağınızı gösterecektir. Hiçbir kullanıcı eklenmeden Vultr tarafından dağıtılan temiz bir FreeBSD kurulumunuz olduğunu varsayacağız. Güvenlik Duvarı yapılandırmasının yanında FreeBSD sunucumuzun güvenliğini de artıracak başka şeyler yapacağız. Güvenlik duvarı yapılandırmasından önce, varsayılan FreeBSD yüklemesinin çalışmamızı kolaylaştırmak için en az araç ve paket (doğru) olduğu için bazı paketler yükleyeceğiz.

FreeBSD'deki varsayılan kabuk şudur /bin/sh. Bu, otomatik tamamlama işlevi olmayan temel bir kabuktur. Daha iyi bir şey kullanacağız. Yükleyeceğiz zsh.

İlk olarak, şu paketleri yükleyin:

# 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'un programıdır. Sadece lsLinux ve FreeBSD'de aynı komuta sahip olmak istiyoruz .

Sisteme normal bir kullanıcı ekleyin: (john'u kullanıcı adınızla değiştirin ve tekerlek grubuna kullanıcı eklemeyi unutmayın)

# 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 yapılandırma dosyası oluşturun:

# ee /home/your-username/.zshrc

Bunu .zshrc dosyanıza kopyalayı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

Bu komutu çalıştırın: (john'u kullanıcı adınızla değiştirin)

chown john:john /home/john/.zshrc

Şimdi kullanıcı adınızla FreeBSD sunucusuna giriş yapın ve varsayılan kök parolayı değiştirin:

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

Sendmail'e ihtiyacımız yok. Bu hizmeti durdurun ve devre dışı bırakın:

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

Daha sonra, daha doğal görünmek için rc.conf dosyamızı değiştireceğiz:

# ee /etc/rc.conf

Şöyle görünecek şekilde değiştirin:

#----------- 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/hostsDosyayı düzenle :

# ee /etc/hosts

IP adresinizi ve ana bilgisayar adınızı ekleyin:

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

Saat dilimini ayarla:

# bsdconfig

Mümkün olduğunda, kök kullanıcı için uzaktan erişimi devre dışı bırakın. SSH'ye yapılan saldırıların çoğu kök kullanıcı hesabı üzerinden erişmeye çalışacaktır. Her zaman kullanıcı adınızla ve daha sonra suroot ile bağlantı kurun . Yalnızca wheelgruptaki kullanıcılar suroot atabilir . Bu yüzden kullanıcılarımızı tekerlek grubuna ekledik.

Kök girişini devre dışı bırak:

# ee /etc/ssh/sshd_config

Bu satırı kaldır:

PermitRootLogin no

Yeniden Başlatma:

# reboot

Yeniden başlatma işlemi bittikten sonra, Vultr konsolunda şöyle bir mesaj göreceksiniz:

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

Bu yüzden saati manuel olarak düzeltmemiz gerekiyor. İlk suönce root yapmak için şu komutları izleyin :

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

Şimdi güvenlik duvarını yapılandıracağız. OpenBSD PF, FreeBSD çekirdeğine dahil edilmiştir, bu nedenle herhangi bir paket yüklemenize gerek yoktur.

eeEditör ile dosya oluşturun /etc/firewall:

# ee /etc/firewall

Bunu ekleyin: (tüm IP adreslerini kendinizle değiştirin)

#######################################################################
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/trustedDosya oluştur . Bu dosyaya "güvendiğimiz" IP'leri koyacağız.

# ee /etc/trusted

Bazı IP'ler ekleyin:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Şimdi biraz açıklama. İstenmeyen bağlantı noktaları ve önemsiz IP'ler, günlüklerde görmek istemediğimiz bazı bağlantı noktaları / IP'lerdir. Bunu şu kuralla yaptık:

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

Bunlar sadece varsayılanlardır ve bunun için endişelenmenize gerek yoktur:

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

Bu kural, sunucunuzdan giden SMTP trafiğini engeller (Vultr'da varsayılan değerdir).

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

bruteforcersGerisi hariç oldukça düz.

# ---- 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 şunları söylüyor: <trusted> IP'lerinin port 22'ye izin ver, ancak bir kaynak IP'den sadece 10 eşzamanlı bağlantı yapılabilir. 10'dan fazla ise, bu IP'yi engelleyin ve tablo bruteforcers'a koyun. Aynı şey 20/60 kuralı için de geçerlidir. 60 saniyede maksimum 20 bağlantı anlamına gelir.

Güvenlik duvarını Etkinleştir:

# ee /etc/rc.conf

Bu satırları kaldır:

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

Yeniden Başlatma:

# reboot 

Her şeyi doğru yaptıysanız, giriş yapabileceksiniz ve güvenlik duvarı etkinleştirilecektir. Dosyayı her değiştirdiğinizde yeniden başlatmanız gerekmez /etc/firewall. Sadece yap:

# /etc/rc.d/pf reload

Sunucunuza gerçek zamanlı olarak kimin bağlanmaya çalıştığını görün:

# tcpdump -n -e -ttt -i pflog0

Geçmişi göster:

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

Bruteforcers tablosunda birisi olup olmadığına bakın:

# pfctl -t bruteforcers -T show

Ve bu kadar. FreeBSD sunucusunda PF güvenlik duvarını başarıyla uyguladınız!


Tags: #BSD

Leave a Comment

Bir Vultr Bulut Sunucusuna pfSense Kurulumu

Bir Vultr Bulut Sunucusuna pfSense Kurulumu

pfSense, ağlarına geniş bir özellik yelpazesi eklemek isteyen sistem yöneticileri için ideal bir araçtır. Öncelikle açık kaynaklı

FreeBSD 12 Üzerinde LimeSurvey CE Kurulumu

FreeBSD 12 Üzerinde LimeSurvey CE Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? LimeSurvey PHP ile yazılmış açık kaynaklı bir anket yazılımıdır. LimeSurvey kaynak kodu GitHubda barındırılıyor. Bu kılavuz size

FreeBSDde Nginx Ters Proxy ve Golang Kurulumu

FreeBSDde Nginx Ters Proxy ve Golang Kurulumu

Gereksinimler UNIX hakkında temel bilgiler. Nginx yüklü FreeBSD x64. Araçları Yükleme FreeBSD ile birlikte gönderilmeyen birkaç programa ihtiyacınız olacaktır. Ru

FreeBSD 12 Üzerinde Automad CMS Kurulumu

FreeBSD 12 Üzerinde Automad CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Automad, PHPde yazılmış açık kaynaklı bir dosya tabanlı içerik yönetim sistemidir (CMS) ve şablon motorudur. Automad kaynak kodu i

FreeBSD 12 Üzerinde X-Cart 5 Kurulumu

FreeBSD 12 Üzerinde X-Cart 5 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? X-Cart, tonlarca özellik ve entegrasyona sahip son derece esnek bir açık kaynaklı e-ticaret platformudur. X-Cart kaynak kodu aceleci

WordPressi OpenBSD 6.2ye yükleme

WordPressi OpenBSD 6.2ye yükleme

Giriş WordPress, internet üzerindeki baskın içerik yönetim sistemidir. Bloglardan dinamik içeriğe sahip karmaşık web sitelerine kadar her şeyi güçlendirir

FreeBSD 11 Üzerinde Murmur Kurun ve Yapılandırın (Mumble Sunucusu)

FreeBSD 11 Üzerinde Murmur Kurun ve Yapılandırın (Mumble Sunucusu)

Murmur, Mumble sesli iletişim protokolü için resmi sunucu yazılımıdır. Bu resmi uygulama istikrarlı ve etkilidir. Bu kılavuz

FreeBSD 12.0 Üzerinde Nginx, MySQL ve PHP (FEMP) Yığını Nasıl Yüklenir

FreeBSD 12.0 Üzerinde Nginx, MySQL ve PHP (FEMP) Yığını Nasıl Yüklenir

Linuxtaki bir LEMP yığını ile karşılaştırılabilir bir FEMP yığını, bir FreeBSyi etkinleştirmek için genellikle birlikte yüklenen bir açık kaynaklı yazılım koleksiyonudur

FreeBSD 11 Üzerinde Kaşe Nasıl Kurulur

FreeBSD 11 Üzerinde Kaşe Nasıl Kurulur

Farklı Bir Sistem mi Kullanıyorsunuz? Cachet PHP ile yazılmış açık kaynaklı bir durum sayfası sistemidir. Cachet için kaynak kodu GitHubda barındırılıyor. Bu kılavuzda,

FreeBSD 12ye WonderCMS Kurulumu

FreeBSD 12ye WonderCMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? WonderCMS, PHPde yazılmış açık kaynaklı, hızlı ve küçük bir düz dosya CMSdir. WonderCMS kaynak kodu Githubda barındırılmaktadır. Bu kılavuz

FreeBSD 12de Apachede TLS 1.3ü Etkinleştirme

FreeBSD 12de Apachede TLS 1.3ü Etkinleştirme

Farklı Bir Sistem mi Kullanıyorsunuz? TLS 1.3, 2018de RFC 8446da önerilen bir standart olarak yayınlanan Taşıma Katmanı Güvenliği (TLS) protokolünün bir sürümüdür

FreeBSD 11 üzerine Nginx ile Vernik 5i yükleyin

FreeBSD 11 üzerine Nginx ile Vernik 5i yükleyin

Vernik, bir web sunucusundan içerik depolayan açık kaynaklı bir önbellek sunucusudur. Apache veya Nginx gibi bir web sunucusunun önüne kurulur. Cachin

FreeBSD 12 Dolibarr Kurulumu

FreeBSD 12 Dolibarr Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Dolibarr, işletmeler için açık kaynaklı bir kurumsal kaynak planlaması (ERP) ve müşteri ilişkileri yönetimi (CRM). Dolibarr

ProcessWire CMS 3.0 FreeBSD 11 FAMP VPS Kurulumu

ProcessWire CMS 3.0 FreeBSD 11 FAMP VPS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? ProcessWire CMS 3.0 basit, esnek ve güçlü, ücretsiz ve açık kaynaklı bir İçerik Yönetim Sistemidir (CMS). ProcessWire CMS 3.

FreeBSD 11 Üzerinde Matomo Analytics Kurulumu

FreeBSD 11 Üzerinde Matomo Analytics Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Matomo (eski adıyla Piwik), Google Analyticse açık bir alternatif olan açık kaynaklı bir analiz platformudur. Matomo kaynağı o barındırılıyor o

FreeBSD 12de Nginxte TLS 1.3ü Etkinleştirme

FreeBSD 12de Nginxte TLS 1.3ü Etkinleştirme

Farklı Bir Sistem mi Kullanıyorsunuz? TLS 1.3, 2018de RFC 8446da önerilen bir standart olarak yayınlanan Taşıma Katmanı Güvenliği (TLS) protokolünün bir sürümüdür

OpenSMTPD, Dovecot, Rspamd ve RainLoop Kullanan OpenBSD E-Posta Sunucusu

OpenSMTPD, Dovecot, Rspamd ve RainLoop Kullanan OpenBSD E-Posta Sunucusu

Giriş Bu eğitici, OpenSMTPD, Dovecot, Rspamd ve RainLoop kullanarak OpenBSD üzerinde çalışan tam özellikli bir e-posta sunucusunu gösterir. OpenSMTPD th

FreeBSD 12 Mailtrain Haber Bülteni Uygulaması Nasıl Kurulur

FreeBSD 12 Mailtrain Haber Bülteni Uygulaması Nasıl Kurulur

Farklı Bir Sistem mi Kullanıyorsunuz? Mailtrain, Node.js ve MySQL / MariaDB üzerine kurulmuş açık kaynaklı, kendi kendine barındırılan bir bülten uygulamasıdır. Mailtrains kaynağı GitHubda. Thi

OpenBSD 6da Ghost Professional Yayıncılık Platformunu Kurma

OpenBSD 6da Ghost Professional Yayıncılık Platformunu Kurma

Ghost, WordPresse rakip olan en yeni ve en büyük başlangıç. Tema geliştirme hızlı ve kolaydır, çünkü Ghost geliştiricileri

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?