INSTALIMI DHE KONFIGURIMI I PJESËS TJETËR TË SISTEMIT

Konfigurimi i rrjetit

Meqenëse Instaluesi i Debian Srage ka konfiguruar sistemin tonë në menyrë që të marrë konfigurimet e rrjetit via DHCP, tani duhet të ndryshojmë këto konfigurime, mbasi një server duhet të ketë një adresë statike IP.

Për këtë qëllim, ndryshojmë /etc/network/interfaces dhe e rregullojmë sipas nevojës.
Në shembullin tonë do të përdorim adresën IP 192.168.1.10:
Nga...:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp

Në...

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Mbas kryerjes dhe ruajtjes së ndryshimeve, rinisim rrjetin:

/etc/init.d/networking restart

Ndryshojmë /etc/resolv.conf duke shtuar disa servera emrash (unë po shkruaj ata që përdor në Itali):

search server
nameserver  85.37.17.49
nameserver  85.38.28.91
nameserver  151.99.125.1

Ndryshojmë /etc/hosts dhe shtojmë adresën e re IP:

127.0.0.1       localhost.localdomain   localhost       server1
192.168.1.10    server1.shembull.org    server1
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodesff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Sistemojmë emrin e host:

echo server1.shembull.org > /etc/hostname/bin/hostname -F /etc/hostname

Instalojmë/heqim disa programe

Tani, të instalojmë disa programe që do të na duhen për më vonë dhe të heqim programet që nuk na hyjnë në punë:

apt-get install wget bzip2 rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat libarchive-zip-perl zlib1g-dev libpopt-dev nmap openssl lynx fileutils

(një rresht i vetëm)

apt-get remove lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig
update-rc.d -f exim4 remove
update-inetd --remove daytime
update-inetd --remove telnet
update-inetd --remove time
update-inetd --remove finger
update-inetd --remove talk
update-inetd --remove ntalk
update-inetd --remove ftp
update-inetd --remove discard
/etc/init.d/inetd reload

Quota

apt-get install quota quotatool

Tek dritarja e dialogut të instalimit përgjigju: -> Jo

Ndryshojmë /etc/fstab (shtojmë usrquota, grpquota tek particioni me pikë montimi /):

# /etc/fstab: static file system information.
## <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,errors=remount-ro,usrquota,grpquota 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   iso9660 ro,user,noauto  0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Mbasi të kemi ruajtur ndryshimet, ekzekutojmë:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

Serveri DNS

apt-get install bind9

Për të rritur nivelin e sigurisë, BIND do të ekzekutohet në "birucë" (chrooted), prandaj duhet të veprojmë si në vazhdim:

/etc/init.d/bind9 stop

Ndryshojmë file /etc/default/bind9 në menyrë që deamon të funksionojë si përdorues pa të drejta 'bind', chroot-uar në /var/lib/named.
Ndryshojmë rreshtin: OPTS="-u bind" në menyrë që të lexohet OPTS="-u bind -t /var/lib/named":

OPTIONS="-u bind -t /var/lib/named"

Krijojmë directories e duhura nën /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

dhe lëvizim directory me konfigurimin nga /etc/var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Për të shmangur problemet që mund të lindin gjatë përditësimeve të mundëshme të mëvonshme, krijojmë një lidhje simbolike midis directory të konfigurimit dhe pozicionit të vjetër:

ln -s /var/lib/named/etc/bind /etc/bind

Krijojmë devices "null" dhe "random" dhe sistemojmë të drejtat e kartelave:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Gjithashtu na duhet të ndryshojmë script-in e nisjes së szsklogd (/etc/init.d/sysklogd) në menyrë që të vazhdojmë regjistrimin e mesazheve të rendësishme të log tek logs e sistemit.

Ndryshojmë rreshtin SYSLOGD="" në menyrë që të lexojë: SYSLOGD="-a /var/lib/named/dev/log":

#! /bin/sh
# /etc/init.d/sysklogd: start the system log daemon.

### BEGIN INIT INFO
# Provides:             syslog
# Required-Start:       $local_fs $network $time
# Required-Stop:        $local_fs $network $time
# Default-Start:        2 3 4 5
# Default-Stop:         S 0 1 6
# Short-Description:    System logger
### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin

pidfile=/var/run/syslogd.pid
binpath=/sbin/syslogd

test -x $binpath || exit 0
# Options for start/restart the daemons
#   For remote UDP logging use SYSLOGD="-r"
#SYSLOGD="-a /var/lib/named/dev/log"
create_xconsole()
{  
if [ ! -e /dev/xconsole ]; then        mknod -m 640 /dev/xconsole p    else        chmod 0640 /dev/xconsole    fi    chown root:adm /dev/xconsole}running(){    # No pidfile, probably no daemon present    #    if [ ! -f $pidfile ]    then        return 1    fi    pid=`cat $pidfile`    # No pid, probably no daemon present    #    if [ -z "$pid" ]    then        return 1    fi    if [ ! -d /proc/$pid ]    then        return 1    fi    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`    # No syslogd?    #    if [ "$cmd" != "$binpath" ]    then        return 1    fi    return 0}case "$1" in  start)    echo -n "Starting system log daemon: syslogd"    create_xconsole    start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD    echo "."    ;;  stop)    echo -n "Stopping system log daemon: syslogd"    start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile    echo "."    ;;  reload|force-reload)    echo -n "Reloading system log daemon: syslogd"    start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile    echo "."    ;;  restart)    echo -n "Restarting system log daemon: syslogd"    start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile    sleep 1    start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD    echo "."    ;;  reload-or-restart)    if running    then        echo -n "Reloading system log daemon: syslogd"        start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile    else        echo -n "Restarting system log daemon: syslogd"        start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD    fi    echo "."    ;;  *)    echo "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart}"    exit 1esacexit 0

Rinisim daemon e sistemit të regjistrimit të mesazheve:

/etc/init.d/sysklogd restart

Nisim BIND, dhe kontrollojmë /var/log/syslog për ndonjë gabim të mundshëm:

/etc/init.d/bind9 start

MySQL

apt-get install mysql-server mysql-client libmysqlclient12-dev

Ndryshojmë (ose më mirë i caktojmë një fjalëkalim përdoruesit root të MySQL, duke parë që kur instalohet root nuk ka asnjë fjalëkalim) fjalëkalimin e root të MySQL:

mysqladmin -u root password fjalëkalimijuajpërmysqlroot

Japim komandën

netstat -tap

dhe midis të tjerave duhet të shohim një rresht të ngjashëm me:

tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2449/mysqld

që do të thotë që MySQL është në "dëgjim" tek adresa 127.0.1, porta rezultuese.

Postfix/POP3/IMAP

Në menyrë që të instalojmë Postfix me SMTP-AUTH dhe TLS si server POP3 që gjithashtu shërben POP3s (porta 995) dhe një server IMAP që trajton edhe IMAPs (porta 993) do të veprojmë si në vazhdim:

apt-get install postfix postfix-tls libsasl2 sasl2-bin libsasl2-modules ipopd-ssl uw-imapd-ssl

(një rresht i vetëm)

Konfigurimi i ipopd
-> pop3 dhe pop3s
-> JoKonfigurimi i postfix
-> Internet Site
-> None
-> server1.shembull.org
-> server1.shembull.org, localhost.shembull.org, localhost
-> Jo

Japim komandat:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'

echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'

Mbas konfigurimeve të mësipërme, file /etc/postfix/main.cf duhet të jetë i ngjashëm me:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = localhost.localdomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.shembull.org, localhost.shembull.org, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600
stls_random_source = dev:/dev/urandom

Rinisim Postfix:

/etc/init.d/postfix restart

Autentifikimi do të kryhet nga saslauthd. Që të punojë si duhet duhet të kryejmë nja dy ndryshime. Meqenëse Postfix funksionon i chroot-uar në /var/spool/postfix duhet të veprojmë si në vazhdim:

mkdir -p /var/spool/postfix/var/run/saslauthd
rm -fr /var/run/saslauthd

Tani duhet të ndryshojmë /etc/default/saslauthd në menyrë që të aktivojmë saslauthd. Heqim # në fillim të START=yes dhe shtojmë rreshtin PARAMS="-m /var/spool/postfix/var/run/saslauthd":

# This needs to be uncommented before saslauthd will be run automatically
START=yes
PARAMS="-m /var/spool/postfix/var/run/saslauthd"
# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"
MECHANISMS="pam"

Në fund duhet të ndryshojmë /etc/init.d/saslauthd.Ndryshojmë rreshtin:

dir=`dpkg-statoverride --list $PWDIR`

në:

#dir=`dpkg-statoverride --list $PWDIR`

Pastaj ndryshojmë të ndryshieshmet PWDIR dhe PIDFILE dhe shtojmë të ndryshueshmen dir në fillim të file:

PWDIR="/var/spool/postfix/var/run/${NAME}"
PIDFILE="${PWDIR}/saslauthd.pid"
dir="root sasl 755 ${PWDIR}"

File /etc/init.d/saslauthd tashmë duhet të jetë si në vazhdim:

#!/bin/sh
NAME=saslauthd
DAEMON="/usr/sbin/${NAME}"
DESC="SASL Authentication Daemon"
DEFAULTS=/etc/default/saslauthd
PWDIR="/var/spool/postfix/var/run/${NAME}"
PIDFILE="${PWDIR}/saslauthd.pid"

dir="root sasl 755 ${PWDIR}"
createdir() {
# $1 = user# $2 = group# $3 = permissions (octal)# $4 = path to directory        [ -d "$4" ] || mkdir -p "$4"        chown -c -h "$1:$2" "$4"        chmod -c "$3" "$4"}test -f "${DAEMON}" || exit 0# Source defaults file; edit that file to configure this script.if [ -e "${DEFAULTS}" ]; then    . "${DEFAULTS}"fi# If we're not to start the daemon, simply exitif [ "${START}" != "yes" ]; then    exit 0fi# If we have no mechanisms definedif [ "x${MECHANISMS}" = "x" ]; then    echo "You need to configure ${DEFAULTS} with mechanisms to be used"    exit 0fi# Add our mechanimsms with the necessary flagPARAMS="${PARAMS} -a ${MECHANISMS}"START="--start --quiet --pidfile ${PIDFILE} --startas ${DAEMON} --name ${NAME} -- ${PARAMS}"# Consider our optionscase "${1}" in  start)        echo -n "Starting ${DESC}: "        #dir=`dpkg-statoverride --list $PWDIR`        test -z "$dir" || createdir $dir        if start-stop-daemon ${START} >/dev/null 2>&1 ; then                echo "${NAME}."        else                if start-stop-daemon --test ${START} >/dev/null 2>&1; then                        echo "(failed)."                        exit 1                else                        echo "${DAEMON} already running."                        exit 0                fi        fi        ;;  stop)        echo -n "Stopping ${DESC}: "        if start-stop-daemon --stop --quiet --pidfile "${PIDFILE}" \                --startas ${DAEMON} --retry 10 --name ${NAME} \                >/dev/null 2>&1 ; then                        echo "${NAME}."        else                if start-stop-daemon --test ${START} >/dev/null 2>&1; then                        echo "(not running)."                        exit 0                else                        echo "(failed)."                        exit 1                fi        fi        ;;  restart|force-reload)          $0 stop        exec $0 start        ;;  *)        echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2        exit 1        ;;esacexit 0

Tani mund të nisim saslauthd:

/etc/init.d/saslauthd start

Për të kontrolluar që SMTP-AUTH dhe TLS punojnë si duhet ekzekutojmë komandën në vazhdim:

telnet localhost 25


Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix (Debian/GNU)

Tani japim komandën:

ehlo localhost


250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME

Nga përgjigja dallojmë ekzistencën e rreshtave 250-STARTTLS dhe 250-AUTH: gjithçka është në rregull.
Dalim:

quit
  • Courier-IMAP/Courier-POP3
    Po të duam të përdorim një daemon POP3/IMAP me suport për Maildir (nëse nuk duam të përdorim formatin e zakonshëm mailbox) mund të instalojmë Courier-IMAP/Courier-IMAP-SSL (për IMAPs në portën 993) dhe Courier-POP3/Courier-POP3-SSL (për POP3s në portën 995). Përndryshe mund të kaloni tek hapi pasardhës: Konfigurimi i Apache.

    apt-get install courier-imap courier-imap-ssl courier-pop courier-pop-ssl

    Tek dritarja e dialogut përgjigju -> Jo
    ipopd dhe UW-IMAP do të zëvendësohen.
    Konfigurojmë Postfix që të shpërndajë e-mailet tek Maildir e përdoruesit:

    postconf -e 'home_mailbox = Maildir/'
    postconf -e 'mailbox_command ='

    Rinisim Postfix:

    /etc/init.d/postfix restart

Apache

Instalojmë Apache:

apt-get install apache2 apache2-doc
apt-get install libapache2-mod-php4 libapache2-mod-perl2 php4 php4-cli php4-common php4-curl php4-dev php4-domxml php4-gd php4-imap php4-ldap php4-mcal php4-mhash php4-mysql php4-odbc php4-pear php4-xslt curl libwww-perl imagemagick

(në një rresht!)
Ndryshojmë file e konfigurimit /etc/apache2/apache2.conf
Gjejmë dhe ndryshojmë nga:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml

DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

Ndryshojmë /etc/apache2/ports.conf dhe shtojmë rreshtin Listen 443:

Listen 80
Listen 443

Aktivojmë disa modulë të Apache (SSL, rewrite dhe suexec):

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Rinisim Apache:

/etc/init.d/apache2 restart

Provojmë funksionimin e Apache dhe PHP:

cd /var/www

Krijojmë një file të quajtur info.php me përmbajtje:

<?php phpinfo(); ?>

Hapim një shfletues web dhe shkruajmë adresën: http://adresa_IP_e_serverit/info.php

Duhet të hapet faqja informuese e php.

Proftpd

Instalojmë:

apt-get install proftpd

-> standalone

Që të rrisim sigurinë mund të shtojmë rreshtat në vazhdim tek /etc/proftpd.conf (shiko dhe http://proftpd.linux.co.uk/localsite/Userguide/linked/userguide.html):

DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."

Rinisim Proftpd:

/etc/init.d/proftpd restart

Webalizer

Instalojmë webalizer:

apt-get install webalizer

-> /var/www/webalizer
-> Statistikat e perdorimit per
-> /var/log/apache2/access.log.1

Sinkronizimi i orës së sistemit

M.q.s. kemi të bëjmë me një server është mirë që ora e sistemit të sinkronizohet rregullisht me një server NTP.

Krijojmë file e crontabs:

touch /var/spool/cron/crontabs/root

Shtojmë në të rreshtat në vazhdim:

# përditëso orën me serverët ntp
0 3,9,15,21 * * * /usr/sbin/rdate 128.2.136.71 | logger -t NTP

Pastaj:

chmod 600 /var/spool/cron/crontabs/root

Rinisim cron:

/etc/init.d/cron restart

Disa Modulë Perl

Nëse do të na duhet të instalojmë SpamAssassin, duhet të instalojmë disa modulë shtesë Perl:

apt-get install libdb-file-lock-perl libdigest-hmac-perl libnet-dns-perl libhtml-parser-perl

Mund të përdorim edhe Shell e Perl për të instaluar modulët:

perl -MCPAN -e shell

Mbas konfigurimit (që mund të kryhet edhe automatikisht nga sistemi) fillojmë instalimin në shell:

install HTML::Parser
install DB_File
install Net::DNS

(kur kërkohet aktivimi i testeve, zgjidh 'no')

q

(për të dalë nga shell)
Instalimi me sukses i një moduli jep si rezultat diçka të ngjashme me:
/usr/bin/make install -- OK