1、iptables類做業php
前提:INPUT和OUTPUT默認策略爲DROP,只容許SSH;node
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
一、限制本地主機的web服務器在週一不容許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不容許訪問;web服務器僅容許響應報文離開本機;mysql
只能限制URL 帶admin 頁面內帶admin沒法限制nginx
a.web
iptables -I INPUT 1 -p tcp --dport 80 -m string --string "admin" --algo kmp -j REJECT iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/second -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
b. 另外一種方法sql
修改默認值,默認值爲20 /sys/module/xt_recent/parameters/ip_pkt_list_tot編程
iptables -A INPUT -p tcp --dport 80 -m recent --name DENY_100 --update --seconds 1 --hitcount 20 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name DENY_100 --set -m time ! --weekdays Mon -j ACCEPT
二、在工做時間,即週一到週五的8:30-18:00,開放本機的ftp服務給10.10.10.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個;vim
iptables -A INPUT -s 10.10.10.0/24 -p tcp --dport 21 -m limit --limit 5/min -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
三、開放本機的ssh服務給172.16.x.1-172.16.x.100中的主機,x爲你的座位號,新請求創建的速率一分鐘不得超過2個;僅容許響應報文經過其服務端口離開本機;後端
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 10.10.10.50-10.10.10.100 -m limit --limit 2/minute -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
四、拒絕TCP標誌位所有爲1及所有爲0的報文訪問本機;centos
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp --tcp-flags ALL -j DROP
五、容許本機ping別的主機;但不開放別的主機ping本機;
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT iptables -A OUTPUT -p icmp --icmp--type 8 -j ACCEPT
2、控制vsftpd僅容許10.10.10.0/255.255.255.0網絡中的主機訪問,但10.10.10.50除外;對所被被拒絕的訪問嘗試都記錄在/var/log/tcp_wrapper.log日誌文件中;
vim /etc/hosts.allow vsftpd: 10.10.10. EXCEPT 10.10.10.50
vim /etc/hosts.deny vsftpd: ALL : spawn /bin/echo `date` %a %c %u access %s deny >> /var/log/tcp_wrapper.log
3、腳本編程類(數組練習)
一、寫一個腳本:定義一個數組,數組元素爲/var/log目錄下全部以.log結尾的文件的名字;顯示每一個文件的行數;
#!/bin/bash declare -a files files=(/var/log/*.log) for i in `seq 0 $[${#files[@]}-1]`; do wc -l ${files[$i]} done
[root@node6 ~]# ./log.sh 86 /var/log/anaconda.ifcfg.log 345 /var/log/anaconda.log 1331 /var/log/anaconda.program.log 3281 /var/log/anaconda.storage.log 599 /var/log/anaconda.yum.log 45 /var/log/boot.log 1927 /var/log/dracut.log 1 /var/log/tcp_wrapper.log 6 /var/log/yum.log
二、寫一個腳本,生成10個隨機數,並按從小到大進行排序;
#!/bin/bash read -p "Generate a sequence of random numbers,how many you want:" number for ((i=0;i<number;i++));do arr[$i]=$RANDOM done for (( i=0 ; i<${#arr[@]} ; i++ )) do for (( j=${#arr[@]} - 1 ; j>i ; j-- )) do if [[ ${arr[j]} -lt ${arr[j-1]} ]] then t=${arr[j]} arr[j]=${arr[j-1]} arr[j-1]=$t fi done done echo ${arr[@]}
[root@node6 ~]# ./random.sh Generate a sequence of random numbers,how many you want:10 4021 4245 5137 6827 15479 16179 18317 22632 24913 27785
三、寫一個腳本,能從全部同窗中隨機挑選一個同窗回答問題;進一步地:可接受一個參數,作爲要挑選的同窗的個數;
#!/bin/bash function duplicate() { #判斷是否重複選擇,若是重複在選一次,直到不重複 for ((j=$[${#student[@]}-2];j>=0;j--));do if [ ${student[$j]} -eq ${student[$i]} ] then student[$i]=$(($RANDOM % $a)) duplicate fi done } read -p "input the total student number,the first student no. is 0:" a total=($(seq 0 $[$a-1])) read -p "input how many student pick:" b if [ $b -gt $a ] then echo "pick tpo more student" elif [ $a -eq $b ] then echo "pick every student" else for ((i=0;i<$b;i++));do student[$i]=$(($RANDOM % $a)) duplicate echo ${student[$i]} done fi
[root@node6 ~]# ./pick.sh input the total student number,the first student no. is 0:10 input how many student pick:4 7 1 9 2
[root@node6 ~]# ./pick.sh input the total student number,the first student no. is 0:10 input how many student pick:9 4 5 3 7 1 0 8 2 9
4、sudo練習
一、受權centos用戶能夠運行fdisk命令完成磁盤管理,以及使用mkfs或mke2fs實現文件系統管理;
visudo User_Alias DISK_ADMINS = centos Cmnd_Alias DISK_COMMAND = /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs DISK_ADMINS ALL=(root) NOPASSWD: DISK_COMMAND
二、受權gentoo用戶能夠運行邏輯卷管理的相關命令
visudo User_Alias LVM_ADMINS = gentoo Cmnd_Alias LVM_COMMAND = /sbin/pv*, /sbin/vg*, /sbin/lv* LVM_ADMINS ALL=(root) NOPASSWD: LVM_COMMAND
useradd centos echo "centos" | passwd --stdin centos useradd gentoo echo "gentoo" | passwd --stdin gentoo [centos@node6 ~]$ sudo -l 用戶 centos 能夠在該主機上運行如下命令: (root) NOPASSWD: /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs [gentoo@node6 ~]$ sudo -l 用戶 gentoo 能夠在該主機上運行如下命令: (root) NOPASSWD: /sbin/pv*, /sbin/vg*, /sbin/vl*
5、vsftpd及pam類
一、實現基於虛擬用戶認證的vsftpd功能;
二、虛擬用戶的帳號及密碼信息存儲在mysql當中。
正在總結,後補
6、高級應用類(中級班選作,高級班必作)
一、一共3臺服務器,請合理安排資源分配;
二、經過Nginx的反向代理實現LNMP架構的負載均衡,後端服務內容爲wordpress論壇,要求訪問任何一臺後端web服務器,都能獲取一致的最新數據;
三、後端nginx和php分離。