-
-
Save shichao-an/9005314e10e9a8ffa865 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# vim: softtabstop=4 shiftwidth=4 expandtab fenc=utf-8 spell spelllang=en cc=120 | |
set -e | |
# Check Ubuntu release | |
[ "$(lsb_release -sc)" = "trusty" ] || { | |
echo 'This script should be run on Ubuntu 14.04.' >&2 | |
exit 1 | |
} | |
# LDAP group name of team members to be granted access on this server, | |
LDAP_TEAM_NAME=$1 | |
LDAP_BASE="dc=example,dc=com" | |
LDAP_URI="ldaps://ldap.example.com" | |
LDAP_BINDDN="cn=OpenLDAP Client,ou=users,dc=example,dc=com" | |
LDAP_BINDPW="password" | |
USAGE="usage: ./$(basename $0) LDAP_TEAM_NAME" | |
# Check required positional parameters | |
[ $# -ne 1 ] && { | |
echo "$USAGE" >&2 | |
exit 1 | |
} | |
# Install required packages | |
export DEBIAN_FRONTEND=noninteractive | |
# The following command will implicitly install libnss-ldap | |
apt-get -y install libpam-ldap nscd ldap-utils | |
apt-get -y install python-pip python-ldap | |
pip install ssh-ldap-pubkey | |
# Configure SSH server | |
grep 'AuthorizedKeysCommand' /etc/ssh/sshd_config > /dev/null || { | |
cat >> /etc/ssh/sshd_config <<EOF | |
AuthorizedKeysCommand /usr/local/bin/ssh-ldap-pubkey-wrapper | |
AuthorizedKeysCommandUser nobody | |
EOF | |
} | |
# Restart SSH server | |
service ssh restart | |
# Edit /etc/ldap.conf | |
mv /etc/ldap.conf /etc/ldap.conf.bak | |
cat > /etc/ldap.conf <<EOF | |
base $LDAP_BASE | |
uri $LDAP_URI | |
ldap_version 3 | |
binddn $LDAP_BINDDN | |
bindpw $LDAP_BINDPW | |
pam_password md5 | |
nss_initgroups_ignoreusers backup,bin,daemon,games,gnats,irc,landscape,libuuid,list,lp,mail,man,messagebus,news,pollinate,proxy,root,sshd,sync,sys,syslog,uucp,www-data | |
bind_timelimit 3 | |
timelimit 3 | |
EOF | |
# Edit /etc/ldap/ldap.conf | |
cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.bak | |
grep 'TLS_REQCERT' /etc/ldap/ldap.conf > /dev/null || { | |
cat >> /etc/ldap/ldap.conf <<EOF | |
TLS_REQCERT never | |
EOF | |
} | |
# Configure PAM | |
# Add pam_access.so | |
grep 'pam_access.so' /etc/pam.d/common-auth > /dev/null || { | |
cat >> /etc/pam.d/common-auth <<EOF | |
account required pam_access.so | |
EOF | |
} | |
# Remove use_authtok from /etc/pam.d/common-password | |
sed -i -r 's/(.*)(use_authtok)(.*)/\1\3/g' /etc/pam.d/common-password | |
# Add pam_mkhomedir.so | |
grep 'pam_mkhomedir.so' /etc/pam.d/common-session > /dev/null || { | |
cat >> /etc/pam.d/common-session <<EOF | |
session required pam_mkhomedir.so skel=/etc/skel umask=0022 | |
EOF | |
} | |
# Configure NSS | |
sed -i -r 's/(^passwd:)(\s+)(.*)/\1\2compat ldap/' /etc/nsswitch.conf | |
sed -i -r 's/(^group:)(\s+)(.*)/\1\2compat ldap/' /etc/nsswitch.conf | |
sed -i -r 's/(^shadow:)(\s+)(.*)/\1\2compat ldap/' /etc/nsswitch.conf | |
# Edit /etc/security/access.conf | |
grep -- '^- : ALL EXCEPT root' /etc/security/access.conf > /dev/null || { | |
cat >> /etc/security/access.conf <<EOF | |
+ : ($LDAP_TEAM_NAME) : ALL | |
- : ALL EXCEPT root (admin) (wheel) : ALL EXCEPT LOCAL | |
EOF | |
} | |
# Edit /etc/sudoers | |
grep -F -- "%$LDAP_TEAM_NAME" /etc/sudoers > /dev/null || { | |
cat >> /etc/sudoers <<EOF | |
%$LDAP_TEAM_NAME ALL=(ALL) ALL | |
EOF | |
} | |
# Restart nscd | |
service nscd restart |
#ssh damri@0 -p 1112 -vvvvvvvvvvv
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "0" port 1112
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 0 [0.0.0.0] port 1112.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 0:1112 as 'damri'
debug3: put_host_port: [0]:1112
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys from [0]:1112
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: compression: none
debug1: kex: client->server cipher: [email protected] MAC: compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:snBA/mctW9WumEzVwt8v1eA4kds+++8SAupxR8A12cE
debug3: put_host_port: [0.0.0.0]:1112
debug3: put_host_port: [0]:1112
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys from [0]:1112
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from [0.0.0.0]:1112
debug1: Host '[0]:1112' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:2
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug2: key: /root/.ssh/id_rsa ((nil))
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug2: key: /root/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ecdsa
debug3: no such identity: /root/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ed25519
debug3: no such identity: /root/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
damri@0's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
damri@0's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
damri@0's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
damri@0: Permission denied (publickey,password).
I got Error show as below :
tail -f /var/log/auth.log
Sep 8 03:09:57 TBP-NAT-145 sshd[12240]: User damri from 127.0.0.1 not allowed because not listed in AllowUsers
Sep 8 03:10:03 TBP-NAT-145 sshd[12240]: pam_ldap: error trying to bind (Invalid credentials)
Sep 8 03:10:03 TBP-NAT-145 sshd[12240]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=127.0.0.1 user=damri
Sep 8 03:10:03 TBP-NAT-145 sshd[12240]: pam_ldap: error trying to bind (Invalid credentials)
Sep 8 03:10:03 TBP-NAT-145 sshd[12240]: Failed password for invalid user damri from 127.0.0.1 port 36276 ssh2
Sep 8 03:10:07 TBP-NAT-145 sshd[12240]: message repeated 2 times: [ Failed password for invalid user damri from 127.0.0.1 port 36276 ssh2]
Sep 8 03:10:07 TBP-NAT-145 sshd[12240]: Connection closed by invalid user damri 127.0.0.1 port 36276 [preauth]
Sep 8 03:14:32 TBP-NAT-145 sshd[12176]: Received signal 15; terminating.
Sep 8 03:14:32 TBP-NAT-145 sshd[12348]: Server listening on 0.0.0.0 port 1112.
Sep 8 03:14:32 TBP-NAT-145 sshd[12348]: Server listening on :: port 1112.