Ini seharusnya diposting sebagai jawaban atas pertanyaan. Harap edit ini jadi pertanyaan dan pindahkan apa yang Anda poskan di atas untuk menjawabnya. Dari FAQ : "Bertanya dan menjawab pertanyaan Anda sendiri juga baik-baik saja, tetapi berpura-puralah Anda menggunakan Jeopardy: ungkapkan dalam bentuk pertanyaan."
Dijeda sampai pemberitahuan lebih lanjut.
Jawaban:
27
[Sunting] Saya telah menguji ini rilis penuh Ubuntu 10.04 Server (21 / Mei / 2010) .
Saya telah mengkonfigurasi Ubuntu 10.04 Server LTS saya yang berada di jaringan windows untuk mengautentikasi login menggunakan direktori aktif, kemudian me-mount share windows untuk dijadikan direktori home yang ada.
Inilah yang saya lakukan mulai dari instalasi awal Ubuntu.
Beberapa orang berpendapat bahwa Anda harus "mengunci sshd" dengan menonaktifkan login root. Saya pikir jika Anda cukup pintar untuk meretas sesi ssh untuk kata sandi root, Anda mungkin tidak akan digagalkan oleh penambahan PermitRootLogin nodalam /etc/ssh/sshd_configfile. Jika paranoid Anda atau tidak hanya tidak yakin maka edit file atau beri putaran berikut:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Lakukan pembersihan jaringan dasar sebagai persiapan untuk konfigurasi paket spesifik yang akan datang.
Tentukan nama domain windows Anda, nama server DNS, dan alamat IP untuk server direktori aktif (untuk samba). Untuk penyelenggaraan, saya menetapkan variabel lingkungan untuk domain windows dan server DNS. Bagi saya itu (alamat IP AD saya adalah 192.168.20.11):
Jika Anda ingin mengetahui domain dan server DNS Anda (saya adalah kontraktor dan tidak tahu jaringannya), periksa referensi yang bermanfaat ini .
Kita perlu membaptis kotak Linux pada jaringan baru, ini dilakukan dengan mengedit file host (ganti DNS dengan FQDN dari DNS windows): # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Kami juga harus memberi tahu layanan terinstal yang akan datang di mana mereka dapat menemukan pemimpin di sana: beberapa jaringan akan memiliki layanan pencarian nama netbios, tetapi untuk berjaga-jaga, tambahkan entri eksplisit dalam /etc/hostsfile Anda , dalam konfigurasi saya, saya menambahkan entri pada ketiga (3) baris: # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Otentikasi dan proses berbagi file untuk kotak Windows dan Linux harus disetujui jamnya. Lakukan ini dengan layanan NTP, dan pada versi server Ubuntu, layanan NTP diinstal dan dikonfigurasi dengan satu (1) NTP sever. Tambahkan milik Anda sebelum Ubuntu (atau ganti seluruhnya). Jaringan saya bergabung memiliki server DNS yang melayani layanan NTP juga. # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Mulai ulang daemon NTP: # sudo /etc/init.d/ntp restart
Konfigurasi Kerberos.
Instruksi yang mengikuti di sini tidak harus dipahami secara harfiah: nilai-nilai untuk MYDOMAIN.LOCALdan srv1.mydomain.localperlu diganti dengan apa yang sesuai untuk jaringan Anda ketika Anda mengedit file, tetapi perlu dicatat bahwa di mana UPPERCASE digunakan UPPERCASE diperlukan .
Jika, selama apt-get installKerberos Anda memiliki wawasan untuk menanggapi pertanyaan "domain default" dengan benar, maka, baik bagi Anda, jika tidak, Anda harus melakukan yang berikut.
Edit file (yang sebelumnya diinstal di atas) /etc/krb5.conf.
Temukan [libdefaults]bagian dan ubah pasangan nilai kunci:
Tambahkan berikut ini ke [domain_realm]bagian file: .mydomain.local = MYDOMAIN.LOCAL mydomain.local = MYDOMAIN.LOCAL
Tes yang bagus pada saat ini adalah untuk melihat apakah controller AD Anda akan mengeluarkan Anda tiket kerberos. Ini tidak perlu tetapi bisa membuat sebagian dari Anda pusing: # kinit <some_windows_domain_user>
Kemudian untuk melihat tiket: # klist
Anda akan melihat hal-hal tentang cache tiket dan expiries dan pembaruan. Setelah pusing reda, Anda juga dapat melepaskan / menghancurkan tiket: # kdestroy
Edit /etc/nsswitch.conf. Saya dapat menjalankan perintah berikut untuk mendapatkan apa yang saya butuhkan: # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Berikut adalah isi /etc/nsswitch.conffile saya : passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files
Mulai dan hentikan berbagai layanan. # sudo /etc/init.d/winbind stop # sudo service smbd restart # sudo /etc/init.d/winbind start
Bergabunglah dengan komputer ke domain. Saya tidak yakin ini perlu; terutama karena opsi keamanan dalam smb.conffile ( security = ads). Mungkin seseorang dapat mempertimbangkan ini ... # sudo net ads join -U any_domain_user_account
Anda mungkin mendapatkan kesalahan DNS update failed!, tetapi Anda akan bergabung ke domain. Jika Anda mendapatkan kesalahan tentang tidak dapat menemukan server, catatan DNS Anda perlu dimodifikasi. Selama instalasi Ubuntu, server nama akan sering mengarah ke gateway Anda: sebagian besar router akan melakukan layanan DNS. Praktik terbaik untuk administrasi server windows adalah ADC harus menjalankan DNS juga. Dalam kasus saya, /etc/resolve.conftampilannya seperti ini: nameserver 192.168.20.11 nameserver 8.8.8.8
Ini 8.8.8.8adalah google DNS, cadangan yang cukup andal jika windowsnya rusak.
Pada titik ini saya bisa masuk (mungkin setelah reboot), direktori home tidak ada, tetapi saya bisa masuk.
CIFS Pemasangan pada Login
Langkah selanjutnya ini adalah ceri bagi saya; Saya tidak ingin tanggung jawab mencadangkan direktori kerja semua orang, dan kotak yang akan dijalankan Ubuntu dicurigai dalam hal keandalan. Dengan melakukan hal berikut, pengguna dapat masuk dan melihat direktori pengguna windows mereka secara otomatis .
Unduh pam_mountmodul: # sudo apt-get install libpam-mount
Saya ingin titik mount ke titik berada di /home/<user>lokasi tradisional : bagian ini dikonfigurasi oleh /etc/samba/smb.conffile ( template homedir = /home/%U). Tetapi saya membutuhkannya untuk menelusuri share dan menunjuk ke direktori windows mereka sendiri. Ini dilakukan dengan mengedit /etc/security/pam_mount.conf.xmlfile (yang meskipun memiliki niat, XML tidak dapat dibaca manusia):
Tambahkan yang berikut ke /etc/security/pam_mount.conf.xmldan ubah sesuai: <volume user="*" server="srv1.mydomain.local" path="UserShares" mountpoint="home" fstype="cifs" />
Karena titik mount konyol saya, saya harus menambahkan baris ini juga:
<umount>umount %(MNTPT)/%(USER)</umount>
Dan sehingga direktori pengguna (untuk titik mount) akan dibuat secara otomatis menemukan baris dan membuatnya jadi:
<mkmountpoint enable="1" remove="false" />
The remove="false"bit cukup penting: jika set itu untuk benar, pam_mount.somencoba untuk menghapus direktori mount point yang tidak bisa dilakukan jika pengguna telah login beberapa kali. Apa yang akhirnya Anda temukan dalam kasus ini adalah banyak mount liar pada sistem Anda.
pam_mount.somasih belum cukup memenuhi yang dijanjikan. Dalam bentuk saat ini mount terus menumpuk dan direktori home tidak dibuat. Di suatu tempat antara sini dan rilis Beta 2 sebelumnya dari server 10,04, itu berfungsi. Saya tidak bisa membuat ulang ini.
Sementara itu untuk pembuatan direktori saya mengandalkan pam_mkhomedir.so, dan terjebak garis tepat sebelum pam_mount.sobaris untuk mengakomodasi.
Saya masih belum menyelesaikan beberapa masalah pemasangan. Tetapi sampai pam_mount.sodiperbaiki, inilah yang saya miliki di /etc/pam.d/common-sessionfile saya :
Itu dia. Itu bekerja untuk saya, dan saya harap Anda merasa berguna.
Banyak sumber daya dipertimbangkan sehingga saya bisa mengetahuinya. Berikut adalah daftar singkat (sejumlah tautan ini mengarah ke pertanyaan saya sendiri tentang topik ini):
Mematikan login ssh root jarak jauh adalah suatu keharusan. Serangan brutal / kamus terkadang berhasil. Jika root terganggu, ucapkan selamat tinggal pada apa pun yang Anda percayai di mesin.
JR Lawhorne
1
ubuntu tidak mengaktifkan akun root meskipun ... semuanya sudod, atau saya kehilangan sesuatu?
Jamie
'semuanya adalah sudo' - Dan ini lebih baik ... dalam hal apa? (Jika ada akun pengguna yang berhak untuk sudo dikompromikan, pada dasarnya hal yang sama. Dan pada dasarnya sama sederhana [atau tidak] untuk bruteforce root atau akun pengguna. Yang terbaik adalah mengatur login dengan kunci pub-key saja, dan nonaktifkan semua kata sandi- login berbasis.)
Kurt Pfeifle
Saya mengerti, tetapi pertimbangkan: "Yang terbaik adalah mengatur login khusus kunci-pub" , yang sepenuhnya akan mengalahkan tujuan dari posting ini.
Jawaban:
[Sunting] Saya telah menguji ini rilis penuh Ubuntu 10.04 Server (21 / Mei / 2010) .
Saya telah mengkonfigurasi Ubuntu 10.04 Server LTS saya yang berada di jaringan windows untuk mengautentikasi login menggunakan direktori aktif, kemudian me-mount share windows untuk dijadikan direktori home yang ada.
Inilah yang saya lakukan mulai dari instalasi awal Ubuntu.
Dapatkan pembaruan
# sudo apt-get update && sudo apt-get upgrade
Instal server SSH (
sshd
)# sudo apt-get install openssh-server
Beberapa orang berpendapat bahwa Anda harus "mengunci sshd" dengan menonaktifkan login root. Saya pikir jika Anda cukup pintar untuk meretas sesi ssh untuk kata sandi root, Anda mungkin tidak akan digagalkan oleh penambahan
PermitRootLogin no
dalam/etc/ssh/sshd_config
file. Jika paranoid Anda atau tidak hanya tidak yakin maka edit file atau beri putaran berikut:# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Instal paket yang diperlukan
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Lakukan pembersihan jaringan dasar sebagai persiapan untuk konfigurasi paket spesifik yang akan datang.
Tentukan nama domain windows Anda, nama server DNS, dan alamat IP untuk server direktori aktif (untuk samba). Untuk penyelenggaraan, saya menetapkan variabel lingkungan untuk domain windows dan server DNS. Bagi saya itu (alamat IP AD saya adalah 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Jika Anda ingin mengetahui domain dan server DNS Anda (saya adalah kontraktor dan tidak tahu jaringannya), periksa referensi yang bermanfaat ini .
Kita perlu membaptis kotak Linux pada jaringan baru, ini dilakukan dengan mengedit file host (ganti DNS dengan FQDN dari DNS windows):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Kami juga harus memberi tahu layanan terinstal yang akan datang di mana mereka dapat menemukan pemimpin di sana: beberapa jaringan akan memiliki layanan pencarian nama netbios, tetapi untuk berjaga-jaga, tambahkan entri eksplisit dalam
/etc/hosts
file Anda , dalam konfigurasi saya, saya menambahkan entri pada ketiga (3) baris:# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Otentikasi dan proses berbagi file untuk kotak Windows dan Linux harus disetujui jamnya. Lakukan ini dengan layanan NTP, dan pada versi server Ubuntu, layanan NTP diinstal dan dikonfigurasi dengan satu (1) NTP sever. Tambahkan milik Anda sebelum Ubuntu (atau ganti seluruhnya). Jaringan saya bergabung memiliki server DNS yang melayani layanan NTP juga.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Mulai ulang daemon NTP:
# sudo /etc/init.d/ntp restart
Konfigurasi Kerberos.
Instruksi yang mengikuti di sini tidak harus dipahami secara harfiah: nilai-nilai untuk
MYDOMAIN.LOCAL
dansrv1.mydomain.local
perlu diganti dengan apa yang sesuai untuk jaringan Anda ketika Anda mengedit file, tetapi perlu dicatat bahwa di mana UPPERCASE digunakan UPPERCASE diperlukan .Jika, selama
apt-get install
Kerberos Anda memiliki wawasan untuk menanggapi pertanyaan "domain default" dengan benar, maka, baik bagi Anda, jika tidak, Anda harus melakukan yang berikut.Edit file (yang sebelumnya diinstal di atas)
/etc/krb5.conf
.Temukan
[libdefaults]
bagian dan ubah pasangan nilai kunci:[libdefaults]
default_realm = MYDOMAIN.LOCAL
Tambahkan berikut ini ke
[realms]
bagian file:MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Tambahkan berikut ini ke
[domain_realm]
bagian file:.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
Tes yang bagus pada saat ini adalah untuk melihat apakah controller AD Anda akan mengeluarkan Anda tiket kerberos. Ini tidak perlu tetapi bisa membuat sebagian dari Anda pusing:
# kinit <some_windows_domain_user>
Kemudian untuk melihat tiket:
# klist
Anda akan melihat hal-hal tentang cache tiket dan expiries dan pembaruan. Setelah pusing reda, Anda juga dapat melepaskan / menghancurkan tiket:
# kdestroy
Konfigurasikan samba.
Menurut yang berikut: Ada kalanya CIFS tidak dapat digunakan atau pilihan sistem file jaringan lainnya lebih baik. Jika dukungan otentikasi kerberos (krb5 / SPNEGO) diperlukan untuk keamanan tambahan, maka smbclient atau smbfs Samba harus digunakan sebagai pengganti cifs
Alas,
cifs
dukungan di kernel untuk ubuntu 10.04 (berdasarkan kernel versi 2.6.32.9) ada di versi 1.61, dan menurut dokumentasi kernel, implementasi kerberos eksperimental telah ada sejak versi 1.54.Jadi begitulah. Saya tidak tahu apakah
cifs
akan berhasil, jadi saya memberikan Anda konfigurasi samba:Ganti
/etc/samba/smb.conf
(ingat saya bekerja dari distro bersih Ubuntu, jadi saya tidak khawatir akan merusak apa pun):[global]
security = ads
realm = MYDOMAIN.LOCAL
password server = 192.168.20.11
workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
winbind use default domain = yes
restrict anonymous = 2
Mulai dan hentikan berbagai layanan.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Siapkan otentikasi.
Edit
/etc/nsswitch.conf
. Saya dapat menjalankan perintah berikut untuk mendapatkan apa yang saya butuhkan:# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Berikut adalah isi
/etc/nsswitch.conf
file saya :passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Mulai dan hentikan berbagai layanan.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Bergabunglah dengan komputer ke domain. Saya tidak yakin ini perlu; terutama karena opsi keamanan dalam
smb.conf
file (security = ads
). Mungkin seseorang dapat mempertimbangkan ini ...# sudo net ads join -U any_domain_user_account
Anda mungkin mendapatkan kesalahan
DNS update failed!
, tetapi Anda akan bergabung ke domain. Jika Anda mendapatkan kesalahan tentang tidak dapat menemukan server, catatan DNS Anda perlu dimodifikasi. Selama instalasi Ubuntu, server nama akan sering mengarah ke gateway Anda: sebagian besar router akan melakukan layanan DNS. Praktik terbaik untuk administrasi server windows adalah ADC harus menjalankan DNS juga. Dalam kasus saya,/etc/resolve.conf
tampilannya seperti ini:nameserver 192.168.20.11
nameserver 8.8.8.8
Ini
8.8.8.8
adalah google DNS, cadangan yang cukup andal jika windowsnya rusak.Pada titik ini saya bisa masuk (mungkin setelah reboot), direktori home tidak ada, tetapi saya bisa masuk.
CIFS Pemasangan pada Login
Langkah selanjutnya ini adalah ceri bagi saya; Saya tidak ingin tanggung jawab mencadangkan direktori kerja semua orang, dan kotak yang akan dijalankan Ubuntu dicurigai dalam hal keandalan. Dengan melakukan hal berikut, pengguna dapat masuk dan melihat direktori pengguna windows mereka secara otomatis .
Unduh
pam_mount
modul:# sudo apt-get install libpam-mount
Saya ingin titik mount ke titik berada di
/home/<user>
lokasi tradisional : bagian ini dikonfigurasi oleh/etc/samba/smb.conf
file (template homedir = /home/%U
). Tetapi saya membutuhkannya untuk menelusuri share dan menunjuk ke direktori windows mereka sendiri. Ini dilakukan dengan mengedit/etc/security/pam_mount.conf.xml
file (yang meskipun memiliki niat, XML tidak dapat dibaca manusia):Tambahkan yang berikut ke
/etc/security/pam_mount.conf.xml
dan ubah sesuai:<volume
user="*"
server="srv1.mydomain.local"
path="UserShares"
mountpoint="home"
fstype="cifs"
/>
<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
Karena titik mount konyol saya, saya harus menambahkan baris ini juga:
<umount>umount %(MNTPT)/%(USER)</umount>
Dan sehingga direktori pengguna (untuk titik mount) akan dibuat secara otomatis menemukan baris dan membuatnya jadi:
<mkmountpoint enable="1" remove="false" />
The
remove="false"
bit cukup penting: jika set itu untuk benar,pam_mount.so
mencoba untuk menghapus direktori mount point yang tidak bisa dilakukan jika pengguna telah login beberapa kali. Apa yang akhirnya Anda temukan dalam kasus ini adalah banyak mount liar pada sistem Anda.pam_mount.so
masih belum cukup memenuhi yang dijanjikan. Dalam bentuk saat ini mount terus menumpuk dan direktori home tidak dibuat. Di suatu tempat antara sini dan rilis Beta 2 sebelumnya dari server 10,04, itu berfungsi. Saya tidak bisa membuat ulang ini.Sementara itu untuk pembuatan direktori saya mengandalkan
pam_mkhomedir.so
, dan terjebak garis tepat sebelumpam_mount.so
baris untuk mengakomodasi.Saya masih belum menyelesaikan beberapa masalah pemasangan. Tetapi sampai
pam_mount.so
diperbaiki, inilah yang saya miliki di/etc/pam.d/common-session
file saya :Itu dia. Itu bekerja untuk saya, dan saya harap Anda merasa berguna.
Banyak sumber daya dipertimbangkan sehingga saya bisa mengetahuinya. Berikut adalah daftar singkat (sejumlah tautan ini mengarah ke pertanyaan saya sendiri tentang topik ini):
sumber
sudo
d, atau saya kehilangan sesuatu?sudo
' - Dan ini lebih baik ... dalam hal apa? (Jika ada akun pengguna yang berhak untuk sudo dikompromikan, pada dasarnya hal yang sama. Dan pada dasarnya sama sederhana [atau tidak] untuk bruteforce root atau akun pengguna. Yang terbaik adalah mengatur login dengan kunci pub-key saja, dan nonaktifkan semua kata sandi- login berbasis.)