Saya menggunakan Ubuntu 14.04 dan saya ingin memblokir negara login SSH menggunakan GeoIP ( Dari https://www.axllent.org/docs/view/ssh-geoip/),
Silakan temukan output dari perintah:
$ spawn
spawn: command not found
Jadi saya telah menginstal harapkan paket tetapi masih tidak berfungsi:
apt-get install expect
expect is already the newest version
Saya ingin menjalankan skrip berikut:
cat /etc/hosts.allow
sshd: ALL: spawn /usr/local/bin/sshfilter.sh %a
Apakah Anda punya ide tentang hal yang sama?
Jawaban yang Diterima:
Dalam hal ini, tampaknya spawn
mengacu pada spawn
ekstensi ke hosts.allow
sintaks, seperti yang dijelaskan dalam RUNNING OTHER COMMANDS
bagian dari halaman manual hosts_options (5) (man hosts_options
):
RUNNING OTHER COMMANDS
aclexec shell_command
Execute, in a child process, the specified shell command, after
performing the %<letter> expansions described in the
hosts_access(5) manual page. The command is executed with
stdin, stdout and stderr connected to the null device, so that
it won't mess up the conversation with the client host. Example:
smtp : ALL : aclexec checkdnsbl %a
executes, in a background child process, the shell command
"checkdnsbl %a" after replacing %a by the address of the remote
host.
The connection will be allowed or refused depending on whether
the command returns a true or false exit status.
spawn shell_command
Execute, in a child process, the specified shell command, after
performing the %<letter> expansions described in the
hosts_access(5) manual page. The command is executed with
stdin, stdout and stderr connected to the null device, so that
it won't mess up the conversation with the client host. Example:
spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) &
executes, in a background child process, the shell command
"safe_finger -l @%h | mail root" after replacing %h by the name
or address of the remote host.
Fakta bahwa spawn
mengembalikan kesalahan saat Anda mencoba menjalankannya di luar konteks itu (yaitu sebagai perintah di shell) tidak perlu menjadi perhatian Anda – jika Anda mengalami masalah dengan pengoperasian skrip pemfilteran GeoIP yang benar, itu adalah masalah terpisah.
Untuk mendemonstrasikan keberhasilan operasi dari hosts.allow spawn
ekstensi di Ubuntu 14.04 tanpa terjerat di GeoIP, Anda dapat membuat skrip minimal yang dapat dieksekusi /usr/local/bin/sshfilter.sh yang hanya mencatat alamat IP dan kemudian mengembalikan 0, mis.
#!/bin/sh
logger "$0: connection from $1"
exit 0
Kemudian dengan baris berikut ditambahkan ke file host:
Terkait:Ubuntu macet di layar masuk?Di hosts.deny:
sshd: ALL
Di hosts.allow:
sshd: ALL: spawn /usr/local/bin/sshfilter.sh %a
Kemudian jalankan
tail -f /var/log/syslog
di satu jendela terminal dan, di jendela lain, coba masuk melalui SSH:
ssh localhost
Anda akan melihat pesan di ekor syslog seperti
Jul 25 08:03:59 T61p logger: /usr/local/bin/sshfilter.sh: connection from 127.0.0.1
Anda dapat mengonfirmasi bahwa itu juga berfungsi dengan aclexec
menggantikan spawn
, seperti yang disarankan dalam artikel yang Anda tautkan. Bahkan dalam hal ini Anda harus menggunakan aclexec
sejak spawn
tidak menggunakan kode keluar dari proses yang muncul untuk menentukan apakah akan mengizinkan koneksi – aclexec
yang mana tidak .