CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用

PermitRootLogin no
systemctl restart sshd.service;

yum -y install firewalld;

systemctl start firewalld.service

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services
修改<port protocol="tcp" port="22"/>
firewall-cmd --reload

firewall-cmd --zone=public --add-port=2222/tcp --permanent

AuthenticationMethods    publickey,password;

yum update cronie yum-cron
/etc/yum/yum-cron.conf
update_messages = yes,download_updates = yes,apply_updates = yes;
/bin/systemctl start crond;
/bin/systemctl start yum-cron.service

原文内容

安裝 CentOS 7 後必做的七件事
作者:阿恆 2014 年 09 月 18 日 14:27 1 則迴響
分類: Security, Server

CentOS 是最多人用來運行伺服器的 Linux 版本,最新版本是 CentOS 7。當你興趣勃勃地在一台主機或 VPS 上安裝 CentOS 7 後,首要的工作肯定是加強它的安全性,以下列出的七件事,是你進一步配置系統和安裝其他軟件前必須做的。
1. 更改 root 密碼

若果你是自行安裝 CentOS 7 的話,安裝程序會讓你自行設定 root 的密碼。不過很多 VPS 服務商只會提供預先安裝好的 CentOS 7 映像檔,這種情況下他們會透過主控界面告訴你 root 的密碼,這個密碼的安全性誰也不知道,它是如何產生的呢?隨機性可靠嗎?複雜性足夠嗎?服務商的伺服器是否記錄了密碼的副本?我們實在有必要第一時間重設這個密碼。

首先使用 ssh 登入伺服器,在 Windows 可以使用 Putty、Tera Term、或者在 Cygwin 環境下執行 OpenSSH。在 Mac 和 Linux 上只需在終端機 (terminal) 中執行以下指令便可以了,比 Windows 簡單得多:

首次 ssh 到伺服器

由於你從來沒有使用過 ssh 聯繫到這台伺服器,你的電腦會把伺服器的加密公鑰下載,然後詢問你是否信任它,這台新鮮安裝好的 CentOS 7 應該還未引起黑客的興趣,也不大可能在這麼短的時間內被攻陷,所以可以放心接受這個加密公鑰。跟著輸入 root 的密碼登入伺服器:

輸入 root 密碼兩次

登入後立即更改 root 的密碼,你需要輸入新密碼兩次:

更改 root 密碼

好的密碼應該同時包含數字、小寫英文字母、大寫英文字母、和標點符號,最少 15 個字符,這樣的密碼強度大概有 90 bit,勉強可以應付密碼被「暴力破解」,當然我假設了你的密碼是真正隨機產生,有些人喜歡把個人資料例如名字、出生日期、車牌號碼、地址、配偶和子女的名字等等崁入密碼中,或者使用字典裏的字詞拼湊密碼,這樣密碼的強度將會大幅下降,甚至不堪一擊,這些問題我曾經在《如何管理密碼?》討論過。

網上有很多隨機密碼產生器,例如 RANDOM.ORG,大都可用,但記緊必須使用 HTTPS 造訪這些網站。如果你有使用「密碼夾萬」一類的軟件,不妨使用它們內建的密碼產生器。

完成後不要登出系統,使用另一個視窗用新密碼嘗試登入,即使失敗也可以在原來的視窗重複以上步驟。
2. 新增一個普通帳號

這一步連同下一步,相當於為一個城市築起兩道城牆,既可加強防衛,也建立了一道警報機制,當敵人(黑客)卒然來襲,第一道城牆被襲擊和破壞,我們還有第二道城牆阻延一下,有時間部署防衛甚至反擊。所以這是一個很多人忽略,但其實非常重要的步驟。

首先我們新增一個帳號:

新增一個帳號

這個新帳號 ahhang 沒有預設密碼,即是說登入 ahhang 時系統不用輸入密碼!所以我們立即要設定密碼:

設定 ahhang 的密碼

有些人認為不應該把建立帳號和設定密碼兩件事分開來做,一來可能會不慎遺忘,二來也給黑客一道時間縫隙登入這個新帳號,所以他們會在 adduser 指令中一併提供加密後的預設密碼,方法是加入 -p 參數,不過這樣做也有風險,因為黑客可以透過列出系統的進程,得知加密了的新密碼,然後把密碼破解。
3. 禁止 root 使用 ssh 登入

CentOS 7 預設容許任何帳號透過 ssh 登入,包括 root 和一般帳號,為了不讓 root 帳號被黑客暴力入侵,我們必須禁止 root 帳號的 ssh 功能,事實上 root 也沒有必要 ssh 登入伺服器,因為只要使用 su 或 sudo (當然需要輸入 root 的密碼) 普通帳號便可以擁有 root 的權限。使用 vim (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,尋找:
#PermitRootLogin yes
1

#PermitRootLogin yes

修改為:

PermitRootLogin no
1

PermitRootLogin no

最後輸入以下指令重新啟動 sshd:

systemctl restart sshd.service
1

systemctl restart sshd.service

這樣黑客要取得 root 的權限,必須破解 root 和一個普通用戶的密碼,難度增加了。

完成後不要登出系統,使用另一個視窗嘗試登入 root 和普通帳號,測試無誤便可進行下一步。
4. 使用非常規的 ssh 端口

Ssh 預設使用端口 22,這是在 IANA 註冊的官方端口,但沒有人說 ssh 不能使用其他端口,很多黑客專門向伺服器的 22 端口發動攻擊,即使你的伺服器固若金湯、牢不可破,但是要系統日以繼夜接受攻擊,消耗的系統資源(網絡、處理器、記憶體等等)也不會少,何況它是否真的牢不可破還說不定呢!所以有必要讓 ssh 使用其他端口,只讓有權使用 ssh 的用戶知道。

使用 vim  (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,尋找:
#Port 22
1

#Port 22

修改為:
Port 10837
1

Port 10837

你可以把 10837 改為任何 1024 – 65535 之間的任何數字,若果怕與某些系統服務發生衝突,可以參考一下這裏。

跟著重新啟動 sshd:
systemctl restart sshd.service
1

systemctl restart sshd.service

然後是設定防火牆,CentOS 7 的內核已經有防火牆 netfilter,但你的系統未必安裝了用戶界面,較前版本的 CentOS 預設使用 iptables,但 CentOS 7 開始使用效能更高、穩定性更好的 firewalld,若果伺服器尚未安裝 firewalld,可以使用以下指令安裝,不確定是否已經安裝的話也可以輸入這個指令,它會告訴你已經安裝然後退出。
yum install firewalld
1

yum install firewalld

跟著啟動:
systemctl start firewalld
1

systemctl start firewalld

設定 firewalld 的方法有兩個,第一個是修改 firewalld 有關 sshd 的設定,把端口 22 改為 10837,這是正統的做法,但步驟比較多;第二個是要求 firewalld 開啓端口 10837,不指定它屬於哪一個服務,這個做法通常處理臨時的端口開啓/封鎖,步驟簡單,但是日後你要是忘記了這個端口為甚麼開啟了呢?什麼時候開啟的呢?為了哪一項服務開啟呢?可能有點麻煩。我兩種方法都會介紹一下,但作為專業的系統管理員(即使不是真正的專業,也應該具備這樣的心態),我推薦使用第一種方法。
設定防火牆方法一:

複製 firewalld 有關 sshd 的設定檔案:
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
1

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

使用 vim  (或任何文本編輯器) 開啓 /etc/firewalld/services/ssh.xml,尋找:
<port protocol="tcp" port="22"/>
1

  <port protocol="tcp" port="22"/>

修改為:
<port protocol="tcp" port="10837"/>
1

  <port protocol="tcp" port="10837"/>

儲存後重新載入 firewalld:
firewall-cmd --reload
1

firewall-cmd --reload

設定防火牆方法二:

輸入以下指令:
firewall-cmd --zone=public --add-port=10837/tcp --permanent
1

firewall-cmd --zone=public --add-port=10837/tcp --permanent

就是這樣簡單!

不論使用哪種方法,完成後不要登出系統,使用另一個視窗嘗試登入,例如:
ssh -p 10837 [email protected]192.168.1.188
1

ssh -p 10837 [email protected]192.168.1.188

5. 啟用公鑰驗證登入 ssh

現在只有普通帳號才能透過 ssh 登入伺服器,但是 ssh 提供一個更先進更安全的驗證方法:公鑰驗證法。

首先每一名用戶建立一對加密鑰匙(密鑰和公鑰),密鑰儲存在日常使用的電腦,公鑰則儲存在伺服器,使用 ssh 聯繫到伺服器的時候,電腦會把一些建立連線請求的資料,其中包括帳號名稱和公鑰,並且把部分資料用密鑰製作數碼簽署,一股腦兒送到伺服器,伺服器檢查自己的「公鑰庫」是否包含送來的公鑰,有的話再驗證數碼簽署,成功的話便直接登入伺服器,無需輸入帳號密碼。

第一步在日常使用的電腦上使用 ssh-keygen 指令建立一對加密鑰匙,它會詢問儲存加密鑰匙的檔案名稱,和把鑰匙加密的密碼,檔案名稱使用預設的路徑和名稱便可以,密碼則無需輸入:

建立帳號的 RSA 加密鑰匙

這個指令會創造兩個檔案,一個名為 id_rsa,是你的 RSA 密鑰,另一個是 id_rsa.pub,是你的 RSA 公鑰。公鑰必需上傳到伺服器並且附加於用戶帳號裏面的 .ssh/authorized_keys 檔案中,這個檔案儲存所有可透過 ssh 登入到這一個帳號的公鑰,一行一條公鑰:

上傳 RSA 公鑰到伺服器

順便一提,目錄 .ssh 和 authorized_keys 除了 owner 之外,其他人均不能有寫入的權限,否則 sshd 不會讀取,換句話說,兩者最寬鬆的權限是 755:

公鑰檔案的存取權限必須正確

使用公鑰驗證法登入 ssh 又省力又安全,因為我們不用輸入密碼,自然也沒有密碼被盜取的憂慮,簡簡單單地輸入連線指令便可以了。

但是存放在日常電腦中的密鑰卻帶來新的安全隱患,萬一密鑰被盜取了,其他人豈不是可以隨便登入伺服器?現在是「雙重驗證」(two-factor authentication) 隆重登場的時候,雙重驗證的理念是我們必須向伺服器證明兩種不同性質的東西,才能成功驗證身分,第一樣是我們知道什麼,第二樣是我們擁有什麼。首先伺服器會要求我們輸入密碼,我們知道密碼,過了第一關。跟著伺服器要求我們證明擁有公鑰驗證法中的密鑰,透過上面的設定程序我們也通過了驗證,過了第二關。現在伺服器才會讓我們進入系統。

設定 ssh 的雙重驗證法很簡單,使用 vim  (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,在檔案的末端假如這一行:
AuthenticationMethods publickey,password
1

AuthenticationMethods publickey,password

它告訴伺服器用戶必須擁有合法的公鑰,和輸入正確的密碼才能成功登入。修改完成後重新啟動 sshd:
systemctl restart sshd.service
1

systemctl restart sshd.service

完成後不要登出系統,使用另一個視窗嘗試登入,測試無誤便可進行下一步。
6. 更新、更新、每天更新、每天自動更新

每一天都有成千上萬的黑客在世界各地尋找 Linux 系統和常見軟件的安全漏洞,一有發現便會發動規模龐大而迅速的網絡攻擊,務求在我們來得及反應前把系統攻陷。不要以為黑客都只是十來歲的年輕小毛頭,大部分黑客背後都有勢力龐大、資源幾乎無限的國家機構支持,有些甚至屬於這些機構的雇員,美國的 NSA,英國的 GQHC,中國的無名黑客隊伍,都是比較明目張膽由國家支持的網絡黑幫,可見我們的系統時時刻刻都被凶狠之徒盯著,保持軟件在最新的狀態是其中一項我們必須做,也很容易做到的工作。

首先我們立即手動更新所有預先安裝的軟件:
yum -y update
1

yum -y update

跟著設定系統定時自動更新,第一步確定伺服器是否安裝了自動執行指令的工具,跟著使用 yum 一個名叫 yum-cron 插件。

CentOS 7 使用數個軟件來自動執行指令:cron、anacron、at 和 batch,其中 cron 和 anacron 用來定期重複執行指令,At 和 batch 則用來在特定時間執行一次性的指令。我們將會使用 cron 和 anacron,兩者的分別這裏不細表了,將來有機會再討論,現在使用以下指令安裝 cron 和 anacron:
yum -y install cronie
1

yum -y install cronie

下一步就是安裝 yum-cron:
yum -y install yum-cron
1

yum -y install yum-cron

其實你可以使用一個指令同時安裝 cronie 和 yum-cron,甚至單獨安裝 yum-cron 也可以,因為 yum 會自動檢測到 yum-cron 需要 cronie 然後自動替你安裝,上面分開兩個指令純粹令大家容易明白。

完成後系統多了數個檔案,比較重要的包括:

    /etc/cron.daily/0yum.cron
    Anacron 每天執行這個檔案一次,它根據配置檔案 /etc/yum/yum-cron.conf 來更新軟件
    /etc/yum/yum-cron.conf
    這是每天執行 yum-cron 的配置檔案,預設只會下載更新的軟件,並不安裝,用意是讓管理員檢視 yum-cron 的輸出,選取需要更新的軟件進行手動安裝。

跟著我們修改配置檔案,讓 yum-cron 自動更新軟件,使用 vim  (或任何文本編輯器) 開啓 /etc/yum/yum-cron.conf,尋找:
apply_updates = no
1

apply_updates = no

修改為:
apply_updates = yes
1

apply_updates = yes

確認一下 update_messages = yes, download_updates = yes, apply_updates = yes,正如下圖:

yum-cron 配置檔案

最後,啟動 crond 和 yum-cron:
systemctl start crond systemctl start yum-cron
1
2

systemctl start crond
systemctl start yum-cron

7. 防火牆

防火牆的作用好比網絡警察,它監察所有進出系統的 IP 封包,哪些端口容許封包進入,哪些端口容許封包外出等等,都由防火牆控制,保護使用這些端口的應用程式,所以設定防火牆是極重要的工作。

過濾封包功能的 netfilter 已經內建在 CentOS 7 的內核,但是配置 netfilter 的界面程式 firewalld 卻未必有安裝,不論是否已經安裝,都可以執行下面的安裝指令:
yum install firewalld
1

yum install firewalld

跟著查看一下防火牆現在開啟了哪些服務和端口:
firewall-cmd --list-all
1

firewall-cmd --list-all

檢查防火牆

上圖可見防火牆只開啟了 DHCP 客戶端和 ssh 兩個服務的通訊端口,倘若日後安裝了其他網絡軟件,例如網站伺服器、域名伺服器等等,必須要檢查安裝程式有否開啓他們的通訊端口,沒有的話便要手動開啓。如果好像前面第四點那樣使用了非常規的通訊端口,也可能要手動配置防火牆,防火牆詳細的配置方法超出了本文的討論範圍,將來有機會再談。
时间: 2024-10-04 03:14:01

CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用的相关文章

Win10系统自动更新后的文件怎么去清理?

Win10系统每次自动更新完成后都会留下大量的文件,会大量占用电脑硬盘的空间,尤其电脑是固态硬盘的,会显得更加的浪费.那么Win10系统中自动更新文件占用空间该怎么处理呢?我们又该如何安全的删除这些自动更新文件呢?下面就来告诉你解决方法.Win10系统安全删除自动更新文件的方法1.打开开始菜单中的Windows设置,选择点击系统.2.在系统设置的左侧栏中选择存储,将对应右侧栏中的存储感知功能打开.3.点击"更改详细设置",我们可以对自动清理文件的时间和文件类型进行选择设置.4.点击&q

CentOS下建立本地YUM源并自动更新

1. 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器,主要出于以下几点考虑: l 网络速度:访问互联网可能比较慢 l 节省带宽:如果有大量的服务器,架设自己的yum源可以有效节省互联网带宽 l 联网限制:对于有些内网服务器,不能连接到互联网 l 对于RHEL(Redhat Enterprise Linux),需要购买服务 l 便于发布自己开发的rpm包 2. 找到适合你的站点的yum同步源,主要是CentOS标准软件仓库.epel.以及rpmforge CentOS标

保证Linux系统安全之firewalld防火墙配置地址伪装和端口转发详解

通过保证Linux系统安全之firewalld防火墙入门详解认识Linux系统firewalld防火墙,并可以编写一些相对简单一些的防火墙规则.Linux防火墙可以充当路由器(网关).路由器上的NAT技术,同样可以通过Linux防火墙来实现.地址伪装和端口转发说白了就是路由器中的NAT技术. 一.地址伪装和端口转发简介 firewalld防火墙支持两种类型的NAT: (1)地址伪装 地址伪装:基于源地址进行转换,通过地址伪装,NAT设备将经过设备的数据包转发到指定接收方,同时将通过的数据包的源地

Win10系统自动更新失败的解决方案

Win10设置自动更新后,用户就能及时收到微软最新的补丁推送,并进行安装.可是有用户自动更新Win10系统的时候,出现安装失败的情况,重新更新还是失败,遇到这个问题可将失败的更新补丁进行删除处理. 步骤 1.首先要停止Windows update服务,但win10 在控制面板里是关不掉的,我们就要进入组策略文件,在运行里输入gpedit.msc 进入.然后在计算机配置>管理模板>windows组件 >windows更新 >配置自动更新为禁用. 2.关闭后我们就要删除临时更新文件 进

centos7 firewall-cmd 理解多区域配置中的 firewalld 防火墙

原文:https://www.linuxidc.com/Linux/2017-11/148795.htm 现在的新闻里充斥着服务器被攻击和数据失窃事件.对于一个阅读过安全公告博客的人来说,通过访问错误配置的服务器,利用最新暴露的安全漏洞或通过窃取的密码来获得系统控制权,并不是件多困难的事情.在一个典型的 Linux 服务器上的任何互联网服务都可能存在漏洞,允许未经授权的系统访问. 因为在应用程序层面上强化系统以防范任何可能的威胁是不可能做到的事情,而防火墙可以通过限制对系统的访问提供了安全保证.

ios9关闭系统自动更新

链接:https://www.zhihu.com/question/37297197/answer/104363172 https://www.zhihu.com/question/37297197/answer/97609074来源:知乎 经过一段时间的试验,有如下几个应对方案,其实有点楼上几个方案的组合:1. 设置 - 通用 - 用量 - 管理存储空间 - 找到更新包(ios9.3),点击,删除2. 设置 - iTunes&App Stores, 找到Updates,关闭 如果以上两个方案还

Linux系统自动更新时间

转载自:http://www.cnblogs.com/choyaooo/p/8012923.html NTP服务器(上海) :ntp.api.bz    中国ntp服务器:cn.pool.ntp.org  pool.ntp.org    安装NTP客户端:    yum -y install ntp修改时区为Asia:    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime     vim  /etc/sysconfig/clock     

windows10系统关闭自动更新服务

一.关闭Windows10系统的自动更新服务 1:使用快捷键Win+R,打开运行 2:输入命令:services.msc,打开系统服务界面 找到Windows Update双击 将启动类型改为[禁用],并将服务状态[停止] 切换到恢复标签,将第一次失败的操作改为[无操作] 二.关闭系统自动更新计划任务: 我的电脑->右键->管理 找到[系统工具]->[任务计划程序]->[任务计划程序库]->[Microsoft]->[Windows] 找到[WindowsUpdate]

Ubuntu Server : 自动更新

Ubuntu(16.04/18.04) 默认会每天自动安装系统的安全更新,但是不会自动安装包的更新.本文梳理 Ubuntu 16.04/18.04 系统的自动更新机制,并介绍如何配置系统自动更新所有的包.说明:简单起见,本文中使用 Ubuntu 指代 Ubuntu 16.04/18.04. 系统需要更新 当我们远程登录系统时,会收到如下图所示的更新相关的消息: 红框中的第一行文字说明系统中有 149 个包需要更新.第二行说明没有安全相关的包需要更新.之所以会这样,是因为 Ubuntu 默认的配置