最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

Syslog

IT圈 admin 1浏览 0评论

Syslog

Syslog-ng 安全配置

考虑到syslog-ng数据传输安全性,启用syslog-ng数据安全传输(TLS),UDP方式通过白名单方式。

    • Syslog-ng 安全配置
      • 一、UDP白名单配置
      • 二、TLS配置
        • 2.1、生成CA证书
        • 2.2、修改配置文件
      • 三、客户端程序
      • 四、测试下
      • 五、总结

UDP方式的传输,没有找到比较合适的办法来保证数据安全,只想到了对数据本身进行加密,然后取用的位置做解密处理,所以UDP这里只采用了白名单的方式,防止任意IP都可以访问Syslog-ng服务器(还望各位大佬指条明路😭)

一、UDP白名单配置

官方给出的例子:

修改配置文件,在filter中配置

vi /etc/syslog-ng/syslog-ng.conf
host("192.168.208.88") or host("192.168.208.89") and level(info..emerg);

配置好了,这样就能只接受 192.168.208.88/89 发来的UDP消息了。

也可以通过正则表达式匹配符合规则的IP:

host("(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)")

配置log

最后重启syslog-ng

systemctl restart syslog-ng

如果有报错重启失败可以

 /usr/sbin/syslog-ng -F -p /var/run/systemd.pid 

查看具体错误信息

二、TLS配置

先看下官方文档


emm。。。到这里大概就结束了(英文全靠百度翻译,所以我的理解可能会有偏差),大概意思是首先要通过OpenSSL生成CA密钥和CA证书(文档里说的是copy一个),然后通过CA证书生成服务端私钥,服务端证书,客户端私钥,客户端证书,但是这里我的客户端并不是一个syslog-ng,而是一个java程序,所以把客户端需要的私钥、证书转换成java可以用的私钥和证书,服务端仍然用正常的服务端私钥和证书,应该就可以了(官方的意思可能是这是用来保证Syslog-ng服务端和Syslog-ng客户端之间通信的安全的…)

2.1、生成CA证书

生成证书过程中会让输入国家、地区啥的,看情况输入就好

安装openSSL

sudo yum install openssl

修改配置文件

vi /etc/pki/tls/opensslf

dir对应syslog-ng的CA目录,没有的话就创建一个

准备工作

touch /etc/syslog-ng/CA/index.txtecho 01>serialopenssl rand -out private/.rand 1000

进入CA目录,生成CA私钥

openssl genrsa -out cakey.pem 2048

生成CA证书(要x509的,这里CA证书的名字还是叫syslog-ng官方文档里的cacert.pem)

openssl req -key cakey.pem -new -x509 -days 7300 -sha256 -out cacert.pem -extensions v3_ca

生成服务端私钥

openssl genrsa -out server.key 2048

生成服务端证书请求文件

openssl req -key server.key -new -sha256 -out server.csr

生成服务端证书

openssl x509 -req -CA cacert.pem -CAkey cakey.pem -CAcreateserial -in server.csr -out server.cert -days 365  -extensions req_ext 

当然也可以自己创建文件夹来放这些证书、请求文件、私钥,那样看起来比较规范一些,比如客户端需要的文件,创建一个client文件夹,命令里只要加上文件夹路径就可以了,也可以是绝对路径。

生成客户端私钥

openssl genrsa -out client/client.key.pem 2048

生成客户端证书请求文件

openssl req -key client.key.pem -new -sha256 -out client.csr.pem 

生成客户端证书

openssl x509 -req -CA cacert.pem -CAkey cakey.pem -CAcreateserial -in client/client.csr.pem -out client/client.cert.pem -days 365

导出客户端证书,导出成java可以使用的keystore格式,如果有需要的话

openssl pkcs12 -export -clcerts -name myclient -inkey \ client/client.key.pem -in client/client.cert -out client/client.keystore

导出服务端证书,如果有需要的话

openssl pkcs12 -export -clcerts -name myserver -inkey server.key -in server.cert -out server.keystore

导出信任证书(单向认证,客户端只要这个就可以啦)

keytool -importcert -trustcacerts -alias www.xxxx  -file cacert.pem -keystore ca-trust.keystore

到这里已经生成了全部需要的文件
把ca-trust.keystore文件拷贝到需要连接syslog的电脑里

2.2、修改配置文件

修改syslog-ng配置文件

vi /etc/syslog-ng/syslog-ng.conf

按照官方文档的配置配一哈,然后就是熟悉的重启syslog-ng了

systemctl restart syslog-ng

如果有报错重启失败可以

 /usr/sbin/syslog-ng -F -p /var/run/systemd.pid 

查看具体错误信息

三、客户端程序

不方便复制代码,所以截个图吧,没有多少


四、测试下

首先通过工具测试下,不带证书连接

断开了,看下syslog-ng的日志(此处因为是用工具建立的TCP连接,报了个未知的协议,如果客户端不带证书用SSLContext连接服务端会报证书校验失败)

带证书再试一下(JAVA)
随便发点消息,syslog-ng日志没有报错

看下是不是生成了日志文件

激动的心,颤抖的手,tail -f瞅一瞅。(到这里已经各种尝试第三天了!o(≧口≦)o)

Ohoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

检查下数据库

( ̄▽ ̄)"

五、总结

配置过程中可能会碰到各种坑,可能会掉头发,可以多参考官方文档,syslog-ng网上的攻略并不是特别丰富,比较老的攻略可能没太多帮助,不过好在是成功了。o( ̄▽ ̄)o

Syslog

Syslog-ng 安全配置

考虑到syslog-ng数据传输安全性,启用syslog-ng数据安全传输(TLS),UDP方式通过白名单方式。

    • Syslog-ng 安全配置
      • 一、UDP白名单配置
      • 二、TLS配置
        • 2.1、生成CA证书
        • 2.2、修改配置文件
      • 三、客户端程序
      • 四、测试下
      • 五、总结

UDP方式的传输,没有找到比较合适的办法来保证数据安全,只想到了对数据本身进行加密,然后取用的位置做解密处理,所以UDP这里只采用了白名单的方式,防止任意IP都可以访问Syslog-ng服务器(还望各位大佬指条明路😭)

一、UDP白名单配置

官方给出的例子:

修改配置文件,在filter中配置

vi /etc/syslog-ng/syslog-ng.conf
host("192.168.208.88") or host("192.168.208.89") and level(info..emerg);

配置好了,这样就能只接受 192.168.208.88/89 发来的UDP消息了。

也可以通过正则表达式匹配符合规则的IP:

host("(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)")

配置log

最后重启syslog-ng

systemctl restart syslog-ng

如果有报错重启失败可以

 /usr/sbin/syslog-ng -F -p /var/run/systemd.pid 

查看具体错误信息

二、TLS配置

先看下官方文档


emm。。。到这里大概就结束了(英文全靠百度翻译,所以我的理解可能会有偏差),大概意思是首先要通过OpenSSL生成CA密钥和CA证书(文档里说的是copy一个),然后通过CA证书生成服务端私钥,服务端证书,客户端私钥,客户端证书,但是这里我的客户端并不是一个syslog-ng,而是一个java程序,所以把客户端需要的私钥、证书转换成java可以用的私钥和证书,服务端仍然用正常的服务端私钥和证书,应该就可以了(官方的意思可能是这是用来保证Syslog-ng服务端和Syslog-ng客户端之间通信的安全的…)

2.1、生成CA证书

生成证书过程中会让输入国家、地区啥的,看情况输入就好

安装openSSL

sudo yum install openssl

修改配置文件

vi /etc/pki/tls/opensslf

dir对应syslog-ng的CA目录,没有的话就创建一个

准备工作

touch /etc/syslog-ng/CA/index.txtecho 01>serialopenssl rand -out private/.rand 1000

进入CA目录,生成CA私钥

openssl genrsa -out cakey.pem 2048

生成CA证书(要x509的,这里CA证书的名字还是叫syslog-ng官方文档里的cacert.pem)

openssl req -key cakey.pem -new -x509 -days 7300 -sha256 -out cacert.pem -extensions v3_ca

生成服务端私钥

openssl genrsa -out server.key 2048

生成服务端证书请求文件

openssl req -key server.key -new -sha256 -out server.csr

生成服务端证书

openssl x509 -req -CA cacert.pem -CAkey cakey.pem -CAcreateserial -in server.csr -out server.cert -days 365  -extensions req_ext 

当然也可以自己创建文件夹来放这些证书、请求文件、私钥,那样看起来比较规范一些,比如客户端需要的文件,创建一个client文件夹,命令里只要加上文件夹路径就可以了,也可以是绝对路径。

生成客户端私钥

openssl genrsa -out client/client.key.pem 2048

生成客户端证书请求文件

openssl req -key client.key.pem -new -sha256 -out client.csr.pem 

生成客户端证书

openssl x509 -req -CA cacert.pem -CAkey cakey.pem -CAcreateserial -in client/client.csr.pem -out client/client.cert.pem -days 365

导出客户端证书,导出成java可以使用的keystore格式,如果有需要的话

openssl pkcs12 -export -clcerts -name myclient -inkey \ client/client.key.pem -in client/client.cert -out client/client.keystore

导出服务端证书,如果有需要的话

openssl pkcs12 -export -clcerts -name myserver -inkey server.key -in server.cert -out server.keystore

导出信任证书(单向认证,客户端只要这个就可以啦)

keytool -importcert -trustcacerts -alias www.xxxx  -file cacert.pem -keystore ca-trust.keystore

到这里已经生成了全部需要的文件
把ca-trust.keystore文件拷贝到需要连接syslog的电脑里

2.2、修改配置文件

修改syslog-ng配置文件

vi /etc/syslog-ng/syslog-ng.conf

按照官方文档的配置配一哈,然后就是熟悉的重启syslog-ng了

systemctl restart syslog-ng

如果有报错重启失败可以

 /usr/sbin/syslog-ng -F -p /var/run/systemd.pid 

查看具体错误信息

三、客户端程序

不方便复制代码,所以截个图吧,没有多少


四、测试下

首先通过工具测试下,不带证书连接

断开了,看下syslog-ng的日志(此处因为是用工具建立的TCP连接,报了个未知的协议,如果客户端不带证书用SSLContext连接服务端会报证书校验失败)

带证书再试一下(JAVA)
随便发点消息,syslog-ng日志没有报错

看下是不是生成了日志文件

激动的心,颤抖的手,tail -f瞅一瞅。(到这里已经各种尝试第三天了!o(≧口≦)o)

Ohoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

检查下数据库

( ̄▽ ̄)"

五、总结

配置过程中可能会碰到各种坑,可能会掉头发,可以多参考官方文档,syslog-ng网上的攻略并不是特别丰富,比较老的攻略可能没太多帮助,不过好在是成功了。o( ̄▽ ̄)o

发布评论

评论列表 (0)

  1. 暂无评论