webForumDet fria alternativet

Fbsd, web/ftp/ssh och jail

7 svar · 734 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej!

Har hittils alltid lagt domäner/virtualhosts i varje användares hemkatalog då det fungerar bra. T.ex.

/home/q/test.se/www/
/home/q/test.se/www/webalizer/
/home/q/test.se/logs/
/home/q/test.se/logs_today/

På så sätt kan användaren enkelt ladda upp filer via ftpservern, han kan även logga in via ssh (om han får det, måste vara med i ssh-gruppen). Jag har även konfigurerat det hela så att dagens och gårdagens loggfiler från webbservern sparas i logs_today/ och sedan äldre i logs/ (och då även komprimerade). Webalizer kör på filerna i logs_today och sparar sina resultfiler (html-delen) i www/webalizer/.

Smidigt och bra, inte haft några problem hittils. Men då jag börjat intressera mig mer och mer för att höja säkerheten så har jag läst att man bör jail:a webbservern och andra services.

Då kommer min fråga, hur löser jag då detta? Jag vill att användarna ska kunna logga in via ssh till sin hemkatalog. Jag vill även att användarna ska kunna komma åt sina webbfiler från sin hemkatalog, både via ssh och ftp.

Ska jag köra en stor jail där apache/ftp/sshd/webalizer körs? Eller finns det något smartare sätt? :)

Andra saker som jag kör på servern är mysql, mrtg, subversion, ett par enkla spelservrar etc. Hur kommer dessa påverkas om jag jailar en så pass viktig del som webbservern, i detta fall Apache?

Mvh
Joakim

QimenMedlem sedan juni 20015 009 inlägg
#2

Kom att tänka på att man kan använda mount_nullfs för att montera mappar in i jailade områden.
Kan det då vara en idé att skapa en jail för varje:

Webb (webb+ftp)
Alla webbfiler som egentligen ligger i varje användares hemkatalog ligger monterade in i denna jail. Här körs en webbserver och en ftpserver.

Mysql
Som har sina egna databaser som ingen annan behöver komma åt (möjligtivs bara backuphanteraren).

Spelservrar m.m.
Program som inte har någon viktig data men kan innehålla luckor (vill ju inte att de ska kunna komma åt t.ex. webbfilerna)

Eller hur bör man dela upp det? Är det resurskrävande att köra med jail(s)? :)

QimenMedlem sedan juni 20015 009 inlägg
#3

Blir nog att forsätta på det gamla sättet ett tag till, verkar inte finns mycket information om ämnet och inte folk som kan det heller.

QimenMedlem sedan juni 20015 009 inlägg
#4

*envis som man är* :OO

Hittade ett lite program som hjälper mig att sätta upp flera jails som använder samma grundfiler. Så för att sätta upp de olika jails jag vill ha kör jag:

> cd /usr/ports/sysutils/ezjail && make install clean
> ezjail-admin install
> ezjail-admin update -i
> ezjail-admin create -f default www 192.168.0.103

Det jag gjort här är att installera ezjail, låtit programmet hämta de filer som behövs för just min fbsd version. Jag har även skapat min första jail som heter www (på ip 192.168.0.103) och använder grundmallen default. Programet skapar nya jails i /usr/jails. Där ligger även grundfilerna och mallar.
Eftersom jag vill ha lite mer kontroll över det hela än att låta det programmet sköta allt lägger jag till följande i min /etc/rc.conf:

# Starta jail automatiskt vid uppstart
jail_enable=”YES”

# Standardvärden som alla jails kommer använda
jail_interface="re0"  # Mitt nätverkskort
jail_exec_start="/bin/sh /etc/rc"
jail_exec_stop=”/bin/sh /etc/rc.shutdown”
jail_mount_enable="YES"
jail_devfs_enable="YES"
jail_devfs_ruleset="devfsrules_jail"
jail_procfs_enable="YES"
jail_fdescfs_enable="YES"

# Lista med alla jails som ska startas
jail_list="www"

# JAIL:  www
jail_www_rootdir="/usr/jails/www"
jail_www_hostname="www.nicci.neta"
jail_www_ip="192.168.0.103"

Jag vill även ha ports i min jails men jag vill inte ha dubbla uppsättningar av ports på min server. Därför lägger jag till följande kod i filen /etc/fstab.www (som skapades av programet).

/usr/ports  /usr/jails/jailname/usr/ports nullfs ro 0 0

För att det ska fungera måste vi först ta bort länken 'ports' som ligger i /usr/jails/www/usr/ och skapa en mapp som heter ports istället.

Efter det vill jag även att vanliga meddeladen ska sparas i en loggfil istället för till konsolen (vilken jag normalt sett inte kommer se om jailen enbart körs som t.ex. webbserver). Detta gör jag genom att ändra följande i /usr/jails/www/etc/syslog.conf:

*.err;kern.warning;auth.notice;mail.crit /dev/console

Mot:

*.err;kern.warning;auth.notice;mail.crit  /var/log/messages

Det som jag har problem med just nu (och jobbar på) är att få nätverket att fungera korrekt från min jail. Jag kör en Ipfilter-brandvägg på servern och det verkar lite som om den ställer till den. Jag har lagt till detta i min jails rc.conf:

hostname="www.nicci.neta"
ifconfig_re0="inet 192.168.0.103 netmask 255.255.255.255"
defaultrouter="192.168.0.1"

Men det hjälper då inte. Med brandväggen avstängd (och lite annat smått och gott i sysctl.conf bortkommenterat). Jag kan pinga mina jails från både servern och andra datorer i mitt nätverk. Men inne i jailen kan jag inte göra mycket. Försöker jag med ping får jag:

ping: socket: Operation not permitted

Det blir även fel om jag försöker köra något mot internet, t.ex. ports. Min ifconfig ger detta:

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:1d:60:74:86:98
        inet 192.168.0.103 netmask 0xffffffff broadcast 192.168.0.103
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384

Jag har lagt till mina dns-servrar i resolv.conf samt uppdaterat hosts-filen. Känns nästan som om det är något i själva säkerheten för jails som blockerar mig. :l

Någon som har några idéer? :birp

/r Tydligen kan man inte köra ping i jails.

google skrev:

jails don't support ICMP...

Men det förklarar fortfarande inte varför mitt nätverk ut från jailen inte fungerar.

/r2 Med security.jail.socket_unixiproute_only=1 i /etc/sysctl.conf kan jag nu pinga både min server och andra datorer i nätverket. Men att försöka nå ut mot internet (kan bara testa med ports då jag inte har några program installerade ännu) går inget vidare, då får jag bara "No address record". Med andra ord så verkar det vara något fel på dnsbiten..

GeinMedlem sedan sep. 20005 700 inlägg
#5

Kan du etablera en kontakt till en tjänst i jailen utifrån?

QimenMedlem sedan juni 20015 009 inlägg
#6

Ja, jag testade att starta sshd i jailen och då kunde jag ansluta till den från andra datorer.

Gjorde en andra redigering i slutet på mitt förra inlägg.

GeinMedlem sedan sep. 20005 700 inlägg
#7

Ang. din /r2. Ja det låter onekligen som dns-problematik.
Kan du pinga dns-servern? Har du host-kommandot installerat i jailen? Prova isåfall host https://www.google.se dns-servern

QimenMedlem sedan juni 20015 009 inlägg
#8

Min resolv.conf ser ut såhär:

domain neta
Nameserver 195.67.199.33
Nameserver 195.67.199.34

Kan pinga både min lokala server samt de externa dns-servrarna (telias). Kör jag host https://www.google.se 195.67.199.33 får jag:

Using domain server:
Name: 195.67.199.33
Address: 195.67.199.33#53
Aliases:

[url]www.google.se[/url] is an alias for [url]www.google.com[/url].
[url]www.google.com[/url] is an alias for [url]www.l.google.com[/url].
[url]www.l.google.com[/url] has address 66.249.93.147
[url]www.l.google.com[/url] has address 66.249.93.99
[url]www.l.google.com[/url] has address 66.249.93.104

Så där fungerar det iaf.

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)