웹사이트 검색

Linux iptables 방화벽에 관한 13가지 인터뷰 질문


Tecmint 방문자를 자주 방문하는 Nishita Agarwal푸네의 개인 소유 호스팅 회사에서 진행한 취업 면접에 대한 자신의 경험(질문 및 답변)을 우리와 공유했습니다. , 인도. 그녀는 다양한 주제에 대해 많은 질문을 받았지만 그녀는 iptables의 전문가이며 iptables와 관련된 질문과 답변(그녀가 제공한)을 다른 사람들과 공유하고 싶었습니다. 가까운 시일 내에 인터뷰를 해주세요.

모든 질문과 답변은 니시타 아가왈의 기억을 바탕으로 다시 작성되었습니다.

"안녕하세요 친구! 제 이름은 니시타 아가르왈입니다. 저는 기술 학사 학위를 취득했습니다. 내 전문 분야는 UNIX이며 UNIX의 변형(BSD, Linux)은 처음 들었을 때부터 나를 매료시켰습니다. 저는 보관 분야에서 1년 이상의 경력을 갖고 있습니다. 나는 인도 푸네에 있는 호스팅 회사로 끝나는 직업 변경을 찾고 있었습니다. ”

제가 면접때 받았던 질문을 모아봤습니다. iptables와 관련된 질문과 답변만 기억을 토대로 정리했습니다. 이것이 면접을 해결하는 데 도움이 되기를 바랍니다.

1. Linux의 iptables와 방화벽에 대해 들어보셨나요? 그것들이 무엇인지, 어떤 용도로 사용되는지 아시나요?

답변: 저는 꽤 오랫동안 iptables를 사용해왔고 iptables와 방화벽에 대해 모두 알고 있습니다. Iptables는 대부분 C 프로그래밍 언어로 작성된 응용 프로그램이며 GNU General Public License에 따라 출시됩니다. 시스템 관리 관점에서 작성된 최신 안정 릴리스인 iptables 1.4.21.iptables는 UNIX와 유사한 운영 체제용 방화벽으로 간주될 수 있습니다. Strong>iptables/netfilter가 더 정확합니다. 관리자는 콘솔/GUI 프런트 엔드 도구를 통해 iptables와 상호 작용하여 사전 정의된 테이블에 방화벽 규칙을 추가하고 정의합니다. Netfilter는 필터링 작업을 수행하는 커널 내부에 구축된 모듈입니다.

FirewalldRHEL/CentOS 7에서 필터링 규칙의 최신 구현입니다(제가 알지 못하는 다른 배포판에 구현되었을 수도 있습니다). iptables 인터페이스를 대체하고 netfilter에 연결합니다.

2. iptables나 Linux 명령줄에 일종의 GUI 기반 프런트 엔드 도구를 사용해 보셨나요?

답변: GUI에서 Webmin을 활용하여 Shorewall과 같은 iptables용 GUI 기반 프런트 엔드 도구와 콘솔을 통해 iptables에 직접 액세스하는 도구를 모두 사용했지만.그리고 반드시 Linux 콘솔을 통해 iptables에 직접 액세스하면 사용자에게 더 높은 수준의 유연성과 백그라운드에서 무슨 일이 일어나고 있는지 더 잘 이해할 수 있는 엄청난 힘이 제공된다는 점을 인정합니다. GUI는 초보 관리자를 위한 반면 콘솔은 숙련된 관리자를 위한 것입니다.

3. iptables와 Firewalld의 기본적인 차이점은 무엇입니까?

답변: iptables와 Firewalld는 동일한 목적(패킷 필터링)을 제공하지만 접근 방식이 다릅니다. iptables는 방화벽과 달리 변경이 이루어질 때마다 전체 규칙 세트를 플러시합니다. 일반적으로 iptables 구성의 위치는 '/etc/sysconfig/iptables'에 있는 반면, 방화벽 구성은 XML 파일 세트인 '/etc/firewalld/'에 있습니다. .XML 기반 방화벽을 구성하는 것은 iptables 구성에 비해 더 쉽지만, 패킷 필터링 애플리케이션(예: iptables 및 Firewalld)을 모두 사용하여 동일한 작업을 수행할 수 있습니다. Firewalld는 자체 명령줄 인터페이스 및 위에서 언급한 XML 기반 구성 파일과 함께 자체적으로 iptables를 실행합니다.

4. 기회가 주어진다면 모든 서버에서 iptables를 Firewalld로 교체하시겠습니까?

답변: 저는 iptables에 익숙하고 작동 중입니다. 그리고 Firewalld의 동적 측면이 필요한 것이 없다면 모든 구성을 iptables에서 Firewalld로 마이그레이션할 이유가 없을 것 같습니다.대부분의 경우 지금까지 iptable이 문제를 일으키는 것을 본 적이 없습니다. 또한 정보 기술의 일반 규칙은 "깨지지 않았다면 왜 고쳐야 하는가"라고 말합니다. 그러나 이것은 내 개인적인 생각이며 조직이 iptables를 방화벽으로 교체하려는 경우 방화벽을 구현하는 것을 꺼리지 않습니다.

5. 당신은 iptables에 대해 자신감이 있는 것 같고, 심지어 우리 서버에서 iptables를 사용하고 있다는 점도 장점입니다.

iptables에서 사용되는 테이블은 무엇입니까? iptables에 사용되는 테이블과 이들이 지원하는 체인에 대해 간략하게 설명하세요.

답변: 인식해 주셔서 감사합니다. 질문 부분으로 이동하면 iptables에는 다음과 같은 4개의 테이블이 사용됩니다.

  1. Nat 테이블
  2. 맹글 테이블
  3. 필터 테이블
  4. 원시 테이블

Nat 테이블 : Nat 테이블은 주로 네트워크 주소 변환에 사용됩니다. 매스커레이드된 패킷은 표의 규칙에 따라 IP 주소가 변경됩니다. 스트림의 패킷은 Nat 테이블을 한 번만 통과합니다. 즉, 패킷 제트의 패킷이 가장된 경우 스트림의 나머지 패키지는 이 테이블을 다시 통과하지 않습니다. 이 테이블에서는 필터링하지 않는 것이 좋습니다. NAT 테이블이 지원하는 체인은 PREROUTING Chain, POSTROUTING Chain, OUTPUT Chain입니다.

Mangle Table : 이름에서 알 수 있듯이 이 테이블은 패킷을 mangle하는 데 사용됩니다. 특수 패키지 변경에 사용됩니다. 이는 다양한 패킷과 해당 헤더의 내용을 변경하는 데 사용할 수 있습니다. Mangle 테이블은 Masquerading에 사용할 수 없습니다. 지원되는 체인은 PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain입니다.

필터 테이블 : 필터 테이블은 iptables에서 사용되는 기본 테이블입니다. 패킷 필터링에 사용됩니다. 정의된 규칙이 없으면 필터 테이블이 기본 테이블로 사용되며 이 테이블을 기준으로 필터링이 수행됩니다. 지원되는 체인은 INPUT Chain, OUTPUT Chain, FORWARD Chain 입니다.

원시 테이블 : 이전에 제외된 패키지를 구성하려고 할 때 원시 테이블이 작동합니다. PREROUTING Chain과 OUTPUT Chain을 지원합니다.

6. iptables의 대상 값(target에 지정될 수 있음)은 무엇이며 그 기능은 간단합니다!

답변: 다음은 iptables의 target에서 지정할 수 있는 대상 값입니다.

    1. ACCEPT : 패킷 수락
    2. QUEUE : 사용자 공간(애플리케이션 및 드라이버가 상주하는 장소)에 대한 Paas 패키지
    3. DROP : 패킷 삭제
    4. RETURN: 제어를 호출 체인으로 되돌리고 체인의 현재 패킷에 대한 다음 규칙 세트 실행을 중지합니다.
7. iptables의 기술적인 측면으로 넘어가겠습니다. 기술적인 측면은 실용적이라는 의미입니다.

CentOS에 iptables를 설치하는데 필요한 iptables rpm을 어떻게 확인하나요?

답변: iptables rpm은 표준 CentOS 설치에 포함되어 있으므로 별도로 설치할 필요가 없습니다. rpm을 다음과 같이 확인할 수 있습니다:

rpm -qa iptables

iptables-1.4.21-13.el7.x86_64

설치해야 한다면 yum을 실행하여 다운로드할 수 있습니다.

yum install iptables-services
8. iptables 서비스가 실행 중인지 확인하는 방법은 무엇입니까?

답변: iptables 상태를 확인하려면 터미널에서 다음 명령을 실행하세요.

service iptables status			[On CentOS 6/5]
systemctl status iptables			[On CentOS 7]

실행 중이 아닌 경우 아래 명령이 실행될 수 있습니다.

---------------- On CentOS 6/5 ---------------- 
chkconfig --level 35 iptables on
service iptables start

---------------- On CentOS 7 ---------------- 
systemctl enable iptables 
systemctl start iptables 

다음과 같이 iptables 모듈이 로드되었는지 여부를 확인할 수도 있습니다.

lsmod | grep ip_tables
9. iptables에 정의된 현재 규칙을 어떻게 검토할 예정인가요?

답변: iptables의 현재 규칙은 다음과 같이 간단하게 검토할 수 있습니다:

iptables -L

샘플 출력

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
10. 모든 iptables 규칙이나 특정 체인을 어떻게 플러시합니까?

답변: 특정 iptables 체인을 플러시하려면 다음 명령을 사용할 수 있습니다.

 
iptables --flush OUTPUT

모든 iptables 규칙을 플러시합니다.

iptables --flush
11. 신뢰할 수 있는 IP 주소(예: 192.168.0.7)의 패킷을 허용하도록 iptables에 규칙을 추가합니다.

답변: 위의 시나리오는 아래 명령을 실행하여 간단히 달성할 수 있습니다.

iptables -A INPUT -s 192.168.0.7 -j ACCEPT 

다음과 같이 소스에 표준 슬래시 또는 서브넷 마스크를 포함할 수 있습니다.

iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT 
iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
12. iptables에서 ACCEPT, REJECT, DENY 및 DROP ssh 서비스에 규칙을 추가하는 방법.

답변: ssh가 ssh의 기본 포트이기도 한 포트 22에서 실행되기를 바라며 다음과 같이 iptables에 규칙을 추가할 수 있습니다.

SSH 서비스(포트 22)에 대한 TCP 패킷을 ACCEPT합니다.

iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT 

SSH 서비스(포트 22)에 대한 TCP 패킷을 거부합니다.

iptables -A INPUT -s -p tcp --dport 22 -j REJECT

SSH 서비스(포트 22)에 대한 TCP 패킷을 거부합니다.

 
iptables -A INPUT -s -p tcp --dport 22 -j DENY

SSH 서비스(포트 22)에 대한 TCP 패킷을 DROP합니다.

 
iptables -A INPUT -s -p tcp --dport 22 -j DROP
13. 시나리오를 하나 들어보겠습니다. 로컬 IP 주소가 192.168.0.6인 컴퓨터가 있다고 가정해 보겠습니다. 머신에 대한 포트 21, 22, 23, 80의 연결을 차단해야 합니다. 당신은 무엇을 할 것인가?

답변: 그럼 내가 사용해야 하는 것은 iptables와 함께 '멀티포트' 옵션을 사용하고 그 뒤에 포트 번호를 차단하는 것뿐입니다. 위의 시나리오는 다음과 같이 한 번에 달성할 수 있습니다. .

iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP

작성된 규칙은 아래 명령을 사용하여 확인할 수 있습니다.

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
DROP       tcp  --  192.168.0.6          anywhere             multiport dports ssh,telnet,http,webcache

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

면접관 : 제가 묻고 싶은 건 그게 전부였어요. 당신은 우리가 놓치고 싶지 않은 소중한 직원입니다. HR에 귀하의 이름을 추천하겠습니다. 질문이 있으시면 저에게 물어보셔도 됩니다.

후보자로서 저는 대화를 중단시키고 싶지 않았기 때문에 만약 제가 선택된다면 처리하게 될 프로젝트와 회사의 다른 채용 공고에 대해 계속 질문했습니다. HR 라운드는 말할 것도 없이 크랙이 어렵지 않았고 기회를 얻었습니다.

또한 시간을 내어 인터뷰를 기록해 준 AvishekRavi(오랜 친구)에게도 감사의 말씀을 전하고 싶습니다.

친구 여러분! 그러한 인터뷰를 한 적이 있고 전 세계 수백만 명의 Tecmint 독자들과 인터뷰 경험을 공유하고 싶으십니까? 그런 다음 질문과 답변을 [이메일 보호됨]으로 보내거나 다음 양식을 사용하여 인터뷰 경험을 제출할 수 있습니다.

감사합니다! 연결을 유지하세요. 또한 내가 한 것보다 질문에 더 정확하게 대답할 수 있었는지 알려주십시오.