Avatar billede mik28 Seniormester
11. november 2005 - 21:36 Der 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)
Avatar billede mik28 Seniormester
11. november 2005 - 21:38 #1
Grunden til at jeg spørger er fordi jeg kan se i min log at ftp serveren bliver tilgået fra folk jeg ikke kender
Avatar billede leif Seniormester
11. november 2005 - 21:45 #2
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.
Avatar billede x86 Nybegynder
11. november 2005 - 21:52 #3
Det skulle man kunne
hosts.deny = ALL: ALL

hosts.allow

proftpd: xx.xx.xx.xx
sshd: xx.xx.xx.xx

Mener også man kan ved at indsætte følgende ind i proftpd.conf

<Limit LOGIN>
  Order Allow,Deny
  Allow from din.host.dk
  Deny from all
  </Limit>
Avatar billede mik28 Seniormester
11. november 2005 - 22:10 #4
Jeg har prøvet at tilføje

proftpd: xx.xx.xx.xx

i hosts.allow
Avatar billede x86 Nybegynder
11. november 2005 - 22:27 #5
Hvis det ikke virker skal der stå ftpd: xx.xx.xx.xx

Er lidt i tvivl om det er proftpd: eller ftpd:
Avatar billede mik28 Seniormester
11. november 2005 - 22:34 #6
Det ser ud til at virke fint
Avatar billede mik28 Seniormester
11. november 2005 - 22:37 #7
Leifs løsning er selvfølgelig lidt mere nuanceret men jeg vil bare have at folk kategorisk bliver afvist hvis deres IP ikke står i min host.allow
Avatar billede x86 Nybegynder
11. november 2005 - 23:25 #8
Ok, det var med proftpd: ?
Avatar billede mik28 Seniormester
12. november 2005 - 17:03 #9
Ja jeg har tilføjet de IP'er som jeg accepterer i hosts.allow
Avatar billede mik28 Seniormester
14. november 2005 - 07:14 #10
Hmmmm, jeg troede egentlig at det virkede. Det viser sig nu at det gør det ikke :-(
Avatar billede leif Seniormester
14. november 2005 - 07:18 #11
host.deny med følgende indhold:
proftpd: ALL

Host.allow:
proftpd: xx.xx.xx.xx
proftpd: xx.xx.xx.xx



Husk der skal være et liniesift efter den sidste linie med tekst i begge filer.
Avatar billede crackya Nybegynder
28. juni 2006 - 21:44 #12
På den sikre måde

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

mvh
cRacKya
Avatar billede mik28 Seniormester
08. juli 2010 - 16:40 #13
lukker og slukker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester