0418平常運維(三)iptables規則備份和恢復、firewalld的9個zone、任務計劃、chkconfig工具、systemd管理服務、unit、target

 

4月18日任務
10.19 iptables規則備份和恢復
10.20 firewalld的9個zone
10.21 firewalld關於zone的操做
10.22 firewalld關於service的操做
10.23 linux任務計劃cron
10.24 chkconfig工具
10.25 systemd管理服務
10.26 unit介紹
10.27 target介紹

擴展
firewalld自定義iptables規則  https://blog.51cto.com/jevic/1785162
提供一個iptables系列文章的博客  https://www.zsythink.net/archives/tag/iptables/page/2/
anacron https://www.jianshu.com/p/3009a9b7d024?from=timeline
systemd自定義啓動腳本  http://www.jb51.net/article/100457.htmlinux

 

firewall-cmd --add-port=80/tcp安全

firewall-cmd --permanent --add-port=80/tcp; firewall-cmd --reloadssh

firewall-cmd --permanent --add-service=http; firewall-cmd --reloadsocket

 

firewall-cmd 如何添加自定義規則tcp

Centos7 Firewalld 自定義富規則  https://blog.51cto.com/jevic/1785162工具

服務:spa

 

 

一、iptables備份和恢復
設定的防火牆規則只保存在內存中,並無保存到某個文件中。也就是說,當系統重啓後之前設定的規則就沒有了,因此設定好規則後要先保存一下
service iptables save                    會把規則保存到/etc/sysconfig/iptables裏.net

iptables-save > my.ipt             把iptables規則備份到my.ipt文件中
iptables-restore < my.ipt         恢復剛纔備份的規則命令行

第一步,先清除nat表的全部規則,並查看  3d

iptables -t nat -F

iptables -t nat -nvL

第二步,給nat表寫入兩條規則,並查看

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.86.3
iptables -t nat -A PREROUTING -d 192.168.86.3 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

第三步、用 service iptables save  保存規則,存到配置文件中,重啓也生效,並查看配置文件  /etc/sysconfig/iptables 是否已經保存

第四部、使用iptables-save > my.ipt 備份配置文件

第五步,清除nat表規則,並查看

第六步、恢復備份文件,iptables-restore < my.ipt,查看,已經恢復

 

二、firewalld的9個zone

使用 firewalled      firewalled     ->    Centos7及後續版本使用

以前打開了iptables,須要禁掉,打開firewalld防火牆   

 systemctl disable iptables
 systemctl stop iptables
 systemctl enable firewalld
 systemctl start firewalld

firewalld默認有9個zone (zone是firewalld的單位),默認zone爲public

drop  數據包不能進來,可是能夠出去,最安全的

block 和drop相比,比較寬鬆一些,主要針對icmp

 查看全部zone命令         firewall-cmd --get-zones

查看默認zone    firewall-cmd --get-default-zone

三、firewalld關於zone的操做

每一個zone就是一套規則集,在/usr/lib/iptables/zone,保存着zone的配置文件對於一接受到的請求具體使用哪一個zone, firewalld是經過三種方法來判斷的:
1) source,也就是源地址 
2) interface,接收請求的網卡
3) firewalld.conf中配置的默認zone 這三個的優先級按順序依次下降,也就是說若是按照source能夠找到就不會再按interface去查找,若是前兩個都找不到纔會使用第三個。

針對網卡zones的一些經常使用命令

 firewall-cmd --set-default-zone=work                        //設定默認zone
 firewall-cmd --get-zone-of-interface=ens33              //查指定網卡的zone
 firewall-cmd --zone=public --add-interface=lo          //給指定網卡設置zone 
 firewall-cmd --zone=dmz --change-interface=lo       //針對網卡更改zone
 firewall-cmd --zone=dmz  --remove-interface=lo      //針對網卡刪除zone 
 firewall-cmd --get-active-zones                                  //查看系統全部網卡所在的zone

firewall-cmd --zone=dmz --add-interface=lo   給指定網卡設置zone爲dmz

firewall-cmd --get-zone-of-interface=lo   查看lo網卡的zone

firewall-cmd --get-default-zone  查看默認zone

四、firewalld關於service的操做

之因此有9種zone,是由於每個zone裏面都使用了不一樣的service,而service就是針對一個服務(端口)作的iptables規則。zone就是一個規則集合

http操做的是80端口
https操做的是443端口
ssh操做的是22端口

firewall-cmd --get-services  查看系統中全部的servies
firewall-cmd --get-default-zone   查看系統當前默認zone
firewall-cmd --list-services  //查看當前zone下有哪些service
firewall-cmd --zone=(zone名) --list-service        //把指定的zone下的service列出來
firewall-cmd --zone=public --add-service=http //把http增長到public zone下面,只是暫時寫入內存中

firewall-cmd --zone=public --add-service=ftp --permanent     //更改配置文件,以後會在/etc/firewalld/zones/目錄下面生成配置文件,目錄下存放的是系統firewalld服務所用到的配置文件,把service永久的加入到指定zone下,須要使用--permanent 永久保存到配置文件,才能在配置文件中找到,每次更改後,都會把舊文件作備份:public.xml.old,.old爲後綴名

 ls /usr/lib/firewalld/zones/     //zone的配置文件模板(共9個)

ls /usr/lib/firewalld/services/       服務

 firewall-cmd --zone=public --remove-service=ftp   移除ftp

需求:ftp服務自定義端口1121,須要在work zone下面放行ftp,把ftp添加到work zone下便可

第一步:ftp.xml模板複製到/etc/firewalld/services/目錄下

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

第二步、編輯剛剛複製過來ftp.xml文件

vi /etc/firewalld/services/ftp.xml     //把21改成1121

第三步、work.xml 模板複製到/etc/firewalld/zones/目錄下
cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

第四步、編輯剛剛複製過來work.xml文件

vi /etc/firewalld/zones/work.xml         //增長一行<service name="ftp"/>


第五步、從新加載服務

firewall-cmd --reload        從新加載服務

 firewall-cmd --zone=work --list-services        把指定的work zone下的service列出來,此時ftp已經添加

五、linux任務計劃cron

cat /etc/crontab,查看到的數字從左到右依次爲:分、時、日、月、周和命令行

 

格式:分 時 日 月 周 (0-6,0或7表明週日) user(用戶,若是在root用戶下定義計劃,默認爲root) command (要執行的命令)
 

用 crontab -e 編寫任務計劃

實際上 crontab -e 是打開了/var/spool/cron/用戶名

注意:不要編輯裏面的文件,直接crontab -e編輯(通常備份任務計劃時用到直接cp這個目錄便可)


 

天天凌晨3點執行命令:0 3 * * *  command (要執行的命令)

也可使用範圍

0 3 1-10 */2 2,5   每兩個月(*/2 被2整除)的1號到10號,週二到週五,天天3點執行命令

 分範圍0-59,時範圍0-23,日範圍1-31,月範圍1-12,周1-7

 可用格式1-5表示一個範圍1到5  

可用格式1,2,3表示1或者2或者3  

可用格式*/2表示被2整除的數字,好比小時,那就是每隔2小時

 

systemctl start crond.service  編寫完成後啓動服務

systemctl start crond.service   中止服務

systemctl status crond.service  使用此命令查看開啓狀態,綠色表明已經啓動,未啓動沒有顏色

當命令不執行時,命令有可能並無在cat /etc/crontab中的PATH裏面,須要寫絕對路徑(最好寫絕對路徑),或者把命令的路徑加入到變量中

每次寫完計劃任務時,要追加一個日誌,正確和錯誤的輸出日誌,方便查詢

crontab -l  查詢計劃

crontab文件位置:/var/spool/cron/root    會有對應的用戶文件,以用戶的名字命名的文件,須要備份的話直接cp這個目錄便可

crontab -r   刪除任務

 crontab -u root -l       //crontab -u  指定用戶

-----------------------------------------------------------------------------------------

cron (crond) 是一個linux下的定時執行工具,能夠在無需人工干預的狀況下運行做業。

service crond start //啓動服務 
service crond stop //關閉服務 
service crond restart //重啓服務
service crond reload //從新載人配置 
service crond status //查看服務狀態

-----------------------------------------------------------------------------------------

六、chkconfig工具

Linux系統服務管理-chkconfig

 chkconfig --list   查看服務

CentOS6用到的服務管理都是SysV,而7換成了systemd;

查看Linux全部的預設服務:ls /etc/init.d/

chkconfig network off    關閉network

chkconfig network on   on打開network

回顧這裏7個系統啓動級別的知識,如今CnetOS7已經再也不嚴格區分,但6以前包括6是有規定的:

chkconfig --level 3 network off   更改某個級別下的狀態,把3級別關閉  (0,1,6級別不要開啓)

chkconfig --level 35 network off   關閉多個級別

 chkconfig --add 123   把123加入到服務列表中,須要先把腳本或文件放到/etc/init.d/目錄下,只有在這個目錄下才能添加到服務列表,

這兩部分必須存在,才能被識別

chkconfig --del 123   從服務中刪除

七、systemd管理服務

systemctl list-units --all --type=service     列出全部的服務和其餘的信息

幾個經常使用的服務相關的命令  

systemctl enable crond.service //讓服務開機啓動  

systemctl disable crond //不讓開機啓動  

systemctl status crond //查看狀態  

systemctl stop crond //中止服務  

systemctl start crond //啓動服務  

systemctl restart crond //重啓服務  

systemctl is-enabled crond //檢查服務是否開機啓動

 

八、unit介紹

ls /usr/lib/systemd/system //系統全部unit,分爲如下類型

service 系統服務  

target 多個unit組成的組  

device 硬件設備  

mount 文件系統掛載點  

automount 自動掛載點  

path 文件或路徑  

scope 不是由systemd啓動的外部進程

slice 進程組  

snapshot systemd快照  

socket 進程間通訊套接字  

swap  swap文件  

timer 定時器

unit相關的命令  

systemctl list-units //列出正在運行的unit  

systemctl list-units --all //列出全部,包括失敗的或者inactive的  

systemctl list-units --all --state=inactive //列出inactive的unit  

systemctl list-units --type=service    //列出狀態爲active的service ,不加--all,將會列出 active的service

systemctl is-active crond.service     //查看某個服務是否爲active

九、target介紹

系統爲了方便管理用target來管理unit

systemctl list-unit-files --type=target    查看當前系統的全部target

systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit

systemctl get-default //查看系統默認的target

systemctl set-default multi-user.target        設置一個默認的target

一個service屬於一種類型的unit  

多個unit組成了一個target  

一個target裏面包含了多個service

cat /usr/lib/systemd/system/sshd.service     //查看sshd.service屬於哪一個target,看[install]部分

相關文章
相關標籤/搜索