2018-10-04 UFW 방화벽 Ubuntu 16.04에서 구성

8200 단어

소개


UFW 또는 Uncomplicated Firewall은 iptables의 인터페이스로 방화벽을 설정하는 과정을 간소화하기 위한 것이다.

선결 조건


가정:
  • sudo 비root 사용자가 있는 Ubuntu 16.04 서버를 사용할 수 있습니다

  • UFW는 기본적으로 Ubuntu에 설치됩니다.만약 어떤 이유로 마운트 해제되었다면, sudo apt-get install ufw를 사용할 수 있습니다.

    1단계 - IPv6 및 UFW 사용(옵션)


    Ubuntu 서버에서 IPv6를 사용하는 경우 IPv4를 제외한 IPv6의 방화벽 규칙을 관리하도록 UFW가 IPv6를 지원하도록 구성되어 있는지 확인합니다.UFW 구성을 열려면 다음과 같이 하십시오.
    sudo vim /etc/default/ufw
    

    그런 다음 IPV6 값이 yes인지 확인합니다.
    ...
    IPV6=yes
    ...
    

    파일을 저장하고 닫습니다.이제 UFW가 활성화되면 IPv4 및 IPv6 방화벽 규칙에 쓰기로 구성됩니다.그러나 UFW를 사용하기 전에 방화벽이 SSH를 통해 연결할 수 있도록 구성되어 있는지 확인합니다.기본 정책을 설정하겠습니다.

    2단계 - 기본 정책 설정


    방화벽을 사용하기 시작하면 먼저 정의해야 할 규칙은 기본 정책입니다.이 규칙들은 다른 규칙과 명확하게 일치하지 않는 유량을 어떻게 처리하는지 제어한다.기본적으로 UFW는 모든 전송 연결을 거부하고 모든 전송 연결을 허용하도록 설정되어 있습니다.이것은 누군가가 서버에 도달하려고 시도하면 연결할 수 없고, 서버 내의 모든 응용 프로그램은 외부에 도달할 수 있다는 것을 의미한다.
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    

    이 명령들은 전송을 거부하고 연결을 허용하는 기본값을 설정합니다.단독 방화벽 기본값은 개인용 컴퓨터에 사용할 수 있지만 서버는 외부 사용자의 전송 요청에 응답해야 합니다.

    3단계 - SSH 연결 허용


    만약 우리가 지금 UFW 방화벽을 사용한다면, 그것은 모든 전송된 연결을 거부할 것이다.이것은 서버가 이러한 유형의 요청에 응답하기를 원한다면 SSH 또는 HTTP 연결 같은 합법적인 전송을 허용하는 규칙을 만들어야 한다는 것을 의미합니다.SSH 연결을 허용하도록 서버를 구성하려면 다음 명령을 사용합니다.
    sudo ufw allow ssh
    

    이것은 기본적으로 SSH 데몬이 감청하는 포트인 포트 22의 모든 연결을 허용하는 방화벽 규칙을 만들 것입니다.UFW는 SSH와 일부 다른 서비스 이름이/etc/services 파일의/etc/services로 나열되어 있기 때문에 무엇을 의미하는지 알고 있습니다.그러나 우리는 실제로 서비스 이름이 아닌 포트를 지정함으로써 등효 규칙을 작성할 수 있다.예를 들어, 이 명령의 작동 방식은 다음과 같습니다.
    sudo ufw allow 22
    

    SSH 데몬을 다른 포트를 사용하도록 구성한 경우 적절한 포트를 지정해야 합니다.예를 들어, SSH 서버가 포트 2222를 감청하고 있는 경우 이 명령을 사용하여 포트의 연결을 허용할 수 있습니다.
    sudo ufw allow 2222
    

    현재 방화벽은 SSH 연결을 허용하도록 설정되어 있습니다. 사용할 수 있습니다.

    4단계 - UFW 활성화


    UFW를 활성화하려면 다음 명령을 사용합니다.
    sudo ufw enable
    

    이 명령이 기존 SSH 연결을 중단할 수 있다는 경고가 표시됩니다.SSH 연결을 허용하는 방화벽 규칙이 설정되어 있으므로 계속해야 합니다.y로 알림에 응답합니다.방화벽이 현재 활동 중이다.설정된 규칙을 보기 위해sudoufwstatusverbose 명령을 마음대로 실행합니다.

    5단계 - 추가 연결 허용


    서버가 응답해야 하는 모든 다른 연결을 허용해야 합니다.허용해야 할 연결은 사용자의 특정한 요구에 달려 있습니다.다행히도, 서비스 이름이나 포트에 기반한 연결을 허용하는 규칙을 어떻게 만드는지 알고 있습니다.우리는 이미 포트 22에서 SSH를 사용했다.다음 작업을 수행할 수도 있습니다.
  • 포트 80의 HTTP. 암호화되지 않은 웹 서버에서 사용됩니다. sudo ufw allow http 또는 sudo ufw allow 80을 사용합니다
  • HTTPS 포트 443, 암호화된 웹 서버에서 사용됩니다. sudo ufw allow https 또는 sudo ufw allow 443을 사용합니다
  • FTP는 포트 21에서 암호화되지 않은 파일 전송에 사용됩니다. (사용하지 말아야 할 수도 있습니다.) sudo ufw allow ftp 또는 sudo ufw allow 21/tcp를 사용합니다

  • 지정한 포트나 알려진 서비스 외에 다른 연결을 허용하는 몇 가지 방법이 있습니다.

    특정 포트 범위


    UFW를 사용하여 포트 범위를 지정할 수 있습니다.일부 응용 프로그램은 단일 포트가 아닌 여러 포트를 사용합니다.예를 들어, 포트 6000-6007 X11 연결을 허용하려면 다음 명령을 사용합니다.
    sudo ufw allow 6000:6007/tcp
    sudo ufw allow 6000:6007/udp
    

    UFW를 사용하여 포트 범위를 지정할 때 규칙이 적용될 프로토콜 (tcp 또는udp) 을 지정해야 합니다.우리는 이전에 언급한 적이 없다. 왜냐하면 지정된 협의가 없기 때문에 두 개의 협의만 허용한다. 이것은 대부분의 경우 OK이다.

    특정 IP 주소


    UFW를 사용할 때 IP 주소도 지정할 수 있습니다.예를 들어, 특정 IP 주소(예: 작업 또는 가정 IP 주소가 15.15.15.51)를 허용하려면 from을 지정하고 IP 주소를 지정해야 합니다.
    sudo ufw allow from 15.15.15.51
    

    또한 toany port 뒤에 있는 포트 번호 toany port를 추가하여 IP 주소 연결을 허용하는 특정 포트를 지정할 수 있습니다.예를 들어, 15.15.15.51을 포트 22(SSH)에 연결할 수 있도록 하려면 다음 명령을 사용합니다.
    sudo ufw allow from 15.15.15.51 to any port 22
    

    서브넷


    IP 주소의 서브넷을 허용하려면 CIDR 표현을 사용하여 네트워크 마스크를 지정할 수 있습니다.예를 들어, 모든 IP 주소 범위를 15.15.1에서 15.15.15.254로 허용하려면 다음 명령을 사용할 수 있습니다.
    sudo ufw allow from 15.15.15.0/24
    

    마찬가지로 서브넷 15.15.0/24에 연결할 수 있는 대상 포트를 지정할 수도 있습니다.다시 한 번 포트 22(SSH)를 예로 들겠습니다.
    sudo ufw allow from 15.15.15.0/24 to any port 22
    sudo ufw allow proto tcp from 46.102.170.86/32 to any port 22
    

    특정 네트워크 인터페이스에 연결


    특정 네트워크 인터페이스에만 적용되는 방화벽 규칙을 만들려면 "allow in on"을 지정하고 네트워크 인터페이스의 이름을 지정하면 됩니다.계속하기 전에 네트워크 인터페이스를 찾아야 할 수도 있습니다.이렇게 하려면 다음 명령을 사용합니다.
    ip addr xxxx
     ...
    eth0:  mtu 1500 qdisc pfifo_fast state  
    ...
     eth1:  mtu 1500 qdisc noop state DOWN group default
    ...
    

    강조 표시된 출력은 네트워크 인터페이스 이름을 나타냅니다.그것들은 통상적으로 eth0이나 eth1과 같은 이름으로 명명된다.따라서 서버에 eth0이라는 공공 네트워크 인터페이스가 있으면 이 명령을 사용하여 HTTP 트래픽(포트 80)을 허용할 수 있습니다.
    sudo ufw allow in on eth0 to any port 80
    

    이렇게 하면 서버가 공용 인터넷에서 HTTP 요청을 받을 수 있습니다.또는 MySQL 데이터베이스 서버(포트 3306)에서 전용 네트워크 인터페이스 eth1의 eth1을 수신하기를 원한다면 다음 명령을 사용할 수 있습니다.
    sudo ufw allow in on eth1 to any port 3306
    

    이렇게 하면 전용 네트워크의 다른 서버를 MySQL 데이터베이스에 연결할 수 있습니다.

    6단계 - 연결 거부


    전송 연결에 대한 기본 정책을 변경하지 않은 경우 UFW는 모든 전송 연결을 거부하도록 구성됩니다.일반적으로 특정 포트와 IP 주소가 통과할 수 있도록 명확하게 허용하는 규칙을 만들어야 하기 때문에 보안 방화벽 정책을 만드는 과정을 간소화할 수 있다.그러나 때때로 원본 IP 주소나 서브넷에 따라 특정한 연결을 거부하기를 원할 수도 있습니다. 서버가 공격을 받고 있다는 것을 알고 있기 때문일 수도 있습니다.또한 기본 전송 정책을 허용으로 변경하려면 (보안에 권장되지 않음) 연결을 허용하지 않으려는 서비스나 IP 주소에 대한 거부 규칙을 만들어야 합니다.거부 규칙을 작성하려면 상기 명령을 사용하여allow를deny로 바꿀 수 있습니다.예를 들어, HTTP 연결을 거부하려면 다음 명령을 사용할 수 있습니다.
    sudo ufw deny http
    

    또는 15.15.15.51의 모든 연결을 거부하려면 이 명령을 사용할 수 있습니다.
    sudo ufw deny from 15.15.15.51
    

    이제 규칙을 어떻게 삭제하는지 봅시다.

    7단계 - 규칙 삭제


    방화벽 규칙을 삭제하는 방법과 그것을 만드는 방법을 아는 것도 중요하다.삭제할 규칙을 지정하는 방법은 두 가지가 있는데 그것이 바로 규칙 번호나 실제 규칙(규칙을 만들 때 지정한 규칙과 유사)이다.UFW의 초보자라면 삭제할 실제 규칙을 작성하는 것보다 규칙 번호 매기기 방법부터 시작할 것입니다.

    규칙에 따라 번호를 매기다


    규칙 번호를 사용하여 방화벽 규칙을 삭제하려면 먼저 방화벽 규칙 목록을 가져옵니다.UFW 상태 명령에는 각 규칙 옆의 숫자를 다음과 같이 표시할 수 있는 옵션이 있습니다.
    sudo ufw status numbered
    
    Status: active
    
     To                         Action      From
    
     --                         ------      ----
    
    [ 1] 22                         ALLOW IN    15.15.15.0/24
    [ 2] 80                         ALLOW IN    Anywhere
    

    규칙 2를 삭제하고 포트 80(HTTP) 연결을 허용하기로 결정한 경우 다음과 같이 UFW 삭제 명령에서 지정할 수 있습니다.
    sudo ufw delete 2
    

    그러면 확인 프롬프트가 표시되고 HTTP 연결을 허용하는 규칙 2가 삭제됩니다.IPv6가 활성화되어 있으면 해당 IPv6 규칙도 삭제해야 합니다.

    실제 규칙에 따르다


    규칙 번호의 대체 방법은 삭제할 실제 규칙을 지정하는 것입니다.예를 들어, allow http 규칙을 삭제하려면 다음과 같이 쓸 수 있습니다.
    sudo ufw delete allow http
    

    서비스 이름에 따라 규칙을 지정하지 않고 allow 80을 통해 규칙을 지정할 수 있습니다.
    sudo ufw delete allow 80
    

    이 메서드는 IPv4 및 IPv6 규칙을 삭제합니다(있는 경우).

    8단계 - UFW 상태 및 규칙 확인


    언제든지 이 명령을 사용하여 UFW의 상태를 확인할 수 있습니다.
    sudo ufw status verbose
    

    UFW가 비활성화되면 기본적으로 다음과 같이 표시됩니다.
    Status: inactive
    

    UFW가 활성화되어 있으면 3단계에 따라 출력이 활성화되어 모든 설정의 규칙이 나열됩니다.예를 들어, 방화벽이 SSH(포트 22)를 어디에서나 연결할 수 있도록 설정되어 있으면 다음과 같이 출력할 수 있습니다.
    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), disabled (routed)
    New profiles: skip
    To                         Action      From
    --                         ------      ----
    22/tcp                     ALLOW IN    Anywhere
    

    UFW에서 방화벽을 구성하는 방법을 확인하려면 status 명령을 사용합니다.

    9단계 - UFW 비활성화 또는 재설정(옵션)


    UFW를 사용하지 않으려면 이 명령을 사용하여 비활성화할 수 있습니다.
    sudo ufw disable
    

    UFW를 사용하여 생성된 규칙은 더 이상 활성화되지 않습니다.나중에 활성화해야 한다면, 항상 sudo ufw enable를 실행할 수 있습니다.UFW 규칙이 구성되어 있지만 다시 시작하려면 reset 명령을 사용할 수 있습니다.
    sudo ufw reset
    

    그러면 UFW가 비활성화되고 이전에 정의된 규칙이 삭제됩니다.언제든지 기본 정책을 수정하면 기본 정책이 원래 설정으로 변경되지 않습니다.이것은 너에게 새로운 시작과 UFW를 주어야 한다.

    결론


    이제 방화벽이 SSH 연결을 허용하도록 구성되어야 합니다.서버가 정상적으로 작동하고 안전할 수 있도록 서버의 다른 전송 연결을 허용하는 동시에 불필요한 연결을 제한하십시오.

    어떻게 ping을 허용하고 금지합니까

        sudo vim /etc/ufw/before.rules
    
         PING
    
        -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
    
         ping
    
        -A ufw-before-input -p icmp --icmp-type echo-request -j DROP
    
        ping
    -A ufw-before-input -p icmp --icmp-type echo-request –s xxx.xx.xx.xx -m state --state ESTABLISHED -j ACCEPT
    
        sudo /etc/init.d/ufw force-reload
    

    UFW를 사용한 후 가상 컴퓨터가 PING가 통하지 않을 경우, ufw가 ip 전송을 허용하지 않아서 그런지, 편집/etc/default/ufw는 ip 전송을 허용합니다.
    vim /etc/default/ufw
    
    DEFAULT_FORWARD_POLICY="ACCEPT"
    

    좋은 웹페이지 즐겨찾기