Commit Graph

139 Commits

Author SHA1 Message Date
Rohit Yadav 1f52cd4245 FR12: Have basic constraint in CA certificate (#52)
* FR12: Have basic constraint in CA certificate

- Refactors certificate generation to use V3
- Removes use of V1 based certificate generator
- Puts basic constraint and keyusage extentions in certificate generator
  when caCert is not provided, i.e. for building CA certificate
- For normal certificate generation, skips putting basic constraint
  instead puts authority key identifier (the ca cert)
- Fixes tests to use the V3 certificate generator

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

* FR12: backup and restore cpvm/ssvm keystore during reboot

This is backported from:
https://github.com/apache/cloudstack/pull/2278

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2017-10-10 10:38:13 +05:30
Rohit Yadav 366d82e292 FR12 (CLOUDSTACK-9993): Secure Agent Communications (#38)
This introduces a new certificate authority framework that allows
pluggable CA provider implementations to handle certificate operations
around issuance, revocation and propagation. The framework injects
itself to `NioServer` to handle agent connections securely. The
framework adds assumptions in `NioClient` that a keystore if available
with known name `cloud.jks` will be used for SSL negotiations and
handshake.

This includes a default 'root' CA provider plugin which creates its own
self-signed root certificate authority on first run and uses it for
issuance and provisioning of certificate to CloudStack agents such as
the KVM, CPVM and SSVM agents and also for the management server for
peer clustering.

Additional changes and notes:
- Comma separate list of management server IPs can be set to the 'host'
  global setting. Newly provisioned agents (KVM/CPVM/SSVM etc) will get
  radomized comma separated list to which they will attempt connection
  or reconnection in provided order. This removes need of a TCP LB on
  port 8250 (default) of the management server(s).
- All fresh deployment will enforce two-way SSL authentication where
  connecting agents will be required to present certificates issued
  by the 'root' CA plugin.
- Existing environment on upgrade will continue to use one-way SSL
  authentication and connecting agents will not be required to present
  certificates.
- A script `keystore-setup` is responsible for initial keystore setup
  and CSR generation on the agent/hosts.
- A script `keystore-cert-import` is responsible for import provided
  certificate payload to the java keystore file.
- Agent security (keystore, certificates etc) are setup initially using
  SSH, and later provisioning is handled via an existing agent connection
  using command-answers. The supported clients and agents are limited to
  CPVM, SSVM, and KVM agents, and clustered management server (peering).
- Certificate revocation does not revoke an existing agent-mgmt server
  connection, however rejects a revoked certificate used during SSL
  handshake.
- Older `cloudstackmanagement.keystore` is deprecated and will no longer
  be used by mgmt server(s) for SSL negotiations and handshake. New
  keystores will be named `cloud.jks`, any additional SSL certificates
  should not be imported in it for use with tomcat etc. The `cloud.jks`
  keystore is stricly used for agent-server communications.
- Management server keystore are validated and renewed on start up only,
  the validity of them are same as the CA certificates.

New APIs:
- listCaProviders: lists all available CA provider plugins
- listCaCertificate: lists the CA certificate(s)
- issueCertificate: issues X509 client certificate with/without a CSR
- provisionCertificate: provisions certificate to a host
- revokeCertificate: revokes a client certificate using its serial

Global settings for the CA framework:
- ca.framework.provider.plugin: The configured CA provider plugin
- ca.framework.cert.keysize: The key size for certificate generation
- ca.framework.cert.signature.algorithm: The certificate signature algorithm
- ca.framework.cert.validity.period: Certificate validity in days
- ca.framework.cert.automatic.renewal: Certificate auto-renewal setting
- ca.framework.background.task.delay: CA background task delay/interval
- ca.framework.cert.expiry.alert.period: Days to check and alert expiring certificates

Global settings for the default 'root' CA provider:
- ca.plugin.root.private.key: (hidden/encrypted) CA private key
- ca.plugin.root.public.key: (hidden/encrypted) CA public key
- ca.plugin.root.ca.certificate: (hidden/encrypted) CA certificate
- ca.plugin.root.issuer.dn: The CA issue distinguished name
- ca.plugin.root.auth.strictness: Are clients required to present certificates
- ca.plugin.root.allow.expired.cert: Are clients with expired certificates allowed

UI changes:
- Button to download/save the CA certificates.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2017-09-26 09:19:31 +05:30
Rohit Yadav a4f552d46d cloudstack: set next version to 4.5.3-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-09-14 09:59:40 +05:30
Rohit Yadav 7385441807 Updating pom.xml version numbers for release 4.5.2
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-19 14:42:54 +05:30
David Bierce 0c8c089177 Always enter chap-secrets as a quoted field. In the event of special characters it creates and deletes the entry properly, in the event there are not special characters there is no change behavior.
Signed-off-by: Remi Bergsma <apache@remi.nl>

This closes #307
2015-05-28 15:06:56 +02:00
Rohit Yadav 4ba72a877c Updating pom.xml version numbers for release 4.5.2-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-07 15:33:01 +02:00
Rohit Yadav 0eb4eb2370 Updating pom.xml version numbers for release 4.5.1
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-04 12:17:03 +02:00
Rohit Yadav f26ae6eb39 CLOUDSTACK-7493: ignore errors on removal of iptables chains that don't exist
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-23 14:04:32 +02:00
Rohit Yadav 5cba410937 vpn_l2tp: fix variable assignment, fails L2TP VPN
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-23 14:04:32 +02:00
Rene Moser 78f4acd9d5 CLOUDSTACK-6885: fix logrotate on VR to depend on size
In 6ac06e5e5e logrotate was changed to run hourly.
Some logrotate configs still have set `daily` only which results in logs not
rotated hourly. The only way to ensure the log is rotated is to use size.

This closes #162

(cherry picked from commit 0ada08aa85)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-14 00:51:38 +05:30
Rohit Yadav 888f67f0bd systemvm: fix socat usage
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-30 13:49:15 +05:30
Abhinandan Prateek 9875803cf7 CLOUDSTACK-6885: rotate logs hourly on VR 2015-03-30 11:36:11 +05:30
Rene Moser a45f0e29e2 systemvm: fix/improve irqbalance on multicore VR.
This is a known issue in irqbalance 1.0.3 and was partially fixed in 1.0.4.
Using the package 1.0.6 from wheezy backports helped on many VRs balancing the
interrupts, but not on all.

It seems only 1.0.7 fixes all issues regarding this, also see thread in user ML
http://mail-archives.apache.org/mod_mbox/cloudstack-users/201503.mbox/%3C5508540E.4090302%40renemoser.net%3E

This closes #119

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-23 14:18:49 +05:30
Rohit Yadav b819211476 CLOUDSTACK-8331: have savepassword try all interfaces
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-18 14:26:09 +05:30
Rohit Yadav 3262b0bfd9 vpc_passwd_server: use the improved Python based password server
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-18 10:42:46 +05:30
Rohit Yadav 294503a025 CLOUDSTACK-8331: savepassword should try all IPs on eth0
The logic is same as passwd_server_ip script which runs password server on all
IPs on eth0 interface.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-17 14:21:48 +05:30
Rohit Yadav 488625b193 savepassword: use eth0's IP address, as password listens on that IP
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-17 13:23:27 +05:30
Rohit Yadav 4b45d25152 CLOUDSTACK-8272: Python based file-lock free password server implementation
- VRs are single CPU, so Threading based implementation favoured than Forking based
- Implements a Python based password server that does not use file based locks
- Saving password mechanism is provided by using secure token only to VR (localhost)
- Old serve_password implementation is removed
- Runs with Python 2.6+ with no external dependencies
- Locks used within threads for extra safety

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-12 13:56:28 +05:30
Rohit Yadav c198dfdb7a Update pom and version usage to 4.5.1-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-12 12:13:18 +05:30
René Moser 729e239a47 systemvm: correct sftp subsystem path of debian wheezy
This closes #104

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit 47de4a12f4)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-10 10:15:54 +05:30
Rohit Yadav f3f47f25ba systemvm: avoid tcp responses with timestamp
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-09 17:10:13 +05:30
Rohit Yadav ab8f367850 systemvm: have apache2 use secure SSL cipher suite
Created using Mozilla's ssl config generator:
https://mozilla.github.io/server-side-tls/ssl-config-generator/

Intermediate setting was used, with apache version 2.2.22 and openssl 1.0.1e
Oldest compatible clients:
Firefox 1, Chrome 1, IE 7, Opera 5, Safari 1, Windows XP IE8, Android 2.3, Java 7

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-09 12:43:42 +05:30
Jayapal 81994cf443 CLOUDSTACK-5494: Fixed dns is open to public in VR
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-06 15:29:57 +05:30
Rohit Yadav 671248b3e1 rc.local: add missing license header
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-06 14:58:21 +05:30
Rohit Yadav debfcdef78 CLOUDSTACK-8160: use preferable protocols
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-21 18:02:58 +05:30
Sanjay Tripathi b3e84cad2d CLOUDSTACK-7904: EN-UK: CentOS 6.5 GUI: Key translation fails for some EN- UK keyboard keys.
(cherry picked from commit 7f2219bcbb)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-20 11:59:32 +05:30
Wei Zhou 9bfb8e5719 CLOUDSTACK-2823: pass cmdline info to system vms for 30 times
(cherry picked from commit 4eedfe53fc)
2014-12-11 08:33:42 +01:00
Rohit Yadav f38c2f87b1 CLOUDSTACK-7974: remove old hostname entry for a VM when adding a VM
When adding a VM, it adds an entry to /etc/hosts file on the VR but does not
clear up any older entries for the VM with a same name. The fix uncomments the
command that removes any old entries in the VM.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit 63298d9b74)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-12-10 18:23:16 +05:30
Jayapal 8278d88f76 CLOUDSTACK-8030: Updated router to come up egress default ALLOW
On default iptables rules are updated to add ACCEPT egress traffic.
    If the network egress default policy is false, CS remove ACCEPT and adds the DROP rule which
    is egress default rule when there are no other egress rules.

    If the CS network egress default policy is true, CS won't configure any default rule for egress because
    router already came up to accept egress traffic. If there are already egress rules for network then the
    egress rules get applied on VR.

    For isolated network with out firewall service, VR default allows egress traffic (guestnetwork --> public network)
2014-12-10 10:13:41 +05:30
Remi Bergsma a592b01035 made iptables for the VPN connection more secure
Added destination and source definition. Flag -S can be used
to ignore this. It's the new default as it is more secure
and does not impact the way things work (backwords compatible).

(cherry picked from commit ef3b4bb4e3)
2014-12-09 11:19:43 +01:00
Remi Bergsma 85ba1f76a4 prevent CloudStack from removing the VPN connection
If connecting the VPN takes some time, for example because
the other end is not (yet) up, CloudStack will delete
the VPN because the ipsectunnel.sh does not return in time.
The VPN connection then enters the Error state.

This change makes sure ipsectunnel.sh returns in time,
and lets ipsec connect in the background. If it all fails,
the connection enters Disconnected.

(cherry picked from commit 7f33f7c396)
2014-12-09 11:19:30 +01:00
Remi Bergsma cbc4fa2e9c add a flag -c whether or not to check the VPN on create
Changed default to no, as the other side may not be up yet.
If this check fails, the VPN enters Error state and will not
work. It's safe to just let it connect on its own so it will
connect when it can.

(cherry picked from commit f8d718e3e3)
2014-12-09 11:19:20 +01:00
Remi Bergsma e89f09aa51 starting the tunnel will make it keep trying until it connects
Changed 'auto=add' to 'auto=start' to make sure the tunnel starts.
When both sides are there they will connect. This resolves the
issue that there is only a small time frame in which the VPN
would connect.

(cherry picked from commit b95addd3ef)
2014-12-09 11:19:07 +01:00
Remi Bergsma 08ab9a3769 renamed $leftgw to $leftnexthop to make clear what it does
(cherry picked from commit 8b2563a216)
2014-12-09 11:18:59 +01:00
Remi Bergsma bf7cd8a9f0 remove biglock usage from ipsectunnel.sh
Biglock breaks creating VPN's when other scripts run at the
same time that also use the same biglock. These other scripts
do nothing that could harm our deployment and even multiple
vpn's can safely be created simultaniously.

(cherry picked from commit 8b412ce194)
2014-12-09 11:18:10 +01:00
Sheng Yang feeafa76a4 CLOUDSTACK-5241: Remove Rot13 cipher 2014-12-03 19:30:31 -08:00
David Bierce 50d756e87d Occasionally the while loop can exit with no data (Probably recieving an EOF) before receiveing CMDline data from the certial port. Continue looping until cmdline is populated
Signed-off-by: Edison Su <sudison@gmail.com>
2014-11-20 10:58:35 -08:00
Sheng Yang 50b262e02a CLOUDSTACK-7944: Ensure ipv6 is enabled in sysctl.conf
The booting sequence result in change of IPv6 related sysctl options was
overrided by sysctl.conf which is loaded later.

So this patch would patch sysctl.conf in VR as well, ensure IPv6 would be
enabled during booting period otherwise the network setup may not work, result
in IPv6 VM deployment failure.
2014-11-19 14:50:03 -08:00
Sheng Yang 2d3b3376e3 Revert "CLOUDSTACK-7821: Fix OSX cannot connect to VPN due to wrongly declaim ENCAPSULATION_MODE_UDP_TRANSPORT_RFC"
This reverts commit e1c788ca3c.

It breaks Windows 7 client.
2014-11-14 11:43:03 -08:00
Joris van Lieshout 1cc733bfd5 Logrotate is called from crontab. Debian crontab does not include everything in it's path. Therefore reference to these bins need to be absoluut.
Signed-off-by: Daan Hoogland <daan@onecht.net>
2014-11-09 13:18:08 +01:00
Rohit Yadav c8ad4d15fd CLOUDSTACK-7855: NIC3 should set MTU and not NIC1 for storage network nic
The fix also persists the configuration in /etc/network/interfaces

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-11-06 18:19:11 +05:30
Sanjay Tripathi e6533b3684 CLOUDSTACK-7852: EN-US, SC: CentOS CLI & Windows OS: Key translation
fails on the Numeric Del. key for US 101 keyboard.
2014-11-06 13:33:57 +05:30
Sheng Yang c15ed74f63 CLOUDSTACK-7841: Gracefully reload haproxy config
The old way would disconnect all the existing connections through haproxy when
reload the config.

This new way would ensure that all the existing connections would still alive
after reload the config.
2014-11-04 16:41:46 -08:00
Rohit Yadav 84e44a4dba systemvm: Prefer TLS over SSL in apache, POODLE workaround (CVE­2014­3566)
Just prefer TLS over SSL in apache configuration in systemvm

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit 88acc9bd53)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-11-04 01:50:06 +05:30
Sheng Yang e1c788ca3c CLOUDSTACK-7821: Fix OSX cannot connect to VPN due to wrongly declaim ENCAPSULATION_MODE_UDP_TRANSPORT_RFC
OSX always declaims it's behind NAT no matter it's true or not, thus result in
confusion of openswan.

Add parameter "forceencaps=yes" to openswan to make sure non NAT VPN connection
from OSX can pass through.
2014-10-30 17:24:57 -07:00
Saksham Srivastava b29d075108 CLOUDSTACK-7657: cloud.log is being rotated by multiple rotation policies on SSVM and CPVM
(cherry picked from commit 3e02bfa74f)
2014-10-13 00:13:25 -04:00
Sanjay Tripathi d97ad972b4 CLOUDSTACK-7373: Incorrect Japanese keyboard mapping with CentOS CLI and windows guestOS on VMware.
(cherry picked from commit bdf7d65305)
2014-10-13 00:06:13 -04:00
Saksham Srivastava cd3df842f2 CLOUDSTACK-7631: Log rotate on VR may fail as /etc/init.d/rsyslog does not anymore support reload option on debian wheezy
(cherry picked from commit 3a8c450890)
2014-10-12 23:55:42 -04:00
David Nalley ac48aa8e0c cleaning up some from a revert 2014-10-12 23:30:04 -04:00
Frank Zhang 8b89494a35 CLOUDSTACK-6278
Baremetal Advanced Networking support
2014-09-18 16:54:37 -07:00