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]部分