Her er hvordan jeg starter mine Iptables scrips på mine firewalls, under boot af maskinerne.
En hurtig kig i min netværks konfiguration viser at jeg starter firewallen sammen med netværket via pre-up kommandoeer
# cat /etc/network/interfaces
allow-hotplug ethx
iface ethx inet static
pre-up iptables-restore < /etc/iptables/my.Firewall
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
Der er sikkert nogle som mener at der er bedre måder at starte firewallen på, men for mig er det vigtigste at firewallen kommer op før at det bliver muligt at kommuniker med det eksterne interface i min firewall og dette styres meget nemt i /etc/network/interfaces filen
Her er hvordan man meget simpelt kan højne sikkerheden af openssh-server ved at editere lidt i følgende config file.
# vi /etc/ssh/sshd_config
Det første der børe gøres er at ændre linjen:
PermitRootLogin yes
til
PermitRootLogin no
Alle ved at en linux kasse har en root bruger og derfor vil den være det første offer for et angreb.
derefter bør man tilføje denne linje med en liste over de bruger som må ssh ind på kassen:
AllowUsers
f.eks:
AllowUsers hans jens inger
Herefter skal servicen genstartes:
/etc/init.d/ssh restart
En anden sikring som er vigtig er debian pakken Fail2ban som er en daemon der kan overvåge logfiler og blokere ipaddresser hvis de laver flere login forsøg som mislykkes over en periode.
# Apt-get install fail2ban
Default beskytter Fail2ban SSH og tager man en kig i fail2ban loggen vi man sandsynlig se dette efter kort tid.
$ tail -f /var/log/fail2ban.log
iptables -X fail2ban-<name>
2009-08-12 12:57:43,812 fail2ban.actions.action: INFO Set actionStart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
2009-08-12 12:57:43,813 fail2ban.actions.action: INFO Set actionUnban = iptables -D fail2ban-<name> -s <ip> -j DROP
2009-08-12 12:57:43,814 fail2ban.actions.action: INFO Set actionCheck = iptables -n -L INPUT | grep -q fail2ban-<name>
2009-08-13 00:51:41,418 fail2ban.actions: WARNING [ssh] Ban 91.203.232.3
2009-08-13 01:01:41,438 fail2ban.actions: WARNING [ssh] Unban 91.203.232.3
2009-08-13 03:41:52,534 fail2ban.actions: WARNING [ssh] Ban 222.85.67.243
2009-08-13 03:51:52,558 fail2ban.actions: WARNING [ssh] Unban 222.85.67.243
Nogle kan også godt lidt at ændre ssh port nummeret for til et tal over 1024, for at undgå langt de fleste portscanner, personligt ser jeg ikke denne ændring som en der er vigtig at lave.
Ændring af port gøres ved at ændre linjen:
Port 22
til f.eks.
Port 3022
en genstart af ssh vil flytte porten ssh lytter på.
Hvis man ønsker at SSH skal lytte på flere porte skal man tilføje flere Port under hinanden:
Port 22
biliver til
Port 22
Port 3022
SSh lytter nu både på port 22 samt port 3022...
Er er kort hvad jeg skulle gøre for at overvåge nogle nye WDC WD10EVVS diske med hddtemp.
Mine erfaringer siger at alt low-cost hdd holder i utrolig laaaaangtid så langt de ikke bliver forvarme, derfor er det altid godt at overvåge disse.
# apt-get install hddtemp
# hddtemp /dev/sdb /dev/sda
/dev/sdb: WDC WD10EVVS-63E1B1: 36°C
/dev/sda: WDC WD10EVVS-63E1B0: 36°C
# hddtemp -n /dev/sdb /dev/sda
36
36
det skal siges at det ikke er alle Sata diske som er lige nemme at overvåge, med mine nye WDC WD10EVVS virker utrolig godt både med smartmontools og hddtemp
Her er hvordan jeg installer rrdtool fra sourcefiler.
Installer prereqs:
# apt-get install intltool libcairo2-dev libpango1.0-dev libxml++1.0-dev
download rrdtool:
# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz
Udpak filerne:
# tar -zxvf rrdtool.tar.gz
CD til mappen:
# cd rrdtool-1.3.8/
kør Configure:
# ./configure
Sucessfull Configure output.
----------------------------------------------------------------
Config is DONE!
With MMAP IO: yes
Build rrd_getopt: no
Static programs: no
Perl Modules: perl_piped perl_shared
Perl Binary: /usr/bin/perl
Perl Version: 5.10.0
Perl Options: PREFIX=$(DESTDIR)/usr/local/rrdtool-1.3.8 LIB=$(DESTDIR)/usr/local/rrdtool-1.3.8/lib/perl/5.10.0
Ruby Modules:
Ruby Binary: no
Ruby Options: sitedir=$(DESTDIR)/usr/local/rrdtool-1.3.8/lib/ruby
Build Tcl Bindings: no
Build Python Bindings: no
Build rrdcgi: yes
Build librrd MT: yes
Link with libintl: yes
Libraries: -lxml2 -lcairo -lcairo -lcairo -lm -lcairo -lpng12 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
Type 'make' to compile the software and use 'make install' to
install everything to: /usr/local/rrdtool-1.3.8.
... that wishlist is NO JOKE. If you find RRDtool useful
make me happy. Go to http://tobi.oetiker.ch/wish and
place an order.
-- Tobi Oetiker
Compile RRDTool:
# make
Installer RRDTool:
# make install
Test RRDtool:
# /usr/local/rrdtool-1.3.8/bin/rrdtool
successfuldt output:
RRDtool 1.3.8 Copyright 1997-2009 by Tobias Oetiker <This email address is being protected from spambots. You need JavaScript enabled to view it.>
Compiled Jul 12 2009 22:21:52
Usage: rrdtool [options] command command_options
Valid commands: create, update, updatev, graph, graphv, dump, restore,
last, lastupdate, first, info, fetch, tune,
resize, xport
RRDtool is distributed under the Terms of the GNU General
Public License Version 2. (www.gnu.org/copyleft/gpl.html)
For more information read the RRD manpages
En hurtig gennemgang at installation af MRTG på en debian maskine.
Først hent source fra http://oss.oetiker.ch/mrtg/pub/?M=D
wget http://oss.oetiker.ch/mrtg/pub/mrtg.tar.gz
Udpak denne:
tar -zxvf mrtg.tar.gz
Installer andre Preregs: så som GD
apt-get install libgd2-noxpm-dev libgd2-noxpm libio-socket-inet6-perl libsnmp-session-perl libsocket6-perl
CD ind ind i den udpakket source file mappen, her er det version 2.16.2
cd mrtg-2.16.2/
Start installatione af mrtg med at konfiguere pakken
./configure
Compile filerne:
make
Installer:
make install
Her efter kan man prøve at køre:
/usr/local/mrtg-2/bin/mrtg
hvilket bør give dette output.
-----------------------------------------------------------------------
ERROR: Mrtg will most likely not work properly when the environment
variable LANG is set to UTF-8. Please run mrtg in an environment
where this is not the case. Try the following command to start:
env LANG=C local/mrtg-2/bin/mrtg
-----------------------------------------------------------------------
Page 12 of 14