更改SSH服務端遠程登錄的配置 windows服務端的預設遠程管理埠是3389,管理員用戶是administrator,普通用戶是guest。Linux的管理用戶是root,普通用戶預設有很多個,遠程連接預設埠是22。 修改配置文件/etc/ssh/sshd_config,13行Port 22(... ...
更改SSH服務端遠程登錄的配置
windows服務端的預設遠程管理埠是3389,管理員用戶是administrator,普通用戶是guest。Linux的管理用戶是root,普通用戶預設有很多個,遠程連接預設埠是22。
修改配置文件/etc/ssh/sshd_config,13行Port 22(預設埠22),改為Port 52113(範圍0——65535);15行ListenAddress 0.0.0.0 (監聽ip地址),改為ListenAddress 192.168.131.1;43行PermitRootLogion yes(root用戶遠程連接),改為PermitRootLogion no;122行UseDNS yes(DNS解析),改為UseDNS no;GSSAPIAuthentication yes(SSH連接慢),改為GSSAPIAuthentication no;
cat –n:查看行號
vim à:set nu à顯示行號
diff比較2個文件的不同之處。
[root@oldboy66 ssh]# diff sshd_config sshd_config.oldboy.20161204
vimdiff以高亮方式比較2個文件的不同之處。
[root@oldboy66 ssh]# vimdiff sshd_config sshd_config.oldboy.20161204
sed替換:
- [root@oldboy66 ssh]# sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthenication no' sshd_config
重啟生效:/etc/init.d/sshd restart(可能影響用戶)或/etc/init.d/sshd reload(平滑重啟)。
查看埠:
netstat -lntup|grep sshd
利用sudo控制用戶對系統命令的使用許可權
管理sudo命令:
visudo或vi /etc/sudoers,visudo更好。vi命令模式直接輸入行數+gg到固定的行數,顯示行號:set nu,yy(複製)+p(粘貼)複製當前行到下一行,shift+a到結尾處於編輯狀態。
98+gg: 98 root ALL=(ALL) ALL
給oldboy授予root許可權:
oldboy ALL=(ALL) ALL
oldboy ALL=(ALL) NOPASSWD:ALL(不提示輸入密碼)
用oldboy添加一個用戶oldgirl:
- [oldboy@oldboy66 ~]$ sudo useradd oldgirl
- #輸入oldboy密碼
- [sudo] password for oldboy:
- #添加成功
- [oldboy@oldboy66 ~]$ tail -1 /etc/passwd
- oldgirl:x:501:501::/home/oldgirl:/bin/bash
給oldboy授予固定許可權:
oldboy ALL=(ALL) /bin/touch,/usr/sbin/useradd
註意:需要命令的全路徑,查看命令全路徑which 命令,例如:
- [root@oldboy66 ~]# which useradd
- /usr/sbin/useradd
- [root@oldboy66 ~]# which touch
- /bin/touch
find查找:find / -type f -name "useradd"
whereis查找:whereis -b useradd
locate查找:locate useradd
環境變數:
PATH系統路徑變數,執行ls、cp等非內置命令時,系統會查找PATH里對應的路徑是否存在,如果沒有就報告找不到該命令。當執行which cp來查看命令所在路徑的時候,也就是從PATH變數去搜索。
PATH變數的臨時修改 export PATH="/tmp:$PATH",永久生效將命令放到/etc/profile下,使用source /etc/profile 使得立刻生效。
Linux中文顯示設置
查看當前字元編碼:
- [root@oldboy66 tmp]# cat /etc/sysconfig/i18n
- LANG="en_US.UTF-8"
- SYSFONT="latarcyrheb-sun16"
操作前先進行備份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20161205
- [root@oldboy66 sysconfig]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n
- [root@oldboy66 sysconfig]# cat /etc/sysconfig/i18n
- LANG="zh_CN.UTF-8"
- SYSFONT="latarcyrheb-sun16"
- #立刻生效
- [root@oldboy66 sysconfig]# source /etc/sysconfig/i18n
- [root@oldboy66 sysconfig]# echo $LANG
- zh_CN.UTF-8
註意:客戶端字元集需改為UTF-8。
設置Linux伺服器時間同步
顯示時間:date
修改時間:date –s "時間" àhwclock
顯示日曆:cal
同步互聯網時間:
- [root@oldboy66 tmp]# /usr/sbin/ntpdate time.nist.gov
定時任務執行同步:
- #每5分鐘執行一次同步
- [root@oldboy66 tmp]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
- [root@oldboy66 tmp]# crontab -l
- */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
下麵三種方法是等價的:
/dev/null 空設備(黑洞)
錯誤和正確都輸出到/dev/null:
1、1>/dev/null 2>/dev/null
2、1>/dev/null 2&1
3、&>/dev/null
時間同步架構
小規模時間同步架構:
大規模時間同步架構:
設置Linux預設歷史記錄數
命令如下,註意此時的配置僅臨時生效。
- #設置歷史記錄數5
- [root@oldboy66 ~]# HISTSIZE=5
把配置參數放入配置文件,使得永久生效。
- #設置終端超時時間
- [root@oldboy66 ~]# echo 'TMOUT=300' >>/etc/profile
- #設置歷史記錄數
- [root@oldboy66 ~]# echo 'HISTSIZE=5' >>/etc/profile
- #設置文件記錄數cat ~/.bash_history
- [root@oldboy66 ~]# echo 'HISTFILESIZE=5' >>/etc/profile
TMOUT=10:連接的超時時間控制變數。
HISTSIZE=5:命令行的歷史記錄數量變數。
HISTFILESIZE=10:歷史記錄文件的命令行數量變數(~/.bash_history)。
歷史記錄清空:history -c。
刪除指定歷史記錄:history -d 10(刪除10號歷史記錄)。
加大伺服器文件描述符
文件描述符的概念
1、表示形式為整數數字(0——65535)。
2、進程使用的時候會占用文件描述符(標識打開的文件)。
查看預設文件描述符
- [root@oldboy66 ~]# ulimit -n
- 1024
3、調整文件描述符
方法一:
直接把ulimit -SHn 65535命令加入到/etc/rc.local,然後每次開機啟動的時候生效。
- #臨時生效
- [root@oldboy66 ~]# ulimit -SHn 65535
- [root@oldboy66 ~]# ulimit -n
- 65535
寫入rc.local:
- cat >>/etc/rc.local<<EOF
- ulimit -HSn 65535
- ulimit -s 65535
- EOF
方法二:
在/etc/sercurity/limits.conf裡面配置。
- [root@oldboy66 ~]# echo '* - nofile 65535' >>/etc/security/limits.conf
- [root@oldboy66 ~]# tail -1 /etc/security/limits.conf
- * - nofile 65536
調整內核參數文件/etc/sysctl.conf
vim編輯:shift+g切換到文件結尾
優化參數:
- net.ipv4.tcp_fin_timeout = 2
- net.ipv4.tcp_tw_reuce = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_keepalive_time = 600
- net.ipv4.ip_local_port_range = 4000 65000
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.tcp_max_tw_buckets = 36000
- net.ipv4.route.gc_timeout = 100
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_synack_retries = 1
- net.core.somaxconn = 16384
- net.core.netdev_max_backlog = 16384
- net.ipv4.tcp_max_orphans = 16384
- #以下參數是對iptables防火牆的優化,防火牆不開會提示,可以忽略不理
- #net.nf_conntrack_max = 25000000
- #net.netfilter.nf_conntrack_tcp_timeout_established = 180
- #net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
- #net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
- #net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
執行生效:sysctl -p
查看網路狀態:netstat -an
隱藏Linux版本信息
控制Linux顯示版本信息的文件
- [root@oldboy66 ~]# cat /etc/issue
- CentOS release 6.6 (Final)
- Kernel \r on an \m
- [root@oldboy66 ~]# cat /etc/issue.net
- CentOS release 6.6 (Final)
- Kernel \r on an \m
清空這個兩個文件就可以了。
鎖定關鍵系統文件,防止提權被篡改
命令:
- [root@oldboy66 ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
解除鎖定:chattr -i
為grub菜單加密碼
為grub菜單加密碼的目的是防止他人修改grub做內核等啟動設置。
1、先用/sbin/grub-md5-crypt產生一個MD5密碼串。
- [root@oldboy66 ~]# /sbin/grub-md5-crypt
- Password:
- Retype password:
- $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.
2、修改grub.conf文件添加
password --md5 $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.。
- [root@oldboy66 ~]# vim /etc/grub.conf
- 1 # grub.conf generated by anaconda
- 2 #
- 3 # Note that you do not have to rerun grub after making changes
- to this file
- 4 # NOTICE: You have a /boot partition. This means that
- 5 # all kernel and initrd paths are relative to /boot/,
- eg.
- 6 # root (hd0,0)
- 7 # kernel /vmlinuz-version ro root=/dev/sda3
- 8 # initrd /initrd-[generic-]version.img
- 9 #boot=/dev/sda
- 10 default=0
- 11 timeout=5
- 12 splashimage=(hd0,0)/grub/splash.xpm.gz
- 13 hiddenmenu
- 14 title CentOS 6 (2.6.32-504.el6.x86_64)
- 15 root (hd0,0)
- 16 kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e89
- 62baa-4051-4832-b0ee-e27aa74f6374 rd_NO_LUKS rd_NO_LVM LANG=en
- _US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto
- KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
- 17 initrd /initramfs-2.6.32-504.el6.x86_64.img
註意:password要加在splashimage和title之間,否則可能不生效。
禁止Linux系統被ping
命令:
- [root@oldboy66 ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
- #立刻生效
- [root@oldboy66 ~]# sysctl -p
升級具有典型漏洞的軟體版本
首先查看相關軟體的版本號
- [root@oldboy66 ~]# rpm -qa openssl openssh bash
- openssl-1.0.1e-30.el6.x86_64
- bash-4.1.2-29.el6.x86_64
- openssh-5.3p1-104.el6.x86_64
執行升級已知漏洞的軟體版本到最新。
- [root@oldboy66 ~]# yum install openssl openssh bash
配置yum源
查看當前yum源
- [root@oldboy66 ~]# cat /etc/yum.repos.d/CentOS-Base.repo
配置阿裡雲的yum源
- wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget:下載,wget http://url;-O:下載到指定路徑並改名;--spider:爬蟲,檢查網站是不是好的,不會下載只是檢查;-T(--timeout):指定超時時間(--timeout=seconds);--tries:指定重試的次數(--tries=2);-q(--quiet):後臺下載,關閉輸出;
總結:
1、不用root管理,以普通用戶的名義通過sudo授權管理。
2、更改預設的遠程連接SSH服務埠,禁止root用戶遠程連接,甚至要更改為只監聽內網IP。
3、定時自動更新伺服器時間,使其和互聯網時間同步。
4、配置yum更新域,從國內更新源下載安裝軟體包。
5、關閉SELinux及iptables(在生產場景中,如果有外部IP一般要打開)
6、調整文件描述符的數量,進程及文件的打開都會消耗文件描述符。
7、定時自動清理郵件目錄垃圾文件,防止inodes節點被占滿。
8、精簡並保留必要的開機自啟動服務(如crond、sshd、network、rsyslog、stsstat)。
9、Linux內核參數優化/etc/sysctl.conf,執行sysctl -p 生效。
10、更改字元集,使其支持中文。
11、鎖定關鍵系統文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,處理後把chattr、lasttr改名。
12、清空/etc/issue、/etc/issue.net,去除系統及內核版本登錄前的屏幕顯示。
13、清楚多餘的系統虛擬賬號。
14、為grub菜單加密碼。
15、禁止被ping。
16、升級漏洞軟體。
less:按屏(空格、page up/page down)或按行(回車)查看文件。
more:按屏(空格)或按行(回車)查看文件,不能向上翻。
Linux目錄結構
linux只有一個頂點/(根),其他所有目錄都在根下。根下麵的所有目錄是一個有層次的樹狀結構,像一顆倒掛著的大樹。
- [root@oldboy66 ~]# tree -L 1 /
- /
- ├── bin
- ├── boot
- ├── dev
- ├── etc
- ├── home
- ├── lib
- ├── lib64
- ├── lost+found
- ├── media
- ├── mnt
- ├── oldboy
- ├── opt
- ├── proc
- ├── root
- ├── sbin
- ├── selinux
- ├── srv
- ├── sys
- ├── tmp
- ├── usr
- └── var
tree:顯示目錄結構,-L:指定顯示多少層;-d:只顯示目錄。
linux的目錄結構和磁碟分區是分離的,可以自由組合。
/
├── bin àEssential command binaries
├── boot àStatic files of the boot loader
├── dev àDevice files
├── etc àHost-specific system configuration
├── home àUser home directories(optional)
├── lib àEssential shared libraries and kernel modules
├── lib64
├── lost+found
├── media
├── mnt àMount point for mounting a filesystem temporarily
├── oldboy
├── opt àAdd-on application software packages
├── proc à進程信息及內核信息(cpu、硬碟分區、記憶體信息等)
├── root àHome directory for the root user(optional)
├── sbin àEssential system binaries
├── selinux
├── srv
├── sys
├── tmp àTemporary files
├── usr àSecondary hierarchy
└── var àVariable data
cat /proc/meminfo à記憶體信息
cat /proc/cpuinfo àcpu信息
cat /proc/mounts à掛載信息
cat /proc/loadavg à負載(系統繁忙程度)
小結:
1、linux系統的所有目錄時一個有層次的倒著的樹狀目錄結構,/根是所有目錄的起點。
2、不同的目錄數據可以跨越不同的磁碟分區或不同的磁碟設備。
/dev/ 設備目錄
/etc/ 系統配置即服務配置文件、啟動命令的目錄
/proc 顯示內核及進程信息的虛擬文件系統
/tmp 臨時文件目錄
/home 普通用戶家目錄
/root 超級管理員的家目錄
/var 變化的目錄,一般是日誌文件,cache的目錄
/usr 用戶程式及數據、幫助文件、二進位命令等的目錄
/bin、/sbin、/usr/sbin 用戶命令的目錄
Linux重要目錄路徑
/etc/sysconfig/network-scripts/ifcfg-eth0:配置網路地址及GW等。
- [root@oldboy66 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0 #物理設備名,eth1表示第二塊網卡
- HWADDR=00:0c:29:a6:d7:cb #網卡的MAC地址,48位(克隆後要刪除)
- TYPE=Ethernet #乙太網
- UUID=cd11ee91-579f-43be-9074-a14cabe2e0c6 #uuid唯一用戶標識(克隆後要刪除)
- ONBOOT=yes #控制網卡是不是開機啟動
- NM_CONTROLLED=yes
- BOOTPROTO=dhcp #proto值:none,引導時不使用協議;static,靜態分配地址;bootp,使用BOOTP協議;dhcp,使用DHCP協議
- DNS2=202.106.0.20 #DNS把baidu.com變成baidu伺服器IP。DNS功能變數名稱和IP的解析工具
- DNS1=8.8.8.8
- USERCTL=no
- PEERDNS=yes
- IPV6INIT=no
IPADDR=10.0.0.7 #addr是IP地址
NETMASK=255.255.255.0 #子網掩碼,劃分網路位和主機位10.0.0.0/24
GATEWAY=10.0.0.254 #網關地址,路由器的地址
修改配置生效命令:
- [root@oldboy66 ~]# /etc/init.d/network restart #ONBOOT=yes
- 或
- [root@oldboy66 ~]# ifdown eth0 && ifup eth0 #關閉和啟動
ifup:啟動
ifdown:關閉
/etc/resolv.conf:DNS管理
- [root@oldboy66 ~]# cat /etc/resolv.conf
- ; generated by /sbin/dhclient-script
- search localdomain
- nameserver 8.8.8.8
- nameserver 202.106.0.20
小結:
1、客戶端DNS可以在網卡配置文件里設置(ifcfg-eth0)。
2、客戶端DNS也可以在/etc/resolv.conf里設置。
3、網卡裡的設置DNS優先於/etc/resolv.conf。
/etc/hosts:設定用戶IP與功能變數名稱的對應解析表
對應windows的文件C:\Windows\System32\drivers\etc\hosts。
- [root@oldboy66 ~]# cat /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.131.128 oldboy66
hosts在企業里的作用:
1、開發、產品、測試等人員,用於通過正式的功能變數名稱測試產品。
2、伺服器之間的調用可以用功能變數名稱(內部的DNS),方便遷移。
/etc/sysconfig/network:修改機器名及網卡啟動,網關等配置。
- [root@oldboy66 ~]# cat /etc/sysconfig/network
- NETWORKING=yes
- HOSTNAME=oldboy66
更改主機名:
1、vi /etc/sysconfig/network
2、hostname 主機名
同時修改。
/etc/fstab:設置文件系統掛載信息的文件,使得開機能夠自動掛載磁碟分區
- [root@oldboy66 ~]# df –h #查看磁碟掛載信息
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda3 7.1G 1.4G 5.4G 21% /
- tmpfs 497M 0 497M 0% /dev/shm
- /dev/sda1 190M 27M 153M 15% /boot
- [root@oldboy66 ~]# cat /etc/fstab
- UUID=e8962baa-4051-4832-b0ee-e27aa74f6374 / ext4 defaults 1 1
- UUID=9782b8eb-4b2d-4919-b3b7-14ee46d04ae8 /boot ext4 defaults 1 2
- UUID=60b51f07-216b-4e38-9eee-d3de8d897e01 swap swap defaults 0 0
- tmpfs /dev/shm tmpfs defaults 0 0 #掛載的設備 掛載點 FS類型 參數 備份 檢查
- devpts /dev/pts devpts gid=5,mode=620 0 0
- sysfs /sys sysfs defaults 0 0
- proc /proc proc defaults 0 0
- [root@oldboy66 ~]#
fsck:磁碟檢查(不要檢查好磁碟),卸載的狀態
掛載方式:
1、命令掛載
mount -t ext4 -o noexec /dev/sda1 /mnt
2、/etc/fstab
測試手動掛載:
1、創建一個虛擬的塊設備。
dd if=/dev/zero of=/dev/sdb1 bs=4906 count=100
2、格式化
mkfs.ext4 /dev/sdb1
3、掛載
mount -t ext4 -o loop,noatime,noexec /dev/sda1 /mnt
4、查看
df -h
第一列掛載的設備可以是設備名或UUID、磁碟標簽。
fstab出問題,修複方式:
1、開機提示輸入密碼修複。
2、救援模式rescue修改/etc/fatab只讀狀態,mount -o rw,remount /。
/etc/rc.local:用於存放開機自啟動程式命令的文件
讓一個程式開機啟動:
1、chkconfig(/etc/init.d/sshd)。
2、放入/etc/rc.local。
選擇建議:/etc/rc.local,工作中把/etc/rc.local作為伺服器檔案文件,所有程式開機啟動放入/etc/rc.local並加註釋。
rc.local與fstab區別:rc.local在系統啟動完成最後載入。
NFS網路文件系統掛載是,網卡還沒啟動,就已經載入fstab。(mount -t nfs 10.0.0.7:/data /mnt)
/etc/inittab:設定系統啟動時init進程將把系統設置成什麼樣的runlevel運行級別及載入相關的級別對應啟動文件設置
Linux啟動過程:
1、開機BIOS自檢
2、MBR引導
硬碟0柱面0磁碟1扇區的前446byte。
3、grub引導菜單
cat /etc/grub.conf
4、載入內核kernel
5、啟動init進程
ps -ef|grep init
/etc/init.d
/etc/profile:系統全局環境變數永久生效的配置文件
/etc/profile.d:登錄後執行的腳本所在地
/etc/motd:登錄後顯示的字元串
/etc/issue:記錄用戶登錄前顯示的系統版本等信息
- [root@oldboy66 ~]# cat -n /etc/issue
- 1 CentOS release 6.6 (Final)
- 2 Kernel \r on an \m
/etc/group:設定用戶的組名與相關信息
/etc/passwd:賬號信息文件
/etc/shadow:密碼信息文件
/etc/gshadow:組密碼信息文件
/etc/sudoers:可以執行使用sudo命令的配置文件
visudo -c:檢查語法
yum remove tree -y:yum刪除(會刪除依賴,慎用)