Appendix |
Your Aspera applications can be configured to maximize system and content security. The following sections describe the recommended settings and practices that best protect your content when using IBM Aspera Enterprise or Connect Server, IBM Aspera Faspex, IBM Aspera Shares, and IBM Aspera Console.
Contents
Securing the Systems that Run Aspera SoftwareThe systems that run Aspera software can be secured by keeping them up to date, by applying security fixes, and by configuring them using the recommended settings.
Updates
Aspera continually improves the built-in security of its products, as do the producers of third-party components used by Aspera, such as Apache, Nginx, and OpenSSH. One of the first lines of defense is keeping your products up to date to ensure that you are using versions with the latest security upgrades:
Security Fixes
Rarely, security vulnerabilities are detected in the operating systems and third-party components that are used by Aspera. Aspera publishes security bulletins immediately that describe the affected products and recommended remediation steps. To be automatically notified when a new security bulletin is published to the Aspera knowledge base, go to http://support.asperasoft.com, click Announcements > Security Bulletins > Follow this section.
Security Configuration
Recommended security settings vary depending on the products you are using and how they interact. See the following subsections for your Aspera products.
If you do not have an existing configuration for OpenSSH, or need to update an existing one, Aspera recommends the following reference: https://wiki.mozilla.org/Security/Guidelines/OpenSSH.
#Port 22 Port 33001
Connect Server admins must also update the SshPort value in the <WEB...> section of aspera.conf.
Once this setting takes effect:
AllowTcpForwarding no Match Group root AllowTcpForwarding yes
Depending on your sshd_config file, you might have additional instances of AllowTCPForwarding that are set to the default Yes. Review your sshd_config file for other instances and disable if necessary.
Disabling TCP forwarding does not improve security unless users are also denied shell access, because with shell access they can still install their own forwarders. Aspera recommends assigning users to aspshell, described in the following section.Add or uncomment PubkeyAuthentication yes and comment out PasswordAuthentication yes:
PubkeyAuthentication yes #PasswordAuthentication yes PasswordAuthentication no
PermitEmptyPasswords no
Comment out PermitRootLogin yes and add PermitRootLogin No:
#PermitRootLogin yes PermitRootLogin no
Click Start > Control Panel > Administrative Tools > Services. Locate the OpenSSH Service and click Restart.
Aspera requires inbound access on the following ports:
> asconfigurator -x "set_server_data;ssl_protocol,tlsv1.2"
> asconfigurator -x "set_user_data;user_name,xfer;authorization_transfer_in_value,token" > asconfigurator -x "set_user_data;user_name,xfer;authorization_transfer_out_value,token"
Set the token encryption key to a string of at least 20 characters:
> asconfigurator -x "set_user_data;user_name,xfer;token_encryption_key,token_string"
Do not use UUIDs for this key because they might not be generated using cryptographically secure methods.
Windows users are automatically assigned to aspshell when they are configured as transfer users in the GUI.
> asconfigurator -x "set_node_data;absolute,docroot" > asconfigurator -x "set_user_data;user_name,username;absolute,docroot"
Replace username with the username and docroot with the directory path to which the user should have access.
> asconfigurator -x "set_node_data;file_restriction,|storage_path" > asconfigurator -x "set_user_data;user_name,username;file_restriction,|storage_path"
Replace username with the username and storage_path with the path to which the user has access. Restriction syntax is specific to the storage:
Storage Type | Format Example |
---|---|
local storage | file:///C:\* |
S3 and IBM Cloud Object Storage | s3://* |
Swift storage | swift//* |
Azure storage | azu://* |
Azure Files | azure-files://* |
Google Cloud Storage | gs://* |
Hadoop (HDFS) | hdfs://* |
The "|" is a delimiter, and you can add additional restrictions. For example, to restrict the system user xfer to s3://s3.amazonaws.com/bucket_xyz/folder_a/* and not allow access to key files, run the following command:
> asconfigurator -x "set_user_data;user_name,xfer;file_restriction,|s3://s3.amazonaws.com/bucket_xyz/folder_a/*|!*.key"
> asconfigurator -x "set_node_data;read_allowed,false;write_allowed,false;dir_allowed,false"
Run the following commands to enable permissions per user, as required:
> asconfigurator -x "set_user_data;user_name,username;read_allowed,false" > asconfigurator -x "set_user_data;user_name,username;write_allowed,false" > asconfigurator -x "set_user_data;user_name,username;dir_allowed,false"
> asconfigurator -x "set_node_data;authorization_transfer_in_value,deny" > asconfigurator -x "set_node_data;authorization_transfer_out_value,deny"
Allow transfers for specific users by running the following commands for each user:
> asconfigurator -x "set_user_data;user_name,username;authorization_transfer_in_value,allow" > asconfigurator -x "set_user_data;user_name,username;authorization_transfer_out_value,allow"
> asconfigurator -x "set_user_data;user_name,username;token_encryption_key,token_string" > asconfigurator -x "set_group_data;group_name,groupname;token_encryption_key,token_string"
The token string should be at least 20 random characters.
> asconfigurator -x "set_node_data;transfer_encryption_allowed_cipher,aes-128"
By default, your server is configured to transfer (as a client) using AES-128 encryption. If you require higher encryption, change this value by running the following command:
> asconfigurator -x "set_client_data;transport_cipher,value"
You can also specify the encryption level in the command line by using -c cipher with ascp and async transfers. ascp4 transfers use AES-128 encryption.
To verify the authenticity of the transfer server, the web app passes the client a trusted SSH host key fingerprint of the transfer server. The client confirms the server's authenticity by comparing the server's fingerprint with the trusted fingerprint. In order to do this, the host key fingerprint must be set in the server's aspera.conf.
> ascp source_file username@localhost:destination
Open C:\Program Files\Aspera\\var\log\aspera-scp-transfer.log. Search for "remote host-key fingerprint". The line appears similar to the following, in which 19f7cf4d495234ng4342ha062f5d98b5a9d665 is the SHA-1 fingerprint:
2017-12-08 12:04:53.024 [1888-0000264c] LOG [asssh] remote host-key fingerprint 19f7cf4d495234ng4342ha062f5d98b5a9d665
> asconfigurator -x "set_server_data;ssh_host_key_fingerprint,fingerprint"
This command creates a line similar to the following example of the <server> section of aspera.conf:
<ssh_host_key_fingerprint>7qdOwebGGeDeN7Wv+2dP3HmWfP3 </ssh_host_key_fingerprint>
> asconfigurator -x "set_node_data;authorization_transfer_in_value,deny" > asconfigurator -x "set_node_data;authorization_transfer_out_value,deny"
Allow transfers for "faspex" by running the following commands:
> asconfigurator -x "set_user_data;user_name,faspex;authorization_transfer_in_value,token" > asconfigurator -x "set_user_data;user_name,faspex;authorization_transfer_out_value,token"
SSLProtocol ALL -SSLv2 -SSLv3
SSLProtocol TLSv1.2
> asctl apache:restart
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
You can also secure the Console application and its network of nodes by restricting user permissions:
Limitations and Other Considerations
To enable server-side EAR:
> asconfigurator -x "set_user_data;user_name,username;absolute,file:///path"
> asconfigurator -x "set_user_data;user_name,username;transfer_encryption_content_protection_secret,passphrase"
> asconfigurator -x "set_node_data;transfer_encryption_content_protection_required,true" > asconfigurator -x "set_node_data;transfer_encryption_content_protection_strong_pass_required,true"
If you cannot use private key authentication and use password authentication, use strong passwords and change them periodically.
Client configuration
The client specifies a password and the files are uploaded to the server with a .aspera-env extension. Anyone downloading these .aspera-env files must have the password to decrypt them. Users can enable client-side EAR in the GUI or on the ascp command line.
GUI: Go to Connections > connection_name > Security. Select Encrypt uploaded files with a password and set the password. Select Decrypt password-protected files downloaded and enter the password.
Ascp command line: Set the encryption and decryption password as the environment variable ASPERA_SCP_FILEPASS. For uploads (--mode=send), use --file-crypt=encrypt. For downloads (--mode=recv), use --file-crypt=decrypt.
Server configuration
To configure the server to require client-side EAR and to require strong content protection passwords, run the following commands:
> asconfigurator -x "set_node_data;transfer_encryption_content_protection_required,true" > asconfigurator -x "set_node_data;transfer_encryption_content_protection_strong_pass_required,true"
> set ASPERA_SCP_FILEPASS=password > asprotect -o filename.aspera-env filename
> set ASPERA_SCP_FILEPASS=password > asprotect -o filename filename.aspera-env