使用 firewalld 构建 Linux 动态防火墙


2019-04-28 08:06
zpq
2

前言

防火墙是 Linux 系统的主要的安全工具,可以提供基本的安全防护,在 Linux 历史上已经使用过的防火墙工具包括:ipfwadm、ipchains、iptables。在 Firewalld 中新引入了区域(Zones)这个概念。本文介绍一下使用最新版本的 firewalld 构建动态防火墙的方法和使用技巧,本文使用的 Linux 发行版本是 RHEL 7.0。

firewalld 简介

firewalld 提供了支持网络 / 防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。以前的 iptables 防火墙是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。现在 firewalld 可以动态管理防火墙,firewalld 把 Netfilter 的过滤功能于一身见图 1。

图 1 内核中的防火墙 firewalld 守护进程
img001.jpg

How to Install and Configure VNC Server in CentOS 7


2018-10-26 03:07
zpq
16

In this guide we’ll explain how to install and configureVNC Remote Access in latest release of CentOS 7 and RHEL 7 Desktop edition via tigervnc-server program.

VNC (Virtual Network Computing) is a server-client protocol which allows user accounts to remotely connect and control a distant system by using the resources provided by the Graphical User Interface.

Unlike other VNC servers available which connects directly to the runtime desktop, such as VNC X or Vino, tigervnc-vncserver uses a different mechanism that configures a standalone virtual desktop for each user.

Install and Configure VNC in CentOS 7

  1. Tigervnc-server is a program which executes an Xvnc server and starts parallel sessions of Gnome or other Desktop Environment on the VNC desktop.
    A started VNC user session can be accessed by same user from multiple VNC clients. In order to install TigerVNC server in CentOS 7, open a Terminal session and issue the following command with root privileges.
# yum install tigervnc-server
  1. After, you’ve installed the program, login with the user you want to run the VNC program and issue the below command in terminal in order to configure a password for the VNC server.
    Be aware that the password must be at least six characters length.
$ su - your_user  # If you want to configure VNC server to run under this user directly from CLI without switching users from GUI
$ vncpasswd
  1. Next, add a VNC service configuration file for your user via a daemon configuration file placed in systemd directory tree. In order to copy the VNC template file you need to run the following command with root privileges.
    If your user is not granted with sudo privileges, either switch directly to root account or run the command from an account with root privileges.
# cp /lib/systemd/system/[email protected]  /etc/systemd/system/[email protected]:1.service
  1. On the next step edit the copied VNC template configuration file from /etc/systemd/system/ directory and replace the values to reflect your user as shown in the below sample.
    The value of 1 after @ sign represents the display number (port 5900+display). Also, for each started VNC server, the port 5900 will be incremented by 1.
# vi /etc/systemd/system/[email protected]\:1.service

CentOS7开启BBR拥塞控制算法


2018-10-20 07:06
zpq
38

升级内核

首先查看你的Linux内核版本

uname -a

开启BBR拥塞控制算法的要求是Linux内核4.9以上版本,现在主流的Linux发行版内核还停留在2.x,我们需要先升级Linux内核版本。
首先,我们需要增加一个 ELRepo 源。
首先,让我们添加 ELRepo GPG key:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 

添加源:

rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

安装 fastestmirror

yum install yum-plugin-fastestmirror

安装最新Kernel

yum --enablerepo=elrepo-kernel install kernel-ml

切换到刚刚下载的新内核

grub2-set-default 0

重启后,通过 uname -a 查看内核是否成功切换到最新的版本,确认后我们进入下一步开启BBR

永远不要在MySQL中使用utf8,改用utf8mb4


2018-06-26 07:36
zpq
46

最近我遇到了一个bug,我试着通过csv 导入数据到mysql 里 然后出现了一个离奇的错误:

Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1

我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,csv文件也是UTF-8

问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。

“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。

MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。

当然,他们并没有对新的字符集广而告之(可能是因为这个bug让他们觉得很尴尬),以致于现在网络上仍然在建议开发者使用“utf8”,但这些建议都是错误的。

简单概括如下:

  1. MySQL的“utf8mb4”是真正的“UTF-8”。
  2. MySQL的“utf8”是一种“专属的编码”,它能够编码的Unicode字符并不多。

我要在这里澄清一下:所有在使用“utf8”的MySQL和MariaDB用户都应该改用“utf8mb4”,永远都不要再使用“utf8”。

SSH端口转发(隧道)


2017-11-10 01:28
zpq
64

SSH端口转发(Port Forwarding),是一种隧道技术,流往某端口的数据被加密后传向另一机器,依据转发方式的不同,有多种应用场景。

以下所有的命令都是用SSH客户端执行的。执行命令的电脑下面称为“本地”电脑;而“远程服务器”则是运行着SSH服务器的机器(本文以my-remote-host.com为例)。

本地转发

有时,远程机器能访问某个端口(如remote-secret.com:8080),但本地机器无法访问。这时使用SSH的本地转发功能,即可将远程端口映射到本地:

ssh -L 9090:remote-secret.com:8080 my-remote-host.com

此时访问本地的9090端口就相当于用远程服务器my-remote-host.com访问remote-secret.com:8080

如果写成-L 9090: localhost:8080,就是把远程服务器的8080端口映射到本地的9090端口了

应用举例:如果远程服务器处于某受保护的内网中,可以借助其SSH服务获得与其等同的访问权限。

默认情况下,本地转发的端口只能在本机上访问,要想允许外部访问,请添加-g选项。

如何正确的使用Google Cloud 计算引擎


2017-06-20 02:34
zpq
290

必备条件

  1. 能翻墙
  2. 需要一张外币信用卡 类似VISA
  3. Google账户

注册Google账户登录进去,然后绑定 VISA 卡 绑定的时候会收取1美元验证银行卡 只要验证通过后会退还。

进入 Google Cloud 菜单栏 -> 结算 -> 概览

如果是第一次使用会赠送300美元 有效期一年

关闭X-Powered-By 信息(隐藏PHP版本信息)


2017-06-02 06:28
zpq
93


会暴露服务器运行的是php

修改 php.ini 文件 设置 expose_php = Off

官方给出的说明

Decides whether PHP may expose the fact that it is installed on the server
(e.g. by adding its signature to the Web server header). It is no security
threat in any way, but it makes it possible to determine whether you use PHP
on your server or not.

决定服务器上是否暴露安装有PHP,
(例如:把这些信息加到Web服务器头响应)。这是不安全的。
但能确定你的服务器时候运行着PHP。
意思就是打开的话可以告诉其他人这台服务器可以运行PHP,但不一定安全,可以关掉

默认端口对应服务


2017-04-11 07:02
zpq
1387

计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口。所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样。以下为两种通信协议的端口列表链接:

[TOC]

端口状态颜色图例

使用状态叙述颜色
官方应用与端口组合记录在IANA的端口分配列表中
非官方应用与端口组合不在IANA的端口分配列表中
多重使用已知多个应用程序使用这个port

自己搭建一个动态域名服务DDNS


2017-03-31 03:21
zpq
761

DDNS

DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。

DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。

需求对象

家庭/公司内部服务需要对外公开,但却没有固定IP的用户。

服务搭建条件

  1. 有自己的域名
  2. 有操作域名SDK(这里我用的是阿里云的万网)
  3. 内部服务器(不经常关机就行)
  4. 开发能力

服务运行流程