Εισαγωγή
Εντολές
Ασφάλιση και σκλήρυνση του πυρήνα
συμπέρασμα
Εισαγωγή
Sysctlεπιτρέπει στον χρήστη να συντονίσει με ακρίβεια τον πυρήνα χωρίς να χρειάζεται να ξαναχτίσει τον πυρήνα. Θα εφαρμόσει επίσης τις αλλαγές αμέσως, επομένως ο διακομιστής δεν θα χρειάζεται να επανεκκινηθεί για να τεθούν σε ισχύ οι αλλαγές. Αυτό το σεμινάριο παρέχει μια σύντομη εισαγωγή sysctlκαι δείχνει πώς να το χρησιμοποιήσετε για να τροποποιήσετε συγκεκριμένα μέρη του πυρήνα του Linux.
Εντολές
Για να ξεκινήσετε να χρησιμοποιείτε το sysctl, ελέγξτε τις παραμέτρους και τα παραδείγματα που αναφέρονται παρακάτω.
Παράμετροι
-a : Θα εμφανιστούν όλες οι τιμές που είναι διαθέσιμες αυτήν τη στιγμή στη διαμόρφωση sysctl.
-A : Αυτό θα εμφανίσει όλες τις τιμές που είναι διαθέσιμες αυτήν τη στιγμή στη διαμόρφωση sysctl σε μορφή πίνακα.
-e : Αυτή η επιλογή θα αγνοήσει σφάλματα σχετικά με άγνωστα κλειδιά.
-p : Χρησιμοποιείται για τη φόρτωση μιας συγκεκριμένης διαμόρφωσης sysctl, από προεπιλογή θα χρησιμοποιεί/etc/sysctl.conf
-n : Αυτή η επιλογή θα απενεργοποιήσει την εμφάνιση των ονομάτων κλειδιών κατά την εκτύπωση των τιμών.
-w : Αυτή η επιλογή προορίζεται για αλλαγή (ή προσθήκη) τιμών στο sysctl κατ' απαίτηση.
Παραδείγματα
$ sysctl -a
$ sysctl -n fs.file-max
$ sysctl -w fs.file-max=2097152
$ sysctl -p
Έτσι πρώτα ελέγχουμε τις προεπιλεγμένες τιμές. Εάν /etc/sysctl.confείναι κενό, θα εμφανιστούν όλα τα προεπιλεγμένα κλειδιά και τιμές. Δεύτερον, ελέγχουμε ποια είναι η τιμή του fs.file-maxκαι μετά ορίζουμε τη νέα τιμή σε 2097152. Τέλος, φορτώνουμε το νέο /etc/sysctl.confαρχείο ρυθμίσεων.
Εάν αναζητάτε πρόσθετη βοήθεια, μπορείτε να χρησιμοποιήσετε το man sysctl.
Ασφάλιση και σκλήρυνση του πυρήνα
Για να γίνουν μόνιμες οι αλλαγές, θα πρέπει να προσθέσουμε αυτές τις τιμές σε ένα αρχείο ρυθμίσεων. Χρησιμοποιήστε το αρχείο διαμόρφωσης που παρέχει το CentOS από προεπιλογή, /etc/sysctl.conf.
Ανοίξτε το αρχείο με τον αγαπημένο σας επεξεργαστή.
Από προεπιλογή, θα πρέπει να δείτε κάτι παρόμοιο με αυτό.
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
Ας βελτιώσουμε πρώτα τη διαχείριση της μνήμης του συστήματος.
Θα ελαχιστοποιήσουμε το μέγεθος της εναλλαγής που πρέπει να κάνουμε, θα αυξήσουμε το μέγεθος των λαβών αρχείων και της κρυφής μνήμης inode και θα περιορίσουμε τις αποτυπώσεις πυρήνων.
# Minimizing the amount of swapping
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
# Increases the size of file handles and inode cache & restricts core dumps
fs.file-max = 2097152
fs.suid_dumpable = 0
Στη συνέχεια, ας συντονίσουμε τη βελτιστοποιημένη απόδοση του δικτύου.
Θα αλλάξουμε τον αριθμό των εισερχόμενων συνδέσεων και των ανεκτέλεστων εισερχόμενων συνδέσεων, θα αυξήσουμε τη μέγιστη ποσότητα των buffer μνήμης και θα αυξήσουμε την προεπιλεγμένη και τη μέγιστη μνήμη αποστολής/λήψης.
# Change the amount of incoming connections and incoming connections backlog
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
# Increase the maximum amount of memory buffers
net.core.optmem_max = 25165824
# Increase the default and maximum send/receive buffers
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
Τέλος, πρόκειται να βελτιώσουμε τη γενική ασφάλεια του δικτύου.
Θα ενεργοποιήσουμε την προστασία cookie TCP SYN, την προστασία από πλαστογράφηση IP, την παράβλεψη αιτημάτων ICMP, την παράβλεψη αιτημάτων εκπομπής και την καταγραφή σε πλαστά πακέτα, πακέτα με δρομολόγηση προέλευσης και πακέτα ανακατεύθυνσης. Μαζί με αυτό, θα απενεργοποιήσουμε τη δρομολόγηση πηγής IP και την αποδοχή ανακατεύθυνσης ICMP.
# Enable TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter = 1
# Enable ignoring to ICMP requests and broadcasts request
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable logging of spoofed packets, source routed packets and redirect packets
net.ipv4.conf.all.log_martians = 1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route = 0
# Disable ICMP redirect acceptance
net.ipv4.conf.all.accept_redirects = 0
Αποθηκεύστε και κλείστε το αρχείο και, στη συνέχεια, φορτώστε το αρχείο χρησιμοποιώντας την sysctl -pεντολή.
συμπέρασμα
Στο τέλος, το αρχείο σας θα πρέπει να μοιάζει με αυτό.
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# Minimizing the amount of swapping
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
# Increases the size of file handles and inode cache & restricts core dumps
fs.file-max = 2097152
fs.suid_dumpable = 0
# Change the amount of incoming connections and incoming connections backlog
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
# Increase the maximum amount of memory buffers
net.core.optmem_max = 25165824
# Increase the default and maximum send/receive buffers
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
# Enable TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter = 1
# Enable ignoring to ICMP requests and broadcasts request
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable logging of spoofed packets, source routed packets and redirect packets
net.ipv4.conf.all.log_martians = 1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route = 0
# Disable ICMP redirect acceptance
net.ipv4.conf.all.accept_redirects = 0