Hits :
4178
Jail for Bind
Chroot Bind
Για περισσότερα ρίξτε μια ματιά στο
chroothttpd
file:dnschroot.gif
Το πρόγραμμα bind (ακρονύμιο του Berkeley Internet Name Domain) είναι ένα από πιο δημοφιλή
και πολύ-χρησιμοποιημένα προγράμματα γύρω από το DNS στο διαδίκτυο. Αποτελεί πλέον προϊόν
του οργανισμού ISC. Για την έκδοση 9 (bind v9) έχουν ξαναγραφτεί αρκετά τμήματα κώδικα τα
οποία είχαν προβλήματα σχετικά με την αρχιτεκτονική του bind σε προηγούμενες εκδόσεις. Ένα
χαρακτηριστικό το οποίο έχει προστεθεί είναι η δυνατότητα να τρέχει σε BIND περιβάλλον. Έχει
υλοποιηθεί τμήμα κώδικα που και ΔΕΝ χρειάζεται να ακολουθήσουμε την διαδικασία που κάναμε
στο chroothttpd.
Ένας πολύ ενδιαφέρον πίνακας :
https://www.isc.org/security-report/
top
Εγκατάσταση της υπηρεσίας
Σκοπός είναι να δημιουργήσουμε ένα jail περιβάλλον για να μπορεί να τρέξει το bind εντός chroot
χωρίς όμως να τροποποιήσουμε κατά πολύ το σύστημά μας ή να κάνουμε πολλές αλλαγές. Ακόμα να μας
δίνεται η δυνατότητα να μπορούμε να αναβαθμίσουμε την υπηρεσία μας χωρίς όμως να πραγματοποιούμε
αλλάγες στο σύστημά μας.
Επειδή μου αρέσει πολύ να χρησιμοποιώ scripts για κάθε δουλειά, το ίδιο κάνω και εδώ:
Formatter "highlight/html" not found
top
Δημιουργία Χρήστη
Πριν συνεχίσουμε χρειάζεται να δημιουργήσουμε την ομάδα και τον χρήστη, στον οποία θα
μεταβιβάζουμε τα δικαιώματα του bind κατά την εκκίνησή του μέσα στο BIND περιβάλλον.
Με αυτό τον τρόπο εάν κάποιος αποκτήσει δικαιώματα στο bind μέσω κάποιου κενού ασφαλείας
να ΜΗΝ πάρει τα δικαιώματα του διαχειριστή αλλά του παρακάτω χρήστη:
groupadd -f named
useradd -c 'Bind User' -d /dev/null -g named -s /bin/false named
top
Δημιουργία Καταλόγων
Αυτή την στιγμή είμαστε σε θέση να δημιουργήσουμε όλα τα απαραίτητα αρχεία και καταλόγους
για να το jail περιβάλλον μας. Οπότε και δημιουργούμε τα εξής:
mkdir -pv $BIND/etc
mkdir -pv $BIND/dev
mkdir -pv $BIND/var/run
mkdir -pv $BIND/var/log
mkdir -pv $BIND/var/namedb
top
Δημιουργία συσκευών
Αυτή την στιγμή έχουμε δημιουργήσει τους καταλόγους, οπότε και προχωρούμε τις
απαραίτητες συσκευές:
mknod $BIND/dev/null c 1 3
mknod $BIND/dev/zero c 1 5
mknod $BIND/dev/random c 1 8
chmod 666 $BIND/dev/*
Σε αυτό το σημείο χρειάζεται να κάνουμε μία αλλαγή στο αρχείο ρυθμίσεων
του προγράμματος syslog daemon
/etc/default/syslogd ώστε να μπορεί
το πρόγραμμα bind να καταγράφει μέσω της συσκευής /dev/log :
perl -p -i -e 's/^SYSLOGD=""$/SYSLOGD="\-a \/opt\/bind_950_P1\/dev\/log"/g' /etc/default/syslogd
/etc/init.d/sysklogd restart
top
Αντιγραφή αρχείων
Τώρα μπορούμε να αντιγράψουμε όλα τα απαραίτητα αρχεία που χρειαζόμαστε ενός jail περιβάλλον.
Τα παρακάτω αρχεία είναι τα αρχεία ρυθμίσεων του chroot περιβάλλον για το bind:
grep named /etc/group > $BIND/etc/group
grep named /etc/passwd > $BIND/etc/passwd
grep 127.0.0.1 /etc/hosts > $BIND/etc/hosts
cp /etc/resolv.conf $BIND/etc/resolv.conf
cp /etc/localtime $BIND/etc/localtime
cp /etc/nsswitch.conf $BIND/etc/nsswitch.conf
Μετά από όλα αυτά χρειάζεται να αντιγράψουμε το αρχείο db.cache για να ορίσουμε
την ρίζα των dns:
cd $BIND/var/namedb/
wget -c ftp://ftp.internic.net/domain/db.cache
top
Δημιουργία αρχείου named.conf
Εν συνεχεία χρειάζεται να δημιουργήσουμε το named.conf.
Για να μπορούμε να κάνουμε χρήση του bind μέσω του rndc:
$BIND/sbin/rndc-confgen -b 512 > $BIND/etc/rndc.conf
tail $BIND/etc/rndc.conf | head -9 | sed -e 's/# //g' > $BIND/etc/named.conf
top
Αλλαγή δικαιωμάτων
Τώρα είμαστε σε θέση να τροποποιήσουμε τα δικαιώματα των αρχείων
ρυθμίσεων του bind, δίνοντας την δικαιοδοσία στον χρήστη named:
chown named.named $BIND/etc/rndc.conf $BIND/etc/named.conf
chown -R named.named $BIND/var/
top
# $BIND/sbin/named -g -u named -t $BIND
# $BIND/sbin/named -g -u named
Named.conf
named.conf
Για να ολοκληρώσουμε την διαδικασία και να μπορεί το bind να τρέχει εντός
του jail περιβάλλον χρειάζεται να προσθέσουμε στο τέλος του αρχείου named.conf
τα παρακάτω:
# options
options {
pid-file "/var/run/named.pid";
};
# db.cache - root name server
zone "." IN {
type hint;
file "/var/namedb/db.cache";
};
# logging
logging {
channel my_log {
file "/var/log/named.log";
severity dynamic;
print-time yes;
print-severity yes;
print-category yes;
};
category default {
my_log;
};
};
# forward
zone "otenet.gr" {
type forward;
forwarders { 195.170.0.1; };
forward only;
};
top
Εκκίνηση named
Και σε αυτό το σημείο απλά χρειάζεται να εκκινήσουμε το bind:
Πριν εκκινήσουμε το bind κανονικά θα το ξεκινήσουμε το option
-g
ώστε να δούμε μήπως μας χτυπήσει πουθενά:
$BIND/sbin/named -g -t $BIND -c /etc/named.conf -u named
εάν όλα πάνε καλά τότε απλά:
$BIND/sbin/named -t $BIND -c /etc/named.conf -u named
Και ελέγχουμε με την εντολή:
ps -ef | grep -i na[m]ed
top