Genel Server Güvenliği
%100 server güvenliğini sağlamanın tek yolu o serverın fişinden geçmektedir. En güvenli server fişi çekik serverdır.
Bunun dışındaki tüm methotlar sadece server güvenliğini arttırmak içindir. Aşağıda server güvenliği ile ilgili verilmiş
bilgiler genel bilgiler olup kullanıcıya göre değişebilmektedir.
vi, pico vb editorler kullanılarak aşağıdaki satırlar /etc/sysctl.conf içine eklenmelidir
# disable packet forwarding net.ipv4.ip_forward = 0 # enable source route verification
net.ipv4.conf.all.rp_filter = 1 # ignore broadcast pings
net.ipv4.icmp_echo_ignore_broadcasts = 1 # enable syn cookies
net.ipv4.tcp_syncookies = 1 # size of syn backlog
net.ipv4.tcp_max_syn_backlog = 512 # disable automatic defragmentation #
set max files fs.file-max = 32768 # Enable IP spoofing protection, turn on
Source Address Verification net.ipv4.conf.all.rp_filter = 1
# Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1
# Enable ignoring ping request net.ipv4.icmp_echo_ignore_all = 1
Bu ne yapar?
Bu kodlar linux işletim sisteminin kendisi tarafından kullanılmaktadır. Bu kodlar sisteme ping, icmp, isteklerini
redetmesini ve SYN korumasını devreye alınmasını, network forwarding in engellenmesini sağlar. Ancak bu değişiklik
yapıldıktan sonra server reboot edilmelidir.
/etc/rc.local, içine aşağıdaki kod eklenmelidir
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > done
echo 1 > /proc/sys/net/ipv4/tcp_syncookies for f in /proc/sys/net/ipv4/conf/*/accept_source_route;
do echo 0 > done echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Bu kısım bir önceki kısımla aynıdır ve bu isteklerin rededilmesi işlemini tekrar, başka bir guvenlik katmanıdır.
/etc/host.conf, içine aşağıdaki kodlar eklenmelidir , tabi içinde yoksa
# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on
/etc/hosts.deny içine aşağıdaki kod eklenmelidir
ALL: PARANOID
Burada bir önceki işlemde yapılan spoofing korumasını arttırılması sağlanır.
Firewall linux server için en önemli ihtiyaçtır. Firewall olmaksızın linux server tamamı ile tehlike altındadır
denilebilir , firewall ile server güvenlik altındadır ve korunabilir diyebiliriz ancak unutlmamalıdır ki hiç bir
firewall %100 güvenlik sağlamaz.
Kernel bilgilerini aramalı ve bulmalısnız. Hatta kişisel kernel derlemeside yapabilirsiniz, (eğer linuxde çok iyi
bir kullanıcı değilseniz kesinlikle bu işlem önerilmez) veya RPM kullanabilrsiniz
Kernel derlemesi local olmayan makinalarda kesinlikle önerilmeyen bir işlemdir. Sebebi ise , eğer bir şeyler ters
giderse sizin power düğmesine basıp kapatacak şansınız olmayacak ve tek kullanıcı modunda serverı başlatamayaaksınız.
Data Center ı beklemeli bir destek isteğinde bulunmalı ve onların yanıt vermesini beklemek zorunda kalacaksınız.
Buda hem büyük zaman kaybı, hem oldukça yavaş hem de çok maliyetli bir işlemdir.
Diğer uygulamalar yapılan konfigurasyon değişiklikleri sistem aşırı yükünü vb sorunları engelleyecektir.
Örnek
proftpd:
/etc/proftpd.conf, içine aşağıdaki kod eklenebilir
TimeoutIdle 600 TimeoutNoTransfer 600 TimeoutLogin 300 MaxInstances 30 MaxClientsPerHost 2
mysql için:
/etc/my.cnf
[mysqld] port = 3306 skip-locking
set-variable = max_connections=100
set-variable = max_user_connections=20
set-variable = key_buffer=16M
set-variable = join_buffer=4M
set-variable = record_buffer=4M
set-variable = sort_buffer=6M
set-variable = table_cache=1024
set-variable = myisam_sort_buffer_size=32M
set-variable = interactive_timeout=100
set-variable = wait_timeout=100
set-variable = connect_timeout=10
set-variable = thread_cache_size=128
ve son olarak, /etc/rc.local, içine aşağıdaki kod eklenebilir.
TMOUT=180 export TMOUT
Bu kısım serverda 3 dk hareketsiz duran herkesle bağlantısını kesecektir.Bu rakamı değiştirerek zamanı da
değiştirilebilir, örnek 300 yapıldığında bu 5 dk olacaktır
Güvenliğin bir seviye daha artırılması için aşağıdaki gibi bir uygulama yapılabilir
ssh erişimi kısıtlaması
in /etc/hosts.deny
sshd: ALL
in /etc/hosts.allow
Code:
sshd: host.ip.number.1,host.ip.number.2,etc