Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2013-11-03, 15:33
  #1
Medlem
.Chloes avatar
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.
Kod:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
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>"


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:
apt-get install fail2ban
nano /etc/fail2ban/jail.conf
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:

Kod:
[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
Starta med "/etc/init.d/fail2ban start"
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:
apt-get install rkhunter
rkhunter --update
rkhunter -c
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.

Tiger
Kod:
apt-get install tiger
tiger
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.


ClamAV
Kod:
apt-get install clamav
freshclam #uppdaterar databasen
clamscan -irv
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.

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.
Citera
2013-11-03, 17:07
  #2
Medlem
Sånt här är alltid kul o läsa. Keep it coming !
Citera
2013-11-03, 17:17
  #3
Medlem
.Chloes avatar
Citat:
Ursprungligen postat av idomin
Sånt här är alltid kul o läsa. Keep it coming !
Kul att du uppskattade min tråd!

Jag tänker expandera med mer grundläggande information om hur man kan säkra upp ett linuxsystem och andra användare är varmt välkomna att dela med sig av tips och annan nyttig information. Även diskussioner om varför X är bättre än Y rent säkerhetsmässigt välkomnas också.
Citera
2013-11-03, 17:21
  #4
Medlem
CyrusGNetWorks avatar
Roligt att läsa och såda här guider uppskattas på forumet.

Vad du kan göra är att du skickar ett PM till någon moderator som finns här på denna forumsdel. Be om att tråden sätts in under klistertråden. Det finns stor risk att tråden eller trådarna försvinner ut i mängden.
Citera
2013-11-03, 17:43
  #5
Medlem
Härligt .Chloe! Blir att köra igenom det här. Bra initiativ.
Citera
2013-11-03, 20:56
  #6
Medlem
Kanon bra .Chloe!!!
Citera
2013-11-03, 21:48
  #7
Medlem
Tack för en välskriven 'guide'!

Nu blir det att ge sig på rkhunter
Citera
2013-11-04, 00:12
  #8
Medlem
Välskriven guide! Hoppas tråden klistras och uppdateras.
Citera
2013-11-04, 00:43
  #9
Medlem
Truffys avatar
Väldigt väl formulerat
Citera
2013-11-04, 01:12
  #10
Medlem
qrizzes avatar
Citat:
Ursprungligen postat av CyrusGNetWork
Roligt att läsa och såda här guider uppskattas på forumet.

Vad du kan göra är att du skickar ett PM till någon moderator som finns här på denna forumsdel. Be om att tråden sätts in under klistertråden. Det finns stor risk att tråden eller trådarna försvinner ut i mängden.

Jag har lagt in guiden under [ Samlingstråd ] ►►► Länksamling av frekventa trådar

//mod
Citera
2013-11-04, 12:12
  #11
Medlem
Bra tråd Här är några fler (blandade) säkerhetstips:

Lösenord

Gå till närmaste random kläd- eller matbutik eller på en släktträff, lyssna på en mening, ta den första bokstaven från varje ord, t.ex. "Den här smörgåstårtan är jävligt mycket godare än Icas.", och lägg till minst ett specialtecken och en siffra, t.ex. tidpunkten när du hörde det: `DhsäjmgäI:11`. Det är nästan lika säkert per tecken som helt slumpmässiga bokstäver och man behöver inte sitta och memorera det.

sshd

Läs sshd_config(5) och googla "sshd security".

Om du inte behöver kunna logga in remote alls, starta inte sshd överhuvudtaget.

Om du behöver det, skapa en användare i gruppen wheel och stäng av root-inloggning med `PermitRootLogin no` i /etc/sshd.conf. Inte för att root-inloggning är osäkert i sig, utan för att de script som dygnet runt försöker att logga in på all världens IP-adresser, brukar använda de två vanligaste namnen: `root` och `admin`. Så döp wheel-användaren till något annat än `admin`. Chansen att någon lyckas träffa rätt lösenord är låg, men chansen att någon träffar både rätt användarnamn och lösenord är obefintlig. Det finns ingen anledning att döpa wheel-användaren till något helt slumpmässigt namn, för så länge det finns folk som döper sina till `admin`, eller inte stänger av root-inloggningen, är det vad scripten kommer att fortsätta att försöka logga in som - admin och root.

Stäng av lösenordsinloggning med `PasswordAuthentication no` i /etc/sshd.conf, skapa nycklar och lägg till den publika delen i ~/.ssh/authorized_keys. Ta med dig den privata delen på ett USB-minne i en nyckelring eller spara den på de datorer där du kommer att använda den. Kryptera den alltid (sätt ett lösenord).

Om du bara behöver kunna logga in från det interna nätverket, begränsa IP-adresserna i sshd.conf och spärra helst också port 22 från internet i brandväggen.

Om du behöver kunna logga in överalltifrån, är ett tips att byta ssh-port från 22 till någon random port över 32767. Det ökar inte säkerheten jättemycket, och en portscanner kan fortfarande hitta porten, men du kommer att få enormt mycket mindre misslyckade loginförsök från auotmatiska script i dina loggfiler, och kan koncentrera dig på de allvarliga misslyckade loginförsöken. http://lonesysadmin.net/2012/10/19/o...#comment-83210. Att sätta upp en fake sshd på port 22 och en riktig på en annan port kanske vore en annnan lösning.

---

Och du kommer säkert fortfarande ihåg det extremt säkra lösenordet `DhsäjmgäI:11` fastän du bara läste det en gång i förbifarten Det är såklart ännu säkrare att generera ett helt slumpmässigt lösenord till att börja med, och hitta på meningen efteråt.
Citera
2013-11-05, 17:07
  #12
Medlem
BGHs avatar
Mycket bra tråd.

Jag hittade inte /etc/sshd.conf på min Ubuntu-server. Där heter filen /etc/ssh/sshd_conf om det är någon som undrar.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback