11. november 2005 - 21:36Der er
12 kommentarer og 1 løsning
Hosts.allow, Hosts.deny
Hej Eksperter,
Jeg har fået sat SSH op på en måde så man kun kan tilgå det fra specifikke IP adresser. Er det muligt at gøre det samme i forbindelse med min ftp server (proFTP)
Ja, du åbner proftp.conf og i den tilføjer: <Directory /den/fulde/sti/> <Limit ALL> Order Allow,Deny Allow 127.0.0.1 Allow 192.168.0.199 Deny ALL </Limit> </Directory>
Så vil kun 127.0.0.1 og 192.168.0.199 kunne tilgå biblioteket, de vil stadig kunne logge ind men ikke se det.
Du skal som det første sikre dig at du har ProFTPD installeret og at xinetd er installeret og aktiv.
su til root su -
Redigér /etc/xinet.d/proftp-xinetd og sæt: disable = no (hvis det ikke allerede er tilfældet ;)
Redigér /etc/proftpd.conf og check at linien: ServerType inetd eksisterer. Har du derimod følgende: ServerType Standalone Skal du altså ændre Standalone til inetd.
Indsæt følgende linie i din /etc/hosts.deny: ALL:ALL :spawn (echo Forsøg fra %h %a mod %d den `date` | tee -a /var/log/tcp.deny.log |mail dinmail@dinmail.dk
Fra nu af vil alle xinetd services (undtagen dem der tillades i /etc/hosts.allow) blive afvist. Disse indbefatter blandt andre SSH. Fænomenet kendes som "TCP Wrappers" og xinetd er lige præcis en sådan. Den sorterer de services den håndterer udfra må/må ikke princippet og kun dem der "må" slipper ind til de egentlige services såsom ftp i dette tilfælde.
Lad os vente lidt med at tillade at nogen får adgang til konfigurationen er på plads.
I terminalen stopper du nu proftpd og genstarter xinetd: proftpd stop /etc/rc.d/init.d/xinetd restart
Så langt så godt. Det betyder nu at ftp dæmonen ikke står og "lytter" konstant døgnet rundt, men derimod bliver aktiveret af xinetd når der er behov for det. xinetd har sat lyttebøfferne på port 21 (std. ftp port) og så snart en tilladt gæst prøver at tilgå denne, starter xinetd proftpd og lukker den igen når sessionen er afsluttet.
Så skal proftpd konfigurationen lige finpudses. Redigér /etc/proftpd.conf Indsæt eventuelt en velkomst hilsen ved at indsætte følgende (på en ny linie hver gang jeg nævner et punkt):
ServerName "Welcome to the Zargon dump"
Der er mulighed for virtuelle hosts i proftpd, som man kender det fra webservers. Det falder uden for denne vejledning men kort kan det siges at man har min. 1 virtuel host og det er altså den man bruger default. For at aktivere denne, tilføj:
DefaultServer on
proftpd har også behov for at "være nogen" når den er aktiv, så tilføj:
User nobody Group nogroup
Jeg har valgt at oprette og bruge /home/ftp til mine ftp formål (gennemgås længere nede) og proftpd skal selvfølgelig vide hvor den skal smide folk hen som ikke er oprettet som brugere med egne hjemmemapper. Det gøres ved at tilføje: <Directory /home/ftp> AllowOverwrite on </Directory>
Resten kan se sådan ud: <Global> AllowRetrieveRestart on # Tillad genoptagelse af downloads AllowStoreRestart on # Tillad genoptagelse af uploads DeferWelcome on # Vent med velkomst til efter login MaxClients none # Max samtidige klienter MaxClientsPerHost none # Max samtidige sessioner pr. klient RootLogin off # Afvis root login (sikkerheds foranstaltning) tcpNoDelay on # Lad være med at spilde tiden IdentLookups off # Lad være med at spilde tiden </Global>
TimeoutIdle 90 # inaktiv tidsgrænse inden session afbrydes (sek) TimeoutLogin 90 # tidsgrænse for login inden session afbrydes (sek) TimeoutNoTransfer 180 # Er ingen overførsler igangsat inden tidsgrænsen afbrydes session UseReverseDNS off # Lad være med at spilde tiden :) SocketBindTight on # Denne må lige vente IdentLookups off # stop spildtid...igen MaxInstances 50 # max samtidige sessioner MaxClients none # samme som under global MaxClientsPerHost none # samme som under global
Så er proftd konfigurationen faktisk fjong.
Nu er jeg ikke typen der gider at oprette 27 brugere med særskilte passwords som så igen og igen skal resettes fordi folk glemmer dem OG heldigvis kan jeg slippe for det med de IP restriktioner vi har sat i /etc/hosts.deny
I stedet vil jeg bare have én ftp konto som jeg så kan dele ud til dem jeg syntes skal have adgang og så tilføje deres IP til den tilladte liste. Det kommer vi til. Lad os først oprette en bruger til ftp adgang:
adduser -M ftpusers
Sæt/skift evt. password for ftpusers med: passwd ftpusers
Parameteren -M gør at der ikke laves home dir for ftpusers brugeren med dertil hørende std. dirs osv. Nu har vi så brugeren ftpusers og gruppen ftpusers (blev oprettet sammen med brugeren og er nu brugerens primær gruppe). Så er det vist på tide at få oprettet nogle dirs som som kan bruges sammen med ftp serveren og sætte nogle fornuftige rettigheder.
mkdir /home/ftp chown user:ftpusers /home/ftp (user erstattes her med det den bruger du vil benytte til at flytte, oprette og manipulere filer med i ftp folderen) chmod 2750 /home/ftp mkdir /home/ftp/upload chown user:ftpusers /home/ftp/upload chmod 2770 /home/ftp/upload
Og hvad betyder så alt det ? Lad os tage det fra en ende. Først oprettede vi ftp folderen med mkdir /home/ftp. Dernæst ændrede vi ejerskab så din bruger ejer folderen og gruppen ftpusers har ejerskab på gruppe niveau chown user:ftpusers. Det næste var at vi satte rettigheder på folderen chmod 2750 /home/ftp. 2 er en special rettighed der gør at når du lægger en fil ind i folderen, arver den ftp folderens gruppe ejeskab uanset hvilken primær gruppe du selv har (virker efter sigende ikke på alle distributioner på denne måde ! test det hvis du ikke benytter Mandrake eller Red Hat). Jeg vil snart udgive en vejledning om filrettigheder så jeg vil ikke gå så meget i dybden med det i denne vejledning. 7 tallet betyder at brugeren (altså user i vores tilfælde) har fulde rettigheder (læse, skrive og udføre). 5 tallet betyder at gruppen har læse og udføre rettigheder. 0 betyder at alle andre ikke må noget som helst :)
Som du nok allerede har regnet ud betyder det så også at jeg naturligt nok har sat skrive rettigheder for gruppen på upload folderen. Det er jo trods alt formålet med en sådan. Udføre rettigheden er her også nødvendig på dir niveau da brugerne ellers ikke ville være i stand til at komme ned i upload folderen.
Nu mangler vi sådan set bare at give dem adgang som vi ønsker skal have adgang. Det defineres i /etc/hosts.allow filen. Redigér nu denne og tilføj følgende:
ALL: 192.168.0. :allow # Her skal dit interne segment indtastes i stedet for 192.168.0. (grunden til jeg ikke taster den sidste oktet i IP adressen, er at jeg vil give adgang til alle noder og alle services fra mit interne klasse C segment) in.ftpd: 195.32.45.86, 208.88.0.23, 127.0.0.1 :allow # Her indtaster du de IP adresser udefra som skal have adgang til din ftp server, adskilt af komma. Husk at hosts.allow filen SKAL slutte med en tom linie så tryk lige på enter tasten for enden af den sidste linie. OBS på nogle distributioner skal in.ftpd afløses af proftpd eller ftp.
Test nu fra en term (husk at tilføje 127.0.0.1 som i eksemplet her, da dette giver localhost adgang :) ftp localhost
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.