Home  >  Article  >  Operation and Maintenance  >  Software firewall iptables under Linux - definition and deletion of rules

Software firewall iptables under Linux - definition and deletion of rules

齐天大圣
齐天大圣Original
2020-11-18 15:22:532013browse

The introduction to ipitables firewall, as well as how to view rules and cleanup rules, etc., have been described in a previous article. Today, here is a demonstration of how to formulate firewall rules. Because at work, we mainly formulate rules for the filter chain, so here we mainly use the fitler chain for demonstration.

Preparation work

Before formulating rules, we first close the firewalld service, enable the iptables service, and then clear the existing rules.

# systemctl stop firewalld
# systemctl start iptables
# iptables -F
# iptables -X
# iptables -Z

Add a new rule chain

There are many options for adding a rule chain to iptables. Let’s look at the basic usage below:

iptables [-t tables] -A|I 链名 [-i|o 网络接口] [-m state] [--state 数据包状态] \
> [-p 网络协议]  [-s 源地址 --sport 端口范围] [-d 目标地址 --dport 端口范围] \
> -j [ACCEPT|DROP|REJECT]

Options and parameters:

  • -A|I chain name A means to add the rule after the existing rule, while I is to insert the rule at the front

  • -i|o Network interface i represents the network interface through which the data packet enters, and needs to be used in conjunction with the INPUT or PREROUTING chain; o represents the interface through which the data packet goes out, and needs to be used in conjunction with the OUTPUT chain

  • -p Network protocols Common ones include tcp, upd, icmp and all

  • -m state The status of the data packet

  • --state packet status Common statuses include INVALID (invalid packet), ESTABLISHED (successfully connected status), NEW (newly established packet), RELATED (new connection associated with existing connection)

  • -s Source address The address can be an IP address, such as 192.168.1.110 or network address 192.168.1.0/24

  • -d Destination address

  • -j is followed by operations, common ones are ACCEPT (accept), DROP (drop), REJECT (reject)

Formulation of rules for IP, network, and network card interfaces

Below, several rule chain examples are given. We allow data sent from 192.168.1.110 and reject data sent from 192.168.1.111.

# iptables -A INPUT -s 192.168.1.110 -j ACCEPT
# iptables -I INPUT -s 192.168.1.111 -j DROP

# iptables -vnL
Chain INPUT (policy ACCEPT 33 packets, 3048 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 18 packets, 1844 bytes)
 pkts bytes target     prot opt in     out     source               destination

Allow 192.168.1.0/24 network address access

# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# iptables -vnL
Chain INPUT (policy ACCEPT 29 packets, 2328 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.0/24       0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 15 packets, 1460 bytes)
 pkts bytes target     prot opt in     out     source               destination

Think about a question, whether the data packet of 192.168.1.111 will be accepted or rejected. Judging from the first rule of INPUT, it will be rejected, but judging from the last rule, it will be accepted. The answer is that it will be rejected. When one of the rules is met, the following rules will not be followed, so the order of the rule chain is also very important.

Continue to look at the case: as long as it is the local loopback address lo, it is allowed

# iptables -A INPUT -i lo -j ACCEPT

The rules for the port

will enter Block all local data packets on port 21

# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

Open all ports between 1024 and 65534. You can use port number: port number to represent a continuous port number

# iptables -A INPUT -i eth0 -p tcp --dport 1024:65534 -j ACCEPT

The following Look at the two comprehensive rules

The 3306 port of this machine is not open to the network 192.168.1.0/24.

The local ssh service does not accept data packets from the 1024:65535 port of the network 192.168.1.0/24

# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3306 -j DROP
# iptables -A INPUT -i etc0 -p tcp -s 192.168.1.0/24 \
> --sport 1024:65535 --dport 22 -j DROP

Rules for the connection status of data packets Formulate

Common statuses of data packets include INVALID (invalid data packet), ESTABLISHED (successfully connected status), NEW (newly established data packet), RELATED (new connection and associated with an existing connection).

Accept all data packets for ESTABLISHED and RELATED status, discard all data packets for INVALID status

# iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
# iptables -A INPUT -m state --state INVALID -j DROP

Delete rule chain

Deleting a rule chain is basically the same as adding a rule chain, except that -A can be replaced with -D. Let's delete a few rules together.

# iptables-save
# Generated by iptables-save v1.4.21 on Sun Nov 15 22:36:41 2020
*filter
:INPUT ACCEPT [4:1920]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16:1380]
-A INPUT -s 192.168.1.111/32 -j DROP
-A INPUT -s 192.168.1.110/32 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
……

# iptables -t filter -D INPUT -s 192.168.1.111/32 -j DROP
# iptables -D INPUT -s 192.168.1.110/32 -j ACCEPT

Note: The above settings for iptables will only be saved in memory. These settings will disappear after the system is restarted after the service is restarted. So, as long as you don't block yourself from the outside, please practice it

If you want to save the rules, please enter /usr/libexec/iptables/iptables.init save to save.

Related recommendations: "linux video tutorial"

The above is the detailed content of Software firewall iptables under Linux - definition and deletion of rules. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn