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
VPS sunucuları sık sık davetsiz misafirler tarafından hedeflenir. Yüzlerce yetkisiz ssh giriş denemesi olarak sistem günlüklerinde yaygın bir saldırı türü görülür. Bir güvenlik duvarı oluşturmak çok yararlıdır, ancak kendi başına yıkıcı saldırı girişimlerini yeterince kontrol edemeyebilir.
Bu öğretici şov nasıl bir inşa etmek geliştirilmiş izinsiz bariyerini iki program kullanılarak FreeBSD için ipfw
güvenlik duvarı ve sshguard
. SSHGuard "kötüye kullanım" girişleri için sistem günlüklerini izleyen küçük bir eklenti programıdır. Suçlular erişim elde etmeye çalıştığında , suçlunun IP adresinden kaynaklanan trafiği engelleme sshguard
talimatı ipfw
verir. Suçlu daha sonra etkili bir şekilde kapatılır.
Bu programların nasıl çalıştığını anladıktan sonra, sunucu korumasını yönetmek oldukça basittir. Bu kılavuz FreeBSD'yi yapılandırmaya odaklanmış olsa da, bazı bölümleri diğer işletim sistemleri ve güvenlik duvarı yazılımları için geçerlidir.
FreeBSD varsayılan (3 duvarları sağlar GENERIC
) çekirdek, ipfw
, pf
, ve ipfilter
. Her birinin avantajları ve hayranları vardır, ancak ipfw
FBSD'nin yerel güvenlik duvarı yazılımıdır ve bizim amaçlarımız için kullanımı oldukça kolaydır. ipfw
Man sayfasının gösterdiği gibi birçok şeyi yaptığını belirtmek gerekir , ancak tipik VPS durumu için NAT, trafik şekillendirme vb. Neyse ki, güvenlik duvarının temel özellikleri gereksinimlerimizi kolayca karşılar.
Güvenlik duvarını önyükleme sırasında başlatmak için aşağıdakileri ekleyin /etc/rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"
service
Komut başlatmak / manuel güvenlik duvarı durdurmak için mevcuttur:
[user@vultr ~]$ sudo service ipfw start
Doğal olarak, ipfw
adresinde bulunan bu örnekte, genellikle bir dosyadan kurallar ekleyene kadar hiçbir şey yapmaz /usr/local/etc/IPFW.rules
. Kurallar dosyası "firewall_script" parametresiyle eşleştiği sürece herhangi bir yerde bulunabilir veya herhangi bir ada sahip olabilir. Kurallar dosyası aşağıda ayrıntılı olarak açıklanmaktadır.
sshguard
farklı güvenlik duvarlarıyla kullanım için çeşitli tatlar sunar. pkg
Getirmek ve yüklemek için yardımcı programı kullanın sshguard-ipfw
:
[user@vultr ~]$ sudo pkg install sshguard-ipfw
Çoğu durumda tek yapmanız gereken budur. /etc/rc.conf
Açılışta başlamak için uygun değişken otomatik olarak eklenir :
sshguard_enable="YES"
Varsayılan değerler normalde iyi çalışır. Farklı değerler gerekirse sshguard
kılavuz sayfası parametreler hakkında ayrıntılı bilgi verir:
# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"
Her sshguard
zamanki service
çağrı ile başlayabilirsiniz :
[user@vultr ~]$ sudo service sshguard start
En zor kısmı güvenlik duvarı kural setini oluşturmaktır. ipfw
sağlanan /etc/rc.firewall
komut dosyasını kullanabilir , ancak SSHGuard'ın yanı sıra farklı operasyonel senaryoları da kapsayacak şekilde değiştirilmelidir. Bazı web sayfalarında ve FreeBSD El Kitabı'nda bu konuda yararlı bilgiler bulunur. Bununla birlikte, bir kural dosyası yazmak o kadar da zor değildir, ayrıca, özel bir kural kümesini anlamak ve gerektiğinde değiştirmek daha kolay olabilir.
ipfw
Kuralların önemli bir özelliği, kural sırasının önemli olduğu anlamına gelen ilk maçın kazanmasıdır . İçinde ipfw
, her kural bir komuttur ve kural dosyası yürütülebilir bir kabuk betiğidir. Böylece kurallar değiştirilerek kurallar değiştirilir ve kurallar kabuk komut dosyası olarak çalıştırılır:
[user@vultr /usr/local/etc]$ sudo ./IPFW.rules
Genellikle, bir kural dosyası ipfw
komut için bir değişken tanımlar , ardından geçerli kuralları temizler, genel kurallar verir, sonra "dışarı" kurallarını ve ardından "giriş" kurallarını belirlemeye devam eder. İpfw kılavuz sayfası ve diğer kaynaklar, kural yapısı ve seçenekleri hakkında çok az bilgi içeren zengin bilgiler içerir.
FreeBSD sshguard sürümü 1.6.2 sürümüne güncellendiğinden, suçlular için engelleme kuralları ekleme yöntemi değişti. Artık suçluların adresleri, daha önce olduğu gibi 55000'in üzerindeki kurallara eklenmek yerine, bir ipfw tablosunda (spesifik olarak tablo 22) tutulmaktadır.
Neyse ki, tabloyu kullanmak için kural dosyasını ayarlamak oldukça basittir. Bu sadece tablo kuralını doğru yere koymak ve kuralı yazarken doğru sözdizimini kullandığınızdan emin olmaktır.
Bir sshguard
suçlu bulduğunda, suçlunun adresini kara listesine koyar ve adresi ipfw
reddederek erişimi reddedecek şekilde tabloya ekler . Bu kural şu amaçlara ulaşacaktır:
01000 deny ip from table\(22\) to any
Bu durumda 01000'in üzerinde gelen hizmetlere izin veren kurallar koymak hala gereklidir . Örneğin, adresin 10.20.30.40
tablo 22'de bir suçlu olduğunu varsayalım ve bu ipfw kuralına sahibiz:
56420 allow tcp from any to me dst-port 22 in via $vif
Yana ipfw
karşılaşmalar kural 01000 önce kural 56420 , 10.20.30.40
olduğu bloke . Hiç "22 izin ver" kuralı tarafından görülmez. Kural gibi bir "normal" numarası vardı izin verirseniz 00420 (çünkü kötü trafik içeri ve bloke asla olacağını 00420 den az olan 01000 ve "ilk maç kazanır").
Güncellenmiş sürümün güzel bir özelliği, şimdi sshguard başlatıldığında kara listedeki tüm adreslerin tabloya eklenmesi ve gelen suçluları gecikmeden engellemek için kullanılabilir olmasıdır. Kara liste birikimlidir ve oturumlar arasında tutulur.
Bu noktada büyük olasılıkla ipfw
değiştirilmiş eksiksiz bir kural kümesi göstermek mantıklıdır sshguard
. Yorumlar, kural mantığını takip etmeyi oldukça kolaylaştırmalıdır:
#!/bin/sh
# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.
# Flush all rules before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add "
vif="vtnet0"
# allow all for localhost
$cmd 00010 allow ip from any to any via lo0
# checks stateful rules. If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state
# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state
# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state
# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state
# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state
# allow icmp re: ping, et. al.
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state
# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state
# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state
# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state
# otherwise deny outbound packets
# outbound catchall.
$cmd 00299 deny log ip from any to any out via $vif
# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif
# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif
# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif
# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif
# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state
$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2
# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any
# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state
# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif
# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any
Sistem gereksinimleri değişiklik gösterir ve engellenecek veya engeli kaldırılacak farklı bağlantı noktası seçenekleri kural kümesine yansıtılır. /usr/local/etc/IPFW.rules
Kural kümesi tamamlandıktan sonra, dosyayı kaydedin ve FBSD hizmetlerini başlatın:
# service ipfw start
# service sshguard start
Artırılmış güvenlik duvarı şimdi çalışıyor olmalıdır! Kontrol edin sshguard
:
[user@vultr ~]$ sudo pgrep -lfa ssh
Eğer sshguard
çalışıyorsa, onun pid ve tam komut satırı görüntülenir:
720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid
Bu, istatistikleri içeren güvenlik duvarı kural kümesini ve bir paketin kurala en son ne zaman eşleştiğini gösterir:
[user@vultr ~]$ sudo ipfw -cat list
Saat veya gün sonra, suçluların adresleri kara listeye ve ayrıca tablo 22'ye eklenir. Tablodaki tüm adresleri görüntülemek için şu komutu kullanın:
ipfw table 22 list
Sonuç şu şekilde yazdırılır:
10.10.10.118/32 0
10.10.10.72/32 0
...
Yukarıda açıklandığı gibi, bu adreslerden gelen bağlantılara izin verilmez. Tabii ki, ilk çalıştırmada sshguard
listede herhangi bir adres olmayacak, ancak zamanla oldukça uzun sürebilir. Bir seçenek, tabloda birden çok girişi olan adresler için ayrı engelleme kuralları oluşturmak ve bunları kara listeden silmektir.
Saldırıların kontrol edildiğinden emin olmak için günlükleri kontrol etmek iyi bir fikirdir. Genellikle /var/log/auth.log
ve /var/log/security
bilgilendiricidir. Ağ hizmetlerini kapsayan boşluklar veya hatalar ortaya çıkabilir. Güvenlik duvarı kural kümesini gerektiği gibi değiştirmek, sunucu yönetiminin normal bir parçasıdır.
Önceki sshguard sürümlerinde, /var/db/sshguard/blacklist.db
dosya büyüdüğünde sshguard
, sistem önyüklemesinde başlamayı engelleyebilir . Kara liste dosyasının kaldırılmasına veya yeniden adlandırılmasına izin verilir sshguard
. Bu sorun en son sshguard sürümünde giderilmiş gibi görünüyor, bu nedenle bu geçici çözüm artık gerekli değildir.
SSH Oturumuna bağlı olduğunuz IP Adresini beyaz listeye eklediğinizden emin olun. Kendinizi yanlışlıkla kilitlerseniz, https://my.vultr.com adresinden noVNC Konsoluna her zaman bağlanabilir ve IP'nizi beyaz listeye ekleyebilirsiniz.
Özetlemek gerekirse kombinasyonunu kullanarak ipfw
ve sshguard
güvenli FreeBSD sistem tutmaya yardımcı olur ve görevini yapıyor. Müdahaleci ağ etkinliğini en aza indirmenin ek bir yararı vardır: daha az "gürültü", sistem çalışmasını izlemeyi ve ayarlamayı kolaylaştırır, böylece daha güvenli ve daha iyi çalışan bir sunucuya katkıda bulunur.
Bir FreeBSD sistemini / sunucuyu etkili bir şekilde korumak özellikle karmaşık değildir. Çalıştırmak için mütevazı bir çaba gerekli olsa da, önemli ölçüde daha büyük VPS ve proje güvenliği ile sonuçlanır.
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
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.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
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, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun