Denna tråd kommer ta upp grundläggande metoder för att behandla säkerheten i Linux. En del fokus på webbservrar och virus/rootkits men även allmän säkerhet. Det mesta i denna text är till för inspektion endast, det är alltså ditt ansvar att verifiera vad programmen hittar och det är du som ska komma med en lösning.
Linux är allmänt känt att vara säkrare än Windows. Detta stämmer mycket på grund utav användarhierarkin på Linux och den öppna källkoden som underlättar att upptäcka säkerhetsbrister. Men givetvis finns det virus, rootkits och exploits för Linux som ställer till problem lite då och då. Att behöva kolla efter sårbara versioner kan bli plågsamt så denna tråd är till för att underlätta vad som är sårbart i ditt system och hur du kan täppa till de potentiella vektorerna.
Först och främst, håll ditt system uppdaterat! Med varje uppdatering kommer säkerhetsförbättringar. Från pakethanterare så skiljer sig kommandot, men i Debian är det "apt-get update && upgrade" och i Arch så är det "Pacman -Syu" och under Gentoo är det med emerge, t.ex "emerge --update --deep --with-bdeps=y --newuse world" samt med yum så är det "yum update".
I denna guide så använder jag Debian på en extern server som jag SSH'at in på.
Manuella säkerhetsåtgärder
Det finns många saker man kan göra för att säkra upp sitt system. Det första är så klart att hålla systemet uppdaterat. Att ha ett cronjob som gör uppdateringprocessen är rekommenderat, och beroende på system så kan du ändra hur ofta du ska uppdatera. Men en gång per dag tycker jag är lagom.
Med kommando så som "w" och "who" så kan du se vem som är inloggad.
Kolla efter öppna portar med "netstat -punta" och inspektera om det är något du tycker ser misstänksamt. Om så är fallet så kan du enkelt döda den processen eller stänga porten.
För anslutningar så använd alltid krypterat. Inte telnet eller FTP utan du kan använda SFTP och SSH. Använd gärna SSH-keys för ännu mer säkerhet.
Var försiktig med filer! Om du har en webbserver så låt den köras i jail, dvs att den inte får läsa andra filer som den inte behöver läsa. Att använda "chattr" är även rekommenderat för då kan ingen ändra filen då den blir "låst". Detta är bra att sätta på index-filer så du slipper bli defacad. Utan du måste med root låsa upp filen. Man kan låsa mappar och andra alternativ, t.ex att endast tillåta att en fil expanderas. Detta är bra med log-filer. Du kan testa och se så allting fungerar, med echo "test" >> /var/www/index.html och får du permission denied även som root så fungerar det.
Använd en syslog-server om du ska ha en server öppen mot Internet, hur du fixar detta är från system till system men en googling kommer hjälpa dig på traven. En Syslog-server är en server som loggar din servers aktivitet, detta är speciellt bra om du har en hacker som raderar spår efter sig. Samt så ger en syslog mer info om din servers aktivitet.
Om du har en webbserver och den blir hackad så är det viktigt att veta vilka av dina filer som är suid-filer. Dessa filer får köras som en annan användares rättigheter, t.ex root.
Brandväggar
I Linux så finns det IPtables som fungerar som en brandvägg, men ett litet mer enkelt och behagligt program för detta är Ipkungfu.
I accept_hosts.conf så kan ni ange vilka hosts som kommer godkännas av din maskin. Om du använder VPN så kan du ange denna IP om din provider använder statiska adresser så kan du ange den. I filen så anger du enkelt vilken IP samt protokoll med följande syntax(host[:port:protocol]):
Nu ska vi ändra i filen /etc/ipkungfu/ipkungfu.conf - ta bort # för att inte göra det som en kommentar vilket kommer göra raden giltig i konfigurationsfilen.
Starta ipkungfu med "ipkungfu" och kolla att allt stämmer med "ipkungfu -c"
Andra brandväggar så som ufw kan även installeras. Då får med med ett GUI(gufw). Om du är van med IPtables så använd det, men principen bakom brandväggar är att aldrig ha portar öppna som du inte ska använda. Om du har en webbserver så får du se till att port 80/443 är öppen och port 22 om du ska SSH'a in. Ska du endast flytta över små filer så använd gärna SFTP än FTP och då slipper du mer programvaror och ha port 21 öppen. Att blockera pingpaket och scans är bra eftersom det försvårar för en hacker att se vilken version av dina servicar du använder och vilka portar som finns tillgängliga.
IPF
Intrusion Prevention Framework(IPF) - det mest kända ramverket är Fail2ban och syftet med Fail2Ban är att förhindra bruteforce-attacker.
Och exakt så enkelt är det att använda fail2ban. En gång i tiden hade jag webmin körandes och just den versionen var sårbar mot bruteforce. Jag satte upp fail2ban och problemet var löst. exploiten för webmin. Använder du Apache, nginx, vsftpd, SSH så får du ändra inställningar för dessa! De kanske inte är på som standard så se till att den är enable!
IDS
Intrusion Detection System(IDS) - är förmågan att kunna detektera intrångsförsök. Detta innefattar att söka efter rootkits, kolla att inga inställningar är mysko och se så nätverkstrafiken är som den ska.
Chkrootkit
chkrootkit är det enklaste programmet. Men det kräver ändå att du noggrant kollar igenom den data som skapas. Även fast chkrootkit skriver ut status i slutet "not infected" så kan det vara bra att kolla så allt ser OK ut.
rkhunter
Tiger
ClamAV
Lynis
Sist men ironiskt nog inte minst har vi vår vän Lynis. När du gör en full scan så kommer du behöva trycka dig igenom varje sektion. Det bästa med Lynis är att den är otroligt grundlig och att den föreslår hur man åtgärdar problemet i slutet av en scan.
Snort- är ett intrångsskydd för nätverk, dock avancerat.
Tcpdump - är en enkel sniffer.
Övrigt
ändra DNS-server i /etc/resolv.conf till någon OpenDNS-server.
http://www.ip2location.com/free/visitor-blocker - skapa .htaccess-filer och välj länder som ska blockeras/tillåtas. Bra om du har endast en svensk sida och du vill ha svenska besökare.
http://www.debian.org/doc/manuals/se...he-env.en.html -dokumentation på hur du får Apache att köras i chroot
http://www.cse.sc.edu/~okeefe/tutori...t/i042.14.html - snort rules
http://www.informit.com/articles/art...01171&seqNum=6 - snort rules
Linux är allmänt känt att vara säkrare än Windows. Detta stämmer mycket på grund utav användarhierarkin på Linux och den öppna källkoden som underlättar att upptäcka säkerhetsbrister. Men givetvis finns det virus, rootkits och exploits för Linux som ställer till problem lite då och då. Att behöva kolla efter sårbara versioner kan bli plågsamt så denna tråd är till för att underlätta vad som är sårbart i ditt system och hur du kan täppa till de potentiella vektorerna.
Först och främst, håll ditt system uppdaterat! Med varje uppdatering kommer säkerhetsförbättringar. Från pakethanterare så skiljer sig kommandot, men i Debian är det "apt-get update && upgrade" och i Arch så är det "Pacman -Syu" och under Gentoo är det med emerge, t.ex "emerge --update --deep --with-bdeps=y --newuse world" samt med yum så är det "yum update".
I denna guide så använder jag Debian på en extern server som jag SSH'at in på.
Manuella säkerhetsåtgärder
Det finns många saker man kan göra för att säkra upp sitt system. Det första är så klart att hålla systemet uppdaterat. Att ha ett cronjob som gör uppdateringprocessen är rekommenderat, och beroende på system så kan du ändra hur ofta du ska uppdatera. Men en gång per dag tycker jag är lagom.
Med kommando så som "w" och "who" så kan du se vem som är inloggad.
Kolla efter öppna portar med "netstat -punta" och inspektera om det är något du tycker ser misstänksamt. Om så är fallet så kan du enkelt döda den processen eller stänga porten.
För anslutningar så använd alltid krypterat. Inte telnet eller FTP utan du kan använda SFTP och SSH. Använd gärna SSH-keys för ännu mer säkerhet.
Var försiktig med filer! Om du har en webbserver så låt den köras i jail, dvs att den inte får läsa andra filer som den inte behöver läsa. Att använda "chattr" är även rekommenderat för då kan ingen ändra filen då den blir "låst". Detta är bra att sätta på index-filer så du slipper bli defacad. Utan du måste med root låsa upp filen. Man kan låsa mappar och andra alternativ, t.ex att endast tillåta att en fil expanderas. Detta är bra med log-filer. Du kan testa och se så allting fungerar, med echo "test" >> /var/www/index.html och får du permission denied även som root så fungerar det.
Använd en syslog-server om du ska ha en server öppen mot Internet, hur du fixar detta är från system till system men en googling kommer hjälpa dig på traven. En Syslog-server är en server som loggar din servers aktivitet, detta är speciellt bra om du har en hacker som raderar spår efter sig. Samt så ger en syslog mer info om din servers aktivitet.
Om du har en webbserver och den blir hackad så är det viktigt att veta vilka av dina filer som är suid-filer. Dessa filer får köras som en annan användares rättigheter, t.ex root.
Kod:
Listar alla filer med suid och guid-flaggan satt. Det kommer komma resultat, men om ni ser något misstänksamt så kan ni ta bort suid-flaggan med "chmod -s <file>"find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
Brandväggar
I Linux så finns det IPtables som fungerar som en brandvägg, men ett litet mer enkelt och behagligt program för detta är Ipkungfu.
Kod:
apt-get install ipkungfu nano /etc/ipkungfu/accept_hosts.conf
I accept_hosts.conf så kan ni ange vilka hosts som kommer godkännas av din maskin. Om du använder VPN så kan du ange denna IP om din provider använder statiska adresser så kan du ange den. I filen så anger du enkelt vilken IP samt protokoll med följande syntax(host[:port:protocol]):
Kod:
192.168.xx.0/24:22:tcp
Nu ska vi ändra i filen /etc/ipkungfu/ipkungfu.conf - ta bort # för att inte göra det som en kommentar vilket kommer göra raden giltig i konfigurationsfilen.
Kod:
BLOCK_PINGS=1 #blockera pingpaket SUSPECT="DROP" #"antagligen" dåliga paket KNOWN_BAD="DROP" #trafik som verkligen är fel PORT_SCAN="DROP" #portscans, t.ex nmap
Starta ipkungfu med "ipkungfu" och kolla att allt stämmer med "ipkungfu -c"
Andra brandväggar så som ufw kan även installeras. Då får med med ett GUI(gufw). Om du är van med IPtables så använd det, men principen bakom brandväggar är att aldrig ha portar öppna som du inte ska använda. Om du har en webbserver så får du se till att port 80/443 är öppen och port 22 om du ska SSH'a in. Ska du endast flytta över små filer så använd gärna SFTP än FTP och då slipper du mer programvaror och ha port 21 öppen. Att blockera pingpaket och scans är bra eftersom det försvårar för en hacker att se vilken version av dina servicar du använder och vilka portar som finns tillgängliga.
IPF
Intrusion Prevention Framework(IPF) - det mest kända ramverket är Fail2ban och syftet med Fail2Ban är att förhindra bruteforce-attacker.
Kod:
i jail.conf hittar vi det mesta. Fail2ban fungerar på så sätt att den kollar i logfiler efter repeterade försök av en annan host att ansluta. Syntaxen ser som som följande: apt-get install fail2ban nano /etc/fail2ban/jail.conf
Kod:
Starta med "/etc/init.d/fail2ban start"[proftpd] #servicen enabled = false #aktivera port = ftp,ftp-data,ftps,ftps-data #ports filter = proftpd #filter, i detta fall använder jag proftpd logpath = /var/log/proftpd/proftpd.log #loggen för filen maxretry = 6 #antal återförsök, desto få, desto bättre
Och exakt så enkelt är det att använda fail2ban. En gång i tiden hade jag webmin körandes och just den versionen var sårbar mot bruteforce. Jag satte upp fail2ban och problemet var löst. exploiten för webmin. Använder du Apache, nginx, vsftpd, SSH så får du ändra inställningar för dessa! De kanske inte är på som standard så se till att den är enable!
IDS
Intrusion Detection System(IDS) - är förmågan att kunna detektera intrångsförsök. Detta innefattar att söka efter rootkits, kolla att inga inställningar är mysko och se så nätverkstrafiken är som den ska.
Chkrootkit
Kod:
apt-get install chkrootkit chkrootkit -x > chrot.log
chkrootkit är det enklaste programmet. Men det kräver ändå att du noggrant kollar igenom den data som skapas. Även fast chkrootkit skriver ut status i slutet "not infected" så kan det vara bra att kolla så allt ser OK ut.
rkhunter
Kod:
sedan kommer rkhunter söka igenom ditt system. Efter allt är klart så kolla efter varningar. De flesta kan du manuellt fixa, t.ex att inte tillåta att SSH'a in som root.apt-get install rkhunter rkhunter --update rkhunter -c
Tiger
Kod:
Det är egentligen inte mer man kan göra med Tiger, men "tiger --help" ger dig lite fler alternativ på vad du kan göra. Tiger utför mer grundliga scans än Rkhunter så att kombinera båda dessa är rekommenderat.apt-get install tiger tiger
ClamAV
Kod:
Jadå, det finns ett antivirus till Linux, och den mest kända är ClamAV. Den söker efter trojaner, virus, malware och annan skadlig kod på ditt system. Flaggan -irv / söker igenom hela ditt system ytterst grundligt. Om du har skadlig kod i en PDF så kommer den att hittas.apt-get install clamav freshclam #uppdaterar databasen clamscan -irv
Lynis
Kod:
apt-get install lynis lynis -c
Sist men ironiskt nog inte minst har vi vår vän Lynis. När du gör en full scan så kommer du behöva trycka dig igenom varje sektion. Det bästa med Lynis är att den är otroligt grundlig och att den föreslår hur man åtgärdar problemet i slutet av en scan.
Snort- är ett intrångsskydd för nätverk, dock avancerat.
Tcpdump - är en enkel sniffer.
Övrigt
ändra DNS-server i /etc/resolv.conf till någon OpenDNS-server.
http://www.ip2location.com/free/visitor-blocker - skapa .htaccess-filer och välj länder som ska blockeras/tillåtas. Bra om du har endast en svensk sida och du vill ha svenska besökare.
http://www.debian.org/doc/manuals/se...he-env.en.html -dokumentation på hur du får Apache att köras i chroot
http://www.cse.sc.edu/~okeefe/tutori...t/i042.14.html - snort rules
http://www.informit.com/articles/art...01171&seqNum=6 - snort rules
__________________
Senast redigerad av .Chloe 2013-11-03 kl. 15:36.
Senast redigerad av .Chloe 2013-11-03 kl. 15:36.