पीएफ फ़ायरवॉल के साथ 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 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!

Zsh config फाइल बनाएं:

# 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

यह आदेश चलाएँ: (अपने उपयोगकर्ता नाम के साथ जॉन बदलें)

chown john:john /home/john/.zshrc

अब, अपने उपयोगकर्ता नाम के साथ FreeBSD सर्वर पर लॉगिन करें और डिफ़ॉल्ट रूट पासवर्ड बदलें:

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

अगला, हम और अधिक प्राकृतिक दिखने के लिए अपनी rconcon फ़ाइल बदल देंगे:

# 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

अपना आईपी पता और hostname जोड़ें:

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

रिबूट खत्म होने के बाद, आपको वल्चर कंसोल में इस तरह एक संदेश दिखाई देगा:

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

कुछ IP जोड़ें:

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

Bruteforcers बस कहते हैं: 22 से पोर्ट करने के लिए <भरोसेमंद> आईपी से अनुमति दें, लेकिन एक स्रोत आईपी से केवल 10 समवर्ती कनेक्शन किए जा सकते हैं। यदि यह 10 से अधिक है, तो इस आईपी को ब्लॉक करें और इसे टेबल ब्रूटफॉर्म्स में डालें। वही 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

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

एनएफएस एक नेटवर्क-आधारित फाइल सिस्टम है जो कंप्यूटरों को कंप्यूटर नेटवर्क पर फाइलों तक पहुंचने की अनुमति देता है। यह मार्गदर्शिका बताती है कि आप एनएफ पर फ़ोल्डर्स को कैसे उजागर कर सकते हैं

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ