Invoking logrotate manually

      No Comments on Invoking logrotate manually

To invoke logrotate manually to debug configuration settings, there is a builtin debug flag:

# logrotate --debug --verbose /etc/logrotate.conf

To force a log file rotation, regardless of the specified criteria (such as age, minsize, etc.), run:

# logrotate --force --verbose /etc/logrotate.conf

Keep in mind, that you can use individual logrotate configuration files from /etc/logrotate.d/ but settings are inherited from the global logrotate config /etc/logrotate.conf.

For a comprehensive list of options, have a look at the logrotate manpage.

Instaling ownCloud with nginx and php-fpm

      3 Comments on Instaling ownCloud with nginx and php-fpm

Setting up an ownCloud instance is rather straight forward. OwnCloud6 rpm packages for recent Fedora versions (20+) already exist and can be easily installed with yum. Unfortunately, ownCloud’s storage mechanism is rather slow compared to other private cloud solution like Seafile or SparkleShare. However the overall speed can be improved greatly by switching from the most obvious and most popular server choice – an apache server – to nginx, for example.

Continue reading

Revoking an OpenVPN certificate

      4 Comments on Revoking an OpenVPN certificate

One of the great advantages of using OpenVPN with RSA keys instaed of static keys is the fact that you can easily disable access to the server for a specific client without the need to re-create keys for any other client. This is called revoking of client certificates.

Since every single client’s certificate is verified against a Certificate Revoking List (CRL), disabling a certificate is rather easy. We simply have to create a CRL file and tell OpenVPN to use it. Any match against the CRL will then result in the connection being dropped.

Create a CRL file

The simplest way of dealing with RSA key management in general is probably easy-rsa. You probably set up your OpenVPN server with the help of easy-rsa in the first place, so creating the CRL file is as simple as

# cd /usr/share/easy-rsa/2.0/
# source ./vars 
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/easy-rsa/2.0/keys
# ./revoke-full client
Using configuration from /usr/share/easy-rsa/2.0/openssl-1.0.0.cnf
Revoking Certificate 04.
Data Base Updated
Using configuration from /usr/share/easy-rsa/2.0/openssl-1.0.0.cnf
client.crt: C = US, ST = CA, L = City, O = name, OU = name.example.org, CN = client, name = client, emailAddress = openvpn@example.org
error 23 at 0 depth lookup:certificate revoked

As you can see in the last line, the certificate was successfully revoke (hence the verification error 23).

You can also see the revoked status of the client’s certificate in the keys/index.txt file. An “R” in the first column indicates, that the certificate was revoked.

[...]
R       240209140518Z   140211140526Z   04      unknown /C=US/ST=CA/L=City/O=name/OU=name.example.org/CN=client/name=client/emailAddress=openvpn@example.org

To examine the newly created CRL file, use

# openssl crl -in keys/crl.pem -text

Configure OpenVPN to use a CRL

Next, we need to tell OpenVPN to verify incoming connections against against our CRL. Copy the crl.pem file to the OpenVPN config directory and assure, that’s it’s readable to the user running the OpenVPN service (usually openvpn:openvpn).

# cp -a keys/crl.pem /etc/openvpn/keys/
# chmod 755 /etc/openvpn/keys/

To tell the OpenVPN server to use a CRL, add the following line to your server’s config file:

[...]
crl-verify keys/crl.pem

After restarting the OpenVPN server, every connection from a client with a revoked certificate should be denied

# journalctl -f
[...]
Feb 11 15:27:05 OpenVPN openvpn[493]: 192.168.8.35:51960 CRL CHECK FAILED: C=US, ST=CA, L=City, O=name, OU=name.example.org, CN=client, name=client, emailAddress=openvpn@example.org is REVOKED
[...]

Resources:
http://blog.remibergsma.com/2013/02/27/improving-openvpn-security-by-revoking-unneeded-certificates/
See also OpenVPN 2.3 manpage

How to set up a basic OpenVPN bridging server

      1 Comment on How to set up a basic OpenVPN bridging server

Beside the official OpenVPN documentation there’s a vast number of howtos and guides out there, that’ll tell you how to set up an OpenVPN server. Unfortunately, most of these use a tunneling setup including some sort of router and packet filter. If you want to transport non-IP based traffic and can accept the increased broadcast overhead and poor scalability, you need to setup an OpenVPN bridge.

Continue reading

sshuttle error: File “ssubprocess.py”, line 1117, in _execute_child

If you run into this error:

# sshuttle -r user@remotehost -v 192.168.0.0/24
Starting sshuttle proxy.
Listening on ('127.0.0.1', 12300).
firewall manager ready.
c : connecting to server...
user@remotehost's password: 
 s: latency control setting = True
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "assembler.py", line 26, in <module>
  File "server.py", line 168, in main
  File "server.py", line 68, in list_routes
  File "server.py", line 47, in _list_routes
  File "ssubprocess.py", line 606, in __init__
  File "ssubprocess.py", line 1117, in _execute_child
OSError: [Errno 2] No such file or directory
c : fatal: server died with error code 1

the culprit is simply the missing netstat program on the target host. sshuttle tries to fork a netstat process without checking if netstat is installed on the target host in the first place.

On a Fedora host netstat comes with the net-tools package:

yum install net-tools

Installing EagleCad 6.5 on Fedora 19

      No Comments on Installing EagleCad 6.5 on Fedora 19

Installing the latest EagleCAD on Fedora 19 is a bit tricky. The Linux version requires libssl and libcrypto (which is thankfully mentioned right on the download page), unfortunately an older version which is no longer shipped by Fedora (Version 1.0.1 of openssl was released in March 2012).

As a (very dirty) workaround, you can just create a symlink to the current version of the shared object:

# ln -s -T /usr/lib/libcrypto.so /usr/lib/libcrypto.so.1.0.0
# ln -s -T /usr/lib/libssl.so /usr/lib/libssl.so.1.0.0