우분투에서 간단한 방화벽을 설정하는 방법?


18

누군가 우분투에서 간단한 방화벽을 설정하는 방법 (콘솔 만 사용)을 구성 예제로 간단한 단계를 제공 할 수 있습니까? ssh, http 및 https 액세스 만 허용해야합니다.


네트워크 방화벽 또는 시스템 방화벽에 대해 이야기하고 있습니까?
브래드 길버트

네트워크 방화벽은 무엇을 의미합니까? 라우터의 방화벽입니까? 그렇다면 시스템 방화벽에 대한 이야기였습니다.
klew

답변:


20

sudo ufw 기본 거부

sudo ufw http 허용

sudo ufw 허용 https

sudo ufw 허용 ssh

sudo ufw 활성화


ssh를 통해이 명령을 순서대로 호출하면 연결이 끊어 집니까?
klew

나는 그것을 믿지 않지만 확인해야합니다. 다시 시작하는 동안에도 상태가 유지되므로 한 번만 수행하면됩니다.
Nerdfest 2009

이 컴퓨터와 가까이있을 때 확인하겠습니다 ...
klew

스크립트에 넣고 실행할 수 있으며 연결이 끊어 지더라도 나중에 다시 연결할 수 있습니다. 스크립트에 대해서는 아래 답변을 참조하십시오.
Hamish Downer

2
이전 의견이 맞습니다. 기본적으로 위 스크립트의 첫 번째 명령을 마지막에 실행하십시오.
Nerdfest 2009

14

이 스크립트를 사용하십시오.

들어오는 ICMP (ping)를 허용할지 여부를 결정하십시오.

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT

8

다른 답변에 대한 의견에서 언급했듯이 ssh 포트를 허용하기 전에 연결을 끊기를 원하지 않습니다. 매뉴얼 페이지에서 :

"원격 관리

ufw enable을 실행하거나 initscript를 통해 ufw를 시작할 때 ufw는 체인을 플러시합니다. ufw가 일관된 상태를 유지할 수 있도록하려면 기존 연결 (예 : ssh)이 끊어 질 수 있습니다. ufw는 방화벽을 활성화하기 전에 규칙 추가를 지원하므로 관리자는 다음을 수행 할 수 있습니다.

ufw allow proto tcp from any to any port 22

'ufw enable'을 실행하기 전에 규칙은 여전히 ​​플러시되지만 방화벽을 활성화 한 후 ssh 포트가 열립니다. ufw가 '활성화'되면 ufw는 규칙을 추가하거나 제거 할 때 체인을 플러시하지 않습니다 (그러나 규칙을 수정하거나 기본 정책을 변경할 때). "

여기에 스크립트를 사용하여 설정하는 방법이 있습니다. 이 스크립트를 실행할 때 로그 아웃되지만 스크립트를 실행 한 후 ssh를 통해 다시 로그인 할 수 있습니다.

다음을 스크립트에 넣고 start-firewall.sh라고합니다.

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

그런 다음 실행 가능하게 만들고 실행하여 실행하십시오.

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

자세한 내용은 매뉴얼 페이지를 참조하십시오 .


2

스크립팅에 익숙해지면 iptables모든 방화벽 기능을 완전히 제어 할 수 있습니다. Firestarter만큼 친숙하지는 않지만 콘솔에서 nano/ vi편집자 와 함께 할 수 있습니다 . 이 튜토리얼 을 우분투를 대상으로 확인하십시오 .


1

Quicktables는 iptables 규칙을 배우는 데 도움이되었습니다. 스크립트를 실행하면 iptables 스크립트가 생성됩니다. 그러면 스크립트를 열고 질문에 의해 생성 된 관련 명령을 볼 수 있습니다. 훌륭한 학습 자료입니다.

불행히도 더 이상 유지되지 않습니다.

http://qtables.radom.org/


1

나는 firehol ( package )을 사용하는 것을 정말로 좋아 합니다 .

원하는 설정 규칙을 만들려면 / etc / default / firehol 파일을 편집하고 START_FIREHOL = YES를 변경해야합니다.

그리고 /etc/firehol/firehol.conf를 이렇게 보이게하고 싶을 것입니다.

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

Firehol의 가장 큰 장점 중 하나는 'try'명령입니다. ssh를 통해 연결된 곳에서 구성 파일을 조정하고 'firehol try'를 수행 할 수 있으며 변경 한 내용이 네트워크 액세스를 종료하면 firehol이 변경 사항을 되돌립니다. 변경 사항을 실제로 적용하려면 commit이라고 말해야합니다.


1
Firehol은 iptables 규칙을 조작하는 데 뛰어납니다. '$ firehol try' "방화벽을 활성화하지만 사용자가 commit이라는 단어를 입력 할 때까지 기다립니다.이 단어를 30 초 내에 입력하지 않으면 이전 방화벽이 복원됩니다."
Gareth 2016 년

Sooo 당신은 규칙을 추가 / 편집 / 제거하고 테스트 할 수 있습니다. SSH를 통해 원격 으로이 작업을 수행하면 자체 서버에서 잠기지 않습니다!
Gareth 2016 년



-1

sudo apt-get install firestarter

그런 다음 시스템-> 관리 메뉴를보십시오.


질문자는 콘솔 만 사용하려고합니다
Mikeage

아, 내 실수 또는. 관리자는 여전히 서버에 -X를 ssh하고 원격으로 firestarter를 실행할 수 있습니다.
spoulson 2009

1
ssh -X :)를 시작하려면 X 서버를 설치해야합니다.
klew

@ klew, ssh를 통해 X 응용 프로그램을 실행하기 위해 전체 X 서버를 설치할 필요가 없습니다. 여러 라이브러리가 필요하지만 모든 것이 필요하지는 않습니다. 최소한 xauth 및 xbase-clients 패키지 만 있으면됩니다.
Zoredache
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.