国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux知識點小結

Linux知識點小結

2021-11-01 16:26Linux教程網 Linux

這篇文章主要為大家分享了Linux知識點,幫助大家更加詳細的學習Linux

1 我的Linux需求

這里討論的是我對線上的Linux機器的需求,所以只討論穩定發行版,且是比較保守的版本。比如CentOS 7的xfs不予討論,并不是說xfs不好,而是以目前我的Linux水平需要更新很多xfs的知識,駕馭需要時間。CentOS 7將ifconfig,netstat等原來常用的命令也干掉了。下面我們以CentOS 6作為基礎,談一談我對Linux的基本需求。

1.1 最小化安裝

CentOS有一個minimal版本,相對于標準版去掉了很多Service,比如Network Manger,安裝最小版本以后的網絡配置是需要admin進行全手工配置文件配置的。我個人認為這樣是比較好的,因為可以更好的理解Linux內核是如何看待這些配置文件的,那些是內核真正需要的,那些是修改以后可以直接改動到內核的性能。對于一些必要的監控工具,完全可以通過yum install來完成。標準版更加適合平時的練習,作為線上機器,還是最小化安裝,做到能不開的服務就不開,能關掉的端口就關掉,這樣既能將寶貴的硬件資源留下來給應用程序,也能夠做到更加的安全,因為攻擊的入口就是通過網絡。

1.2 足夠安全

除了將能關的端口關掉,能不用的服務關掉以外,安全還需要做到特定的服務只能訪問特定的內容。哪怕是root賬戶,不能訪問的文件和文件夾還是不能訪問,更加不能操作。因為極有可能攻擊者獲取到root權限,這個時候就基本是無所欲為了。開啟SELinux以后,能夠做到在不修改SELinux的情況下,指定的服務只能訪問指定的資源。

1.3 資源按需調度

我們經常會遇到這樣一個問題,假設將磁盤sda掛載到/var目錄,但是由于log太多或者上傳的文件等等其他因素將硬盤吃光了,再創建一塊sdb磁盤就無法掛載到/var目錄了,其實Linux自帶的lvm已經解決了這個問題,并且CentOS默認就是用lvm來管理磁盤的。我們需要學會如何格式化一塊硬盤為lvm,然后掛載到對應目錄,在空間被吃光前能夠添加一塊硬盤就自動擴容。

1.4 網絡監控

說白了就是在Linux本地利用好iptables,來規劃服務哪些網絡流量,拋棄哪些網絡流量。以及在進行組網的時候需要用router來進行網關的創建,在遇到網絡問題的時候通過netstat來查看網絡訪問異常。網絡這塊內容很多很雜,各種參數,TCP/IP協議棧等等,但是往往問題還就是出在網絡這塊,所以要給與高度的關注。

2 Linux的理念與基礎

對Linux敬仰如滔滔江水^_^,小談幾點我對Linux的認識。

2.1 Linux的文件系統

Linux將所有的事物都看成文件,這一點人盡皆知。我想說的是,除了傳統的ext文件系統,Linux在抽象不同的資源的時候其實有各種不同的文件系統,都是從需求和使用出發,怎么方便怎么來,比如proc文件系統就是針對進程的抽象,使得修改對應進程的值就可以直接改變進程的行為。再比如,對于遠程ssh登錄的pts設備,Linux有對應的devpts文件系統。

Linux知識點小結

2.2 Linux的權限管理

Linux的-rwxrwxrwx權限管理也可謂人盡皆知,其實Linux自己也意識到了這樣的權限管理所帶來的一些局限性。首先rwx的權限管理是基于用戶和組的,并且只是大致的分為owner|group|other這三類,無法再作更加細粒度的劃分。有鑒于此,Linux目前默認是有ACL(Access Control List)管理的,所謂ACL就是能夠提供更加細粒度的用戶和組管理,比如可以明確哪個user可以有什么樣的權限。如下示例

?
1
2
3
4
5
6
7
8
9
getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
user:johny:r-x
group::r--
mask::r-x
other::r--

而SELinux提供了不基于用戶與組的權限管理,SELinux是基于應用程序的,什么樣的應用程序可以使用什么資源,對于這些資源這個應用程序能干嘛,這個就是SELinux的管理方式。

2.3 Linux上的Service

Linux上的Service組織得非常清晰,當然也是傳統所致。/etc/init.d/里面包含了所有的Service啟動腳本,對應的二進制文件在/usr/bin 、 /usr/sbin 、 /usr/local/bin等目錄下,一般而言配置文件在/etc/app_name下,還有一個chkconfig的工具來管理各個runlevel下需要啟動的Service。這樣的約定俗成使得管理員在配置和使用的時候非常方便。Linux標準的Service都會將log記錄到/var/log/messages中,使得系統管理員不需要翻閱各種log,直接在/var/log/messages中就可以找到絕大部分的log來判斷當前系統是否正常。更甚的,syslogd被rsyslogd替換以后,可以將/var/log/messages中的內容通過UDP發送到遠端用專業的log分析工具進行分析。我們需要學習Linux上Service的這些優秀的編程習慣和技巧。

3 磁盤

根據$1中的需求,主要是創建Linux下的LVM,以及一些基本的磁盤操作。

  • df -lah 查看磁盤的使用情況
  • fdisk -l 查看插入到磁盤驅動器中的硬盤; sd(a,b,c)(1,2,3),其中a是第一塊磁盤,b是第二塊磁盤,1,2,3表示磁盤上的主分區,最多4個。用fdisk從磁盤創建分區并且格式化。
  • LVM(logical volume manager),主要就是滿足加硬盤就能直接寫數據的功能,而不會出現磁盤滿了,然后掛了。lvm有幾個概念,VG, PV, LVM,將磁盤lvm格式化,創建PV, 創建VG,將創建的PV加入VG,然后在VG中創建lvm,然后就可以動態增加大小了。注意,將磁盤格式化為lvm,但是lv的格式化需要用ext,然后才能mount上去。參考這篇文章CentOS 6 卷組掛載硬盤教程
  • mount -t type(ext4|nfs) /dev/sdxn /path/dir 來掛載。如果要重啟生效,必須將掛載信息寫入到/etc/fstab
  • 磁盤IO效率(IOPS)需要用vmstat, top等工具來查看。

4 網絡

網絡的坑很多,需要把網絡搞通沒個3,4年很難。下面從網絡的基本配置文件著手,簡單理一下網絡方面的內容。網絡最難的方面應該是如何搭建一個合理的高效的局域網或者城域網,這個需要有專業的網絡知識。

4.1 配置文件

/etc/hosts私有IP對應主機名
/etc/resolv.confnameserver DNS的IP
/etc/sysconfig/network其中NETWORKING=要不要有網絡,HOSTNAME=主機名,NETWORKING_IPV6=支持ipv6否
/etc/sysconfig/network-scripts/ifcfg-xxx其中DEVICE=網卡代號,BOOTPROTO=是否使用dhcp,HWADDR,IPADDR,NETMASK,ONBOOT,GATEWAY
4.2 網絡設計到的一些命令

router -n查看路由的命令,特別是要看帶G的,表示gateway,而帶U的表示up。
netstat -anp查看所有啟動的tcp,udp,unix stream的應用程序,以及他們的狀態,具體可以參考TCP/IP,JavaSocket簡單分析一文。
5 安全

5.1 PAM

PAM總體來講只需要簡單了解就行,是一個可插拔的認證模塊。按照我的說法,是開發Linux的極客們搞出來的可復用的一個組件。舉個例子,現在有一個app,想要驗證當前的登錄用戶是否有權限操作某個目錄,那么在PAM里面有現成的模塊,app只需要include這個模塊,給出一個配置文件,就可以了。有一個非常好的關于PAM的視頻教程,請看這里

  • PAM是應用程序用來進行身份驗證的。早期的身份驗證和應用程序本身耦合,后來把身份驗證單獨抽出來,通過PAM來進行管理
  • /etc/pam.d/xxx 是能用pam來進行管理的應用程序PAM設置,在安裝應用程序的時候安裝。/etc/security/mmm, /lib/security/pam_mmm是一套。
  • 總體來說PAM是利用Linux系統本身提供的機制,來進行驗證

5.2 SELinux

關于SELinux也有一個非常好的視頻教程,請看這里

  • getenforce來查看SELinux是否被啟用
  • /etc/sysconfig/selinux enforcing啟用SELinux
  • SELinux對“運行程序”配置和檢查其是否有權限操作“對象”(文件系統),而普通的ACL(rwx)就是根據文件所屬owner及其組來判斷。SELinux是看bin的type和目錄文件的type是否兼容,來決定bin是否能操作資源

5.3 防火墻

對于iptables也是一知半解,所以下面只是學習時候的一些摘錄。特別一點,要開啟內核參數net.ipv4.ip_forward=1,在/etc/sysctl.conf文件中,用sysctl -p來保存。所謂ip_forward指的是內核提供的從一個iface到另外一個iface的IP包轉發,比如將IP包從192.168.1.10的eth0轉發到10.0.0.123的eth1上。專業的防火墻配置是需要專業技能的。

tcp_wrapper需要libwrap.so的支持,所有凡是ldd出來沒有的bin,都不能用tcp_wrapper
iptables是按照規則進行短路判斷的,即 滿足條件1->執行action1->結束
iptables-save來更加清晰的查看
先刪掉全部規則,然后添加,比較簡單。添加的時候,先添加策略,再添加細部規則。一般來講,我們需要關注的是filter這個表的INPUT與OUTPUT
iptables -A(I) INPUT(OUTPUT,FORWARD) -i(o) iface -p tcp(ump,imp,all) -s (!)source -d dest -j ACCEPT(REJECT,DROP), 還支持的參數 —dport —sport
6 工具

一個好的Linux命令參考網站

6.1 CPU

  • top 特別注意load
  • ps aux和ps -ef 特別注意進程狀態
  • vmstat 1表示每秒采集一次
  • sar -u 1 查看所有cpu相關的運行時間

6.2 Memory

  • free
  • vmstat 1 注意其中的swap ram block之間的關系
  • sar -r 1 內存使用率
  • sar -W 1 查看swap,查詢是否由于內存不足產生大量內存交換

6.3 IO

  • lsof -i:port 查詢哪個進程占用了這個端口號
  • lsof -u username 用戶打開的文件
  • lsof -p pid 進程打開的文件

雜項

關于安裝好系統之后的運行腳本,這邊有一個參考

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
#!/bin/bash
 
flagFile="/root/centos6-init.executed"
 
precheck(){
 
  if [[ "$(whoami)" != "root" ]]; then
  echo "please run this script as root ." >&2
  exit 1
  fi
 
  if [ -f "$flagFile" ]; then
  echo "this script had been executed, please do not execute again!!" >&2
  exit 1
  fi
 
  echo -e "\033[31m WARNING! THIS SCRIPT WILL \033[0m\n"
  echo -e "\033[31m *1 update the system; \033[0m\n"
  echo -e "\033[31m *2 setup security permissions; \033[0m\n"
  echo -e "\033[31m *3 stop irrelevant services; \033[0m\n"
  echo -e "\033[31m *4 reconfig kernel parameters; \033[0m\n"
  echo -e "\033[31m *5 setup timezone and sync time periodically; \033[0m\n"
  echo -e "\033[31m *6 setup tcp_wrapper and netfilter firewall; \033[0m\n"
  echo -e "\033[31m *7 setup vsftpd; \033[0m\n"
  sleep 5
  
}
 
yum_update(){
  yum -y update
  #update system at 5:40pm daily
  echo "40 3 * * * root yum -y update && yum clean packages" >> /etc/crontab
}
 
permission_config(){
  #chattr +i /etc/shadow
  #chattr +i /etc/passwd
}
 
selinux(){
  sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/sysconfig/selinux
  setenforce 1
}
 
stop_services(){
  for server in `chkconfig --list |grep 3:on|awk '{print $1}'`
  do
    chkconfig --level 3 $server off
  done
   
  for server in crond network rsyslog sshd iptables
  do
    chkconfig --level 3 $server on
  done
}
 
limits_config(){
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
echo "ulimit -SH 65535" >> /etc/rc.local
}
 
sysctl_config(){
sed -i 's/net.ipv4.tcp_syncookies.*$/net.ipv4.tcp_syncookies = 1/g' /etc/sysctl.conf
sed -i 's/net.ipv4.ip_forward.*$/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024 65535
EOF
sysctl -p
}
 
sshd_config(){
  if [ ! -f "/root/.ssh/id_rsa.pub" ]; then
  ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
  cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  chmod 600 /root/.ssh/authorized_keys
  fi
 
  #sed -i '/^#Port/s/#Port 22/Port 65535/g' /etc/ssh/sshd_config
  sed -i '/^#UseDNS/s/#UseDNS no/UseDNS yes/g' /etc/ssh/sshd_config
  #sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
  sed -i 's/#PermitEmptyPasswords yes/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
  sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
  /etc/init.d/sshd restart
}
 
time_config(){
  #timezone
  echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile
 
  # Update time
  if [! -f "/usr/sbin/ntpdate"]; then
    yum -y install ntpdate
  fi
  
  /usr/sbin/ntpdate pool.ntp.org
  echo "30 3 * * * root (/usr/sbin/ntpdate pool.ntp.org && /sbin/hwclock -w) &> /dev/null" >> /etc/crontab
  /sbin/service crond restart
}
 
iptables(){
cat > /etc/sysconfig/iptables << EOF
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:syn-flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
-A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable
COMMIT
EOF
/sbin/service iptables restart
source /etc/profile
}
 
other(){
  # initdefault
  sed -i 's/^id:.*$/id:3:initdefault:/' /etc/inittab
  /sbin/init q
  
  # PS1
  #echo 'PS1="\[\e[32m\][\[\e[35m\]\u\[\e[m\]@\[\e[36m\]\h \[\e[31m\]\w\[\e[32m\]]\[\e[36m\]$\[\e[m\]"' >> /etc/profile
   
  # Wrong password five times locked 180s
  sed -i '4a auth    required   pam_tally2.so deny=5 unlock_time=180' /etc/pam.d/system-auth
}
 
vsftpd_setup(){
  yum -y install vsftpd
  mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  touch /etc/vsftpd/chroot_list
  setsebool -P ftp_home_dir=1
cat >> /etc/vsftpd/vsftpd.conf <<EOF
# normal user settings
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_max_rate=10000000
# anonymous settings
anonymous_enable=YES
no_anon_password=YES
anon_max_rate=1000000
data_connection_timeout=60
idle_session_timeout=600
# ssl settings
#ssl_enable=YES      
#allow_anon_ssl=NO     
#force_local_data_ssl=YES 
#force_local_logins_ssl=YES
#ssl_tlsv1=YES       
#ssl_sslv2=NO
#ssl_sslv3=NO
#rsa_cert_file=/etc/vsftpd/vsftpd.pem
# server settings
max_clients=50
max_per_ip=5
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
#banner_file=/etc/vsftpd/welcome.txt
dual_log_enable=YES
pasv_min_port=65400
pasv_max_port=65410
EOF
  chkconfig --level 3 vsftpd on
  service vsftpd restart
}
 
main(){
  precheck
  
  printf "\033[32m================%40s================\033[0m\n" "updating the system      "
  yum_update
 
  printf "\033[32m================%40s================\033[0m\n" "re-config permission      "
  permission_config
 
  printf "\033[32m================%40s================\033[0m\n" "enabling selinux        "
  selinux
 
  printf "\033[32m================%40s================\033[0m\n" "stopping irrelevant services  "
  stop_services
  
  printf "\033[32m================%40s================\033[0m\n" "/etc/security/limits.config  "
  limits_config
  
  printf "\033[32m================%40s================\033[0m\n" "/etc/sysctl.conf        "
  sysctl_config
 
  printf "\033[32m================%40s================\033[0m\n" "sshd re-configuring      "
  sshd_config
  
  printf "\033[32m================%40s================\033[0m\n" "configuring time        "
  time_config
  
  printf "\033[32m================%40s================\033[0m\n" "configuring firewall      "
#  iptables
  
  printf "\033[32m================%40s================\033[0m\n" "someother stuff        "
  other
 
  printf "\033[32m================%40s================\033[0m\n" "done! rebooting        "
  touch "$flagFile"
  sleep 5
  reboot
}
 
main

以上就是針對linux知識點進行的詳細匯總,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜私人影院 | 色婷婷综合网 | 成人av网站在线观看 | 中国成人免费视频 | 中文字幕久久精品 | 国产午夜精品一区二区三区嫩草 | 亚洲激情在线播放 | 一级一片免费视频 | 国产日韩精品一区 | 国产一区不卡视频 | 搡女人真爽免费午夜网站 | 日韩成人小视频 | 亚洲一区二区视频在线观看 | 国产日韩欧美不卡 | 久久久天堂 | 国产伦精品一区二区三区四区视频 | 日韩三级电影网 | 欧美一区二区三区在线视频 | 色图自拍偷拍 | 免费亚洲网站 | 成人在线免费看 | 亚洲成人久久久久 | 香蕉综合久久 | 一级片在线观看 | 亚洲精品久久久久久下一站 | 在线播放中文字幕 | 午夜影院在线 | 亚洲欧洲日韩 | 亚洲精品乱码久久久久久金桔影视 | 久久99精品久久久久久国产越南 | 四虎视频 | 欧美精品福利视频 | 国产精品久久久久久久天堂 | 国产精品久久久久久久久久久久久 | 国产精品一区三区 | 亚洲综合色自拍一区 | 刘亦菲的毛片 | 欧美一级欧美三级在线观看 | 韩日一区二区三区 | 国产高潮国产高潮久久久91 | 老丁头电影在线观看 |