精华内容
下载资源
问答
  • Linux Shell向端口发送字符串数据

    千次阅读 2020-06-15 20:52:11
    (echo 'hello'; sleep 2) | telnet 127.0.0.1 8080 hello为发送的字符串。 8080为发送端口
    (echo 'hello'; sleep 2) | telnet 127.0.0.1 8080
    

    hello为发送的字符串。
    8080为发送的端口。

    展开全文
  • Linux向指定端口发送字符串 1.向9999端口发送字符串 nc -lk 9999 输入字符,按回车Enter进行发送,如下图

    Linux向指定端口发送字符串

    1.向9999端口发送字符串
    nc -lk 9999
    
    输入字符,按回车Enter进行发送,如下图

    在这里插入图片描述

    展开全文
  • linux 查看端口使用,内存占用

    千次阅读 2019-02-25 14:09:02
    1.lsof使用, lsof -i:port 查看某个端口是否被占用 lsof -i 8080 2.使用 netstat netstat -anp|grep 9001 2.1netstat命令解释 netstat -ntlp //查看当前所有tcp端口· netstat -ntulp |grep 80 //...

    1.lsof使用, lsof -i:port   查看某个端口是否被占用

    lsof -i 8080

     

    2.使用 netstat

    netstat -anp|grep 9001

     2.1netstat命令解释

    netstat -ntlp //查看当前所有tcp端口·

    netstat -ntulp |grep 80 //查看所有80端口使用情况·

    netstat -an | grep 3306 //查看所有3306端口使用情况

                参数说明:

                            -t (tcp) 仅显示tcp相关选项
                            -u (udp)仅显示udp相关选项
                            -n 拒绝显示别名,能显示数字的全部转化为数字
                            -l 仅列出在Listen(监听)的服务状态
                            -p 显示建立相关链接的程序名

     

    3.附上man 学习命令:http://man.linuxde.net/

     

    4.查看内存使用

     4.1  top   输出内容

    参数说明:

    前5行为系统总体资源统计情况

    top -       系统当前时间
    up              系统已开机多长时间
    user             当前用户数
    load average          cpu平均负载,三个数值分别为,1分钟,5分钟,15分钟
    Tasks                 系统当前进程数,total:总进程数,running:正在运行的进程数,sleeping:睡眠的进程数,stopped:停止的进程数,zombie:僵尸进程数
    %Cpu(s)                  cpu使用率,us:用户使用cpu百分百,sy:系统内核使用cpu百分百,id:剩余的cpu百分百
    Mem               内存使用信息,total:总内存大小,free:空闲的内存,used:已使用的内存,buff/cache:缓存的内存大小
    Swap                虚拟内存信息

    参数解释:

    PID: 进程描述符 
    USER: 进程的拥有者 
    PRI:进程的优先级 
    NI: nice level 
    SIZE: 进程拥有的内存(包括code segment + data segment + stack segment) 
    RSS: 物理内存使用
    VIRT(virtul memory usage): 进程需要的虚拟内存大小
    RES(resident memory usage): 常驻内存 
    SHARE: 和其他进程共享的物理内存空间 
    STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。 
    %CPU: CPU使用率 
    %MEM: 物理内存的使用
    TIME: 进程占用的总共cpu时间 
    COMMAND:进程的命令

    常用参数:

    s – 改变画面更新频率
    l – 关闭或开启第一部分第一行 top 信息的表示
    t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
    m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
    N – 以 PID 的大小的顺序排列表示进程列表
    P – 以 CPU 占用率大小的顺序排列进程列表
    M – 以内存占用率大小的顺序排列进程列表
    h – 显示帮助
    n – 设置在进程列表所显示进程的数量
    q – 退出 top
    s – 改变画面更新周期

    top交互命令

    Ctrl+L 擦除并且重写屏幕
    k       终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号
    i        忽略闲置和僵死进程。这是一个开关式命令
    q       退出程序
    r         重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10 
    S        切换到累计模式
    f         或者F 从当前显示中添加或者删除项目
    o/O    改变显示项目的顺序 
    l         切换显示平均负载和启动时间信息 
    m       切换显示内存信息 
    t         切换显示进程和CPU状态信息。 
    c        切换显示命令名称和完整命令行
    M       根据驻留内存大小进行排序。 
    P        根据CPU使用百分比大小进行 

     

    4.2 free命令

    free         用KB为单位展示数据
    free -m    用MB为单位展示数据
    free -h     用GB为单位展示数据

    参数说明:

    total : 总计屋里内存的大小
    used : 已使用内存的大小
    free : 可用内存的大小
    shared : 多个进程共享的内存总额
    buff/cache : 磁盘缓存大小
    available : 可用内存大小 , 从应用程序的角度来说:available = free + buff/cache .
     

     

    4.3   

    cat  /proc/meminfo 查看RAM使用情况

    ps aux :按照 pid 显示内容 (默认排序方式)

    ps aux --sort -rss : 按照 rss 排序显示内容

     

    展开全文
  • Linux 端口信息查看  大家都知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要...

    Linux 端口信息查看

     大家都知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。

    1. 查看端口

    Command

    netstat -anp

          注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)

    netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000

    netstat命令各个参数说明如下:

      -t : (tcp)仅显示TCP相关选项

      -u :(UDP)仅显示UDP相关选项 

      -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)

      -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

      -n : 不进行DNS轮询,显示IP(可以加速操作),拒绝显示别名,能显示数字的全部转化为数字

    即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··

    netstat -ntlp   //查看当前所有tcp端口·

    netstat -ntulp |grep 80   //查看所有80端口使用情况·

    netstat -an | grep 3306   //查看所有3306端口使用情况·

    查看一台服务器上面哪些服务及端口

    netstat  -lanp

    查看一个服务有几个端口。比如要查看mysqld

    ps -ef |grep mysqld

    查看某一端口的连接数量,比如3306端口

    netstat -pnt |grep :3306 |wc

    查看某一端口的连接客户端IP 比如3306端口

    netstat -anp |grep 3306

    netstat -an 查看网络端口 
    
    lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。 
    
    nmap 端口扫描
    netstat -nupl  (UDP类型的端口)
    netstat -ntpl  (TCP类型的端口)
    netstat -anp 显示系统端口使用情况

    //参数结果说明

    # netstat -tunlp 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      4814/rpcbind        
    tcp        0      0 0.0.0.0:5908                0.0.0.0:*                   LISTEN      25492/qemu-kvm      
    tcp        0      0 0.0.0.0:6996                0.0.0.0:*                   LISTEN      22065/lwfs          
    tcp        0      0 192.168.122.1:53            0.0.0.0:*                   LISTEN      38296/dnsmasq       
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      5278/sshd           
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      5013/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      5962/master         
    tcp        0      0 0.0.0.0:8666                0.0.0.0:*                   LISTEN      44868/lwfs          
    tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      22065/lwfs        
    # netstat -tunlp | grep 8000
    tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      22065/lwfs     

    查询的有Local、Address、Foregin、Program name。
    Local :访问端口的方式,0.0.0.0 是对外开放端口,说明8000端口外面可以访问;127.0.0.1 说明只能对本机访问,外面访问不了此端口。
    Address:端口。
    Foregin Address:对外开放,一般都为0.0.0.0:* 。
    Program name:此端口是那个程序在用,程序挂载此端口。

    0.0.0.0 是对外开放,通过服务域名、ip可以访问的端口。
    127.0.0.1 只能对本机 localhost访问,也是保护此端口安全性。

    ::: 这三个: 的前两个”::“,是“0:0:0:0:0:0:0:0”的缩写,相当于IPv6的“0.0.0.0”,
    就是本机的所有IPv6地址,第三个:是IP和端口的分隔符。

     

    Linux 查看端口对应的应用程序

    Command

    lsof -i:xxx

        (xxx指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。
    (注:有些端口通过netstat查不出来,更可靠的方法是"~$ sudo nmap -sT -O localhost")

    //查看方法
    ①lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000

    lsof -i 用以显示符合条件的进程情况,
    lsof(list open files)是一个列出当前系统打开文件的工具。

    参数说明:

    1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000

    # lsof -i:8000
    COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    lwfs    22065 root    6u  IPv4 4395053      0t0  TCP *:irdmi (LISTEN)

    可以看到8000端口已经被轻量级文件系统转发服务lwfs占用

    Command:进程的名称
    PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别文件。如txt等。
    TYPE:文件类型。
    DEVICE:指定磁盘的名称。
    SIZE:文件的大小。
    NODE:索引节点(文件在磁盘上的标示)
    NAME:打开文件的确切名称。 

         命令详解:https://www.cnblogs.com/sparkbj/p/7161669.html

    或    

    lsof是系统管理/安全的尤伯工具。我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步。将这个工具称之为lsof真实名副其实,因为它是指“列出打开文件(lists openfiles)”。而有一点要切记,在Unix中一切(包括网络套接口)都是文件。

    有趣的是,lsof也是有着最多开关的Linux/Unix命令之一。它有那么多的开关,它有许多选项支持使用-和+前缀。

    
     
    1. usage: [-?abhlnNoOPRstUvV] [+|-c c] [+|-d s] [+D D] [+|-f[cgG]]
    2. [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+|-M] [-o [o]]
    3. [-p s] [+|-r [t]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

    正如你所见,lsof有着实在是令人惊讶的选项数量。你可以使用它来获得你系统上设备的信息,你能通过它了解到指定的用户在指定的地点正在碰什么东西,或者甚至是一个进程正在使用什么文件或网络连接。

    对于我,lsof替代了netstat和ps的全部工作。它可以带来那些工具所能带来的一切,而且要比那些工具多得多。那么,让我们来看看它的一些基本能力吧:

    关键选项

    理解一些关于lsof如何工作的关键性东西是很重要的。最重要的是,当你给它传递选项时,默认行为是对结果进行“或”运算。因此,如果你正是用-i来拉出一个端口列表,同时又用-p来拉出一个进程列表,那么默认情况下你会获得两者的结果。

    下面的一些其它东西需要牢记:

    • 默认 : 没有选项,lsof列出活跃进程的所有打开文件
    • 组合 : 可以将选项组合到一起,如-abc,但要当心哪些选项需要参数
    • -a : 结果进行“与”运算(而不是“或”)
    • -l : 在输出显示用户ID而不是用户名
    • -h : 获得帮助
    • -t : 仅获取进程ID
    • -U : 获取UNIX套接口地址
    • -F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止)

    获取网络信息

    正如我所说的,我主要将lsof用于获取关于系统怎么和网络交互的信息。这里提供了关于此信息的一些主题:

    使用-i显示所有连接

    有些人喜欢用netstat来获取网络连接,但是我更喜欢使用lsof来进行此项工作。结果以对我来说很直观的方式呈现,我仅仅只需改变我的语法,就可以通过同样的命令来获取更多信息。

    
     
    1. # lsof -i
    2.  
    3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    4. dhcpcd 6061 root 4u IPv4 4510 UDP *:bootpc
    5. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
    6. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

    使用-i 6仅获取IPv6流量

    
     
    1. # lsof -i 6

    仅显示TCP连接(同理可获得UDP连接)

    你也可以通过在-i后提供对应的协议来仅仅显示TCP或者UDP连接信息。

    
     
    1. # lsof -iTCP
    2.  
    3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    4. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
    5. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

    使用-i:port来显示与指定端口相关的网络信息

    或者,你也可以通过端口搜索,这对于要找出什么阻止了另外一个应用绑定到指定端口实在是太棒了。

    
     
    1. # lsof -i :22
    2.  
    3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    4. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
    5. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

    使用@host来显示指定到指定主机的连接

    这对于你在检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用。

    
     
    1. # lsof -i@172.16.12.5
    2.  
    3. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

    使用@host:port显示基于主机与端口的连接

    你也可以组合主机与端口的显示信息。

    
     
    1. # lsof -i@172.16.12.5:22
    2.  
    3. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

    找出监听端口

    找出正等候连接的端口。

    
     
    1. # lsof -i -sTCP:LISTEN

    你也可以grep “LISTEN”来完成该任务。

    
     
    1. # lsof -i | grep -i LISTEN
    2.  
    3. iTunes 400 daniel 16u IPv4 0x4575228 0t0 TCP *:daap (LISTEN)

    找出已建立的连接

    你也可以显示任何已经连接的连接。

    
     
    1. # lsof -i -sTCP:ESTABLISHED

    你也可以通过grep搜索“ESTABLISHED”来完成该任务。

    
     
    1. # lsof -i | grep -i ESTABLISHED
    2.  
    3. firefox-b 169 daniel 49u IPv4 0t0 TCP 1.2.3.3:1863->1.2.3.4:http (ESTABLISHED)

     

    Linux 关闭端口

    iptable

    sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
    sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"   
    kill
    kill -9 PID" (PID:进程号)

         1)通过iptables工具将该端口禁掉,如:  
         2)或者关掉对应的应用程序,则端口就自然关闭了

       命令详解;

    Linux iptables命令详解

    https://www.cnblogs.com/alimac/p/5848372.html 或

    iptables -F
    iptables -X
    iptables -F -t mangle
    iptables -t mangle -X
    iptables -F -t nat
    iptables -t nat -X
    首先,把三个表清空,把自建的规则清空。

    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD ACCEPT
    设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    先把“回环”打开,以免有不必要的麻烦。

    iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
    iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT
    在所有网卡上打开ping功能,便于维护和检测。

    iptables -A INPUT -i eth0 -s 192.168.100.250 -d 192.168.100.1 -p tcp --dport 22 -j ACCEPT
    iptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.100.1 -p tcp --sport 22 -j ACCEPT
    打开22端口,允许远程管理。(设定了很多的附加条件:管理机器IP必须是250,并且必须从eth0网卡进入)

    iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth1 -s 192.168.168.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth1 -d 192.168.168.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT
    上面这几句是比较头痛的,我做逐一解释。

    iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
    允许192.168.100.0/24网段的机器发送数据包从eth0网卡进入。如果数据包是tcp协议,而且目的端口是3128(因为REDIRECT已经把80改为3128了。nat表的PREROUTING是在filter表的INPUT前面的。)的,再而且,数据包的状态必须是NEW或者ESTABLISHED的(NEW代表tcp三段式握手的“第一握”,换句话说就是,允许客户端机器向服务器发出链接申请。ESTABLISHED表示通过握手已经建立起链接),通过。

    iptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
    我们先来看这一句。现在你的数据包已经进入到linux服务器防火墙上来了。squid需要代替你去访问,所以这时,服务器就成了客户端的角色,所以它要使用32768到61000的私有端口进行访问。(大家会奇怪应该是1024到65535吧。其实CentOS版的linux所定义的私有端口是32768到61000的,你可以通过cat /proc/sys/net/ipv4/ip_local_port_range,查看一下。)再次声明:这里是squid以客户端的身份去访问其他的服务器,所以这里的源端口是32768:61000,而不是3128!

    iptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT
    当然了,数据有去就有回。

    iptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
    数据包还得通过服务器,转到内网网卡上。请注意,这里,是squid帮你去访问了你想要访问的网站。所以在内网中,你的机器是客户端角色,而squid是服务器角色。这与刚才对外访问的过程是不同的。所以在这里,源端口是3128,而不是32768:61000。

    iptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT
    当然,DNS是不可缺少的。

    iptables -A INPUT -i eth+ -p tcp --dport 80 -j LOG --log-prefix "iptables_80_alert" --log-level info
    iptables -A INPUT -i eth+ -p tcp --dport 21 -j LOG --log-prefix "iptables_21_alert" --log-level info
    iptables -A INPUT -i eth+ -p tcp --dport 22 -j LOG --log-prefix "iptables_22_alert" --log-level info
    iptables -A INPUT -i eth+ -p tcp --dport 25 -j LOG --log-prefix "iptables_25_alert" --log-level info
    iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j LOG --log-prefix "iptables_icmp8_alert" --log-level info
    当然了,来点日志记录会对网管员有所帮助。

    iptables 基本命令使用举例


          一、链的基本操作
    1、清除所有的规则。
    1)清除预设表filter中所有规则链中的规则。
    # iptables -F
    2)清除预设表filter中使用者自定链中的规则。
    #iptables -X
    #iptables -Z
    2、设置链的默认策略。一般有两种方法。
    1)首先允许所有的包,然后再禁止有危险的包通过放火墙。
    #iptables -P INPUT ACCEPT
    #iptables -P OUTPUT ACCEPT
    #iptables -P FORWARD ACCEPT
    2)首先禁止所有的包,然后根据需要的服务允许特定的包通过防火墙。
    #iptables -P INPUT DROP
    #iptables -P OUTPUT DROP
    #iptables -P FORWARD DROP
    3、列出表/链中的所有规则。默认只列出filter表。
    #iptables -L
    4、向链中添加规则。下面的语句用于开放网络接口:
    #iptables -A INPUT -i lo -j ACCEPT
    #iptables -A OUTPUT -o lo -j ACCEPT
    #iptables -A INPUT -i eth0 -j ACEPT
    #iptables -A OUTPUT -o eth1 -j ACCEPT
    #iptables -A FORWARD -i eth1 -j ACCEPT
    #iptables -A FORWARD -0 eth1 -j ACCEPT
    注意:由于本地进程不会经过FORWARD链,因此回环接口lo只在INPUT和OUTPUT两个链上作用。
    5、使用者自定义链。
    #iptables -N custom
    #iptables -A custom -s 0/0 -d 0/0 -p icmp -j DROP
    #iptables -A INPUT -s 0/0 -d 0/0 -j DROP
    二、设置基本的规则匹配
    1、指定协议匹配。
    1)匹配指定协议。
    #iptables -A INPUT -p tcp
    2)匹配指定协议之外的所有协议。
    #iptables -A INPUT -p !tcp
    2、指定地址匹配。
    1)指定匹配的主机。
    #iptables -A INPUT -s 192.168.0.18
    2)指定匹配的网络。
    #iptables -A INPUT -s 192.168.2.0/24
    3)匹配指定主机之外的地址。
    #iptables -A FORWARD -s !192.168.0.19
    4)匹配指定网络之外的网络。
    #iptables -A FORWARD -s ! 192.168.3.0/24
    3、指定网络接口匹配。
    1)指定单一的网络接口匹配。
    #iptables -A INPUT -i eth0
    #iptables -A FORWARD -o eth0
    2)指定同类型的网络接口匹配。
    #iptables -A FORWARD -o ppp+
    4、指定端口匹配。
    1)指定单一端口匹配。
    #iptables -A INPUT -p tcp --sport www
    #iptables -A INPUT -p udp –dport 53
    2)匹配指定端口之外的端口。
    #iptables -A INPUT -p tcp –dport !22
    3)匹配端口范围。
    #iptables -A INPUT -p tcp –sport 22:80
    4)匹配ICMP端口和ICMP类型。
    #iptables -A INOUT -p icmp –icimp-type 8
    5)指定ip碎片。

    个网络接口都有一个MTU(最大传输单元),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数据包
    (称为ip碎片)来传输,而接受方则对这些ip碎片再进行重组以还原整个包。这样会导致一个问题:当系统将大数据包划分成ip碎片传输时,第一个碎片含有
    完整的包头信息(IP+TCP、UDP和ICMP),但是后续的碎片只有包头的部分信息(如源地址、目的地址)。因此,检查后面的ip碎片的头部(象有
    TCP、UDP和ICMP一样)是不可能的。假如有这样的一条规则:
    #iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 –dport 80 -j ACCEPT
    并且这时的FORWARD的policy为DROP时,系统只会让第一个ip碎片通过,而余下的碎片因为包头信息不完整而无法通过。可以通过—fragment/-f 选项来指定第二个及以后的ip碎片解决上述问题。
    #iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
    注意现在有许多进行ip碎片攻击的实例,如DoS攻击,因此允许ip碎片通过是有安全隐患的,对于这一点可以采用iptables的匹配扩展来进行限制。
    三、设置扩展的规则匹配(举例已忽略目标动作)
    1、多端口匹配。
    1)匹配多个源端口。
    #iptables -A INPUT -p tcp -m multiport –sport 22,53,80,110
    2)匹配多个目的端口。
    #iptables -A INPUT -p tcp -m multiport –dpoort 22,53,80
    3)匹配多端口(无论是源端口还是目的端口)
    #iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
    2、指定TCP匹配扩展
    使用 –tcp-flags 选项可以根据tcp包的标志位进行过滤。
    #iptables -A INPUT -p tcp –tcp-flags SYN,FIN,ACK SYN
    #iptables -A FROWARD -p tcp –tcp-flags ALL SYN,ACK
    上实例中第一个表示SYN、ACK、FIN的标志都检查,但是只有SYN匹配。第二个表示ALL(SYN,ACK,FIN,RST,URG,PSH)的标志都检查,但是只有设置了SYN和ACK的匹配。
    #iptables -A FORWARD -p tcp --syn
    选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。
    3、limit速率匹配扩展。
    1)指定单位时间内允许通过的数据包个数,单位时间可以是/second、/minute、/hour、/day或使用第一个子母。
    #iptables -A INPUT -m limit --limit 300/hour
    2 )指定触发事件的阀值。
    #iptables -A INPUT -m limit –limit-burst 10
    用来比对一次同时涌入的封包是否超过10个,超过此上限的包将直接丢弃。
    3)同时指定速率限制和触发阀值。
    #iptables -A INPUT -p icmp -m limit –-limit 3/m –limit-burst 3
    表示每分钟允许的最大包数量为限制速率(本例为3)加上当前的触发阀值burst数。任何情况下,都可保证3个数据包通过,触发阀值burst相当于允许额外的包数量。
    4)基于状态的匹配扩展(连接跟踪)
    每个网络连接包括以下信息:源地址、目标地址、源端口、目的端口,称为套接字对(socket pairs);协议类型、连接状态(TCP协议)
    和超时时间等。防火墙把这些信息称为状态(stateful)。状态包过滤防火墙能在内存中维护一个跟踪状态的表,比简单包过滤防火墙具有更大的安全性,命令格式如下:
    iptables -m state –-state [!]state [,state,state,state]
    其中,state表是一个逗号分割的列表,用来指定连接状态,4种:
    >NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
    >RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:
    FTP的数据传输连接和控制连接之间就是RELATED关系。
    >ESTABLISHED:该包属于某个已经建立的连接。
    >INVALID:该包不匹配于任何连接,通常这些包被DROP。
    例如:
    (1)在INPUT链添加一条规则,匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。
    #iptables -A INPUT -m state –state RELATED,ESTABLISHED
    (2)在INPUT链链添加一条规则,匹配所有从非eth0接口来的连接请求包。
    #iptables -A INPUT -m state -–state NEW -i !eth0
    又如,对于ftp连接可以使用下面的连接跟踪:
    (1)被动(Passive)ftp连接模式。
    #iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
    #iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m
    state -–state ESTABLISHED,RELATED -j ACCEPT
    (2)主动(Active)ftp连接模式
    #iptables -A INNPUT -p tcp --sport 20 -m state –-state ESTABLISHED,RELATED -j ACCEPT
    #iptables -A OUTPUT -p tcp –OUTPUT -p tcp –dport 20 -m state --state ESTABLISHED -j ACCEPT

    Linux 关闭端口

    iptable

    sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
    sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"   
    kill
    kill -9 PID" (PID:进程号)

         1)通过iptables工具将该端口禁掉,如:  
         2)或者关掉对应的应用程序,则端口就自然关闭了

    Linux Kill

         使用kill关闭进程使用的-9,下面介绍一下kill的使用, kill 实际的实际作用是给进程发信号(signal), 其常用格式为

    Kill

    kill -sig pid
     

         这里的 sig 可以是信号对应的数字,也可以是信号名,比如你如果用 kill -9 pid 实际是发 9号信号给进城,9对应的信号名是 KILL。所以 kill -9 等价于 kill -KILL pid。 常用的几个信号是

    Kill

    INT  这个就是你在bash下面用Ctrl+C 来结束一个程序时,bash会向进程发送这个信号,默认的,进程收到这个程序会结束。 你可以用 kill -INT pid 来发这个信号。
    QUIT  这个是你在bash下用 Ctrl+\ 来结束程序时,发的信号,进程默认受到这个信号后也是结束 
    KILL  这个信号之所以被称为“强杀”,就是因为无法改变进程收到这个信号后所执行的动作,进程只能退出。(前面说的两个信号,虽然默认是退出,但是应用程序自己可以通过signal系统调用来修改成其他动作,比如忽略那两个信号等动作)

         更多信息,可以man kill,有时间学习一下linux的信号机制,信号相关的系统调用等。

    LINUX 修改端口 以SSH默认22端口为例

      首先修改配置文件  vi /etc/ssh/sshd_config

      找到#Port 22一段,这里是标识默认使用22端口,修改为如下:

      Port 22  Port 50000  然后保存退出

      执行/etc/init.d/sshd restart  这样SSH端口将同时工作与22和50000上。

      现在编辑防火墙配置:vi /etc/sysconfig/iptables

      启用50000端口。  执行/etc/init.d/iptables restart

      现在请使用ssh工具连接50000端口,来测试是否成功。如果连接成功了,则再次编辑sshd_config的设置,将里边的Port22删除,即可。

      之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。

     

     



    1)先添加一个维护账号:msa

    2)然后su - msa

    3)ssh-keygen -t rsa
    指定密钥路径和输入口令之后,即在/home/msa/.ssh/中生成公钥和私钥:id_rsa id_rsa.pub

    4)cat id_rsa.pub >> authorized_keys
    至于为什么要生成这个文件,因为sshd_config里面写的就是这个。
    然后chmod 400 authorized_keys,稍微保护一下。

    5)用psftp把把id_rsa拉回本地,然后把服务器上的id_rsa和id_rsa.pub干掉

    6)配置/etc/ssh/sshd_config
    Protocol 2
    ServerKeyBits 1024
    PermitRootLogin no  #禁止root登录而已,与本文无关,加上安全些

    #以下三行没什么要改的,把默认的#注释去掉就行了
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile    .ssh/authorized_keys

    PasswordAuthentication no
    PermitEmptyPasswords no

    7)重启sshd
    /sbin/service sshd restart

    8)转换证书格式,迁就一下putty
    运行puttygen,转换id_rsa为putty的ppk证书文件

    9)配置putty登录
    在connection--SSH--Auth中,点击Browse,选择刚刚转换好的证书。
    然后在connection-Data填写一下auto login username,例如我的是msa
    在session中填写服务器的IP地址,高兴的话可以save一下

    10)解决一点小麻烦
    做到这一步的时候,很可能会空欢喜一场,此时就兴冲冲的登录,没准登不进去:
    No supported authentication methods available

    这时可以修改一下sshd_config,把
    PasswordAuthentication no临时改为:
    PasswordAuthentication yes 并重启sshd

    这样可以登录成功,退出登录后,再重新把PasswordAuthentication的值改为no,重启sshd。
    以后登录就会正常的询问你密钥文件的密码了,答对了就能高高兴兴的登进去。

    至于psftp命令,加上个-i参数,指定证书文件路径就行了。

    展开全文
  • linux查看端口请求数量

    千次阅读 2017-10-16 20:49:42
    转自:http://blog.csdn.net/zdwzzu2006/article/details/7713596服务器上的一些统计数据:1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,...
  • 使用Telnet访问端口发送数据

    千次阅读 2019-11-14 11:33:00
    什么是Telnet? 对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协议,但是对于入侵者而言,Telnet只是一种远程登录的工具。... telnet就是查看某个端口是否可访问。我们在搞开...
  • Socket使用Linux SSH代理发送数据

    千次阅读 2012-05-10 11:24:57
    Socket使用Linux SSH代理发送数据 写这篇文章是为了解决项目开发中,在处理第三方接口时,在本地开发调试的问题。 场景: 某应用需要调用发送短信接口发送短信(或调用其他第三方接口),但是这些接口...
  • Linux网络端口

    千次阅读 2017-06-18 20:25:54
    Linux端口个数 端口分类 网络常用端口介绍
  • linux如何查看某个端口接收到的数据

    千次阅读 2018-12-26 21:30:00
    用这个可以按照端口查看详细的收发数据   sudo tcpdump -A -s 0 'tcp port 11883 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'sudo tcpdump ...
  • Linux C语言下UDP实现指定端口收发数据实例
  • Linux_Linux命令_nc 监听端口/从端口获取数据

    万次阅读 多人点赞 2016-08-16 11:17:22
    因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种...
  • Linux系统监视端口上收到的数据

    千次阅读 2017-11-29 10:58:23
    转载自:linux如何查看某个端口接收到的数据 方法一:用tcpdump命令 sudo /usr/sbin/tcpdump -s 0 -X 'tcp dst port 80'把port改为你想要监听的端口即可在linux下监听某个端口数据。但是打印出来的数据不是很人性...
  • Linux查看某个端口的连接数

    千次阅读 2018-08-11 10:47:09
    Linux查看某个端口的连接数 一、查看哪些IP连接本机 netstat -an 二、查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计httpd协议连接数 ps -ef | grep httpd | ...
  • Linux端口状态查看、启用和关闭

    万次阅读 2014-01-08 15:28:50
    Linux下面貌似没有什么直接开启或者关闭端口的命令,因为若仅仅只是开启了端口而不把它与进程相联系的话,端口的开启与关闭就显得毫无意义了(开了端口没有程序处理进来的数据)。你应该知道,端口不是独立存在的...
  • Linux查看机器开放的端口

    千次阅读 2013-04-19 21:08:40
    数据资料来自互联网,个人收集总结...我用这个工具的目的是查看自己服务器RHEL5所开放的端口,发现没有必要的端口就关闭,并不是用来扫描别的机器的端口……善哉善哉…… nmap是个跨平台的工具,在Linux、Linu
  • linux端口详解

    千次阅读 2016-08-26 16:08:12
    初学linux网络编程,从网上看到关于端口的整理,转过来以备查阅: 0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 2|管理实用程序 3|压缩进程 5|远程作业登录 7|回显 9|丢弃 11|在线用户 13...
  • linux 常用端口

    千次阅读 2017-05-03 15:32:50
    下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方...
  • linux开启端口命令 iptables 打开 查看

    万次阅读 2017-09-22 09:57:35
    打开指定端口:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #80为指定端口 将更改进行保存:/etc/rc.d/init.d/iptables save 或直接在/etc/sysconfig/iptables中增加一行: -A INPUT -m state --...
  • 查看是否有数据从某端口发出 LINUX&WIN:  telnet 10.100.20.137 7780 #查看10.100.20.137服务器的7780是否有数据发出 WIN,另外的方法:  winshark 查看是否有数据发往某端口 ...
  • linux端口扫描

    千次阅读 2012-05-17 18:05:36
    端口扫描技术的基本原理 对于计算机来说,一个端口就是...从技术原理上来说,端口扫描指向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是否打开。就可以知道端口提供
  • Linux 通过命令发送udp 数据

    千次阅读 2015-03-22 22:44:00
    如果往本地UDP端口發送數據,那麼可以使用以下命令: echo “hello” > /dev/udp/192.168.1.81/5060 意思是往本地192.168.1.81的5060端口發送數據包hello。 如果往遠程UDP端口發送數據,那麼可以使用...
  • linux常用端口对照

    千次阅读 2013-08-10 15:57:29
    著名端口 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给...
  • linux开放端口--防火墙iptables

    千次阅读 2017-08-27 10:39:49
    1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。 下面是命令实现:iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP再用命令 iptables -L -n 查看 是否设置好, 好看到全部 ...
  • 普通udp通信,客户端在发送完数据后,只需要在相同socket上,recvfrom即可 ...但是bind必须是在通过这个socket发送数据前绑定,在发送数据后再bind会失败。 下面给出代码: #define SEND_PORT 8000
  • linux 端口转发

    万次阅读 2011-08-30 10:21:41
    linux端口映射  ssh -C -g root@127.0.0.1 -L 5000:61.235.139.123:5000 输入机器的root密码 后台执行:ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139
  • Linux端口详解

    千次阅读 2016-03-11 16:56:08
    以下内容摘自网络,来源不清了,做个备份吧: 0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 ...20|FTP文件传输协议(默认数据口)  21|FTP文件传输协议(控制) 22|SSH远程登录协
  • Linux网桥端口的arp问题

    千次阅读 2013-03-16 10:23:53
    Linux的brctl addif命令可以将一个接口加入到既有的网桥中,接下来,这个接口就成了brport,属于一个从属的接口,然而你还是可以看到它的,并且可以为它添加IP地址,然后route命令会显示出它的新添加的IP地址的链路...
  • linux端口详解大全

    千次阅读 2017-02-09 11:36:13
    0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 ...20|FTP文件传输协议(默认数据口)  21|FTP文件传输协议(控制) 22|SSH远程登录协议 23|telnet(终端仿真协议),木马Tiny Telnet Ser

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,264
精华内容 74,905
关键字:

linux查看端口发送数据没有

linux 订阅