Beberapa hari yang lalu saya mulai sangat peduli dengan keamanan data saya, akhirnya nmap
saya dengan:nmap 127.0.0.1
Kejutan, kejutan, saya punya banyak layanan aktif mendengarkan localhost:
$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Satu-satunya yang mungkin saya gunakan adalah ssh
(meskipun mungkin tidak dikonfigurasi dengan baik, saya akan menyimpan masalah ini ke pertanyaan lain).
Sejauh yang saya tahu ipp
protokol digunakan oleh CUPS untuk membagikan printer saya, saya tidak perlu membaginya, cukup akses printer dari server.
Ini adalah output dari netstat -lntup
oleh pengguna root, menghapus alamat localhost:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 497/sshd
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 2217/dropbox
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 1021/rpc.statd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 906/rpcbind
tcp6 0 0 :::22 :::* LISTEN 497/sshd
tcp6 0 0 :::42712 :::* LISTEN 1021/rpc.statd
tcp6 0 0 :::445 :::* LISTEN 892/smbd
tcp6 0 0 :::139 :::* LISTEN 892/smbd
tcp6 0 0 :::111 :::* LISTEN 906/rpcbind
udp 0 0 0.0.0.0:51566 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 7362/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 906/rpcbind
udp 0 0 192.168.1.255:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:137 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.255:138 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:655 0.0.0.0:* 906/rpcbind
udp 0 0 0.0.0.0:17500 0.0.0.0:* 2217/dropbox
udp 0 0 0.0.0.0:5353 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:34805 0.0.0.0:* 1021/rpc.statd
udp6 0 0 :::40192 :::* 1021/rpc.statd
udp6 0 0 :::111 :::* 906/rpcbind
udp6 0 0 :::655 :::* 906/rpcbind
udp6 0 0 :::5353 :::* 615/avahi-daemon: r
udp6 0 0 :::42629 :::* 615/avahi-daemon: r
Bagaimana cara mengkonfigurasi layanan tersebut sehingga mereka hanya mendengarkan dunia luar ketika saya benar-benar menggunakannya?
netstat -lntup
-l = dengarkan -n = angka -t = tcp -u = udp -p = pid. Memperlihatkan proses apa yang telah Anda jalankan dan port apa yang terbuka. Apa pun yang terbuka untuk 127.0.0.1 tidak dapat diakses oleh internet.eth0
?) Dengan menambahkansmb.conf
dua arahanbind interfaces only = yes
daninterfaces = eth0
.Jawaban:
Tentukan eksposur Anda
Mengambil output Anda dari
netstat
perintah, apa yang tampak seperti banyak layanan sebenarnya adalah daftar yang sangat singkat:Mendapat tanah
Melihat daftar ini ada beberapa layanan yang saya tinggalkan sendiri.
Mulai menguranginya - nonaktifkan Samba
Anda mungkin dapat langsung menonaktifkan kelelawar Samba, itu menyumbang 2 dari layanan di atas,
nmbd
dansmbd
. Patut dipertanyakan bahwa Anda benar-benar perlu menjalankannya di laptop baik di localhost atau IP Anda yang menghadap jaringan Anda.Untuk memeriksa bahwa mereka menjalankan Anda dapat menggunakan perintah berikut,
status
:Menonaktifkan layanan dapat membingungkan dengan semua fluks yang terjadi dengan pemula, /etc/rc.d, bisnis sehingga mungkin sulit untuk mencari tahu layanan mana yang berada di bawah teknologi mana. Untuk Samba Anda dapat menggunakan
service
perintah:Sekarang mereka libur:
Menjaga mereka ... secara permanen
Untuk membuat mereka menjauh saya telah menggunakan alat ini
sysv-rc-conf
,, untuk mengelola layanan dari konsol, itu berfungsi lebih baik daripada kebanyakan. Hal ini memungkinkan Anda untuk memeriksa layanan mana yang ingin Anda jalankan dan di mana runlevel mereka harus dimulai / dihentikan:Menonaktifkan sisa dari apa yang TIDAK diperlukan
Jadi sekarang Samba tidak aktif, kita pergi dengan yang berikut ini:
Untuk 3 sisanya Anda dapat melakukan hal yang sama yang kami lakukan untuk Samba untuk mematikannya juga.
CUPS?
Untuk mematikan CUPS, yang sebenarnya tidak Anda perlukan, Anda dapat mengikuti cara mematikan layanan yang sama dan kemudian menonaktifkannya dari memulai. Agar dapat mencetak, Anda harus mengatur setiap printer secara terpisah di sistem Anda. Anda dapat melakukannya melalui
system-config-printer
GUI.Membuat layanan ini sesuai permintaan?
Ini benar-benar inti dari pertanyaan Anda, tetapi tidak ada solusi yang benar-benar tepat untuk menjadikan layanan ini "pintar" sehingga mereka berjalan saat digunakan, alih-alih sepanjang waktu.
# 1 - systemd vs pemulaBagian dari itu adalah pemisahan saat ini antara systemd dan pemula . Ada gambaran bagus dari 2 teknologi yang bersaing di sini .
Kedua teknologi mencoba melakukan hal-hal yang sedikit berbeda, IMO, mengingat set fitur mereka, systemd tampaknya lebih diarahkan ke server sedangkan pemula tampaknya lebih diarahkan ke desktop roll. Seiring waktu, ini akan berjalan dengan sendirinya, IMO, dan kedua layanan akan stabil dan kaya fitur.
Akhirnya kedua layanan akan menawarkan sesuai permintaan mulai & berhenti di papan untuk semua layanan yang mereka kelola. Fitur seperti yang
# 2 - dukungan layananStopWhenUnneeded=yes
sudah adasystemd
misalnya, jadi tinggal menunggu waktu hingga kemampuan ini disempurnakan.Beberapa layanan tidak mendukung dihentikan / dimulai dengan sangat baik. Layanan seperti
sshd
tampaknya tidak masuk akal untuk berjalan sesuai permintaan, terutama jika mereka banyak digunakan. Juga beberapa layanan seperti Apache menyediakan mekanisme di dalam diri mereka sendiri untuk memutar lebih atau kurang dari pendengar mereka sendiri yang mengelola diri mereka sendiri. Jadi tidak jelas bagaimana on-demand yang disediakan olehsystemd
atauupstart
akan diintegrasikan dengan jenis layanan ini.Apakah ini benar-benar perlu?
Anda akan mendengar dari kedua sisi bahwa ini berlebihan atau bahwa Anda harus mengambil pendekatan minimalis hanya menginstal apa yang benar-benar Anda butuhkan, tetapi itu benar-benar pilihan pribadi. Memahami bahwa layanan ini ada di sana dan apa yang mereka lakukan benar-benar penting. Pada akhirnya komputer adalah alat, dan dengan menggunakan sistem Unix Anda sudah mengatakan bahwa Anda bersedia mengintip di balik tirai dan memahami apa yang membuat komputer Anda berdetak.
Saya akan mengatakan bahwa jenis pertanyaan ini adalah kerangka berpikir yang harus diperjuangkan ketika berhadapan dengan komputer dan Unix secara umum.
Referensi
systemd - wikipedia
[10: http://tech.cueup.com/blog/2013/03/08/running-daemons/
sumber
127.0.0.1 bukan "dunia luar", ia melihat sekeliling di dalam rumah.
Periksa konfigurasi firewall Anda (iptables di Linux hari ini), sebagian besar tidak dapat diakses dari ouside.
Jangan menjalankan layanan yang tidak Anda butuhkan. Copot semua perangkat lunak yang tidak diperlukan.
Ubah kata sandi menjadi lebih kuat. Periksa penggunaan sistem Anda, jangan mengejar situs web yang menarik secara acak. Periksa konfigurasi anti-phising, anti-skrip, dll dari browser. Tinjau penggunaan SSH dan su / sudo Anda.
Tetapi yang paling penting, paranoia berlebihan adalah kontraproduktif. Jangan terjebak oleh gemerlapnya teknologi .
sumber
Meskipun Anda bisa 'menutup' layanan individual - mungkin lebih mudah untuk memasang firewall. Hampir semua distro umum (Ubuntu, Debian, Centos, dll) memiliki dukungan untuk iptables bawaan.
Rangkaian aturan sederhana untuk memulai: (Anda bisa mengetik ini di command-prompt; untuk membuatnya permanen menambahkannya ke skrip startup Anda atau memberi tahu kami apa distro yang Anda gunakan. Pada Centos misalnya: system-config -firewall adalah UI yang bagus untuk mengonfigurasi aturan iptables)
Pada dasarnya - izinkan ssh masuk; letakkan yang lainnya.
Rantai INPUT Anda sekarang terlihat seperti ini:
Kemudian di kemudian hari, katakan Anda ingin mengizinkan 'samba' (berbagi file windows): Anda dapat menjalankan
The
-I
prepends dan aturan untuk daftar;-A
menambahkan aturan. Jadi rantai Anda sekarang terlihat seperti ini:The
INPUT
chain mengacu pada paket ditakdirkan untuk sistem anda. Rantai lainnya adalahOUTPUT
untuk paket dari komputer Anda, pergi ke internet danFORWARD
untuk paket yang diarahkan melalui komputer Anda (yaitu paket yang 'transit' komputer Anda, seperti area transit bandara - hal-hal yang bukanINPUT
karena tidak masuk ke komputer Anda ).Sebagai catatan perpisahan: nmap'ing 127.0.0.1 tidak terlalu berguna; banyak layanan yang hanya dapat diakses dari 127.0.0.1 dan tidak ada alamat lain. Jika Anda tidak memiliki komputer lain, Anda dapat menjalankan nmap dari - coba gunakan Gibson Research 'Shields UP! ( https://www.grc.com/shieldsup ) - yang merupakan nmap-lite online gratis. Atau tambahkan komentar dengan IP / email Anda dan saya akan nmap Anda :)
sumber