Buat apache hanya dapat diakses melalui 127.0.0.1, apakah ini mungkin?

19

Saya telah menyiapkan server Apache saya, dan PHP / MySQL berfungsi dengan baik!

Tetapi masalahnya adalah, bagaimana cara menjaga privasi ini, karena ini hanya server pengembangan ? Satu-satunya alasan untuk menjaga konten tetap pribadi adalah jika skrip salah, saya tidak ingin muncul kesalahan Apache jika itu menjadi situs publik (dan fakta orang lain juga berbagi jaringan yang sama!), Dan saya kurang cenderung menggunakan PC saya sebagai hosting - Saya lebih cenderung menggunakan rute penyedia webhosting untuk situs langsung yang sebenarnya.

Saat ini saya dapat mengaksesnya dengan tiga cara:

  • http: // localhost (atau http://127.0.0.1 , cara alternatif dan IP localhost tetapi cara mana pun dapat diterima dengan saya!)

  • http 192.168.0.1 (IP router saya)

  • http pc-name-here (nama PC saya, jelas ini bervariasi di antara PC Windows!)

[catatan, tidak dapat memposting tautan, jadi untuk dua lainnya Anda harus memasukkan tanda titik dua / garis miring seperti yang pertama].

Namun, saya hanya ingin mengaksesnya melalui yang pertama. Ia mendengarkan pada port 80 (dan saya tidak ingin mengubahnya). Apakah ini tidak mungkin, atau saya salah? Saya tahu sedikit lebih banyak tentang PHP / desain web daripada sisi jaringan, jadi ini yang pertama bagi saya!

Pada dasarnya, saya ingin itu hanya dapat diakses melalui localhost di mesin itu, dan bukan alamat IP eksternal, atau 192.168.0.1.

Apakah saya perlu mengedit httpd.conf dan menggunakan deny pada setiap situs yang diuji, atau ada solusi lain?

Contoh:

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    order allow,deny
    allow from 127.0.0.1
            deny from 192.168.0.1
            deny from my-pc-name
</Directory>
  • itu contoh tapi saya tidak yakin apa yang benar atau salah di sini!

Sistem operasi saya adalah Windows 7 Ultimate.

Saya memang melihat-lihat di internet, tetapi beberapa di antaranya tampak agak teknis bagi saya.

Apa yang akan kamu rekomendasikan?

linthurst53
sumber

Jawaban:

34

Cara termudah untuk melakukan ini adalah melalui Listenarahan. Secara default, ada baris di httpd.conf kami yang bertuliskan:

Listen *:80

Berarti itu akan menjawab permintaan pada port 80 pada semua alamat jaringan komputer Anda. Mengubahnya menjadi:

Listen 127.0.0.1:80

Akan memberi tahu apache hanya untuk hanya menanggapi permintaan pada adaptor lokal, sehingga mengabaikan hal lain.

SmallClanger
sumber
12

Opsi mendengarkan mungkin yang terbaik, tetapi hanya sebagai FYI, Anda dapat melakukannya menggunakan allow / deny seperti ini

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Order deny,allowmemberitahu Apache untuk "Menolak semua permintaan kecuali secara khusus diizinkan" ( Order allow,denyadalah kebalikannya, IE mengizinkan semua permintaan kecuali diblokir secara spesifik)
Deny from allmelakukan hal yang sama dengan Order deny,allowitu akan memblokir semua permintaan dari semua IP kecuali Anda secara khusus membukanya. Tampaknya menjadi praktik umum untuk menggunakan keduanya Order deny,allowdan Deny from alltapi saya tidak 100% yakin mengapa ketika mereka berdua melakukan hal yang sama
Allow from 127.0.0.1mengatakan "Izinkan semua permintaan dari 127.0.0.1". 127.0.0.1 akan memetakan ke localhost sehingga Anda dapat menggunakan http://127.0.0.1/ atau http: // localhost / dan itu akan diizinkan

Itu akan melayani kesalahan 403 (Terlarang) untuk siapa saja yang meminta situs tidak di localhost

Beberapa hal bermanfaat lainnya;
Allow from 192.168.0.akan memungkinkan permintaan dari siapa pun di jaringan Anda (Menyediakan jaringan Anda adalah 192.168.0.0-192.168.0.255)
Izinkan / tolak aturan diproses secara berurutan, jadi

Deny from 192.168.0.2
Allow from 192.168.0.2

akan memungkinkan permintaan dan

Allow from 192.168.0.2
Deny from 192.168.0.2

akan menolak permintaan dari 192.168.0.2

Begitu

Deny from 192.168.0.2
Allow from all

Akan memungkinkan permintaan dari 192.168.0.2, meskipun secara khusus ditolak.

Anda juga dapat menggunakan aturan Bolehkan / Tolak di file .htaccess atau berdasarkan per direktori

Noda
sumber
Besure itu "Orde menyangkal, izinkan", bukan "Orde mengizinkan, menyangkal". Kesalahan kecil yang sering dilakukan orang.
Scott Chu
3

Saya membuat perubahan ke ports.conf di / etc / apache2 sehingga setiap referensi untuk Mendengarkan port hanya mendengarkan localhost. Tampaknya tidak ada file lain yang memiliki perintah mendengarkan. Setelah memulai ulang apache perubahan ini tampaknya memiliki efek yang diinginkan.

/etc/apache2/ports.conf

NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>
Mathew Peet
sumber