Linux基础
Linux基础
防火墙命令
注意:在centos6和centos7中,命令上的区别
1.防火墙:6是iptables,7是firewalld
2.启动服务的命令:6是service 7是systemctl
iptables防火墙
iptables 防火墙分类
①过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-ACL)检查数据流的源地址,目的地址,源和目的端口,IP等信息。
②代理服务器型防火墙
iptables 基础
①规则(rules):网络管理员预定义的条件
②链(chains): 是数据包传播的路径
③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
④filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
⑤nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT
iptable 防火墙命令
- 1.查看防火墙状态
service iptables status
- 2.关闭防火墙
# 临时关闭防火墙,重启linux后,防火墙会自动开启
service iptables stop
# 永久关闭防火墙
chkconfig iptables off
iptables如何添加端口
- 格式
iptables [-t 表] -命令 匹配 操作 (大小写敏感)
动作选项
ACCEPT 接收数据包
DROP 丢弃数据包
REDIRECT 将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
SNAT 源地址转换
DNAT 目的地址转换
MASQUERADE IP伪装
LOG 日志功能
- 查看ip端口
telnet localhost 35465
- 开放的端口位于/etc/sysconfig/iptables
more /etc/sysconfig/iptables
- 开放端口
- 通过vi /etc/sysconfig/iptables 进入编辑增添一条-A INPUT -p tcp -m tcp --dport 8889 -j ACCEPT 即可
- 执行 /etc/init.d/iptables restart 命令将iptables服务重启
- 保存 /etc/rc.d/init.d/iptables save
注意:如若不想修改iptables表,可以直接输入下面命令: iptables -I INPUT -p tcp --dport 8889 -j ACCEPT
iptables规则定义
2、定义规则
①先拒绝所有的数据包,然后再允许需要的数据包
iptalbes -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
②查看nat表所有链的规则列表
iptables -t nat -L
③增加,插入,删除和替换规则
iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [–sport 源端口号] [-d 目的IP|目标子网] [–dport 目标端口号] [-j 动作]
参数:-A 增加
-I 插入
-D 删除
-R 替换
- 案例:
①iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
禁止IP为192.168.1.5的主机从eth0访问本机
②iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport 80 -j DROP
禁止子网192.168.5.0访问web服务
③iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP
禁止IP为192.168.7.9访问FTP服务
④iptables -t filter -L INPUT
查看filter表中INPUT链的规则
⑤iptables -t nat -F
删除nat表中的所有规则
⑥iptables -I FORWARD -d wwww.playboy.com -j DROP
禁止访问 www.playboy.com网站
⑦iptables -I FORWARD -s 192.168.5.23 -j DROP
禁止192.168.5.23上网
firewalld防火墙介绍
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
- drop: 丢弃所有进入的包,而不给出任何响应
- block: 拒绝所有外部发起的连接,允许内部发起的连接
- public: 允许指定的进入连接
- external: 同上,对伪装的进入连接,一般用于路由转发
- dmz: 允许受限制的进入连接
- work: 允许受信任的计算机被限制的进入连接,类似 workgroup
- home: 同上,类似 homegroup
- internal: 同上,范围针对所有互联网用户
- trusted: 信任所有连接
firewalld防火墙命令
centos从7开始默认使用的是firewalld,这个是基于iptables的,虽然有iptables的命令,但是iptables服务是没有安装的。所以你只要停止firewalld服务就可以了。
- 如果你的系统上没有安装使用命令安装,安装firewalld 防火墙
yum install firewalld
# 如果需要图形化界面的话
yum install firewall-config
- 开启服务
systemctl start firewalld.service
- 关闭防火墙
systemctl stop firewalld.service
- 开机自动启动
systemctl enable firewalld.service
- 关闭开机制动启动
systemctl disable firewalld.service
使用firewall-cmd 命令
- 查看状态
firewall-cmd --state //running 表示运行
- 查看现有的规则
iptables -nL
- 获取活动的区域
firewall-cmd --get-active-zones
这条命令将用以下格式输出每个区域所含接口:
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..
- 获取所有支持的服务
firewall-cmd --get-service
- 在不改变状态的条件下重新加载防火墙:
firewall-cmd --reload
- 启用某个服务
firewall-cmd --zone=public --add-service=https //临时
firewall-cmd --permanent --zone=public --add-service=https //永久
- 开启某个端口
# 添加单个端口
firewall-cmd --permanent --zone=public --add-port=81/tcp
# 添加多个端口
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久
firewall-cmd --zone=public --add-port=8080-8081/tcp //临时
- 使用命令加载设置
firewall-cmd --reload
- 查看开启的端口和服务
firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp
- 设置某个ip 访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 访问 http
- 设置某个ip段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
- 删除上面设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
- 检查设定是否生效
iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
- 执行命令firewall-cmd --list-all
显示:
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
- 查询服务的启动状态
firewall-cmd --query-service ftp
yes
firewall-cmd --query-service ssh
yes
firewall-cmd --query-service samba
no
firewall-cmd --query-service http
no
- 自行加入要开放的 Port
firewall-cmd --add-port=3128/tcp
firewall-cmd --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 3128/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
selinux
centos7里面除了默认的firewall还有一个selinux会对开放端口有影响
永久关闭
修改selinux的配置文件,重启后生效。
打开 selinux 配置文件
[root@localhost ~]# vim /etc/selinux/config
修改 selinux 配置文件
将SELINUX=enforcing改为SELINUX=disabled,保存后退出
reboot #重启服务器
常用命令集锦
文件目录命令
查看文件及目录
ls命令
ls(list)功能:列出目录内容
格式:ls [参数] [文件或者目录]
参数:
-a或者-all:当前目录下的所有文件和目录。注意隐藏文件、特殊目录、.和…
-l :使用详细格式列表 简化命令 ll
-t: 用文件和目录的更改时间排序
-r:方向排序
–help:在线帮助
ll /home:显示指定目录下的内容
ls
ls -a
ls -all
ls -al
ls -l
ll
ls -t
ls -r
ls --help
root用户登陆,默认目录是/root下。其他用户登陆默认路径是/home/用户名下。
- cd 命令
cd (change directory)功能:改变当前目录
格式:cd [目录]
目录:
~:当前用户目录
/:根目录
-:上一次目录
…:上一级目录
: 缺省当前用户目录
cd ~
cd /
cd -
cd ..
cd
- pwd 命令
pwd (print working directory)功能:显示当前目录
格式:pwd
pwd
- mkdir 命令
mkdir (make directory)功能:创建目录
格式:mkdir [参数] [目录]
参数:
-p:创建目录时,如果上级目录不存在,则自动创建上级目录
-v:显示创建目录的详细信息
mkdir -pv ../abc/123
文件浏览
- cat命令
cat (concatenate)功能:显示文件内容
cat [文件名]:显示指定文件的所有内容
cat install.log
- more 命令
more (more)功能:分页显示文件内容,还支持直接跳转行等功能
more [文件名]:显示指定文件的内容,按空格键显示下一页,按回车键显示下一行,按q键退出
more -n 10 install.log:显示指定文件的前10行内容
Enter 键:显示下一行
Space 键:显示下一页
q 键:退出
B键:显示上一页
more install.log
more -n 10 install.log
- less 命令
less (less)功能:分页显示文件内容,还支持直接跳转行等功能
格式:less [参数] [文件名]
-m 显示类似more命令的百分比
-N 显示每行的行号
操作:
- 显示下一行:空格键
- 显示下一页:d
- 显示上一页:b
- 后退半页:u
- 显示上一行:回车键
- 后退一行:y
- 向上搜索: /字符串
- 向下搜索: ?字符串
- 进入编辑模式:v
- 水平滚动条:左右方向键
- 退出:q
less -mN install.log
- tail 命令
tail (tail)功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理
tail [必要参数] [选择参数] [文件名]
参数:
-n 显示指定行数
-f 持续显示文件内容,直到按Ctrl+C退出
& 表示后台运行,否则占用终端
Ctrl+C 退出
tail -n 10 install.log
tail -f install.log
tail -f -n 10 install.log &
文件操作
- cp 命令
cp (copy)功能:复制文件或目录
cp [参数] [源文件] [目标文件]
参数:
-r:复制目录,包括目录下的所有文件和目录
-v:显示复制操作的详细信息
cp -r /home/abc /home/abc1
cp -v install.log install.log1
- mv 命令
mv (move)功能:移动或重命名文件或目录
格式:mv [参数] [源文件] [目标文件]
参数:
-v:显示移动操作的详细信息
-f:强制覆盖
mv -v install.log install.log1
mv -f install.log1 install.log
mv -f /home/abc /home/abc1
- rm 命令
rm (remove)功能:删除文件或目录
格式:rm [参数] [文件或目录]
参数:
-f:强制删除
-r :删除目录,包括目录下的所有文件和目录
rm -f install.log
rm -r /home/abc
rm -rf /home/abc
- find 命令
find (find)功能:查找文件或目录
格式:find [参数] [目录] [条件]
参数:
-name:根据文件名查找
find -name "*.log"
文档编辑
- vi 命令
vi (vi)功能:编辑文件
格式:vi [文件名]
vim 进入“一般模式”
i 进入“插入模式” 在光标前插入
shift+i 在光标后插入
a 在光标后插入
shift+a 在光标当前行末尾插入
o 在光标当前行下一行插入新行
shift+o 在光标当前行前一行插入新行
yy 复制当前行 将光标移动道将要复制的行处
nyy 复制当前行到指定行 将光标移动道将要复制的首行处
p 粘贴 将光标移动道将要粘贴的行处
gg 跳转到第一行
shift+G 跳转到最后一行
dd 删除当前行
ndd 删除指定行到当前行
esc 退出
:q 退出,不保存
:w 保存不退出
:wq 保存并退出
:q! 退出,不保存
vim install.log
i
esc键
:wq
:q!
管道 |
管道(Pipe)是两个命令之间连接的符号,通过管道可以将一个命令的输出作为另一个命令的输入。
管道命令格式:命令1 | 命令2
ls -l | more
grep 命令
grep (global regular expression print)功能:查找文件内容
格式:grep [参数] [内容] [文件]
参数:
-i 忽略大小写
grep -i "error" install.log
磁盘命令
- ps 命令
ps (process status)功能:显示进程状态
ps [参数] [进程]
参数:
-e 显示所有进程
-f 显示进程的详细信息
ps -ef | grep java
- kill 命令
kill (kill)功能:终止进程
格式:kill [参数] [进程]
参数:
-9:强制终止进程
kill -9 1234
- ifconfig 命令
ifconfig (interface configuration)功能:显示网络接口信息
ifconfig
ifconfig
- ping 命令
ping (ping)功能:测试网络连接
ping [参数] [主机]
参数:
-c 次数:ping次数
-i 间隔:ping间隔
-t 测试时间:ping时间
ping -c 10 www.baidu.com
reboot 命令
reboot (reboot)功能:重启计算机halt 命令
halt (halt)功能:关闭计算机
备份压缩
- tar 命令
tar (tar)功能:打包文件或目录
格式:tar [参数] [文件]
参数:
-c:创建tar包
-x :解压tar包
-z :使用gzip压缩
-v :显示打包或解压的详细信息
-f :指定tar包名称
# 解压
tar -zxvf install.tar.gz
# 打包
tar -zcvf install.tar.gz install.log
文件权限
- chmod 命令
chmod (change mode)功能:修改文件权限
chmod [权限] [文件]
参数:
u:用户
g:组
o:其他用户
a:所有用户
符号:
+:增加权限
-:减少权限
权限:
r:读,数字代号4
w:写,数字代号2
x:执行,数字代号1
-:无,数字代号0
chmod u+x install.log
chmod u-x install.log
chmod g+x install.log
chmod ugo+x install.log
chmod 777 install.log
网络配置
- 命令配置
查看网卡配置
cat /etc/sysconfig/network-scripts/ifcfg-eth0
rpm 包管理
二进制包以及源代码包两种。二进制包可以直接安装在计算机上,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
常用命令组合:
- -ivh:安装显示安装进度 --install-verbose-hash
- -Uvh:升级软件包 --Update
- -qpl:列出RPM软件包内的文件信息[Query Package list]
- -qpi:列出RPM软件包的描述信息[Query Package install package(s)]
- -qf:查找指定文件属于哪个RPM软件包[Query File]
- -Va:校验所有的RPM软件包,查找丢失的文件[View Lost]
- -e:删除包
rpm -q samba //查询程序是否安装
rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.20-1.i386.rpm //按照路径安装并显示进度
rpm -ivh --relocate /=/opt/gaim gaim-2.6.0-1.i386.rpm //安装指定目录
rpm -ivh --test gaim-2.6.0-1.i386.rpm //用来检查依赖关系,并不是真正的安装
rpm -Uvh --oldpackage gaim-2.6.0-1.i386.rpm //新版本降级为旧版本
rpm -qa | grep httpd // [搜索指定rpm是否安装]--all 搜索“httpd”
rpm -ql httpd // [查看rpm包]--list 所有文件安装目录
rpm -qpi Linux-1.4-6.i368.rpm // [查看rpm包]--query--package--install pageage信息
rpm -qpf Linux-1.4.6.i368.rpm // [查看rpm包]--file
rpm -qpR file.rpm // [查看rpm包]--依赖关系
rpm2cpio file.rpm | cpio -div // [抽出文件]
rpm -ivh file.rpm // [安装新的rpm]--install--verbose--hash
rpm -ivh [url]http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm[/url]
rpm -Uvh file.rpm //[升级一个rpm] --upgrade
rpm -e file.rpm //[删除一个rpm] --erase
常用参数:
Install/Upgrade/Erase options:
-i, --install install package(s)
-v, --verbose provide more detailed output
-h, --hash print hash marks as package installs (good with -v)
-e, --erase erase (uninstall) package
-U, --upgrade=<packagefile>+ upgrade package(s)
--replacepkge 无论软件包是否已被安装,都强行安装软件包
--test 安装测试,并不实际安装
--nodeps 忽略软件包的依赖关系强行安装
--force 忽略软件包及文件的冲突
Query options (with -q or --query):
-a, --all query/verify all packages
-p, --package query/verify a package file
-l, --list list files in package
-d, --docfiles list all documentation files
-f, --file query/verify package(s) owning file
rpm --recompile vim-4.6-4.src.rpm #这个命令会把源代码解包并编译、安装它,如果用户使用命令:
rpm --rebuild vim-4.6-4.src.rpm #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm 的RPM软件包。
demo
[root@localhost src]# rpm -ivh awstats-6.8-1.noarch.rpm
error: Failed dependencies:
perl(LWP::UserAgent) is needed by awstats-6.8-1.noarch
[root@localhost src]#
使用rpm 属性相依套件的档案
[root@localhost src]# rpm -qpR awstats-6.8-1.noarch.rpm
/bin/sh
/usr/bin/perl
config(awstats) = 6.8-1
perl >= 0:5.005
perl(LWP::UserAgent)
perl(POSIX)
perl(Socket)
perl(Time::Local)
perl(strict)
perl(vars)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
另外:# rpm -ivh --aid samba*.rpm (一定要安装rpmdb后才可以用这种方式安装排除依赖关系)