2017年3月

FirewallD 是 CentOS 7 服务器上默认可用的防火墙管理工具。基本上,它是 iptables 的封装,有图形配置工具 firewall-config 和命令行工具 firewall-cmd。使用 iptables 服务,每次改动都要求刷新旧规则,并且从 /etc/sysconfig/iptables 读取新规则,然而 firewalld 只应用改动了的不同部分。

FirewallD 的 区域 zone

FirewallD 使用 服务 service 区域 zone 来代替 iptables 的 规则 rule chain

默认情况下,有以下的 区域 zone 可用:

  • drop – 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。
  • block — 拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。
  • public — 只接受被选择的传入网络连接,用于公共区域。
  • external — 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。
  • dmz — DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。
  • work — 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。
  • home — 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。
  • internal — 对于处在你内部网络的计算机,只接受被选择的传入网络连接。
  • trusted — 所有网络连接都接受。

要列出所有可用的区域,运行:

# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

列出默认的区域 :

# firewall-cmd --get-default-zone
public

改变默认的区域 :

# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz

FirewallD 服务

FirewallD 服务使用 XML 配置文件,记录了 firewalld 服务信息。

列出所有可用的服务:

# firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

XML 配置文件存储在 /usr/lib/firewalld/services//etc/firewalld/services/ 目录下。

用 FirewallD 配置你的防火墙

作为一个例子,假设你正在运行一个 web 服务器,SSH 服务端口为 7022 ,以及邮件服务,你可以利用 FirewallD 这样配置你的服务器:

首先设置默认区为 dmz。

# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz

为 dmz 区添加持久性的 HTTP 和 HTTPS 规则:

# firewall-cmd --zone=dmz --add-service=http --permanent
# firewall-cmd --zone=dmz --add-service=https --permanent

开启端口 25 (SMTP) 和端口 465 (SMTPS) :

firewall-cmd --zone=dmz --add-service=smtp --permanent
firewall-cmd --zone=dmz --add-service=smtps --permanent

开启 IMAP、IMAPS、POP3 和 POP3S 端口:

firewall-cmd --zone=dmz --add-service=imap --permanent
firewall-cmd --zone=dmz --add-service=imaps --permanent
firewall-cmd --zone=dmz --add-service=pop3 --permanent
firewall-cmd --zone=dmz --add-service=pop3s --permanent

因为将 SSH 端口改到了 7022,所以要移除 ssh 服务(端口 22),开启端口 7022:

firewall-cmd --remove-service=ssh --permanent
firewall-cmd --add-port=7022/tcp --permanent

要应用这些更改,我们需要重新加载防火墙:

firewall-cmd --reload

最后可以列出这些规则:

# firewall-cmd –list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 7022/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

PS. 如果你喜欢这篇文章,请在下面留下一个回复。谢谢。


via: https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/

译者简介:

Locez 是一个喜欢技术,喜欢折腾的 Linuxer,靠着对 Linux 的兴趣自学了很多 Linux 相关的知识,并且志在于为 Linux 在中国普及出一份力。

作者:rosehosting.com 译者:Locez 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

sudo board game

今天为大家带来一款棋盘游戏 Sudo ——没错,就是叫 sudo 。其得名于一款名为 Ludo) (印度马棋)的一款棋盘游戏,它是飞行棋的前身。规则与飞行棋大体相同。

我们平时玩的棋子,在这款游戏中叫做进程。而我们平时使用的骰子,也变成了二进制的了。

游戏支持 2 ~ 4 人一起玩耍,每一方起始有四枚“进程”。总共有 4 方:CentOS 队、Fedora 队、Ubuntu 队和 Mint 队。

开局时,各方将四枚“进程”放入各自区域的“基地”中,然后轮流掷骰子,掷得最高点数者开局。开局后再次轮流掷骰子,只有掷得 6 点的人才可以将一枚棋子从“基地”移入起始点(init),并再掷一次来确定移动步数。

玩家掷骰子之后,可以选择任一已经进入了起始点(init)的“进程”移动。没有进入起始点(init)的“进程”不可移动。

“进程”从起始点(init)沿外侧白色格子盘旋整个棋盘一周后才能回到自己本色的中间那一列(主列)抵达中间区域(kernel space)。最终将四枚“进程”全部都移入了中间区域(kernel space)的玩家获胜。

具体的规则还有:

  • 六点连掷:在游戏过程中,掷得 6 点的玩家可以再次掷骰子,直到不是 6 点;然后就轮到(顺时针)下一位玩家掷骰子;
  • 撞击占领:当走到的格子有其它方的“进程”时,将其撞回“基地”,我方的“进程”占领此格子;
  • 叠子阻越:格子内已有我方“进程”,则可以叠放;其它方的“进程”不可越过此格子;
  • 单撞叠子:当我方掷出骰子数,刚好使我方“进程”可停于他方的两个叠子时,则三个“进程”俱都打回“基地”;
  • 无敌叠子:当我方掷出骰子数,刚好使我方“进程”可停于他方的三个叠子时,则只有我方“进程”被打回“基地”;
  • 盘旋达阵:中间终点同色格子,当掷出的点数使“进程”刚好到达此处才可放入“kernel space”,否则超过的点数要后退。

(规则参考:http://oursogo.com/thread-1881293-1-1.html)

此外,这里还有补充的规则:

  • Kill-9 格子:Kill-9 会杀掉我们的“进程”。你需要让你的“进程”回到起始点(init)格子去。
  • /dev/cool 格子: /dev/cool 会帮助我们越过长长的区块,一下子就跳到内核的面前。不过,只有在这个区块的颜色和我们的棋子的颜色一致时,才有用。
  • Fork 格子 : 如果你有一个进程已经抵达了目的地(kernel space),当你有别的进程走到 fork 时,你之前的进程就要返回到路上,并移动到这个格子上。

如果你真的对这个游戏很感兴趣,不妨把我们提供的图片打印出来,进行裁剪、黏贴。就可以真正的玩一把 Sudo 游戏啦!


via: http://turnoff.us/geek/sudo-board-game/

作者:Daniel Stori 译者:Bestony 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

运维密码是什么?

这是我们 Linux 中国旗下的 LCTT 技术组开发的第一款小程序,基于微信平台提供 OTP 口令管理功能。

想必绝大部分系统管理员都知道 OTP ,OTP 即 一次性口令 One-Time Password ,最常见的一次性口令是 基于时间的一次性口令 Time-based One-time Password (TOTP),即每隔一段时间(如 60 秒)就生成一个一次性的六位数字的密码。这种一次性口令可以用于各种登录验证系统,比如 SSH、网站登录等等,只要验证系统和验证者持有相同的 OTP 种子,并采用一致的算法即可。

最常见的方式是采用 Google 身份验证器 Google Authenticator 来提供基于时间的一次性口令(TOTP),也有采用 RSA 等公司提供的硬件 OTP 令牌进行一次性口令管理的。而我们这次推出的“运维密码”,即是一款采用和 Google 身份验证器 Google Authenticator 相同的算法的微信小程序。

为什么要开发这样的一款小程序呢,请听我道来~

缘起

为什么要做这样一款小程序?

大概是因为 Google 身份验证器 Google Authenticator 无法满足我的需要,没有办法备份场景。这让我很是担心,假如我丢失了手机,我可能再也无法登录到我的服务器上去了。

而且本身这个工具不是一个高频的应用,所以我们在考虑,能不能有这样的一种可能,让我们可以很方便地使用,同时也不会像App 一样过于侵扰我们的生活。

微信小程序出现后,其随用随走的理念深得我们的喜爱。其强大的线上线下融合能力,也非常适合我们的需求。所以在微信小程序出现后,我们就一直在关注,看我们的想法能不能在微信小程序上得以实现。

为什么选择微信小程序

微信小程序在某些方面的理念和我们对于这款工具的理念是一致的。

  • 随用随走:我们希望我们的产品不会给用户产生过多的困扰,而是很方便就可以使用它。作为一款安全工具,我们不希望它对用户的生活产生太多的麻烦。
  • 线上线下融合:微信小程序的形式让我们的用户只需要打开微信,扫一扫线下的二维码,就可以快捷、方便的拿到自己需要的动态密码。

“运维密码”的优势

备份功能

由于我们对于云服务的安全和隐私的担忧,所以我们将备份的功能做在了本地。当然,后续我们也会根据用户的不同偏好而推出基于云端的备份。

资源占用小

“运维密码”小程序不超过 200K,你只需要花费很少的流量,就可以实现和 Google 身份验证器 Google Authenticator 的全部功能。

产品无感知迭代

我们会对“运维密码”不断的更新,当然,你可以无需担心更新带来的数据问题。我们的小程序会自动帮你做好升级的事情。

开始使用

你可以直接在微信小程序中的搜索框内搜索:

微信小程序搜索框

或者,在微信公众号“运维伙伴”的详情页中也有“运维密码”的入口:

运维伙伴

或者,扫描下方二维码,添加运维密码小程序:

我还制作了一个简单的视频:

如何加入自己的场景?

打开“运维密码”,点击右下角的“扫描二维码”的按钮:

扫码

扫描服务商给你的“种子二维码”(这里包含了场景相关的信息),会自动识别,并且跳转到添加信息的界面:

确认信息

确认信息无误后,点击添加。添加成功后,即可跳转到到运维密码的详情页:

添加成功

视频操作如下:

如何获取密码?

在“运维密码”的首页,你可以看到你所添加的场景的列表,从中可以直接看到当前的一次性密码。也可以用下述的场景二维码来获取。

生成场景二维码

点击某个场景,可以查看该场景的详情,在此可以生成该场景的场景二维码(不同于之前的服务商所提供的“种子二维码”)。将此二维码打印出来,贴于所应用的场景附近,如服务器或终端旁边,这样你可以在该服务器或终端旁边直接用微信扫描即可马上显示该场景当前的一次性密码。

备份与恢复

作为最重要的差异性功能,“运维密码”提供了场景的备份和恢复功能,从此再也不怕丢失了手机后无法登入。

备份

首先进入“设置”,点击“本地场景备份”,会显示你的所有场景:

确认本地备份

确认后,会显示一个二维码图片,这个图片就是你的场景备份信息,千万保存好,也不要随意给别人。

视你所保存的场景多寡,这个二维码图片也尺寸和信息密度也有所不同。生成该备份信息会稍微有一些慢。

场景备份

对此备份,可以截屏保存到本地,妥善保管即可。下一步我们还会推出加密保存,需要使用密码才能解开。

恢复

如果因为某种原因,删除了场景或丢失了场景,你可以通过之前备份信息进行恢复,只需要选择你的备份二维码即可。重复的场景并不会覆盖。

恢复场景

下一步,我们也会推出基于公有云或私有云的云端备份功能。

更多功能

更多使用细节,您可以亲自试试。我们也有一大波新的功能增强正在赶来~

入群体验

对此小程序感兴趣的同学,欢迎加入专属体验群,提出您的建议和反馈:

扫描上述二维码并添加好友后,验证信息:“运维密码”,即可获得加群邀请。

寄语

我们希望运维密码能够给你带来更加舒服的体验,如果你觉得哪里有不足的,也希望你能够告诉我们,让我们一起把它做的更好。

后继我们将对此小程序开源,也欢迎大家提供反馈、补丁和功能请求。

MariaDB 是 MySQL 数据库的自由开源分支,与 MySQL 在设计思想上同出一源,在未来仍将是自由且开源的。

在这篇博文中,我将会介绍如何在当前使用最广的 RHEL/CentOS 和 Fedora 发行版上安装 MariaDB 10.1 稳定版。

目前了解到的情况是:Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

在本文中需要注意的是,我们假定您能够在服务器中使用 root 帐号工作,或者可以使用 sudo 命令运行任何命令。

第一步:添加 MariaDB yum 仓库

1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。

# vi /etc/yum.repos.d/MariaDB.repo

根据您操作系统版本,选择下面的相应内容添加到文件的末尾。

在 CentOS 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

在 RHEL 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Add MariaDB Yum Repo

添加 MariaDB YUM 仓库

第二步:在 CentOS 7 中安装 MariaDB

2、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。

# yum install MariaDB-server MariaDB-client -y

Install MariaDB in CentOS 7

在 CentOS 7 中安装 MariaDB

3、 MariaDB 包安装完毕后,立即启动数据库服务守护进程,并可以通过下面的操作设置,在操作系统重启后自动启动服务。

# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb

Start MariaDB Service in CentOS 7

在 CentOS 7 中启动 MariaDB 服务

第三步:在 CentOS 7 中对 MariaDB 进行安全配置

4、 现在可以通过以下操作进行安全配置:设置 MariaDB 的 root 账户密码,禁用 root 远程登录,删除测试数据库以及测试帐号,最后需要使用下面的命令重新加载权限。

# mysql_secure_installation

Secure MySQL in CentOS 7

CentOS 7 中的 MySQL 安全配置

5、 在配置完数据库的安全配置后,你可能想检查下 MariaDB 的特性,比如:版本号、默认参数列表、以及通过 MariaDB 命令行登录。如下所示:

# mysql -V
# mysqld --print-defaults
# mysql -u root -p

Verify MySQL Version

检查 MySQL 版本信息

第四步:学习 MariaDB 管理

如果你刚开始学习使用 MySQL/MariaDB,可以通过以下指南学习:

  1. 新手学习 MySQL / MariaDB(一)
  2. 新手学习 MySQL / MariaDB(二)
  3. MySQL 数据库基础管理命令(三)
  4. 20 MySQL 管理命令 Mysqladmin(四)

同样查看下面的文档学习如何优化你的 MySQL/MariaDB 服务,并使用工具监控数据库的活动情况。

  1. 15 个 MySQL/MariaDB 调优技巧
  2. 4 监控 MySQL/MariaDB 数据库的工具

文章到此就结束了,本文内容比较浅显,文中主要展示了如何在 RHEL/CentOS 和 Fefora 操作系统中安装 MariaDB 10.1 稳定版。您可以通过下面的联系方式将您遇到的任何问题或者想法发给我们。


作者简介: Aaron Kill 是 Linux 和开源软件的狂热爱好者,即将成为一名 Linux 系统管理员和网站开发工程师,现在是 TecMint 的原创作者,喜欢使用电脑工作并且热衷分享知识。


via: http://www.tecmint.com/install-mariadb-in-centos-7/

作者:Aaron Kili 译者:beyondworld 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇文章中,我将展示如何在 CentOS/RHEL 7、Debian 以及它的衍生版本比如 Ubuntu(最新的 Ubuntu 16.04 LTS 版本已经安装了最新的 Python 版本)或 Linux Mint 上安装和使用 Python 3.x 。我们的重点是安装可用于命令行的核心语言工具。

然后,我们也会阐述如何安装 Python IDLE - 一个基于 GUI 的工具,它允许我们运行 Python 代码和创建独立函数。

在 Linux 中安装 Python 3.6

在我写这篇文章的时候(2017 年三月中旬),在 CentOS 和 Debian 8 中可用的最新 Python 版本分别是 Python 3.4 和 Python 3.5 。

虽然我们可以使用 yumaptitude(或 apt-get)安装核心安装包以及它们的依赖,但在这儿,我将阐述如何使用源代码进行安装。

为什么?理由很简单:这样我们能够获取语言的最新的稳定发行版(3.6),并且提供了一种和 Linux 版本无关的安装方法。

在 CentOS 7 中安装 Python 之前,请确保系统中已经有了所有必要的开发依赖:

# yum -y groupinstall development
# yum -y install zlib-devel

在 Debian 中,我们需要安装 gcc、make 和 zlib 压缩/解压缩库:

# aptitude -y install gcc make zlib1g-dev

运行下面的命令来安装 Python 3.6:

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# tar xJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# ./configure
# make && make install

现在,放松一下,或者饿的话去吃个三明治,因为这可能需要花费一些时间。安装完成以后,使用 which 命令来查看主要二进制代码的位置:

# which python3
# python3 -V

上面的命令的输出应该和这相似:

Check Python Version in Linux

查看 Linux 系统中的 Python 版本

要退出 Python 提示符,只需输入:

quit()
或
exit()

然后按回车键。

恭喜!Python 3.6 已经安装在你的系统上了。

在 Linux 中安装 Python IDLE

Python IDLE 是一个基于 GUI 的 Python 工具。如果你想安装 Python IDLE,请安装叫做 idle(Debian)或 python-tools(CentOS)的包:

# apt-get install idle       [On Debian]
# yum install python-tools   [On CentOS]

输入下面的命令启动 Python IDLE:

# idle

总结

在这篇文章中,我们阐述了如何从源代码安装最新的 Python 稳定版本。

最后但不是不重要,如果你之前使用 Python 2,那么你可能需要看一下 从 Python 2 迁移到 Python 3 的官方文档。这是一个可以读入 Python 2 代码,然后转化为有效的 Python 3 代码的程序。

你有任何关于这篇文章的问题或想法吗?请使用下面的评论栏与我们联系


作者简介:

Gabriel Cánepa - 一位来自 阿根廷圣路易斯梅塞德斯镇 Villa Mercedes, San Luis, Argentina 的 GNU/Linux 系统管理员,Web 开发者。就职于一家世界领先级的消费品公司,乐于在每天的工作中能使用 FOSS 工具来提高生产力。


via: http://www.tecmint.com/install-python-in-linux/

作者:Gabriel Cánepa 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

消沉的程序员 1

depressed-developer

很有意思吧,很多看到这样的漫画对话的程序员,应该感觉似曾相识吧。Bug 出现了?

消沉的程序员 2

depressed-developer

有点疑惑,有好像有点眉目,好像是感觉到哪里错了,是不是要重构。

消沉的程序员 3

depressed-developer

哎,终于发现错误了,感觉有点可笑,自己居然犯这样的错误,原来是那次急于提交代码造成的。

消沉的程序员 4

depressed-developer

是啊,在编程里一生戎马,代码编写无数,各种平台、规范等等,到头来也是满身的错误啊。该是技术不行吧!

消沉的程序员 5

depressed-developer

呀,快要消除错误了,可是,不对。相信事后的 Bug 和 Debug 会是程序员生活中的一个部分。

消沉的程序员 6

depressed-developer

每个新建的工程都是有美好的设想吧,可后来为什么总是渐行渐远?大多时候的自言自语,总是有人认为是在和代码对话吧?可没有身在其中,别人又怎么懂得!

消沉的程序员 7

depressed-developer

好吧,产品的上线,总是要经过无数次的创建分支,Bug 和 Debug 总还是程序员的永恒话题。其中,有些东西总免不了自己推翻自己,感觉要从头再来一样。

消沉的程序员 10

depressed-developer

为了某项专门的研究,学习一门相关的语言,不知道是不是值得?是不是先要思考其必要性呢?最后发现自己并不喜欢这门语言,导致怀疑自己的专业技能,这样大概不好吧!

消沉的程序员 11

depressed-developer

其实,本来是愉快的蹲个坑,却不自觉的陷入编码的思考。想想,不仅是程序员,很多人有都有类似此景的情况吧,明明在做着某事,却想着另外一件事。

后记

看至此处,各位朋友是不是感觉少了系列的第 8 和第 9 篇?起初,译者也这么想,后来问了作者 Daniel Stori 之后,才恍然,原来序号采用了八进制,按照作者说的,一个隐式的玩笑。明白了吗,朋友们?

大伙儿都习惯了日常的十进制。当常态处于优先级的时候,日常一些非常态就如同细枝末节,也就往往容易被人们忽略。大概就是这样吧。


译者简介:

GHLandy —— 生活中所有欢乐与苦闷都应藏在心中,有些事儿注定无人知晓,自己也无从说起。


via:

作者:Daniel Stori 译者:GHLandy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出