自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Ansible中編寫劇本實現(xiàn)批量服務(wù)器安全加固

安全 網(wǎng)站安全
在本章節(jié)中, 我將利用Ansible的劇本來實現(xiàn)更實用、更復(fù)雜一點的功能。

在上一篇<<初步利用Ansible實現(xiàn)批量服務(wù)器自動化管理>>文章中, 我初步實現(xiàn)了通過編寫清單和劇本來實現(xiàn)多臺服務(wù)器的自動化管理,在本章節(jié)中, 我將利用Ansible的劇本來實現(xiàn)更實用、更復(fù)雜一點的功能, 主要功能包括三個:

  • 同時在三臺服務(wù)器中增加IP訪問控制,只允許192.168.201.202的IP登錄,其它IP禁止其通過SSH登錄。
  • 修改SSH服務(wù)的默認(rèn)22端口,修改為2222。
  • 啟動防火墻,只允許2222端口訪問, 不允許其它端口訪問。

1.編寫劇本

如果只講原理,沒有實踐, 學(xué)習(xí)起來會比較枯燥, 所以我會在編寫劇本的過程中邊實踐邊講解劇本的語法。

上篇文章中, 我們已經(jīng)知道劇本是一個YAML格式文件, 在開頭,我們要加載所有的遠(yuǎn)程管理hosts,語法如下:

- hosts: all

還記得在上一章編寫的清單文件inventory.yaml嗎,看看里面的內(nèi)容:

hosts: all默認(rèn)會加載這里的所有IP地址, 緊隨其后的命令是:

become: yes

該命令在Ansible中表示提權(quán)執(zhí)行。

默認(rèn)情況下,Ansible是以普通用戶身份通過SSH連接到遠(yuǎn)程主機的。但有些任務(wù)需要 root 或 sudo 權(quán)限,比如服務(wù)的重啟,文件權(quán)限的修改等。這時就需要使用become模塊提權(quán), 加上become:yes表示這個劇本中的所有任務(wù)都需要提權(quán)執(zhí)行。Ansible會在執(zhí)行任務(wù)時自動切換到root身份或目標(biāo)用戶身份,然后執(zhí)行指定的任務(wù)。

become模塊非常強大,可以精細(xì)控制在劇本中的提權(quán)行為,包括:

- 以哪個身份提權(quán)(默認(rèn)root,可以指定其他用戶)- 提權(quán)使用的方法(sudo、su等)- 提權(quán)的密碼- 僅在某些任務(wù)中提權(quán)

緊接著就是編寫我們的任務(wù)了, 為了方便介紹, 我先給出一個完整的服務(wù)劇本,如圖:

- hosts: all
  become: yes

  tasks:
    - name: 修改SSH端口
      lineinfile:
        path: /etc/ssh/sshd_config
        regexp: '^Port'
        line: 'Port 2222'
    - name: 默認(rèn)開啟防火墻
      ufw:
        state: enabled
    - name: 在防火墻中開啟2222端口
      ufw:
        rule: allow
        port: '2222'
    - name: 防火墻拒絕其它端口連接
      ufw:
        rule: deny
        direction: in
        delete: yes
    - name: 允許指定的IP訪問
      ufw:
        rule: allow
        src: 192.168.201.202
    - name: 拒絕所有其它IP訪問
      ufw:
        rule: deny
        src: 0.0.0.0/0
    - name: 重啟ufw防火墻
      service:
        name: ufw
        state: restarted
    - name: 重啟SSH服務(wù)
      service:
        name: sshd
        state: restarted

可以看出, 任務(wù)tasks標(biāo)簽下面有8個子項, 每個子項都有一個name, 這個name表示每個子任務(wù)的名字, 方便我們區(qū)分子任務(wù)。

子任務(wù)1: 修改SSH端口

該任務(wù)使用了lineinfile模塊, 目的是在路徑/etc/ssh/sshd_config文件中按行搜索, 通過正則regexp匹配Port, 然后將其修改為2222端口。

我們可以打開/etc/ssh/sshd_config文件看一下, 查找到該項:

在ubuntu系統(tǒng)中, Port一般在ssd_config文件的最后一行。

子任務(wù)2:默認(rèn)開啟防火墻

對于ubuntu系統(tǒng)來說,防火墻使用的是ufw, 這里將狀態(tài)state始終置為:enabled, 因為大部分剛裝完的系統(tǒng)默認(rèn)沒有開啟ufw,因此這里需要提前設(shè)置狀態(tài), 否則會導(dǎo)致后面操作ufw不成功。

子任務(wù)3: 在防火墻中開啟2222端口

在該任務(wù)中,我們將之前修改的SSH服務(wù)的2222端口添加到防火墻中, 允許外界通過2222端口訪問本機。

子任務(wù)4:防火墻拒絕其它端口連接

在該任務(wù)中, 我們主要設(shè)置了拒絕規(guī)則, 在防火墻中,除了2222端口之外的其它所有端口全部刪除屏蔽掉。

子任務(wù)5:允許指定的IP訪問

與上面的端口相同,這里設(shè)置只允許某一個IP訪問本機,這里是只允許192.168.201.202服務(wù)器訪問。

子任務(wù)6:拒絕所有其它IP訪問

同上面端口的拒絕規(guī)則, 拒絕除192.168.201.202的其它IP地址訪問。

子任務(wù)7:重啟ufw防火墻

這里主要使用restarted重啟ufo防火墻,注意,這里不能用reload, 可能會導(dǎo)致防火墻重啟失敗, 用restart比較穩(wěn)妥。

子任務(wù)8:重啟SSH服務(wù)

通過設(shè)置restarted狀態(tài)重啟SSH服務(wù)

2.多任務(wù)同步執(zhí)行

編寫完劇本內(nèi)容之后, 輸入以下命令執(zhí)行即可:

# ansible-playbook -i inventory.yaml playbook.yaml

如果不出意外, 會看到以下執(zhí)行結(jié)果:

如果在執(zhí)行過程中出現(xiàn)錯誤, 會看到很醒目的提示,并給出執(zhí)行狀態(tài), 如圖:

3.結(jié)果驗證

首先我們看一下端口修改情況, 發(fā)現(xiàn)已經(jīng)全部將SSH端口修改為2222端口,并可以全部以2222端口登錄, 如圖:

接著我們看一下IP限制情況, 上面登錄的全部是在192.168.201.202機器上登錄,而在我個人電腦上登錄卻失敗,如圖:

我們登錄到三臺機器上看一下防火墻規(guī)則, 已經(jīng)按照劇本要求添加了對應(yīng)規(guī)則,如圖:

責(zé)任編輯:趙寧寧 來源: 二進(jìn)制空間安全
相關(guān)推薦

2012-05-08 13:59:23

2018-08-07 14:49:55

2010-11-04 15:32:05

SecSSM服務(wù)器安全網(wǎng)神

2015-08-05 09:35:38

Bastille服務(wù)器安全

2024-01-09 13:09:00

2021-12-19 22:44:16

Linux安全服務(wù)器

2009-07-24 18:05:31

2009-02-16 16:13:00

IIS服務(wù)器服務(wù)器安全

2019-10-12 13:33:47

Windows服務(wù)器主機加固服務(wù)器安全

2010-01-15 09:46:24

2018-08-28 09:12:58

LinuxPHP服務(wù)器

2021-08-05 17:40:05

XpanesLinux服務(wù)器

2010-05-18 16:07:35

2019-07-21 19:40:25

服務(wù)器開發(fā) 架構(gòu)

2010-09-14 19:29:00

2021-03-02 06:32:03

Ansible系統(tǒng)運維

2011-06-24 17:23:18

主服務(wù)器從服務(wù)器同步

2011-06-09 11:24:42

2018-01-31 11:20:48

2021-03-22 16:45:58

服務(wù)器命令
點贊
收藏

51CTO技術(shù)棧公眾號